brotli-6.0.0/.cargo_vcs_info.json0000644000000001360000000000100123320ustar { "git": { "sha1": "8e0b2a87608a6db12c5d66102ec77857a3c8a131" }, "path_in_vcs": "" }brotli-6.0.0/.github/dependabot.yml000064400000000000000000000004261046102023000153140ustar 00000000000000version: 2 updates: # Maintain dependencies for GitHub Actions - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" - package-ecosystem: cargo directory: "/" schedule: interval: daily time: "02:00" open-pull-requests-limit: 10 brotli-6.0.0/.github/workflows/ci.yml000064400000000000000000000031441046102023000156370ustar 00000000000000name: Rust on: push: branches: [ main, master ] pull_request: branches: [ main, master ] release: types: [ published ] workflow_dispatch: env: CARGO_TERM_COLOR: always defaults: run: shell: bash jobs: test: name: Test runs-on: ubuntu-latest steps: - uses: taiki-e/install-action@v2 with: { tool: "just" } - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' - name: Install nightly toolchain run: rustup toolchain install nightly - name: Run `just ci-test` to lint, build, and test everything run: just ci-test - name: Check if changes break public API and need a new version. Use `just semver-checks` to run locally. uses: obi1kenobi/cargo-semver-checks-action@v2 msrv: name: Test MSRV runs-on: ubuntu-latest steps: - uses: taiki-e/install-action@v2 with: { tool: just } - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 if: github.event_name != 'release' && github.event_name != 'workflow_dispatch' - name: Read rust-version from Cargo.toml id: metadata run: | MSRV="$(just read-msrv)" echo "rust-version=$MSRV" >> $GITHUB_OUTPUT echo "Detected MSRV $MSRV" - name: Install Rust uses: dtolnay/rust-toolchain@stable with: toolchain: ${{ steps.metadata.outputs.rust-version }} - name: Run `just ci-test-msrv` to build and test everything with the MSRV run: just ci-test-msrv brotli-6.0.0/.github/workflows/dependabot.yml000064400000000000000000000016371046102023000173560ustar 00000000000000name: Dependabot auto-merge on: pull_request permissions: write-all jobs: dependabot: runs-on: ubuntu-latest if: github.actor == 'dependabot[bot]' steps: - name: Dependabot metadata id: metadata uses: dependabot/fetch-metadata@v1.6.0 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Approve Dependabot PRs if: steps.metadata.outputs.update-type == 'version-update:semver-patch' run: gh pr review --approve "$PR_URL" env: PR_URL: ${{github.event.pull_request.html_url}} GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - name: Enable auto-merge for Dependabot PRs if: steps.metadata.outputs.update-type == 'version-update:semver-patch' run: gh pr merge --auto --squash "$PR_URL" env: PR_URL: ${{github.event.pull_request.html_url}} GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} brotli-6.0.0/.gitignore000064400000000000000000000000551046102023000131120ustar 00000000000000.DS_Store .idea/ .vscode/ Cargo.lock target/ brotli-6.0.0/.travis.yml000064400000000000000000000007631046102023000132410ustar 00000000000000language: rust rust: - nightly - stable - 1.12.0 os: - linux - osx script: - rustc --version | grep nightly && cargo test --features=simd || ( echo skip && rustc --version | grep -v nightly ) - cargo test --no-default-features - cargo test --no-default-features --features=std - cargo test --no-default-features --features=std --release - rustc --version | grep 1[.][89][.] || rustc --version | grep -v 1[.]2[789][.] | grep 1[.][12][0-9][.]||cargo build --features=validation brotli-6.0.0/Cargo.lock0000644000000061070000000000100103110ustar # This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 3 [[package]] name = "alloc-no-stdlib" version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" [[package]] name = "alloc-stdlib" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" dependencies = [ "alloc-no-stdlib", ] [[package]] name = "block-buffer" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] [[package]] name = "brotli" version = "6.0.0" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", "brotli-decompressor", "sha2", ] [[package]] name = "brotli-decompressor" version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6221fe77a248b9117d431ad93761222e1cf8ff282d9d1d5d9f53d6299a1cf76" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cpufeatures" version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crypto-common" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", "typenum", ] [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", ] [[package]] name = "generic-array" version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", ] [[package]] name = "libc" version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "sha2" version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", "digest", ] [[package]] name = "typenum" version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" brotli-6.0.0/Cargo.toml0000644000000041600000000000100103310ustar # 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 = "2015" rust-version = "1.56.0" name = "brotli" version = "6.0.0" authors = [ "Daniel Reiter Horn ", "The Brotli Authors", ] autobins = false description = "A brotli compressor and decompressor that with an interface avoiding the rust stdlib. This makes it suitable for embedded devices and kernels. It is designed with a pluggable allocator so that the standard lib's allocator may be employed. The default build also includes a stdlib allocator and stream interface. Disable this with --features=no-stdlib. All included code is safe." homepage = "https://github.com/dropbox/rust-brotli" documentation = "https://docs.rs/brotli/" readme = "README.md" keywords = [ "brotli", "decompression", "lz77", "huffman", "nostd", ] categories = [ "compression", "no-std", ] license = "BSD-3-Clause OR MIT" repository = "https://github.com/dropbox/rust-brotli" [profile.release] lto = true incremental = false [[bin]] name = "brotli" doc = false [[bin]] name = "catbrotli" doc = false [dependencies.alloc-no-stdlib] version = "2.0" [dependencies.alloc-stdlib] version = "~0.2" optional = true [dependencies.brotli-decompressor] version = "~4.0" default-features = false [dependencies.sha2] version = "~0.10" optional = true [features] benchmark = ["brotli-decompressor/benchmark"] default = ["std"] disable-timer = ["brotli-decompressor/disable-timer"] external-literal-probability = [] ffi-api = ["brotli-decompressor/ffi-api"] pass-through-ffi-panics = [] seccomp = ["brotli-decompressor/seccomp"] simd = [] std = [ "alloc-stdlib", "brotli-decompressor/std", ] validation = ["sha2"] vector_scratch_space = [] brotli-6.0.0/Cargo.toml.orig000064400000000000000000000031301046102023000140060ustar 00000000000000[package] name = "brotli" version = "6.0.0" authors = ["Daniel Reiter Horn ", "The Brotli Authors"] description = "A brotli compressor and decompressor that with an interface avoiding the rust stdlib. This makes it suitable for embedded devices and kernels. It is designed with a pluggable allocator so that the standard lib's allocator may be employed. The default build also includes a stdlib allocator and stream interface. Disable this with --features=no-stdlib. All included code is safe." license = "BSD-3-Clause OR MIT" documentation = "https://docs.rs/brotli/" homepage = "https://github.com/dropbox/rust-brotli" repository = "https://github.com/dropbox/rust-brotli" keywords = ["brotli", "decompression", "lz77", "huffman", "nostd"] categories = ["compression", "no-std"] readme = "README.md" autobins = false edition = "2015" rust-version = "1.56.0" [[bin]] doc = false name = "brotli" [[bin]] doc = false name = "catbrotli" [profile.release] lto = true incremental = false [dependencies] "alloc-no-stdlib" = { version = "2.0" } "alloc-stdlib" = { version = "~0.2", optional = true } "brotli-decompressor" = { version = "~4.0", default-features = false } "sha2" = { version = "~0.10", optional = true } [features] default = ["std"] benchmark = ["brotli-decompressor/benchmark"] disable-timer = ["brotli-decompressor/disable-timer"] external-literal-probability = [] ffi-api = ["brotli-decompressor/ffi-api"] pass-through-ffi-panics = [] seccomp = ["brotli-decompressor/seccomp"] std = ["alloc-stdlib", "brotli-decompressor/std"] validation = ["sha2"] vector_scratch_space = [] simd = [] brotli-6.0.0/LICENSE000064400000000000000000000027131046102023000121320ustar 00000000000000Copyright (c) 2016 Dropbox, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. brotli-6.0.0/README.md000064400000000000000000000176761046102023000124220ustar 00000000000000# rust-brotli [![crates.io](https://img.shields.io/crates/v/brotli.svg)](https://crates.io/crates/brotli) [![Build Status](https://travis-ci.org/dropbox/rust-brotli.svg?branch=master)](https://travis-ci.org/dropbox/rust-brotli) ## What's new in 5.0.0 * The FFI is no longer active by default to avoid ODR issues if multiple versions of brotli are included in several dependent crates. ## What's new in 4.0.0 Pinned to a rust-brotli-decompressor that can disable the ffi with the ffi-api flag. This can help avoid symbol conflicts with other brotli libs. ## What's new in 3.5 Updated SIMD support. Better CI integration. Cleaned up some of the clippy warnings. ## What's new in 3.4 Brotli decompressor's reader and writer has better behavior when operating upon brotli streams with extra bits at the end. Optional features like stdsimd are now tested or disabled for now. ## What's new in 3.2 * into_inner conversions for both Reader and Writer classes ## What's new in 3.0 * A fully compatible FFI for drop-in compatibiltiy with the https://github.com/google/brotli binaries * custom allocators fully supported * Multithreaded compression so multiple threads can operate in unison on a single file * Concatenatability mode to add the feature requested in https://github.com/google/brotli/issues/628 * binary tool catbrotli can accomplish this if the first file was specified with -apendable and the second with -catable * validation mode where a file is double-checked to be able to be decompressed with the same settings; useful for benchmarking or fuzzing * Magic Number: where the brotli file can have a useful header with a few magic bytes, concatability info and a final output size for pre-allocating memory ## What's new in 2.5 * In 2.5 The callback also passes down an allocator to make new StaticCommands and PDFs and 256 bit floating point vectors. * In 2.4 The callback with the compression intermediate representation now passes a full metablock at a time. Also these items are mutable in case futher optimization is desired ## What's new in 2.3 * Flush now produces output instead of calling finish on the stream. This allows you to use the writer abstraction to get immediate output without having to resort to the CompressStream internal abstraction ## Project Requirements Direct no-stdlib port of the C brotli compressor to Rust no dependency on the Rust stdlib: this library would be ideal for decompressing within a rust kernel among other things. This is useful to see how C and Rust compare in an apples-to-apples comparison where the same algorithms and data structures and optimizations are employed. ## Compression Usage Rust brotli currently supports compression levels 0 - 11 They should be bitwise identical to the brotli C compression engine at compression levels 0-9 Recommended lg_window_size is between 20 and 22 ### With the io::Read abstraction ```rust let mut input = brotli::CompressorReader::new(&mut io::stdin(), 4096 /* buffer size */, quality as u32, lg_window_size as u32); ``` then you can simply read input as you would any other io::Read class ### With the io::Write abstraction ```rust let mut writer = brotli::Compressor::new(&mut io::stdout(), 4096 /* buffer size */, quality as u32, lg_window_size as u32); ``` There are also methods to build Compressor Readers or Writers using the with_params static function eg: ```rust let params = BrotliEncoderParams::default(); // modify params to fit the application needs let mut writer = brotli::Compressor::with_params(&mut io::stdout(), 4096 /* buffer size */, params); ``` or for the reader ```rust let params = BrotliEncoderParams::default(); // modify params to fit the application needs let mut writer = brotli::CompressorReader::with_params(&mut io::stdin(), 4096 /* buffer size */, params); ``` ### With the Stream Copy abstraction ```rust match brotli::BrotliCompress(&mut io::stdin(), &mut io::stdout(), &brotli_encoder_params) { Ok(_) => {}, Err(e) => panic!("Error {:?}", e), } ``` ## Decompression Usage ### With the io::Read abstraction ```rust let mut input = brotli::Decompressor::new(&mut io::stdin(), 4096 /* buffer size */); ``` then you can simply read input as you would any other io::Read class ### With the io::Write abstraction ```rust let mut writer = brotli::DecompressorWriter::new(&mut io::stdout(), 4096 /* buffer size */); ``` ### With the Stream Copy abstraction ```rust match brotli::BrotliDecompress(&mut io::stdin(), &mut io::stdout()) { Ok(_) => {}, Err(e) => panic!("Error {:?}", e), } ``` ### With manual memory management There are 3 steps to using brotli without stdlib 1. setup the memory manager 2. setup the BrotliState 3. in a loop, call BrotliDecompressStream in Detail ```rust // at global scope declare a MemPool type -- in this case we'll choose the heap to // avoid unsafe code, and avoid restrictions of the stack size declare_stack_allocator_struct!(MemPool, heap); // at local scope, make a heap allocated buffers to hold uint8's uint32's and huffman codes let mut u8_buffer = define_allocator_memory_pool!(4096, u8, [0; 32 * 1024 * 1024], heap); let mut u32_buffer = define_allocator_memory_pool!(4096, u32, [0; 1024 * 1024], heap); let mut hc_buffer = define_allocator_memory_pool!(4096, HuffmanCode, [0; 4 * 1024 * 1024], heap); let heap_u8_allocator = HeapPrealloc::::new_allocator(4096, &mut u8_buffer, bzero); let heap_u32_allocator = HeapPrealloc::::new_allocator(4096, &mut u32_buffer, bzero); let heap_hc_allocator = HeapPrealloc::::new_allocator(4096, &mut hc_buffer, bzero); // At this point no more syscalls are going to be needed since everything can come from the allocators. // Feel free to activate SECCOMP jailing or other mechanisms to secure your application if you wish. // Now it's possible to setup the decompressor state let mut brotli_state = BrotliState::new(heap_u8_allocator, heap_u32_allocator, heap_hc_allocator); // at this point the decompressor simply needs an input and output buffer and the ability to track // the available data left in each buffer loop { result = BrotliDecompressStream(&mut available_in, &mut input_offset, &input.slice(), &mut available_out, &mut output_offset, &mut output.slice_mut(), &mut written, &mut brotli_state); // just end the decompression if result is BrotliResult::ResultSuccess or BrotliResult::ResultFailure } ``` This interface is the same interface that the C brotli decompressor uses Also feel free to use custom allocators that invoke Box directly. This example illustrates a mechanism to avoid subsequent syscalls after the initial allocation ## Using the C interface rust-brotli is a drop-in replacement for the official https://github.com/google/brotli C implementation. That means you can use it from any place that supports that library. To build rust-brotli in this manner enter the c subdirectory and run make there cd c && make this should build c/target/release/libbrotli.so and should build the vanilla command line tool in C for compressing and decompressing any brotli file. the libbrotli.so in c/target/release should be able to replace any other libbrotli.so file, but with all the advantages of using safe rust (except in the FFI bindings) The code also allows a wider range of options, including forcing the prediction mode (eg UTF8 vs signed vs MSB vs LSB) and changing the weight of the literal cost from 540 to other values. Additionally the CATABLE and APPENDABLE options are exposed and allow concatenation of files created in this manner. Specifically CATABLE files can be concatenated in any order using the catbrotli tool and APPENDABLE files can be the first file in a sequence of catable files... eg you can combine appendable.br catable1.br catable2.br catable3.br or simply catable0.br catable1.br catable2.br catable3.br brotli-6.0.0/appveyor.yml000064400000000000000000000023741046102023000135200ustar 00000000000000environment: RUST_VERSION: stable CRATE_NAME: brotli matrix: - TARGET: x86_64-pc-windows-gnu BITS: 64 MSYS2: 1 - TARGET: x86_64-pc-windows-msvc BITS: 64 - TARGET: i686-pc-windows-gnu BITS: 32 MSYS2: 1 - TARGET: i686-pc-windows-msvc BITS: 32 install: - curl -sSf -o rustup-init.exe https://win.rustup.rs/ - rustup-init.exe -y --default-host %TARGET% --default-toolchain %RUST_VERSION% - set PATH=%PATH%;C:\Users\appveyor\.cargo\bin - if defined MSYS2 set PATH=C:\msys64\mingw%BITS%\bin;%PATH% - rustc -V - cargo -V build: false test_script: - cargo test --verbose - set RUSTFLAGS=-C panic=abort - set CARGO_PROFILE_RELEASE=panic=abort - cargo build --verbose --release --features=validation before_deploy: - set CARGO_PROFILE_RELEASE=panic=abort - set RUSTFLAGS=-C panic=abort - cargo build --verbose --release --features=validation - ps: ci\before_deploy.ps1 deploy: artifact: /.*\.zip/ auth_token: secure: jKP3OCU0ukoMKenkxB/lhG9/tOXppd8ZWxCm9dS1VLzbkUoIUKt3+18pG3S54VdL descriprion: 'windows rust-brotli build' on: RUST_VERSION: stable provider: GitHub cache: - C:\Users\appveyor\.cargo\registry - target branches: only: # Release tags - /^v\d+\.\d+\.\d+.*$/ - master brotli-6.0.0/ci/before_deploy.ps1000064400000000000000000000010001046102023000147470ustar 00000000000000# This script takes care of packaging the build artifacts that will go in the # release zipfile $SRC_DIR = $PWD.Path $STAGE = [System.Guid]::NewGuid().ToString() Set-Location $ENV:Temp New-Item -Type Directory -Name $STAGE Set-Location $STAGE $ZIP = "$SRC_DIR\$($Env:CRATE_NAME)-$($Env:APPVEYOR_REPO_TAG_NAME)-$($Env:TARGET).zip" Copy-Item "$SRC_DIR\target\release\brotli.exe" '.\' 7z a "$ZIP" * Push-AppveyorArtifact "$ZIP" Remove-Item *.* -Force Set-Location .. Remove-Item $STAGE Set-Location $SRC_DIR brotli-6.0.0/ci/before_deploy.sh000064400000000000000000000012361046102023000146710ustar 00000000000000# This script takes care of building your crate and packaging it for release set -ex main() { local src=$(pwd) \ stage= case $TRAVIS_OS_NAME in linux) stage=$(mktemp -d) ;; osx) stage=$(mktemp -d -t tmp) ;; esac test -f Cargo.lock || cargo generate-lockfile # TODO Update this to build the artifacts that matter to you cross rustc --release --features=validation # TODO Update this to package the right artifacts cp target/$TARGET/brotli $stage/ cd $stage tar czf $src/$CRATE_NAME-$TRAVIS_TAG-$TARGET.tar.gz * cd $src rm -rf $stage } main brotli-6.0.0/ci/install.sh000064400000000000000000000024741046102023000135260ustar 00000000000000set -ex main() { local target= if [ $TRAVIS_OS_NAME = linux ]; then target=x86_64-unknown-linux-musl sort=sort else target=x86_64-apple-darwin sort=gsort # for `sort --sort-version`, from brew's coreutils. fi # Builds for iOS are done on OSX, but require the specific target to be # installed. case $TARGET in aarch64-apple-ios) rustup target install aarch64-apple-ios ;; armv7-apple-ios) rustup target install armv7-apple-ios ;; armv7s-apple-ios) rustup target install armv7s-apple-ios ;; i386-apple-ios) rustup target install i386-apple-ios ;; x86_64-apple-ios) rustup target install x86_64-apple-ios ;; esac # This fetches latest stable release local tag=$(git ls-remote --tags --refs --exit-code https://github.com/japaric/cross \ | cut -d/ -f3 \ | grep -E '^v[0.1.0-9.]+$' \ | $sort --version-sort \ | tail -n1) curl -LSfs https://japaric.github.io/trust/install.sh | \ sh -s -- \ --force \ --git japaric/cross \ --tag $tag \ --target $target } main brotli-6.0.0/ci/script.sh000064400000000000000000000007541046102023000133630ustar 00000000000000# This script takes care of testing your crate set -ex # TODO This is the "test phase", tweak it as you see fit main() { cross build --target $TARGET cross build --target $TARGET --release if [ ! -z $DISABLE_TESTS ]; then return fi cross test --target $TARGET cross test --target $TARGET --release cross test --target $TARGET --release --features=no-stdlib } # we don't run the "test phase" when doing deploys if [ -z $TRAVIS_TAG ]; then main fi brotli-6.0.0/examples/compress.rs000064400000000000000000000024651046102023000151500ustar 00000000000000extern crate brotli; #[cfg(not(feature = "std"))] fn main() { panic!("For no-stdlib examples please see the tests") } #[cfg(feature = "std")] fn main() { use std::io; use std::io::{Read, Write}; let stdout = &mut io::stdout(); { let mut writer = brotli::CompressorWriter::new(stdout, 4096, 11, 22); let mut buf = [0u8; 4096]; loop { match io::stdin().read(&mut buf[..]) { Err(e) => { if let io::ErrorKind::Interrupted = e.kind() { continue; } panic!("{}", e); } Ok(size) => { if size == 0 { match writer.flush() { Err(e) => { if let io::ErrorKind::Interrupted = e.kind() { continue; } panic!("{}", e) } Ok(_) => break, } } match writer.write_all(&buf[..size]) { Err(e) => panic!("{}", e), Ok(_) => {} } } } } } } brotli-6.0.0/examples/decompress.rs000064400000000000000000000017461046102023000154620ustar 00000000000000extern crate brotli; #[cfg(not(feature = "std"))] fn main() { panic!("For no-stdlib examples please see the tests") } #[cfg(feature = "std")] fn main() { use std::io; let stdin = &mut io::stdin(); { use std::io::{Read, Write}; let mut reader = brotli::Decompressor::new( stdin, 4096, // buffer size ); let mut buf = [0u8; 4096]; loop { match reader.read(&mut buf[..]) { Err(e) => { if let io::ErrorKind::Interrupted = e.kind() { continue; } panic!("{}", e); } Ok(size) => { if size == 0 { break; } match io::stdout().write_all(&buf[..size]) { Err(e) => panic!("{}", e), Ok(_) => {} } } } } } } brotli-6.0.0/justfile000064400000000000000000000046411046102023000126770ustar 00000000000000#!/usr/bin/env just --justfile @_default: just --list --unsorted # Clean all build artifacts clean: cargo clean # Build everything build: build-brotli build-simd build-ffi # Build the main crate build-brotli: RUSTFLAGS='-D warnings' cargo build --workspace --all-targets --bins --tests --lib --benches --examples # Build simd with nightly build-simd: RUSTFLAGS='-D warnings' cargo +nightly build --features simd # Build the brotli-ffi crate (in ./c dir) build-ffi: RUSTFLAGS='-D warnings' cargo build --workspace --all-targets --bins --tests --lib --benches --examples --manifest-path c/Cargo.toml # For now, use original make file for building/testing the FFI crate cd c && make # Run cargo fmt with optional params fmt *ARGS: cargo fmt --all -- {{ ARGS }} cd c && cargo fmt --all -- {{ ARGS }} # Run Nightly cargo fmt, ordering imports by groups fmt2: cargo +nightly fmt -- --config imports_granularity=Module,group_imports=StdExternalCrate # Run cargo clippy clippy: cargo clippy -- -D warnings cargo clippy --workspace --all-targets --bins --tests --lib --benches --examples -- -D warnings cd c && cargo clippy -- -D warnings cd c && cargo clippy --workspace --all-targets --bins --tests --lib --benches --examples -- -D warnings # Build and open code documentation docs: cargo doc --no-deps --open cd c && cargo doc --no-deps --open # Test documentation test-doc: cargo test --doc RUSTDOCFLAGS="-D warnings" cargo doc --no-deps cd c && cargo test --doc cd c && RUSTDOCFLAGS="-D warnings" cargo doc --no-deps # Test using cargo test with optional params test *ARGS: cargo test {{ ARGS }} cd c && cargo test {{ ARGS }} # Report current versions of rustc, cargo, and other utils sys-info: rustc --version cargo --version {{ just_executable() }} --version # Get MSRV (Minimum Supported Rust Version) for the brotli crate read-msrv: cargo metadata --no-deps --format-version 1 | jq -r -e '.packages[] | select(.name == "brotli").rust_version' # All tests to run for CI (TODO: add clippy) ci-test: sys-info (fmt "--check") build test test-doc # All stable tests to run for CI with the earliest supported Rust version. Assumes the Rust version is already set by rustup. ci-test-msrv: sys-info build-brotli build-ffi test # Test if changes are backwards compatible (patch), or need a new minor/major version semver-checks: cargo semver-checks brotli-6.0.0/research/concatenate_some.py000064400000000000000000000111161046102023000165770ustar 00000000000000import sys import os import random as insecure_random import subprocess import hashlib import traceback def get_goal(): ret = insecure_random.randrange(1,16) if ret == 15: ret = insecure_random.randrange(15,64) return ret def shasum(work): sha = hashlib.sha256() for file in work: with open(file) as ff: while True: r = ff.read(65536) if r: sha.update(r) else: break return sha.digest() def file_size(filename): return os.stat(filename).st_size uncatable_stats = 0 catable_stats = 0 def process(work, brotli, cat, prefix): sys.stdout.flush() global uncatable_stats global catable_stats work = [filename for filename in work if filename.find(".jpg") != -1 or filename.find(".avi") != -1 or filename.find(".mp4") != -1 or filename.find(".mov") != -1 or insecure_random.randrange(1,17) == 16] if len(work) == 0: return try: fullsum = shasum(work) except Exception: traceback.print_exc() print 'ok early exit' return quality = "-q" + str(insecure_random.randrange(2,12 if len(work) < 8 else 10)) if insecure_random.randrange(0,16) == 0: quality = '-q9.5' append = insecure_random.randrange(0,2) == 0 frivolous_procs = [] procs = [] print 'processing',work,'at',quality,append for index, filename in enumerate(work): thread_count = insecure_random.randrange(1,17) if quality > 8 and thread_count == 1: thread_count = 2 magic = insecure_random.randrange(0,2) == 0 buffer_size = insecure_random.randrange(1,18) if buffer_size == 17: buffer_size = 65536 elif buffer_size > 3: buffer_size *= 1024 bs = "-bs" + str(buffer_size) args = [brotli, "-c", bs, quality] if magic: args.append("-magic") frivolous_procs.append(subprocess.Popen(args + [filename, prefix + quality+"-" + str(index)+".compressed"])) if append and index == 0: args.append("-appendable") else: args.append("-catable") args.append('-j' + str(thread_count)) args.append(filename) args.append(prefix + quality+"-" + str(index)+".br") procs.append(subprocess.Popen(args)) for index, proc in enumerate(procs): ret = proc.wait() if ret: print 'failure at ' + work[index],quality,append, bs assert not ret buffer_size = insecure_random.randrange(1,18) if buffer_size == 17: buffer_size = 65536 elif buffer_size > 3: buffer_size *= 1024 bs = "-bs" + str(buffer_size) args = [cat, bs] for index, filename in enumerate(work): args.append(prefix + quality+"-" + str(index)+".br") stdout, _stderr = subprocess.Popen(args, stdout=subprocess.PIPE).communicate() with open(prefix+".br", 'w') as f: f.write(stdout) procs[0] = subprocess.Popen([brotli, prefix +'.br', prefix]) ret = procs[0].wait() if ret: print 'failure at ',work,quality,append assert not ret rtsum = shasum([prefix]) if rtsum != fullsum: print 'failure at ',work,quality,append assert rtsum == fullsum print 'ok',rtsum.encode('hex') for (index,proc) in enumerate(frivolous_procs): ret = proc.wait() assert not ret uncatable_stats += file_size(prefix + quality+"-" + str(index)+".compressed") catable_stats += len(stdout) print uncatable_stats,'/',catable_stats,(10000*uncatable_stats/catable_stats)/100.0 try: for index, filename in enumerate(work): os.remove(prefix + quality+"-" + str(index)+".br") os.remove(prefix + quality+"-" + str(index)+".compressed") os.remove(prefix + ".br") os.remove(prefix) except Exception: traceback.print_exc() def main(): start = sys.argv[1] brotli = sys.argv[2] catbrotli = sys.argv[3] goal = get_goal() work =[] prefix="/tmp/cat-" + os.urandom(16).encode('hex') for root, dirnames, filenames in os.walk(start): for filename in filenames: try: if file_size(os.path.join(root,filename)): work.append(os.path.join(root,filename)) except Exception: continue if len(work) >= goal: goal = get_goal() process(work, brotli, catbrotli, prefix) work = [] if len(work): process(work, brotli, catbrotli, prefix) if __name__=="__main__": main() brotli-6.0.0/research/frombase2.py000064400000000000000000000005671046102023000151600ustar 00000000000000import sys result = [] cur_count = 0 cur_val = 0 for byte in sys.stdin.read(): if byte == '1': cur_val |= (1< { b: Box<[T]>, } impl From> for Rebox { fn from(data: Vec) -> Self { Rebox:: { b: data.into_boxed_slice(), } } } impl core::default::Default for Rebox { fn default() -> Self { let v: Vec = Vec::new(); let b = v.into_boxed_slice(); Rebox:: { b } } } impl ops::Index for Rebox { type Output = T; fn index(&self, index: usize) -> &T { &(*self.b)[index] } } impl ops::IndexMut for Rebox { fn index_mut(&mut self, index: usize) -> &mut T { &mut (*self.b)[index] } } impl alloc_no_stdlib::SliceWrapper for Rebox { fn slice(&self) -> &[T] { &self.b } } impl alloc_no_stdlib::SliceWrapperMut for Rebox { fn slice_mut(&mut self) -> &mut [T] { &mut self.b } } #[derive(Clone, Copy, Default)] pub struct HeapAllocator {} impl alloc_no_stdlib::Allocator for HeapAllocator { type AllocatedMemory = Rebox; fn alloc_cell(self: &mut HeapAllocator, len: usize) -> Rebox { let v: Vec = vec![T::default(); len]; let b = v.into_boxed_slice(); Rebox:: { b } } fn free_cell(self: &mut HeapAllocator, _data: Rebox) {} } /* type HeapBrotliAlloc = brotli::CombiningAllocator< HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, HeapAllocator, >; */ macro_rules! println_stderr( ($($val:tt)*) => { { writeln!(&mut ::std::io::stderr(), $($val)*).unwrap(); } } ); use std::path::Path; // declare_stack_allocator_struct!(MemPool, 4096, global); pub struct IoWriterWrapper<'a, OutputType: Write + 'a>(&'a mut OutputType); pub struct IoReaderWrapper<'a, OutputType: Read + 'a>(&'a mut OutputType); impl<'a, OutputType: Write> brotli::CustomWrite for IoWriterWrapper<'a, OutputType> { fn flush(&mut self) -> Result<(), io::Error> { loop { match self.0.flush() { Err(e) => match e.kind() { ErrorKind::Interrupted => continue, _ => return Err(e), }, Ok(_) => return Ok(()), } } } fn write(&mut self, buf: &[u8]) -> Result { loop { match self.0.write(buf) { Err(e) => match e.kind() { ErrorKind::Interrupted => continue, _ => return Err(e), }, Ok(cur_written) => return Ok(cur_written), } } } } impl<'a, InputType: Read> brotli::CustomRead for IoReaderWrapper<'a, InputType> { fn read(&mut self, buf: &mut [u8]) -> Result { loop { match self.0.read(buf) { Err(e) => match e.kind() { ErrorKind::Interrupted => continue, _ => return Err(e), }, Ok(cur_read) => return Ok(cur_read), } } } } struct IntoIoReader(OutputType); impl brotli::CustomRead for IntoIoReader { fn read(&mut self, buf: &mut [u8]) -> Result { loop { match self.0.read(buf) { Err(e) => match e.kind() { ErrorKind::Interrupted => continue, _ => return Err(e), }, Ok(cur_read) => return Ok(cur_read), } } } } #[cfg(not(feature = "seccomp"))] pub fn decompress( r: &mut InputType, w: &mut OutputType, buffer_size: usize, custom_dictionary: Rebox, ) -> Result<(), io::Error> where InputType: Read, OutputType: Write, { let mut alloc_u8 = HeapAllocator::default(); let mut input_buffer = alloc_u8.alloc_cell(buffer_size); let mut output_buffer = alloc_u8.alloc_cell(buffer_size); brotli::BrotliDecompressCustomIoCustomDict( &mut IoReaderWrapper::(r), &mut IoWriterWrapper::(w), input_buffer.slice_mut(), output_buffer.slice_mut(), alloc_u8, HeapAllocator::default(), HeapAllocator::default(), custom_dictionary, Error::new(ErrorKind::UnexpectedEof, "Unexpected EOF"), ) } #[cfg(feature = "seccomp")] extern "C" { fn calloc(n_elem: usize, el_size: usize) -> *mut u8; fn free(ptr: *mut u8); fn syscall(value: i32) -> i32; fn prctl(operation: i32, flags: u32) -> i32; } #[cfg(feature = "seccomp")] const PR_SET_SECCOMP: i32 = 22; #[cfg(feature = "seccomp")] const SECCOMP_MODE_STRICT: u32 = 1; #[cfg(feature = "seccomp")] declare_stack_allocator_struct!(CallocAllocatedFreelist, 8192, calloc); #[cfg(feature = "seccomp")] pub fn decompress( r: &mut InputType, w: &mut OutputType, buffer_size: usize, custom_dictionary: Rebox, ) -> Result<(), io::Error> where InputType: Read, OutputType: Write, { if custom_dictionary.len() != 0 { return Err(io::Error::new( ErrorKind::InvalidData, "Not allowed to have a custom_dictionary with SECCOMP", )); } core::mem::drop(custom_dictionary); let u8_buffer = unsafe { define_allocator_memory_pool!(4, u8, [0; 1024 * 1024 * 200], calloc) }; let u32_buffer = unsafe { define_allocator_memory_pool!(4, u32, [0; 16384], calloc) }; let hc_buffer = unsafe { define_allocator_memory_pool!(4, HuffmanCode, [0; 1024 * 1024 * 16], calloc) }; let mut alloc_u8 = CallocAllocatedFreelist::::new_allocator(u8_buffer.data, bzero); let alloc_u32 = CallocAllocatedFreelist::::new_allocator(u32_buffer.data, bzero); let alloc_hc = CallocAllocatedFreelist::::new_allocator(hc_buffer.data, bzero); let ret = unsafe { prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT) }; if ret != 0 { panic!("Unable to activate seccomp"); } match brotli::BrotliDecompressCustomIo( &mut IoReaderWrapper::(r), &mut IoWriterWrapper::(w), &mut alloc_u8.alloc_cell(buffer_size).slice_mut(), &mut alloc_u8.alloc_cell(buffer_size).slice_mut(), alloc_u8, alloc_u32, alloc_hc, Error::new(ErrorKind::UnexpectedEof, "Unexpected EOF"), ) { Err(e) => Err(e), Ok(()) => { unsafe { syscall(60); }; unreachable!() } } } pub fn new_brotli_heap_alloc() -> HeapAllocator { HeapAllocator::default() } impl brotli::enc::BrotliAlloc for HeapAllocator {} pub fn compress_multi_nostd( input: Vec, output: &mut [u8], params: &BrotliEncoderParams, mut num_threads: usize, ) -> Result { let mut alloc_array = [ SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), ]; if num_threads > alloc_array.len() { num_threads = alloc_array.len(); } CompressMulti( params, &mut Owned::new(Rebox::from(input)), output, &mut alloc_array[..num_threads], &mut util::MTSpawner::default(), ) } pub fn compress_multi( r: &mut InputType, w: &mut OutputType, params: &BrotliEncoderParams, mut num_threads: usize, work_pool: Option< &mut WorkerPool< CompressionThreadResult, UnionHasher, HeapAllocator, (Rebox, BrotliEncoderParams), >, >, ) -> Result { let mut input: Vec = Vec::::new(); r.read_to_end(&mut input)?; let mut output = Rebox::from(vec![ 0u8; BrotliEncoderMaxCompressedSizeMulti( input.len(), num_threads ) ]); let res = if let Some(worker_pool) = work_pool { let mut alloc_array = [ SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), SendAlloc::new(HeapAllocator::default(), UnionHasher::Uninit), ]; if num_threads > alloc_array.len() { num_threads = alloc_array.len(); } compress_worker_pool( params, &mut Owned::new(Rebox::from(input)), output.slice_mut(), &mut alloc_array[..num_threads], worker_pool, ) } else { compress_multi_nostd(input, output.slice_mut(), params, num_threads) }; match res { Ok(size) => { if let Err(err) = w.write_all(&output.slice()[..size]) { Err(err) } else { Ok(size) } } Err(err) => Err(io::Error::new(ErrorKind::Other, format!("{:?}", err))), } } pub fn compress( r: &mut InputType, w: &mut OutputType, buffer_size: usize, params: &brotli::enc::BrotliEncoderParams, custom_dictionary: &[u8], num_threads: usize, ) -> Result where InputType: Read, OutputType: Write, { if num_threads > 1 && custom_dictionary.is_empty() && !params.log_meta_block { if has_stdlib() { return compress_multi( r, w, params, num_threads, Some(&mut new_work_pool(num_threads - 1)), ); } else { return compress_multi(r, w, params, num_threads, None); } } let mut alloc_u8 = HeapAllocator::default(); let mut input_buffer = alloc_u8.alloc_cell(buffer_size); let mut output_buffer = alloc_u8.alloc_cell(buffer_size); let mut log = |pm: &mut brotli::interface::PredictionModeContextMap, data: &mut [brotli::interface::Command], mb: brotli::InputPair, _mfv: &mut HeapAllocator| { let tmp = brotli::interface::Command::PredictionMode( brotli::interface::PredictionModeContextMap:: { literal_context_map: brotli::InputReference::from(&pm.literal_context_map), predmode_speed_and_distance_context_map: brotli::InputReference::from( &pm.predmode_speed_and_distance_context_map, ), }, ); util::write_one(&tmp); for cmd in data.iter() { util::write_one(&cmd.thaw_pair(&mb)); } }; if params.log_meta_block { println_stderr!("window {} 0 0 0", params.lgwin); } brotli::BrotliCompressCustomIoCustomDict( &mut IoReaderWrapper::(r), &mut IoWriterWrapper::(w), input_buffer.slice_mut(), output_buffer.slice_mut(), params, new_brotli_heap_alloc(), &mut log, custom_dictionary, Error::new(ErrorKind::UnexpectedEof, "Unexpected EOF"), ) } // This decompressor is defined unconditionally on whether std is defined // so we can exercise the code in any case pub struct BrotliDecompressor( brotli::DecompressorCustomIo< io::Error, IntoIoReader, Rebox, HeapAllocator, HeapAllocator, HeapAllocator, >, ); impl BrotliDecompressor { pub fn new(r: R, buffer_size: usize) -> Self { let mut alloc_u8 = HeapAllocator::default(); let buffer = alloc_u8.alloc_cell(buffer_size); let alloc_u32 = HeapAllocator::default(); let alloc_hc = HeapAllocator::default(); BrotliDecompressor::(brotli::DecompressorCustomIo::< Error, IntoIoReader, Rebox, HeapAllocator, HeapAllocator, HeapAllocator, >::new( IntoIoReader::(r), buffer, alloc_u8, alloc_u32, alloc_hc, io::Error::new(ErrorKind::InvalidData, "Invalid Data"), )) } } impl Read for BrotliDecompressor { fn read(&mut self, buf: &mut [u8]) -> Result { self.0.read(buf) } } #[cfg(test)] fn writeln0( strm: &mut OutputType, data: &str, ) -> core::result::Result<(), io::Error> { writeln!(strm, "{:}", data) } #[cfg(test)] fn writeln_time( strm: &mut OutputType, data: &str, v0: u64, v1: u64, v2: u32, ) -> core::result::Result<(), io::Error> { writeln!(strm, "{:} {:} {:}.{:09}", v0, data, v1, v2) } fn read_custom_dictionary(filename: &str) -> Vec { let mut dict = match File::open(Path::new(&filename)) { Err(why) => panic!("couldn't open custom dictionary {:}\n{:}", filename, why), Ok(file) => file, }; let mut ret = Vec::::new(); dict.read_to_end(&mut ret).unwrap(); ret } #[cfg(feature = "std")] fn has_stdlib() -> bool { true } #[cfg(not(feature = "std"))] fn has_stdlib() -> bool { false } fn main() { let mut buffer_size = 65536; let mut do_compress = false; let mut do_validate = false; let mut params = brotli::enc::BrotliEncoderInitParams(); let mut custom_dictionary = Vec::::new(); let mut use_work_pool = has_stdlib(); params.quality = 11; // default let mut filenames = [std::string::String::new(), std::string::String::new()]; let mut num_benchmarks = 1; let mut double_dash = false; let mut num_threads = 1; if env::args_os().len() > 1 { let mut first = true; for argument in env::args() { if first { first = false; continue; } if argument == "--" { double_dash = true; continue; } if (argument == "-catable" || argument == "--catable") && !double_dash { params.catable = true; params.use_dictionary = false; params.appendable = true; continue; } if (argument == "-nothreadpool" || argument == "--nothreadpool") && !double_dash { use_work_pool = false; continue; } if (argument == "-appendable" || argument == "--appendable") && !double_dash { params.appendable = true; continue; } if (argument.starts_with("-magic") || argument.starts_with("--magic")) && !double_dash { params.magic_number = true; continue; } if argument.starts_with("-customdictionary=") && !double_dash { for item in argument.splitn(2, |c| c == '=').skip(1) { custom_dictionary = read_custom_dictionary(item); } continue; } if argument == "--dump-dictionary" && !double_dash { util::print_dictionary(util::permute_dictionary()); return; } if argument == "-utf8" && !double_dash { params.mode = BrotliEncoderMode::BROTLI_FORCE_UTF8_PRIOR; continue; } if argument == "-msb" && !double_dash { params.mode = BrotliEncoderMode::BROTLI_FORCE_MSB_PRIOR; continue; } if argument == "-lsb" && !double_dash { params.mode = BrotliEncoderMode::BROTLI_FORCE_LSB_PRIOR; continue; } if argument == "-signed" && !double_dash { params.mode = BrotliEncoderMode::BROTLI_FORCE_SIGNED_PRIOR; continue; } if argument == "-efficient" && !double_dash { params.favor_cpu_efficiency = true; continue; } if argument == "-lowlatency" && !double_dash { params.favor_cpu_efficiency = false; continue; } if argument == "-i" && !double_dash { // display the intermediate representation of metablocks params.log_meta_block = true; continue; } if (argument == "-0" || argument == "-q0") && !double_dash { params.quality = 0; continue; } if (argument == "-1" || argument == "-q1") && !double_dash { params.quality = 1; continue; } if (argument == "-2" || argument == "-q2") && !double_dash { params.quality = 2; continue; } if (argument == "-3" || argument == "-q3") && !double_dash { params.quality = 3; continue; } if (argument == "-4" || argument == "-q4") && !double_dash { params.quality = 4; continue; } if (argument == "-5" || argument == "-q5") && !double_dash { params.quality = 5; continue; } if (argument == "-6" || argument == "-q6") && !double_dash { params.quality = 6; continue; } if (argument == "-7" || argument == "-q7") && !double_dash { params.quality = 7; continue; } if (argument == "-8" || argument == "-q8") && !double_dash { params.quality = 8; continue; } if (argument == "-9" || argument == "-q9") && !double_dash { params.quality = 9; continue; } if (argument == "-9.5" || argument == "-q9.5") && !double_dash { params.quality = 10; params.q9_5 = true; continue; } if (argument == "-9.5x" || argument == "-q9.5x") && !double_dash { params.quality = 11; params.q9_5 = true; continue; } if (argument == "-10" || argument == "-q10") && !double_dash { params.quality = 10; continue; } if (argument == "-11" || argument == "-q11") && !double_dash { params.quality = 11; continue; } if (argument == "-q9.5y") && !double_dash { params.quality = 12; params.q9_5 = true; continue; } if argument.starts_with("-l") && !double_dash { params.lgblock = argument .trim_matches('-') .trim_matches('l') .parse::() .unwrap(); continue; } if argument.starts_with("-j") && !double_dash { num_threads = min( max( 1, argument .trim_matches('-') .trim_matches('j') .parse::() .unwrap() as usize, ), MAX_THREADS, ); continue; } if argument.starts_with("-bytescore=") && !double_dash { params.hasher.literal_byte_score = argument .trim_matches('-') .trim_matches('b') .trim_matches('y') .trim_matches('t') .trim_matches('e') .trim_matches('s') .trim_matches('c') .trim_matches('o') .trim_matches('r') .trim_matches('e') .trim_matches('=') .parse::() .unwrap(); continue; } if argument.starts_with("-w") && !double_dash { params.lgwin = argument .trim_matches('-') .trim_matches('w') .parse::() .unwrap(); continue; } if (argument == "-validate" || argument == "--validate") && !double_dash { do_validate = true; continue; } if argument.starts_with("-bs") && !double_dash { buffer_size = argument .trim_matches('-') .trim_matches('b') .trim_matches('s') .trim_matches('=') .parse::() .unwrap(); continue; } if argument.starts_with("-findprior") && !double_dash { params.prior_bitmask_detection = 1; continue; } if argument.starts_with("-findspeed=") && !double_dash { params.cdf_adaptation_detection = argument .trim_matches('-') .trim_matches('f') .trim_matches('i') .trim_matches('n') .trim_matches('d') .trim_matches('r') .trim_matches('a') .trim_matches('n') .trim_matches('d') .trim_matches('o') .trim_matches('m') .trim_matches('=') .parse::() .unwrap() as u8; continue; } else if argument == "-findspeed" && !double_dash { params.cdf_adaptation_detection = 1; continue; } if argument == "-basicstride" && !double_dash { params.stride_detection_quality = 1; continue; } else if argument == "-advstride" && !double_dash { params.stride_detection_quality = 3; continue; } else if argument == "-stride" && !double_dash { params.stride_detection_quality = 2; continue; } else if (argument.starts_with("-s") && !argument.starts_with("-speed=")) && !double_dash { params.size_hint = argument .trim_matches('-') .trim_matches('s') .parse::() .unwrap(); continue; } if argument.starts_with("-speed=") && !double_dash { let comma_string = argument .trim_matches('-') .trim_matches('s') .trim_matches('p') .trim_matches('e') .trim_matches('e') .trim_matches('d') .trim_matches('='); let split = comma_string.split(','); for (index, s) in split.enumerate() { let data = s.parse::().unwrap(); if data > 16384 { println_stderr!("Speed must be <= 16384, not {}", data); } if index == 0 { for item in params.literal_adaptation.iter_mut() { item.0 = data; } } else if index == 1 { for item in params.literal_adaptation.iter_mut() { item.1 = data; } } else if (index & 1) == 0 { params.literal_adaptation[index / 2].0 = data; } else { params.literal_adaptation[index / 2].1 = data; } } continue; } if argument == "-avoiddistanceprefixsearch" && !double_dash { params.avoid_distance_prefix_search = true; } if argument.starts_with("-b") && !double_dash { num_benchmarks = argument .trim_matches('-') .trim_matches('b') .parse::() .unwrap(); continue; } if argument == "-c" && !double_dash { do_compress = true; continue; } if argument == "-h" || argument == "-help" || argument == "--help" && !double_dash { println_stderr!("Decompression:\nbrotli [input_file] [output_file]\nCompression:brotli -c -q9.5 -w22 [input_file] [output_file]\nQuality may be one of -q9.5 -q9.5x -q9.5y or -q[0-11] for standard brotli settings.\nOptional size hint -s to direct better compression\n\nThe -i parameter produces a cross human readdable IR representation of the file.\nThis can be ingested by other compressors.\nIR-specific options include:\n-findprior\n-speed="); return; } if filenames[0].is_empty() { filenames[0] = argument.clone(); continue; } if filenames[1].is_empty() { filenames[1] = argument.clone(); continue; } panic!("Unknown Argument {:}", argument); } if !filenames[0].is_empty() { let mut input = match File::open(Path::new(&filenames[0])) { Err(why) => panic!("couldn't open {:}\n{:}", filenames[0], why), Ok(file) => file, }; if !filenames[1].is_empty() { let mut output = match File::create(Path::new(&filenames[1])) { Err(why) => panic!( "couldn't open file for writing: {:}\n{:}", filenames[1], why ), Ok(file) => file, }; let mut worker_pool = if num_threads != 1 && do_compress && use_work_pool && !do_validate { Some(new_work_pool(num_threads - 1)) } else { None }; for i in 0..num_benchmarks { if do_validate { let dict = core::mem::take(&mut custom_dictionary); if num_benchmarks > 0 { custom_dictionary = dict.clone(); } match validate::compress_validate( &mut input, &mut output, buffer_size, ¶ms, dict.into(), num_threads, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } else if do_compress { if let Some(ref mut work_pool) = worker_pool { match compress_multi( &mut input, &mut output, ¶ms, num_threads, Some(work_pool), ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } else if num_threads != 1 { match compress_multi( &mut input, &mut output, ¶ms, num_threads, None, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } else { match compress( &mut input, &mut output, buffer_size, ¶ms, &custom_dictionary[..], num_threads, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } } else { let dict = core::mem::take(&mut custom_dictionary); if num_benchmarks > 0 { custom_dictionary = dict.clone(); } match decompress(&mut input, &mut output, buffer_size, dict.into()) { Ok(_) => {} Err(e) => panic!("Error: {:} during brotli decompress\nTo compress with Brotli, specify the -c flag.", e), } } if i + 1 != num_benchmarks { input.seek(SeekFrom::Start(0)).unwrap(); output.seek(SeekFrom::Start(0)).unwrap(); } } drop(output); } else { assert_eq!(num_benchmarks, 1); if do_validate { if do_compress { match validate::compress_validate( &mut input, &mut io::stdout(), buffer_size, ¶ms, custom_dictionary.into(), num_threads, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } else { match validate::compress_validate( &mut input, &mut io::sink(), buffer_size, ¶ms, custom_dictionary.into(), num_threads, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } } else if do_compress { match compress( &mut input, &mut io::stdout(), buffer_size, ¶ms, &custom_dictionary[..], num_threads, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } else { match decompress(&mut input, &mut io::stdout(), buffer_size, custom_dictionary.into()) { Ok(_) => {} Err(e) => panic!("Error: {:} during brotli decompress\nTo compress with Brotli, specify the -c flag.", e), } } } drop(input); } else { assert_eq!(num_benchmarks, 1); if do_validate { if do_compress { match validate::compress_validate( &mut io::stdin(), &mut io::stdout(), buffer_size, ¶ms, custom_dictionary.into(), num_threads, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } else { match validate::compress_validate( &mut io::stdin(), &mut io::sink(), buffer_size, ¶ms, custom_dictionary.into(), num_threads, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } } else if do_compress { match compress( &mut io::stdin(), &mut io::stdout(), buffer_size, ¶ms, &custom_dictionary[..], num_threads, ) { Ok(_) => return, Err(e) => panic!("Error {:?}", e), } } else { match decompress(&mut io::stdin(), &mut io::stdout(), buffer_size, custom_dictionary.into()) { Ok(_) => return, Err(e) => panic!("Error: {:} during brotli decompress\nTo compress with Brotli, specify the -c flag.", e), } } } } else { assert_eq!(num_benchmarks, 1); match decompress(&mut io::stdin(), &mut io::stdout(), buffer_size, custom_dictionary.into()) { Ok(_) => (), Err(e) => panic!("Error: {:} during brotli decompress\nTo compress with Brotli, specify the -c flag.", e), } } } brotli-6.0.0/src/bin/catbrotli.rs000064400000000000000000000132121046102023000150110ustar 00000000000000extern crate brotli; extern crate core; use std::env; use std::fs::File; use std::io; use std::io::{Read, Write}; use std::path::Path; use brotli::concat::{BroCatli, BroCatliResult}; fn usage() { writeln!( &mut ::std::io::stderr(), "Usage: [-w] filename0 filename1 filename2..." ) .unwrap(); } fn read_no_interrupt(r: &mut R, buf: &mut [u8]) -> Result { loop { match r.read(buf) { Err(e) => match e.kind() { io::ErrorKind::Interrupted => continue, _ => return Err(e), }, Ok(cur_read) => return Ok(cur_read), } } } fn write_no_interrupt(w: &mut W, mut buf: &[u8]) -> Result { let mut total_read = 0usize; loop { match w.write(buf) { Err(e) => match e.kind() { io::ErrorKind::Interrupted => continue, _ => return Err(e), }, Ok(cur_read) => { buf = &buf[cur_read..]; total_read += cur_read; if buf.is_empty() { return Ok(total_read); } } } } } fn main() { let mut window_size: Option = None; let mut double_dash = false; let mut buffer_size = 4096usize; let mut filenames = Vec::::new(); let mut ostream = io::stdout(); if env::args_os().len() > 1 { for argument in env::args().skip(1) { if argument.starts_with("-w") && !double_dash { window_size = Some( argument .trim_matches('-') .trim_matches('w') .parse::() .unwrap() as u8, ); continue; } if argument.starts_with("-bs") && !double_dash { buffer_size = argument .trim_matches('-') .trim_matches('b') .trim_matches('s') .parse::() .unwrap(); continue; } if argument == "--" { double_dash = true; continue; } filenames.push(argument); } } else { usage(); return; } let mut ibuffer = vec![0u8; buffer_size]; let mut obuffer = vec![0u8; buffer_size]; let mut ooffset = 0; let mut ioffset; let mut bro_cat_li = match window_size { Some(ws) => BroCatli::new_with_window_size(ws), None => BroCatli::new(), }; for filename in filenames { bro_cat_li.new_brotli_file(); let mut input_file = match File::open(Path::new(&filename)) { Err(why) => panic!("couldn't open {:}\n{:}", filename, why), Ok(file) => file, }; loop { ioffset = 0; match read_no_interrupt(&mut input_file, &mut ibuffer[..]) { Err(e) => panic!("{}", e), Ok(cur_read) => { if cur_read == 0 { break; } loop { match bro_cat_li.stream( &ibuffer[..cur_read], &mut ioffset, &mut obuffer[..], &mut ooffset, ) { BroCatliResult::NeedsMoreOutput => { match write_no_interrupt(&mut ostream, &obuffer[..ooffset]) { Err(why) => panic!("couldn't write: {:}", why), Ok(count) => { assert_eq!(count, ooffset); } } ooffset = 0; } BroCatliResult::NeedsMoreInput => { break; } BroCatliResult::Success => { panic!("Unexpected state: Success when streaming before finish"); } failure => { panic!( "Failed to concatenate files on {:} {:?}", filename, failure ); } } } } } } } loop { match bro_cat_li.finish(&mut obuffer[..], &mut ooffset) { BroCatliResult::NeedsMoreOutput => { match write_no_interrupt(&mut ostream, &obuffer[..ooffset]) { Err(why) => panic!("couldn't write: {:}", why), Ok(count) => { assert_eq!(count, ooffset); } } ooffset = 0; } BroCatliResult::NeedsMoreInput => { panic!("Unexpected EOF"); } BroCatliResult::Success => { if ooffset != 0 { match write_no_interrupt(&mut ostream, &obuffer[..ooffset]) { Err(why) => panic!("couldn't write: {:}", why), Ok(count) => { assert_eq!(count, ooffset); } } } break; } failure => { panic!("{:?}", failure) } } } } brotli-6.0.0/src/bin/integration_tests.rs000075500000000000000000001155731046102023000166130ustar 00000000000000#![cfg(test)] #![allow(non_upper_case_globals)] #![allow(dead_code)] extern crate brotli_decompressor; extern crate core; #[allow(unused_imports)] use super::alloc_no_stdlib::{Allocator, SliceWrapper, SliceWrapperMut}; use super::brotli::BrotliResult; use super::brotli::BrotliState; #[cfg(feature = "std")] use super::brotli::{CompressorReader, CompressorWriter}; #[cfg(feature = "std")] use super::brotli_decompressor::{Decompressor, DecompressorWriter}; use super::HeapAllocator; use super::Rebox; use brotli::BrotliDecompressStream; use core::cmp::min; use std::io; #[cfg(feature = "std")] use std::io::{Read, Write}; use std::time::Duration; #[cfg(not(feature = "disable-timer"))] use std::time::SystemTime; #[cfg(feature = "benchmark")] extern crate test; #[cfg(feature = "benchmark")] use self::test::Bencher; pub struct Buffer { data: Vec, read_offset: usize, } pub struct UnlimitedBuffer { data: Vec, read_offset: usize, } #[cfg(feature = "disable-timer")] fn now() -> Duration { return Duration::new(0, 0); } #[cfg(not(feature = "disable-timer"))] fn now() -> SystemTime { SystemTime::now() } #[cfg(not(feature = "disable-timer"))] fn elapsed(start: SystemTime) -> (Duration, bool) { match start.elapsed() { Ok(delta) => (delta, false), _ => (Duration::new(0, 0), true), } } #[cfg(feature = "disable-timer")] fn elapsed(_start: Duration) -> (Duration, bool) { return (Duration::new(0, 0), true); } fn _write_all(w: &mut OutputType, buf: &[u8]) -> Result<(), io::Error> where OutputType: io::Write, { let mut total_written: usize = 0; while total_written < buf.len() { match w.write(&buf[total_written..]) { Err(e) => match e.kind() { io::ErrorKind::Interrupted => continue, _ => return Err(e), }, Ok(cur_written) => { if cur_written == 0 { return Err(io::Error::new(io::ErrorKind::UnexpectedEof, "Write EOF")); } total_written += cur_written; } } } Ok(()) } trait Runner { fn iter(&mut self, cb: &mut Fn); } struct Passthrough {} impl Runner for Passthrough { fn iter(&mut self, cb: &mut Fn) { cb() } } #[cfg(feature = "benchmark")] struct BenchmarkPassthrough<'a>(pub &'a mut Bencher); #[cfg(feature = "benchmark")] impl<'a> Runner for BenchmarkPassthrough<'a> { fn iter(&mut self, cb: &mut Fn) { self.0.iter(cb) } } // option_env!("BENCHMARK_MODE").is_some() fn decompress_internal( r: &mut InputType, mut w: &mut OutputType, input_buffer_limit: usize, output_buffer_limit: usize, runner: &mut Run, ) -> Result<(), io::Error> where InputType: io::Read, OutputType: io::Write, { let mut total = Duration::new(0, 0); let mut range: usize = 0; let mut timing_error: bool = false; runner.iter(&mut || { range += 1; let mut brotli_state = BrotliState::new( HeapAllocator::default(), HeapAllocator::default(), HeapAllocator::default(), ); let mut input = brotli_state.alloc_u8.alloc_cell(input_buffer_limit); let mut output = brotli_state.alloc_u8.alloc_cell(output_buffer_limit); let mut available_out: usize = output.slice().len(); // let amount = try!(r.read(&mut buf)); let mut available_in: usize = 0; let mut input_offset: usize = 0; let mut output_offset: usize = 0; let mut result: BrotliResult = BrotliResult::NeedsMoreInput; loop { match result { BrotliResult::NeedsMoreInput => { input_offset = 0; match r.read(input.slice_mut()) { Err(e) => match e.kind() { io::ErrorKind::Interrupted => continue, _ => panic!("{}", e), }, Ok(size) => { if size == 0 { panic!( "{:?}", io::Error::new(io::ErrorKind::UnexpectedEof, "Read EOF") ); } available_in = size; } } } BrotliResult::NeedsMoreOutput => { _write_all(&mut w, &output.slice()[..output_offset]).unwrap(); output_offset = 0; } BrotliResult::ResultSuccess => break, BrotliResult::ResultFailure => panic!("FAILURE"), } let mut written: usize = 0; let start = now(); result = BrotliDecompressStream( &mut available_in, &mut input_offset, input.slice(), &mut available_out, &mut output_offset, output.slice_mut(), &mut written, &mut brotli_state, ); let (delta, err) = elapsed(start); if err { timing_error = true; } total += delta; if output_offset != 0 { _write_all(&mut w, &output.slice()[..output_offset]).unwrap(); output_offset = 0; available_out = output.slice().len() } } }); if timing_error { let _r = super::writeln0(&mut io::stderr(), "Timing error"); } else { let _r = super::writeln_time( &mut io::stderr(), "Iterations; Time", range as u64, total.as_secs(), total.subsec_nanos(), ); } Ok(()) } impl Buffer { pub fn new(buf: &[u8]) -> Buffer { let mut ret = Buffer { data: Vec::::new(), read_offset: 0, }; ret.data.extend(buf); ret } } impl UnlimitedBuffer { pub fn new(buf: &[u8]) -> Self { let mut ret = UnlimitedBuffer { data: Vec::::new(), read_offset: 0, }; ret.data.extend(buf); ret } pub fn reset_read(&mut self) { self.read_offset = 0; } pub fn data(&self) -> &[u8] { &self.data[..] } } impl io::Read for Buffer { fn read(&mut self, buf: &mut [u8]) -> io::Result { if self.read_offset == self.data.len() { self.read_offset = 0; } let bytes_to_read = min(buf.len(), self.data.len() - self.read_offset); if bytes_to_read > 0 { buf[0..bytes_to_read] .clone_from_slice(&self.data[self.read_offset..self.read_offset + bytes_to_read]); } self.read_offset += bytes_to_read; Ok(bytes_to_read) } } impl io::Write for Buffer { fn write(&mut self, buf: &[u8]) -> io::Result { if self.read_offset == self.data.len() { return Ok(buf.len()); } self.data.extend(buf); Ok(buf.len()) } fn flush(&mut self) -> io::Result<()> { Ok(()) } } impl io::Read for UnlimitedBuffer { fn read(&mut self, buf: &mut [u8]) -> io::Result { let bytes_to_read = min(buf.len(), self.data.len() - self.read_offset); if bytes_to_read > 0 { buf[0..bytes_to_read] .clone_from_slice(&self.data[self.read_offset..self.read_offset + bytes_to_read]); } self.read_offset += bytes_to_read; Ok(bytes_to_read) } } impl io::Write for UnlimitedBuffer { fn write(&mut self, buf: &[u8]) -> io::Result { self.data.extend(buf); Ok(buf.len()) } fn flush(&mut self) -> io::Result<()> { Ok(()) } } #[allow(non_snake_case)] #[test] fn test_roundtrip_64x() { let X = b'X'; let in_buf: [u8; 64] = [ X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, ]; let mut input = UnlimitedBuffer::new(&in_buf); let mut compressed = UnlimitedBuffer::new(&[]); let mut output = UnlimitedBuffer::new(&[]); let q: i32 = 9; let lgwin: i32 = 16; let mut params = super::brotli::enc::BrotliEncoderInitParams(); params.quality = q; params.lgwin = lgwin; match super::compress(&mut input, &mut compressed, 65536, ¶ms, &[], 1) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } let mut compressed_in = UnlimitedBuffer::new(&compressed.data[..]); match super::decompress(&mut compressed_in, &mut output, 65536, Rebox::default()) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } for i in 0..input.data.len() { assert_eq!(output.data[i], input.data[i]); } assert_eq!(output.data.len(), input.data.len()); assert_eq!(input.read_offset, in_buf.len()); } fn roundtrip_helper(in_buf: &[u8], q: i32, lgwin: i32, q9_5: bool) -> usize { let mut params = super::brotli::enc::BrotliEncoderInitParams(); params.quality = q; params.q9_5 = q9_5; params.lgwin = lgwin; params.size_hint = if in_buf.len() > 100000 { 2048 * 1024 } else { in_buf.len() }; let mut input = UnlimitedBuffer::new(in_buf); let mut compressed = UnlimitedBuffer::new(&[]); let mut output = UnlimitedBuffer::new(&[]); match super::compress(&mut input, &mut compressed, 4096, ¶ms, &[], 1) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } let mut compressed_in = UnlimitedBuffer::new(&compressed.data[..]); match super::decompress(&mut compressed_in, &mut output, 4096, Rebox::default()) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } for i in 0..input.data.len() { assert_eq!(output.data[i], input.data[i]); } assert_eq!(output.data.len(), input.data.len()); assert_eq!(input.read_offset, in_buf.len()); compressed.data[..].len() } fn total_roundtrip_helper(data: &[u8]) { for q in 0..10 { roundtrip_helper(data, q, q + 13, false); } roundtrip_helper(data, 10, 23, true); } static RANDOM_THEN_UNICODE: &[u8] = include_bytes!("../../testdata/random_then_unicode"); #[test] fn test_random_then_unicode_0() { roundtrip_helper(RANDOM_THEN_UNICODE, 0, 13, false); } #[test] fn test_random_then_unicode_1() { roundtrip_helper(RANDOM_THEN_UNICODE, 1, 14, false); } #[test] fn test_random_then_unicode_2() { roundtrip_helper(RANDOM_THEN_UNICODE, 2, 15, false); } #[test] fn test_random_then_unicode_3() { roundtrip_helper(RANDOM_THEN_UNICODE, 3, 16, false); } #[test] fn test_random_then_unicode_4() { roundtrip_helper(RANDOM_THEN_UNICODE, 4, 17, false); } #[test] fn test_random_then_unicode_5() { roundtrip_helper(RANDOM_THEN_UNICODE, 5, 18, false); } #[test] fn test_random_then_unicode_6() { roundtrip_helper(RANDOM_THEN_UNICODE, 6, 19, false); } #[test] fn test_random_then_unicode_7() { roundtrip_helper(RANDOM_THEN_UNICODE, 7, 20, false); } #[test] fn test_random_then_unicode_8() { roundtrip_helper(RANDOM_THEN_UNICODE, 8, 21, false); } #[test] fn test_random_then_unicode_9() { roundtrip_helper(RANDOM_THEN_UNICODE, 9, 22, false); } #[cfg(feature = "std")] const random_then_unicode_compressed_size_9_5: usize = 130036; #[cfg(feature = "std")] const random_then_unicode_compressed_size_9_5x: usize = 129715; #[cfg(not(feature = "std"))] const alice_compressed_size_10: usize = 47490; #[cfg(not(feature = "std"))] const alice_compressed_size_11: usize = 46496; #[cfg(feature = "std")] #[cfg(not(feature = "float64"))] const alice_compressed_size_10: usize = 47488; #[cfg(feature = "std")] #[cfg(not(feature = "float64"))] const alice_compressed_size_11: usize = 46493; #[cfg(feature = "std")] #[cfg(feature = "float64")] const alice_compressed_size_10: usize = 47515; #[cfg(feature = "std")] #[cfg(feature = "float64")] const alice_compressed_size_11: usize = 46510; #[cfg(not(feature = "std"))] // approx log const random_then_unicode_compressed_size_9_5: usize = 130105; #[cfg(not(feature = "std"))] // approx log const random_then_unicode_compressed_size_9_5x: usize = 129873; #[test] fn test_random_then_unicode_9_5() { let c_size = roundtrip_helper(RANDOM_THEN_UNICODE, 10, 28, true); assert_eq!(c_size, random_then_unicode_compressed_size_9_5); } #[test] fn test_random_then_unicode_9x5() { let c_size = roundtrip_helper(RANDOM_THEN_UNICODE, 11, 22, true); assert_eq!(c_size, random_then_unicode_compressed_size_9_5x); } #[test] fn test_alice29_11() { let c_size = roundtrip_helper(include_bytes!("../../testdata/alice29.txt"), 11, 22, false); if c_size != 46492 { // depends on log2 impl assert_eq!(c_size, alice_compressed_size_11); } } #[test] fn test_alice29_10() { let c_size = roundtrip_helper(include_bytes!("../../testdata/alice29.txt"), 10, 22, false); assert_eq!(c_size, alice_compressed_size_10); } #[test] fn test_roundtrip_quickfox_repeated() { total_roundtrip_helper(include_bytes!("../../testdata/quickfox_repeated")); } #[test] fn test_roundtrip_alice29() { total_roundtrip_helper(include_bytes!("../../testdata/alice29.txt")); } #[test] fn test_roundtrip_as_you_lik() { total_roundtrip_helper(include_bytes!("../../testdata/asyoulik.txt")); } #[cfg(feature = "std")] fn reader_helper(mut in_buf: &[u8], q: u32, lgwin: u32) { let original_buf = in_buf; let mut cmp = [0u8; 259]; let mut input = UnlimitedBuffer::new(in_buf); { let renc = CompressorReader::new(&mut input, 255, q, lgwin); let mut rdec = Decompressor::new(renc, 257); loop { match rdec.read(&mut cmp[..]) { Ok(size) => { if size == 0 { break; } assert_eq!(cmp[..size], in_buf[..size]); in_buf = &in_buf[size..]; } Err(e) => panic!("Error {:?}", e), } } let inner_item = rdec.into_inner(); let _inner_inner_item = inner_item.into_inner(); } in_buf = original_buf; input = UnlimitedBuffer::new(in_buf); let mut r2enc = CompressorReader::new(&mut input, 255, q, lgwin); let mut compressed_size = 0usize; loop { match r2enc.read(&mut cmp[..]) { Ok(size) => { if size == 0 { break; } compressed_size += size; } Err(e) => panic!("Error {:?}", e), } } let pct_ratio = 90usize; assert!(compressed_size < original_buf.len() * pct_ratio / 100); } /* #[cfg(feature="std")] fn simple_reader_helper(mut in_buf: &[u8], q: u32, lgwin: u32) { let mut xinput = UnlimitedBuffer::new(&in_buf); let xenc; let mut buf = HeapAllocator::default().alloc_cell(1024); xenc = SimpleReader::new(xinput, buf, 1, 16); return; let original_buf = in_buf; let mut cmp = [0u8; 259]; let mut buf = HeapAllocator::default().alloc_cell(1024); let mut input = UnlimitedBuffer::new(&in_buf); { let renc = SimpleReader::new(&mut input, buf, q, lgwin).unwrap(); let mut rdec = Decompressor::new(renc, 257); loop { match rdec.read(&mut cmp[..]) { Ok(size) => { if size == 0 { break; } assert_eq!(cmp[..size], in_buf[..size]); in_buf = &in_buf[size..]; } Err(e) => panic!("Error {:?}", e), } } } in_buf = original_buf; input = UnlimitedBuffer::new(&in_buf); let mut r2enc = CompressorReader::new(&mut input, 255, q, lgwin); let mut compressed_size = 0usize; loop { match r2enc.read(&mut cmp[..]) { Ok(size) => { if size == 0 { break; } compressed_size += size; } Err(e) => panic!("Error {:?}", e), } } let pct_ratio = 90usize; assert!(compressed_size < original_buf.len() * pct_ratio / 100); } */ #[cfg(feature = "std")] #[test] fn test_reader_64x() { reader_helper(include_bytes!("../../testdata/64x"), 9, 20); } /* #[cfg(feature="std")] #[test] fn test_simple_64x() { bogus_reader_helper(include_bytes!("../../testdata/64x"), 9, 20); }*/ #[cfg(feature = "std")] #[test] fn test_reader_as_you_lik() { reader_helper(include_bytes!("../../testdata/asyoulik.txt"), 9, 20); } #[cfg(feature = "std")] #[test] fn test_reader_quickfox_repeated() { reader_helper(include_bytes!("../../testdata/quickfox_repeated"), 9, 20); } #[cfg(feature = "std")] #[test] fn test_reader_random_then_unicode() { reader_helper(include_bytes!("../../testdata/random_then_unicode"), 9, 20); } #[cfg(feature = "std")] #[test] fn test_reader_alice() { reader_helper(include_bytes!("../../testdata/alice29.txt"), 9, 22); } #[cfg(feature = "std")] fn writer_helper(mut in_buf: &[u8], buf_size: usize, q: u32, lgwin: u32, do_flush: bool) { let original_buf = in_buf; let mut output = UnlimitedBuffer::new(&[]); { { let wdec = DecompressorWriter::new(&mut output, 257); { let mut wenc = CompressorWriter::new(wdec, 255, q, lgwin); while !in_buf.is_empty() { match wenc.write(&in_buf[..min(in_buf.len(), buf_size)]) { Ok(size) => { if size == 0 { break; } in_buf = &in_buf[size..]; } Err(e) => panic!("Error {:?}", e), } if do_flush { if let Err(e) = wenc.flush() { panic!("Error {:?}", e); } } } } } assert_eq!(output.data.len(), original_buf.len()); for i in 0..min(original_buf.len(), output.data.len()) { assert_eq!(output.data[i], original_buf[i]); } in_buf = original_buf; let mut compressed = UnlimitedBuffer::new(&[]); { let mut wenc = CompressorWriter::new(&mut compressed, 255, q, lgwin); while !in_buf.is_empty() { match wenc.write(&in_buf[..min(in_buf.len(), buf_size)]) { Ok(size) => { if size == 0 { break; } in_buf = &in_buf[size..]; } Err(e) => panic!("Error {:?}", e), } } } let pct_ratio = 90usize; assert!(compressed.data.len() < original_buf.len() * pct_ratio / 100); } } #[cfg(feature = "std")] fn into_inner_writer_helper(mut in_buf: &[u8], buf_size: usize, q: u32, lgwin: u32) { let orig_buf = in_buf; let mut compressed = UnlimitedBuffer::new(&[]); let mut wenc = CompressorWriter::new(&mut compressed, 255, q, lgwin); while !in_buf.is_empty() { match wenc.write(&in_buf[..min(in_buf.len(), buf_size)]) { Ok(size) => { if size == 0 { break; } in_buf = &in_buf[size..]; } Err(e) => panic!("Error {:?}", e), } } let c2 = wenc.into_inner(); let pct_ratio = 95usize; assert!(!c2.data.is_empty()); assert!(c2.data.len() < orig_buf.len() * pct_ratio / 100); let mut compressed_in = UnlimitedBuffer::new(&c2.data[..]); let mut output = UnlimitedBuffer::new(&[]); match super::decompress(&mut compressed_in, &mut output, 65536, Rebox::default()) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } for i in 0..orig_buf.len() { assert_eq!(output.data[i], orig_buf[i]); } assert_eq!(output.data.len(), orig_buf.len()); } #[cfg(feature = "std")] #[test] fn test_writer_as_you_lik() { writer_helper( include_bytes!("../../testdata/asyoulik.txt"), 17, 9, 20, false, ); } #[cfg(feature = "std")] #[test] fn test_writer_as_you_lik_into_inner() { into_inner_writer_helper(include_bytes!("../../testdata/asyoulik.txt"), 256, 4, 16); } #[cfg(feature = "std")] #[test] fn test_writer_64x() { writer_helper(include_bytes!("../../testdata/64x"), 17, 9, 20, false); } #[cfg(feature = "std")] #[test] fn test_writer_quickfox_repeated() { writer_helper( include_bytes!("../../testdata/quickfox_repeated"), 251, 9, 20, false, ); } #[cfg(feature = "std")] #[test] fn test_writer_random_then_unicode() { writer_helper( include_bytes!("../../testdata/random_then_unicode"), 277, 9, 20, false, ); } #[cfg(feature = "std")] #[test] fn test_writer_alice() { writer_helper( include_bytes!("../../testdata/alice29.txt"), 299, 9, 22, true, ); } #[test] fn test_10x_10y() { let in_buf: [u8; 12] = [ 0x1b, 0x13, 0x00, 0x00, 0xa4, 0xb0, 0xb2, 0xea, 0x81, 0x47, 0x02, 0x8a, ]; let mut input = Buffer::new(&in_buf); let mut output = Buffer::new(&[]); output.read_offset = 20; match super::decompress(&mut input, &mut output, 65536, Rebox::default()) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } let mut i: usize = 0; while i < 10 { assert_eq!(output.data[i], b'X'); assert_eq!(output.data[i + 10], b'Y'); i += 1; } assert_eq!(output.data.len(), 20); assert_eq!(input.read_offset, in_buf.len()); } #[test] fn test_10x_10y_one_out_byte() { let in_buf: [u8; 12] = [ 0x1b, 0x13, 0x00, 0x00, 0xa4, 0xb0, 0xb2, 0xea, 0x81, 0x47, 0x02, 0x8a, ]; let mut input = Buffer::new(&in_buf); let mut output = Buffer::new(&[]); output.read_offset = 20; match decompress_internal(&mut input, &mut output, 12, 1, &mut Passthrough {}) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } let mut i: usize = 0; while i < 10 { assert_eq!(output.data[i], b'X'); assert_eq!(output.data[i + 10], b'Y'); i += 1; } assert_eq!(output.data.len(), 20); assert_eq!(input.read_offset, in_buf.len()); } #[test] fn test_10x_10y_byte_by_byte() { let in_buf: [u8; 12] = [ 0x1b, 0x13, 0x00, 0x00, 0xa4, 0xb0, 0xb2, 0xea, 0x81, 0x47, 0x02, 0x8a, ]; let mut input = Buffer::new(&in_buf); let mut output = Buffer::new(&[]); output.read_offset = 20; match decompress_internal(&mut input, &mut output, 1, 1, &mut Passthrough {}) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } let mut i: usize = 0; while i < 10 { assert_eq!(output.data[i], b'X'); assert_eq!(output.data[i + 10], b'Y'); i += 1; } assert_eq!(output.data.len(), 20); assert_eq!(input.read_offset, in_buf.len()); } fn assert_decompressed_input_matches_output( input_slice: &[u8], output_slice: &[u8], input_buffer_size: usize, output_buffer_size: usize, ) { let mut input = Buffer::new(input_slice); let mut output = Buffer::new(&[]); output.read_offset = output_slice.len(); if input_buffer_size == output_buffer_size { match super::decompress(&mut input, &mut output, input_buffer_size, Rebox::default()) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } else { match decompress_internal( &mut input, &mut output, input_buffer_size, output_buffer_size, &mut Passthrough {}, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } assert_eq!(output.data.len(), output_slice.len()); assert_eq!(output.data, output_slice) } #[cfg(feature = "benchmark")] fn benchmark_decompressed_input( input_slice: &[u8], output_slice: &[u8], input_buffer_size: usize, output_buffer_size: usize, bench: &mut Bencher, ) { let mut input = Buffer::new(input_slice); let mut output = Buffer::new(&[]); output.read_offset = output_slice.len(); match decompress_internal( &mut input, &mut output, input_buffer_size, output_buffer_size, &mut BenchmarkPassthrough(bench), ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } assert_eq!(output.data.len(), output_slice.len()); assert_eq!(output.data, output_slice) } pub struct LimitedBuffer<'a> { pub data: &'a mut [u8], pub write_offset: usize, pub read_offset: usize, } impl<'a> LimitedBuffer<'a> { pub fn new(buf: &'a mut [u8]) -> Self { LimitedBuffer { data: buf, write_offset: 0, read_offset: 0, } } } impl<'a> LimitedBuffer<'a> { fn reset(&mut self) { self.write_offset = 0; self.read_offset = 0; self.data.split_at_mut(32).0.clone_from_slice(&[0u8; 32]); // clear the first 256 bits } fn reset_read(&mut self) { self.read_offset = 0; } fn written(&self) -> &[u8] { &self.data[..self.write_offset] } } impl<'a> io::Read for LimitedBuffer<'a> { fn read(&mut self, buf: &mut [u8]) -> io::Result { let bytes_to_read = min(buf.len(), self.data.len() - self.read_offset); if bytes_to_read > 0 { buf[0..bytes_to_read] .clone_from_slice(&self.data[self.read_offset..self.read_offset + bytes_to_read]); } self.read_offset += bytes_to_read; Ok(bytes_to_read) } } impl<'a> io::Write for LimitedBuffer<'a> { fn write(&mut self, buf: &[u8]) -> io::Result { let bytes_to_write = min(buf.len(), self.data.len() - self.write_offset); if bytes_to_write > 0 { self.data[self.write_offset..self.write_offset + bytes_to_write] .clone_from_slice(&buf[..bytes_to_write]); } else { return Err(io::Error::new(io::ErrorKind::WriteZero, "OutOfBufferSpace")); } self.write_offset += bytes_to_write; Ok(bytes_to_write) } fn flush(&mut self) -> io::Result<()> { Ok(()) } } fn benchmark_helper( input_slice: &[u8], compress_buffer_size: usize, decompress_buffer_size: usize, bench_compress: bool, bench_decompress: bool, bench: &mut Run, quality: i32, q9_5: bool, ) { let mut params = super::brotli::enc::BrotliEncoderInitParams(); params.quality = quality; params.q9_5 = q9_5; params.large_window = true; let mut input = UnlimitedBuffer::new(input_slice); let mut compressed_array = vec![0; input_slice.len() * 100 / 99]; let mut rt_array = vec![0; input_slice.len() + 1]; let mut compressed = LimitedBuffer::new(&mut compressed_array[..]); let mut rt = LimitedBuffer::new(&mut rt_array[..]); if !bench_compress { match super::compress( &mut input, &mut compressed, compress_buffer_size, ¶ms, &[], 1, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } bench.iter(&mut || { input.reset_read(); if bench_compress { compressed.reset(); match super::compress( &mut input, &mut compressed, compress_buffer_size, ¶ms, &[], 1, ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } if bench_decompress { compressed.reset_read(); rt.reset(); match super::decompress( &mut compressed, &mut rt, decompress_buffer_size, Rebox::default(), ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } }); if !bench_decompress { compressed.reset_read(); rt.reset(); match super::decompress( &mut compressed, &mut rt, decompress_buffer_size, Rebox::default(), ) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } } assert_eq!(rt.write_offset, input_slice.len()); assert_eq!(&rt.data[..input_slice.len()], input_slice); } fn expand_test_data(size: usize) -> Vec { let mut ret = vec![0u8; size]; let original_data = include_bytes!("../../testdata/random_then_unicode"); let mut count = 0; let mut iter = 0usize; while count < size { let to_copy = min(size - count, original_data.len()); let target = &mut ret[count..(count + to_copy)]; for (dst, src) in target.iter_mut().zip(original_data[..to_copy].iter()) { *dst = src.wrapping_add(iter as u8); } count += to_copy; iter += 1; } ret } #[test] fn test_1024k() { let td = expand_test_data(1024 * 1024); benchmark_helper( &td[..], 65536, 65536, true, true, &mut Passthrough {}, 2, false, ); } static UKKONOOA: &[u8] = include_bytes!("../../testdata/ukkonooa"); #[test] fn test_ukkonooa() { let td = UKKONOOA; benchmark_helper(td, 65536, 65536, true, true, &mut Passthrough {}, 11, false); } #[cfg(feature = "benchmark")] #[bench] fn bench_e2e_decode_q9_5_1024k(bench: &mut Bencher) { let td = expand_test_data(1024 * 1024); benchmark_helper( &td[..], 65536, 65536, false, true, &mut BenchmarkPassthrough(bench), 11, true, ); } #[cfg(feature = "benchmark")] #[bench] fn bench_e2e_decode_q11_1024k(bench: &mut Bencher) { let td = expand_test_data(1024 * 1024); benchmark_helper( &td[..], 65536, 65536, false, true, &mut BenchmarkPassthrough(bench), 11, false, ); } #[cfg(feature = "benchmark")] #[bench] fn bench_e2e_decode_q5_1024k(bench: &mut Bencher) { let td = expand_test_data(1024 * 1024); benchmark_helper( &td[..], 65536, 65536, false, true, &mut BenchmarkPassthrough(bench), 5, false, ); } #[cfg(feature = "benchmark")] #[bench] fn bench_e2e_rt_q9_5_1024k(bench: &mut Bencher) { let td = expand_test_data(1024 * 1024); benchmark_helper( &td[..], 65536, 65536, true, true, &mut BenchmarkPassthrough(bench), 11, true, ); } #[cfg(feature = "benchmark")] #[bench] fn bench_e2e_rt_q11_1024k(bench: &mut Bencher) { let td = expand_test_data(1024 * 1024); benchmark_helper( &td[..], 65536, 65536, true, true, &mut BenchmarkPassthrough(bench), 11, false, ); } #[cfg(feature = "benchmark")] #[bench] fn bench_e2e_rt_q9_1024k(bench: &mut Bencher) { let td = expand_test_data(1024 * 1024); benchmark_helper( &td[..], 65536, 65536, true, true, &mut BenchmarkPassthrough(bench), 9, false, ); } #[cfg(feature = "benchmark")] #[bench] fn bench_e2e_rt_q5_1024k(bench: &mut Bencher) { let td = expand_test_data(1024 * 1024); benchmark_helper( &td[..], 65536, 65536, true, true, &mut BenchmarkPassthrough(bench), 5, false, ); } #[test] fn test_64x() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/64x.compressed"), include_bytes!("../../testdata/64x"), 3, 3, ); } #[test] fn test_as_you_like_it() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/asyoulik.txt.compressed"), include_bytes!("../../testdata/asyoulik.txt"), 65536, 65536, ); } #[test] #[should_panic] fn test_negative_hypothesis() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/64x"), include_bytes!("../../testdata/64x"), 3, 3, ); } static ALICE29_BR: &[u8] = include_bytes!("../../testdata/alice29.txt.compressed"); static ALICE29: &[u8] = include_bytes!("../../testdata/alice29.txt"); #[test] fn test_alice29() { assert_decompressed_input_matches_output(ALICE29_BR, ALICE29, 65536, 65536); } #[cfg(feature = "benchmark")] #[bench] fn benchmark_alice29(bench: &mut Bencher) { benchmark_decompressed_input(ALICE29_BR, ALICE29, 65536, 65536, bench); } #[test] fn test_alice1() { assert_decompressed_input_matches_output(ALICE29_BR, ALICE29, 1, 65536); } #[test] fn test_backward65536() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/backward65536.compressed"), include_bytes!("../../testdata/backward65536"), 65536, 65536, ); } #[test] fn test_compressed_file() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/compressed_file.compressed"), include_bytes!("../../testdata/compressed_file"), 65536, 65536, ); } #[test] fn test_compressed_repeated() { assert_decompressed_input_matches_output( include_bytes!( "../../testdata/compressed_repeated.\ compressed" ), include_bytes!("../../testdata/compressed_repeated"), 65536, 65536, ); } #[test] fn test_empty() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty0() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.00"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty1() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.01"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty2() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.02"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty3() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.03"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty4() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.04"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty5() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.05"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty6() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.06"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty7() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.07"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty8() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.08"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty9() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.09"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty10() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.10"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty11() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.11"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty12() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.12"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty13() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.13"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty14() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.14"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty15() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.15"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty16() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.16"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty17() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.17"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } #[test] fn test_empty18() { assert_decompressed_input_matches_output( include_bytes!("../../testdata/empty.compressed.18"), include_bytes!("../../testdata/empty"), 65536, 65536, ); } pub struct SoonErrorReader(&'static [u8], bool); impl io::Read for SoonErrorReader { fn read(&mut self, data: &mut [u8]) -> io::Result { let first = self.1; self.1 = false; if first { let len = min(self.0.len(), data.len()); data[..len].clone_from_slice(&self.0[..len]); return Ok(len); } Err(io::Error::new(io::ErrorKind::PermissionDenied, "err")) } } #[test] fn test_error_returned() { static onetwothreefourfive: [u8; 5] = [1, 2, 3, 4, 5]; let params = super::brotli::enc::BrotliEncoderParams::default(); let mut erroring = SoonErrorReader(&onetwothreefourfive[..], true); let mut br = UnlimitedBuffer::new(&[]); let dict = &[]; let err = super::compress(&mut erroring, &mut br, 4096, ¶ms, dict, 1); if let Ok(_x) = err { panic!("Should have errored {:?}\n", err); } let mut output = UnlimitedBuffer::new(&[]); let mut br_copy = Buffer::new(&br.data[..]); assert_eq!(br.data.len(), 9); match decompress_internal(&mut br_copy, &mut output, 1, 1, &mut Passthrough {}) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } assert_eq!(output.data, &onetwothreefourfive[..]); } brotli-6.0.0/src/bin/test_broccoli.rs000075500000000000000000000352151046102023000156730ustar 00000000000000#![cfg(test)] #![allow(non_upper_case_globals)] #![allow(dead_code)] extern crate brotli_decompressor; extern crate core; use super::brotli::concat::{BroCatli, BroCatliResult}; use super::brotli::enc::BrotliEncoderParams; use super::integration_tests::UnlimitedBuffer; use brotli_decompressor::{CustomRead, CustomWrite}; use core::cmp::{max, min}; static RANDOM_THEN_UNICODE: &[u8] = include_bytes!("../../testdata/random_then_unicode"); static ALICE: &[u8] = include_bytes!("../../testdata/alice29.txt"); static UKKONOOA: &[u8] = include_bytes!("../../testdata/ukkonooa"); static ASYOULIKE: &[u8] = include_bytes!("../../testdata/asyoulik.txt"); static BACKWARD65536: &[u8] = include_bytes!("../../testdata/backward65536"); static DICTWORD: &[u8] = include_bytes!("../../testdata/ends_with_truncated_dictionary"); static RANDOM10K: &[u8] = include_bytes!("../../testdata/random_org_10k.bin"); static RANDOMTHENUNICODE: &[u8] = include_bytes!("../../testdata/random_then_unicode"); static QUICKFOX: &[u8] = include_bytes!("../../testdata/quickfox_repeated"); static EMPTY: &[u8] = &[]; use super::Rebox; fn concat( files: &mut [UnlimitedBuffer], brotli_files: &mut [UnlimitedBuffer], window_override: Option, bs: usize, ) { let mut obuffer = vec![0u8; bs]; let mut ibuffer = vec![0u8; bs]; let mut ooffset = 0usize; let mut ioffset; let mut uboutput = UnlimitedBuffer::new(&[]); { let mut output = super::IoWriterWrapper(&mut uboutput); let mut bro_cat_li = match window_override { Some(ws) => BroCatli::new_with_window_size(ws), None => BroCatli::new(), }; for brotli in brotli_files.iter_mut() { bro_cat_li.new_brotli_file(); { let mut input = super::IoReaderWrapper(brotli); loop { ioffset = 0; match input.read(&mut ibuffer[..]) { Err(e) => panic!("{}", e), Ok(cur_read) => { if cur_read == 0 { break; } loop { match bro_cat_li.stream( &ibuffer[..cur_read], &mut ioffset, &mut obuffer[..], &mut ooffset, ) { BroCatliResult::NeedsMoreOutput => { match output.write(&obuffer[..ooffset]) { Err(why) => panic!("couldn't write: {:}", why), Ok(count) => { assert_eq!(count, ooffset); } } ooffset = 0; } BroCatliResult::NeedsMoreInput => { break; } BroCatliResult::Success => { panic!("Unexpected state: Success when streaming before finish"); } failure => { panic!("{:?}", failure); } } } } } } } brotli.reset_read(); } loop { match bro_cat_li.finish(&mut obuffer[..], &mut ooffset) { BroCatliResult::NeedsMoreOutput => { match output.write(&obuffer[..ooffset]) { Err(why) => panic!("couldn't write\n{:}", why), Ok(count) => { assert_eq!(count, ooffset); } } ooffset = 0; } BroCatliResult::NeedsMoreInput => { panic!("Unexpected EOF"); } BroCatliResult::Success => { if ooffset != 0 { match output.write(&obuffer[..ooffset]) { Err(why) => panic!("couldn't write\n{:}", why), Ok(count) => { assert_eq!(count, ooffset); } } } break; } failure => { panic!("{:?}", failure) } } } } let mut rt = UnlimitedBuffer::new(&[]); match super::decompress(&mut uboutput, &mut rt, 65536, Rebox::default()) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } let mut offset = 0; for file in files { assert_eq!(&rt.data()[offset..offset + file.data().len()], file.data()); offset += file.data().len(); } assert_eq!(offset, rt.data().len()); } fn concat_many_subsets( files: &mut [UnlimitedBuffer], brotli_files: &mut [UnlimitedBuffer], window_override: Option, ) { let test_plans: [(usize, usize); 4] = [(brotli_files.len(), 4096 * 1024), (4, 1), (3, 3), (2, 4096)]; for plan_bs in test_plans.iter() { let files_len = files.len(); for index in 0..(brotli_files.len() - min(plan_bs.0 - 1, files_len)) { let file_subset = &mut files[index..min(index + plan_bs.0, files_len)]; let brotli_subset = &mut brotli_files[index..min(index + plan_bs.0, files_len)]; concat(file_subset, brotli_subset, window_override, plan_bs.1); } } } #[cfg(debug_assertions)] fn light_debug_test(params: &mut BrotliEncoderParams) { params.quality = 5; } #[cfg(not(debug_assertions))] fn light_debug_test(_params: &mut BrotliEncoderParams) {} #[cfg(debug_assertions)] fn medium_debug_test(params: &mut BrotliEncoderParams) { params.quality = 9; params.q9_5 = false; } #[cfg(not(debug_assertions))] fn medium_debug_test(_params: &mut BrotliEncoderParams) {} #[test] #[should_panic] fn test_appendonly_twice_fails() { let mut files = [ UnlimitedBuffer::new(UKKONOOA), UnlimitedBuffer::new(QUICKFOX), ]; let mut ufiles = [UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[])]; for (src, dst) in files.iter_mut().zip(ufiles.iter_mut()) { let mut params0 = BrotliEncoderParams::default(); params0.appendable = true; super::compress(src, dst, 4096, ¶ms0, &[], 1).unwrap(); } concat(&mut files[..], &mut ufiles[..], None, 2); } #[test] fn test_append_then_empty_works() { let mut files = [UnlimitedBuffer::new(UKKONOOA), UnlimitedBuffer::new(&[])]; let mut ufiles = [UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[])]; let mut first = true; for (src, dst) in files.iter_mut().zip(ufiles.iter_mut()) { let mut params0 = BrotliEncoderParams::default(); params0.appendable = first; params0.catable = !first; params0.use_dictionary = first; super::compress(src, dst, 4096, ¶ms0, &[], 1).unwrap(); first = false; } concat(&mut files[..], &mut ufiles[..], None, 2); } #[test] fn test_append_then_cat_works() { let mut files = [ UnlimitedBuffer::new(UKKONOOA), UnlimitedBuffer::new(QUICKFOX), ]; let mut ufiles = [UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[])]; let mut first = true; for (src, dst) in files.iter_mut().zip(ufiles.iter_mut()) { let mut params0 = BrotliEncoderParams::default(); params0.appendable = first; params0.catable = !first; params0.use_dictionary = first; super::compress(src, dst, 4096, ¶ms0, &[], 1).unwrap(); first = false; } concat(&mut files[..], &mut ufiles[..], None, 2); } #[test] fn test_one_byte_works() { let mut files = [UnlimitedBuffer::new(UKKONOOA), UnlimitedBuffer::new(&[8])]; let mut ufiles = [UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[])]; let mut first = true; for (src, dst) in files.iter_mut().zip(ufiles.iter_mut()) { let mut params0 = BrotliEncoderParams::default(); params0.appendable = first; params0.catable = !first; params0.use_dictionary = first; super::compress(src, dst, 4096, ¶ms0, &[], 1).unwrap(); first = false; } concat(&mut files[..], &mut ufiles[..], None, 2); } #[test] fn test_one_byte_before_works() { let mut files = [UnlimitedBuffer::new(&[8]), UnlimitedBuffer::new(UKKONOOA)]; let mut ufiles = [UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[])]; let mut first = true; for (src, dst) in files.iter_mut().zip(ufiles.iter_mut()) { let mut params0 = BrotliEncoderParams::default(); params0.appendable = first; params0.catable = !first; params0.use_dictionary = first; super::compress(src, dst, 4096, ¶ms0, &[], 1).unwrap(); first = false; } concat(&mut files[..], &mut ufiles[..], None, 2); } #[test] fn test_two_byte_works() { let mut files = [ UnlimitedBuffer::new(UKKONOOA), UnlimitedBuffer::new(&[8, 9]), ]; let mut ufiles = [UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[])]; let mut first = true; for (src, dst) in files.iter_mut().zip(ufiles.iter_mut()) { let mut params0 = BrotliEncoderParams::default(); params0.appendable = first; params0.catable = !first; params0.use_dictionary = first; super::compress(src, dst, 4096, ¶ms0, &[], 1).unwrap(); first = false; } concat(&mut files[..], &mut ufiles[..], None, 2); } #[test] fn test_two_byte_before_works() { let mut files = [ UnlimitedBuffer::new(&[8, 9]), UnlimitedBuffer::new(UKKONOOA), ]; let mut ufiles = [UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[])]; let mut first = true; for (src, dst) in files.iter_mut().zip(ufiles.iter_mut()) { let mut params0 = BrotliEncoderParams::default(); params0.appendable = first; params0.catable = !first; params0.use_dictionary = first; super::compress(src, dst, 4096, ¶ms0, &[], 1).unwrap(); first = false; } concat(&mut files[..], &mut ufiles[..], None, 2); } #[test] fn test_empty_then_cat_works() { let mut files = [UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(QUICKFOX)]; let mut ufiles = [UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[])]; let mut first = true; for (src, dst) in files.iter_mut().zip(ufiles.iter_mut()) { let mut params0 = BrotliEncoderParams::default(); params0.appendable = first; params0.catable = !first; params0.use_dictionary = first; super::compress(src, dst, 4096, ¶ms0, &[], 1).unwrap(); first = false; } concat(&mut files[..], &mut ufiles[..], None, 2); } #[test] fn test_concat() { let mut files = [ UnlimitedBuffer::new(ALICE), UnlimitedBuffer::new(RANDOMTHENUNICODE), UnlimitedBuffer::new(UKKONOOA), UnlimitedBuffer::new(ASYOULIKE), UnlimitedBuffer::new(BACKWARD65536), UnlimitedBuffer::new(EMPTY), UnlimitedBuffer::new(DICTWORD), UnlimitedBuffer::new(RANDOM10K), UnlimitedBuffer::new(QUICKFOX), ]; let mut params0 = BrotliEncoderParams::default(); light_debug_test(&mut params0); let mut params1 = params0.clone(); params1.quality = 9; params1.q9_5 = true; params1.lgwin = 22; params1.magic_number = true; medium_debug_test(&mut params1); let mut params2 = params0.clone(); params2.quality = if params1.q9_5 || params1.quality > 9 { 9 } else { 8 }; params2.lgwin = 19; let mut params3 = params0.clone(); params3.quality = 8; params3.lgwin = 16; params3.magic_number = true; let mut params4 = params0.clone(); params4.quality = 7; params4.lgwin = 14; let mut params4 = params0.clone(); params4.quality = 1; params4.lgwin = 10; let mut params5 = params0.clone(); params5.quality = 0; params5.lgwin = 10; params5.magic_number = true; params0.lgwin = 26; params0.large_window = true; let mut options = [params0, params1, params2, params3, params4, params5]; for option in options.iter_mut().skip(3) { let mut ufiles = [ UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), ]; let mut first = true; for (src, dst) in files.iter_mut().zip(ufiles.iter_mut()) { if first { option.appendable = true; } else { option.appendable = false; option.catable = true; option.use_dictionary = false; } super::compress(src, dst, 4096, option, &[], 1).unwrap(); src.reset_read(); first = false; } concat_many_subsets(&mut files[..], &mut ufiles[..], None); return; } let mut ufiles = [ UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), ]; let options_len = options.len(); for (index, (src, dst)) in files.iter_mut().zip(ufiles.iter_mut()).enumerate() { options[min(index, options_len - 1)].catable = true; options[min(index, options_len - 1)].use_dictionary = false; options[min(index, options_len - 1)].appendable = false; options[min(index, options_len - 1)].quality = max(2, options[min(index, options_len - 1)].quality); // ^^^ there's an artificial limitation of using 18 as the minimum window size for quality 0,1 // since this test depends on different window sizes for each stream, exclude q={0,1} super::compress( src, dst, 4096, &options[min(index, options_len - 1)], &[], 1, ) .unwrap(); src.reset_read(); } concat_many_subsets(&mut files[..], &mut ufiles[..], None); concat_many_subsets(&mut files[..], &mut ufiles[..], Some(28)); // FIXME: make this 28 } brotli-6.0.0/src/bin/test_custom_dict.rs000075500000000000000000000160331046102023000164110ustar 00000000000000#![cfg(test)] #![allow(non_upper_case_globals)] #![allow(dead_code)] extern crate brotli_decompressor; extern crate core; use super::brotli::concat::{BroCatli, BroCatliResult}; use super::brotli::enc::BrotliEncoderParams; use super::integration_tests::UnlimitedBuffer; use std::io::{Read, Write}; static RANDOM_THEN_UNICODE: &[u8] = include_bytes!("../../testdata/random_then_unicode"); static ALICE: &[u8] = include_bytes!("../../testdata/alice29.txt"); use super::Rebox; #[test] fn test_custom_dict() { let mut raw = UnlimitedBuffer::new(ALICE); let mut params = BrotliEncoderParams::default(); params.quality = 10; let mut br = UnlimitedBuffer::new(&[]); let mut rt = UnlimitedBuffer::new(&[]); let dict = &ALICE[12515..23411]; super::compress(&mut raw, &mut br, 4096, ¶ms, dict, 1).unwrap(); raw.reset_read(); let mut vec = Vec::::new(); vec.extend(dict); super::decompress(&mut br, &mut rt, 4096, Rebox::from(vec)).unwrap(); assert_eq!(rt.data(), raw.data()); if br.data().len() != 43654 { assert_eq!(br.data().len(), 43636); } } #[test] fn test_custom_wrong_dict_fails() { let mut raw = UnlimitedBuffer::new(ALICE); let mut params = BrotliEncoderParams::default(); params.quality = 10; let mut br = UnlimitedBuffer::new(&[]); let mut rt = UnlimitedBuffer::new(&[]); let dict = &ALICE[12515..19515]; super::compress(&mut raw, &mut br, 4096, ¶ms, dict, 1).unwrap(); raw.reset_read(); let mut vec = Vec::::new(); vec.extend(&dict[1..]); // slightly offset dictionary to be wrong, and ensure the dict was being used above match super::decompress(&mut br, &mut rt, 4096, Rebox::from(vec)) { Ok(_) => panic!("Decompression should have failed"), Err(_) => {} } if rt.data() == raw.data() { panic!("they should be unequal"); } } #[test] fn test_custom_wrong_dict_fails_but_doesnt_disrupt_compression_strategy() { let mut raw = UnlimitedBuffer::new(ALICE); let mut params = BrotliEncoderParams::default(); params.quality = 6; let mut br = UnlimitedBuffer::new(&[]); let mut rt = UnlimitedBuffer::new(&[]); let dict = &ALICE[12515..19515]; super::compress(&mut raw, &mut br, 4096, ¶ms, dict, 1).unwrap(); raw.reset_read(); let mut vec = Vec::::new(); vec.extend(&dict[1..]); // slightly offset dictionary to be wrong, and ensure the dict was being used above super::decompress(&mut br, &mut rt, 4096, Rebox::from(vec)).unwrap(); if rt.data() == raw.data() { panic!("they should be unequal"); } } #[test] fn test_custom_dict_for_multithreading() { let mut raws = [ UnlimitedBuffer::new(&ALICE[..ALICE.len() / 3]), UnlimitedBuffer::new(&ALICE[ALICE.len() / 3..2 * ALICE.len() / 3]), UnlimitedBuffer::new(&ALICE[2 * ALICE.len() / 3..]), ]; let mut params = BrotliEncoderParams::default(); params.quality = 10; params.appendable = true; let mut brs = [ UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), ]; let mut rts = [ UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), UnlimitedBuffer::new(&[]), ]; let dicts = [ &ALICE[..0], &ALICE[..ALICE.len() / 3], &ALICE[..2 * ALICE.len() / 3], ]; for (raw, (br, (rt, dict))) in raws .iter_mut() .zip(brs.iter_mut().zip(rts.iter_mut().zip(dicts.iter()))) { super::compress(raw, br, 4096, ¶ms, dict, 1).unwrap(); raw.reset_read(); let mut vec = Vec::::new(); vec.extend(*dict); super::decompress(br, rt, 4096, Rebox::from(vec)).unwrap(); assert_eq!(rt.data(), raw.data()); params.catable = true; params.use_dictionary = false; } let mut bro_cat_li = BroCatli::new(); let mut output = UnlimitedBuffer::new(&[]); let mut ibuffer = [0u8; 1]; let mut obuffer = [0u8; 1]; let mut ooffset = 0usize; for brotli in brs.iter_mut() { brotli.reset_read(); bro_cat_li.new_brotli_file(); let input = brotli; loop { let mut ioffset = 0usize; match input.read(&mut ibuffer[..]) { Err(e) => panic!("{:?}", e), Ok(cur_read) => { if cur_read == 0 { break; } loop { match bro_cat_li.stream( &ibuffer[..cur_read], &mut ioffset, &mut obuffer[..], &mut ooffset, ) { BroCatliResult::NeedsMoreOutput => { match output.write(&obuffer[..ooffset]) { Err(why) => panic!("couldn't write: {:}", why), Ok(count) => { assert_eq!(count, ooffset); } } ooffset = 0; } BroCatliResult::NeedsMoreInput => { break; } BroCatliResult::Success => { panic!("Unexpected state: Success when streaming before finish"); } failure => { panic!("{:?}", failure); } } } } } } } loop { match bro_cat_li.finish(&mut obuffer[..], &mut ooffset) { BroCatliResult::NeedsMoreOutput => { match output.write(&obuffer[..ooffset]) { Err(why) => panic!("couldn't write\n{:}", why), Ok(count) => { assert_eq!(count, ooffset); } } ooffset = 0; } BroCatliResult::NeedsMoreInput => { panic!("Unexpected EOF"); } BroCatliResult::Success => { if ooffset != 0 { match output.write(&obuffer[..ooffset]) { Err(why) => panic!("couldn't write\n{:}", why), Ok(count) => { assert_eq!(count, ooffset); } } } break; } failure => { panic!("{}", failure as i32) } } } let mut rt = UnlimitedBuffer::new(&[]); output.reset_read(); super::decompress(&mut output, &mut rt, 4096, Rebox::default()).unwrap(); assert_eq!(rt.data(), ALICE); // without setting std flag: approximation make it 4 bytes bigger if output.data().len() != 48568 { assert_eq!(output.data().len(), 48563); // as opposed to 46487 with standard settings } } brotli-6.0.0/src/bin/test_threading.rs000075500000000000000000000173041046102023000160430ustar 00000000000000#![cfg(test)] #![allow(non_upper_case_globals)] #![allow(dead_code)] extern crate brotli_decompressor; extern crate core; use super::brotli::enc::{ compress_multi, compress_multi_no_threadpool, BrotliEncoderMaxCompressedSizeMulti, BrotliEncoderParams, UnionHasher, }; use super::new_brotli_heap_alloc; use brotli::enc::threading::{Owned, SendAlloc}; use brotli_decompressor::{SliceWrapper, SliceWrapperMut}; use super::integration_tests::UnlimitedBuffer; static RANDOM_THEN_UNICODE: &[u8] = include_bytes!("../../testdata/random_then_unicode"); static ALICE: &[u8] = include_bytes!("../../testdata/alice29.txt"); use super::Rebox; struct SliceRef<'a>(&'a [u8]); impl<'a> SliceWrapper for SliceRef<'a> { fn slice(&self) -> &[u8] { self.0 } } fn multi_threaded_split_compression_test( input_data: &'static [u8], num_threads: usize, quality: i32, catable: bool, expected_size: usize, ) { let mut params = BrotliEncoderParams::default(); params.quality = quality; params.magic_number = true; if catable { params.catable = true; params.use_dictionary = false; } let mut output = Rebox::from(vec![ 0u8; BrotliEncoderMaxCompressedSizeMulti( input_data.len(), num_threads ) ]); let mut alloc_per_thread = [ SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), ]; if num_threads > alloc_per_thread.len() { panic!( "Too many threads requested {} > {}", num_threads, alloc_per_thread.len() ); } let res = compress_multi( ¶ms, &mut Owned::new(SliceRef(input_data)), output.slice_mut(), &mut alloc_per_thread[..num_threads], ); let observed_size = res.unwrap(); if observed_size > expected_size { assert_eq!(observed_size, expected_size); } assert_ne!(observed_size, 0); let mut compressed_version = UnlimitedBuffer::new(&output.slice()[..observed_size]); let mut rt = UnlimitedBuffer::new(&[]); match super::decompress(&mut compressed_version, &mut rt, 65536, Rebox::default()) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } assert_eq!(rt.data(), input_data); } #[test] fn multi_threaded_split_compression_test_1() { multi_threaded_split_compression_test(RANDOM_THEN_UNICODE, 1, 3, false, 155808) } #[test] fn multi_threaded_split_compression_test_2() { multi_threaded_split_compression_test(RANDOM_THEN_UNICODE, 2, 4, false, 151857) } #[test] fn multi_threaded_split_compression_test_3() { multi_threaded_split_compression_test(RANDOM_THEN_UNICODE, 3, 5, false, 144325) } #[test] fn multi_threaded_split_compression_test_4() { multi_threaded_split_compression_test(RANDOM_THEN_UNICODE, 4, 10, true, 136812) } #[test] fn multi_threaded_split_compression_test_5() { multi_threaded_split_compression_test(RANDOM_THEN_UNICODE, 5, 9, false, 139126) } #[test] fn multi_threaded_split_compression_test_1b1() { multi_threaded_split_compression_test(&RANDOM_THEN_UNICODE[..1], 5, 9, false, 139126) } #[test] fn multi_threaded_split_compression_test_1b5() { multi_threaded_split_compression_test(&RANDOM_THEN_UNICODE[..1], 5, 9, false, 139125) } #[test] fn multi_threaded_split_compression_test_0b1() { multi_threaded_split_compression_test(&[], 5, 9, false, 139125) } #[test] fn multi_threaded_split_compression_test_0b5() { multi_threaded_split_compression_test(&[], 5, 9, false, 139125) } fn thread_spawn_per_job_split_compression_test( input_data: &'static [u8], num_threads: usize, quality: i32, catable: bool, expected_size: usize, ) { let mut params = BrotliEncoderParams::default(); params.quality = quality; params.magic_number = true; if catable { params.catable = true; params.use_dictionary = false; } params.favor_cpu_efficiency = true; // this should test both paths let mut output = Rebox::from(vec![ 0u8; BrotliEncoderMaxCompressedSizeMulti( input_data.len(), num_threads ) ]); let mut alloc_per_thread = [ SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), SendAlloc::new(new_brotli_heap_alloc(), UnionHasher::Uninit), ]; if num_threads > alloc_per_thread.len() { panic!( "Too many threads requested {} > {}", num_threads, alloc_per_thread.len() ); } let res = compress_multi_no_threadpool( ¶ms, &mut Owned::new(SliceRef(input_data)), output.slice_mut(), &mut alloc_per_thread[..num_threads], ); let observed_size = res.unwrap(); if observed_size > expected_size { assert_eq!(observed_size, expected_size); } assert_ne!(observed_size, 0); let mut compressed_version = UnlimitedBuffer::new(&output.slice()[..observed_size]); let mut rt = UnlimitedBuffer::new(&[]); match super::decompress(&mut compressed_version, &mut rt, 65536, Rebox::default()) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } assert_eq!(rt.data(), input_data); } #[test] fn thread_spawn_per_job_split_compression_test_1() { thread_spawn_per_job_split_compression_test(RANDOM_THEN_UNICODE, 1, 3, false, 155808) } #[test] fn thread_spawn_per_job_split_compression_test_3() { thread_spawn_per_job_split_compression_test(RANDOM_THEN_UNICODE, 3, 5, false, 144325) } #[test] fn thread_spawn_per_job_split_compression_test_1b1() { thread_spawn_per_job_split_compression_test(&RANDOM_THEN_UNICODE[..1], 1, 3, false, 155808) } #[test] fn thread_spawn_per_job_split_compression_test_1b3() { thread_spawn_per_job_split_compression_test(&RANDOM_THEN_UNICODE[..1], 3, 5, false, 144325) } #[test] fn thread_spawn_per_job_split_compression_test_0b1() { thread_spawn_per_job_split_compression_test(&[], 1, 3, false, 155808) } #[test] fn thread_spawn_per_job_split_compression_test_0b3() { thread_spawn_per_job_split_compression_test(&[], 3, 5, false, 144325) } brotli-6.0.0/src/bin/tests.rs000075500000000000000000000061101046102023000141720ustar 00000000000000#![cfg(test)] extern crate core; use core::cmp::min; use std::io; struct Buffer { data: Vec, read_offset: usize, } impl Buffer { pub fn new(buf: &[u8]) -> Buffer { let mut ret = Buffer { data: Vec::::new(), read_offset: 0, }; ret.data.extend(buf); ret } } impl io::Read for Buffer { fn read(&mut self, buf: &mut [u8]) -> io::Result { let bytes_to_read = min(buf.len(), self.data.len() - self.read_offset); if bytes_to_read > 0 { buf[0..bytes_to_read] .clone_from_slice(&self.data[self.read_offset..self.read_offset + bytes_to_read]); } self.read_offset += bytes_to_read; Ok(bytes_to_read) } } impl io::Write for Buffer { fn write(&mut self, buf: &[u8]) -> io::Result { self.data.extend(buf); Ok(buf.len()) } fn flush(&mut self) -> io::Result<()> { Ok(()) } } fn copy_from_to(mut r: R, mut w: W) -> io::Result { let mut buffer: [u8; 65536] = [0; 65536]; let mut out_size: usize = 0; loop { match r.read(&mut buffer[..]) { Err(e) => { match e.kind() { io::ErrorKind::Interrupted => continue, _ => {} } return Err(e); } Ok(size) => { if size == 0 { break; } else { match w.write_all(&buffer[..size]) { Err(e) => { match e.kind() { io::ErrorKind::Interrupted => continue, _ => {} } return Err(e); } Ok(_) => out_size += size, } } } } } Ok(out_size) } #[test] fn test_10x_10y() { let in_buf: [u8; 12] = [ 0x1b, 0x13, 0x00, 0x00, 0xa4, 0xb0, 0xb2, 0xea, 0x81, 0x47, 0x02, 0x8a, ]; let mut output = Buffer::new(&[]); let mut input = super::BrotliDecompressor::new(Buffer::new(&in_buf), 4096); match copy_from_to(&mut input, &mut output) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } let mut i: usize = 0; while i < 10 { assert_eq!(output.data[i], b'X'); assert_eq!(output.data[i + 10], b'Y'); i += 1; } assert_eq!(output.data.len(), 20); } #[test] fn test_alice() { let in_buf = include_bytes!("../../testdata/alice29.txt.compressed"); let mut output = Buffer::new(&[]); let mut input = super::BrotliDecompressor::new(Buffer::new(in_buf), 1); match copy_from_to(&mut input, &mut output) { Ok(_) => {} Err(e) => panic!("Error {:?}", e), } let mut i: usize = 0; let truth = include_bytes!("../../testdata/alice29.txt"); while i < truth.len() { assert_eq!(output.data[i], truth[i]); i += 1; } assert_eq!(truth.len(), output.data.len()); } brotli-6.0.0/src/bin/util.rs000064400000000000000000000270031046102023000140060ustar 00000000000000use core::marker::PhantomData; use core::mem; use std::thread::JoinHandle; use alloc_no_stdlib::{Allocator, SliceWrapper}; use brotli::dictionary::{ kBrotliDictionary, kBrotliDictionaryOffsetsByLength, kBrotliDictionarySizeBitsByLength, }; use brotli::enc::threading::{ AnyBoxConstructor, BatchSpawnable, BatchSpawnableLite, BrotliEncoderThreadError, InternalOwned, InternalSendAlloc, Joinable, Owned, OwnedRetriever, PoisonedThreadError, SendAlloc, }; use brotli::enc::BrotliAlloc; use brotli::interface; use brotli::transform::TransformDictionaryWord; use std::collections::BTreeMap; use std::fmt; struct HexSlice<'a>(&'a [u8]); impl<'a> fmt::Display for HexSlice<'a> { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { for byte in self.0 { if let Err(e) = write!(f, "{:02X}", byte) { return Err(e); } } Ok(()) } } pub fn permute_dictionary() -> BTreeMap, ()> { let mut ret = BTreeMap::, ()>::new(); let mut transformed = [0u8; 38]; for wordlen in 4..kBrotliDictionaryOffsetsByLength.len() { let offset = kBrotliDictionaryOffsetsByLength[wordlen] as usize; for index in 0..(1 << kBrotliDictionarySizeBitsByLength[wordlen]) { let word = &kBrotliDictionary[offset + index..offset + index + wordlen]; for transform in 0..121 { let final_size = TransformDictionaryWord(&mut transformed[..], word, wordlen as i32, transform) as usize; let vec: Vec = transformed[..final_size].to_vec(); ret.insert(vec, ()); } } } ret } pub fn print_dictionary(dict: BTreeMap, ()>) { for (key, _) in dict { println!("{}", HexSlice(&key[..])); } } macro_rules! println_stderr( ($($val:tt)*) => { { writeln!(&mut ::std::io::stderr(), $($val)*).unwrap(); } } ); fn prediction_mode_str( prediction_mode_nibble: interface::LiteralPredictionModeNibble, ) -> &'static str { match prediction_mode_nibble.prediction_mode() { interface::LITERAL_PREDICTION_MODE_SIGN => "sign", interface::LITERAL_PREDICTION_MODE_LSB6 => "lsb6", interface::LITERAL_PREDICTION_MODE_MSB6 => "msb6", interface::LITERAL_PREDICTION_MODE_UTF8 => "utf8", _ => "unknown", } } struct SliceU8Ref<'a>(pub &'a [u8]); impl<'a> fmt::LowerHex for SliceU8Ref<'a> { fn fmt(&self, fmtr: &mut fmt::Formatter) -> Result<(), fmt::Error> { for item in self.0 { fmtr.write_fmt(format_args!("{:02x}", item))? } Ok(()) } } pub fn write_one>(cmd: &interface::Command) { use std::io::Write; match cmd { interface::Command::BlockSwitchLiteral(bsl) => { println_stderr!("ltype {} {}", bsl.0.block_type(), bsl.1); } interface::Command::BlockSwitchCommand(bsc) => { println_stderr!("ctype {}", bsc.0); } interface::Command::BlockSwitchDistance(bsd) => { println_stderr!("dtype {}", bsd.0); } interface::Command::PredictionMode(prediction) => { let prediction_mode = prediction_mode_str(prediction.literal_prediction_mode()); let lit_cm = prediction .literal_context_map .slice() .iter() .fold(::std::string::String::new(), |res, &val| { res + " " + &val.to_string() }); let dist_cm = prediction .distance_context_map() .iter() .fold(::std::string::String::new(), |res, &val| { res + " " + &val.to_string() }); let mixing_values = prediction .get_mixing_values() .iter() .fold(::std::string::String::new(), |res, &val| { res + " " + &val.to_string() }); if prediction.has_context_speeds() { println_stderr!("prediction {} lcontextmap{} dcontextmap{} mixingvalues{} cmspeedinc {} {} cmspeedmax {} {} stspeedinc {} {} stspeedmax {} {} mxspeedinc {} {} mxspeedmax {} {}", prediction_mode, lit_cm, dist_cm, mixing_values, prediction.context_map_speed()[0].0, prediction.context_map_speed()[1].0, prediction.context_map_speed()[0].1, prediction.context_map_speed()[1].1, prediction.stride_context_speed()[0].0, prediction.stride_context_speed()[1].0, prediction.stride_context_speed()[0].1, prediction.stride_context_speed()[1].1, prediction.combined_stride_context_speed()[0].0, prediction.combined_stride_context_speed()[1].0, prediction.combined_stride_context_speed()[0].1, prediction.combined_stride_context_speed()[0].1, ); } else { println_stderr!( "prediction {} lcontextmap{} dcontextmap{} mixingvalues{}", prediction_mode, lit_cm, dist_cm, mixing_values, ); } } interface::Command::Copy(copy) => { println_stderr!("copy {} from {}", copy.num_bytes, copy.distance); } interface::Command::Dict(dict) => { let mut transformed_word = [0u8; 38]; let word_index = dict.word_id as usize * dict.word_size as usize + kBrotliDictionaryOffsetsByLength[dict.word_size as usize] as usize; let raw_word = &kBrotliDictionary[word_index..(word_index + dict.word_size as usize)]; let actual_copy_len = TransformDictionaryWord( &mut transformed_word[..], raw_word, dict.word_size as i32, dict.transform as i32, ) as usize; assert_eq!(dict.final_size as usize, actual_copy_len); println_stderr!( "dict {} word {},{} {:x} func {} {:x}", actual_copy_len, dict.word_size, dict.word_id, SliceU8Ref(raw_word), dict.transform, SliceU8Ref(transformed_word.split_at(actual_copy_len).0) ); } interface::Command::Literal(lit) => { println_stderr!( "{} {} {:x}", if lit.high_entropy { "rndins" } else { "insert" }, lit.data.slice().len(), SliceU8Ref(lit.data.slice()) ); } } } // in-place thread create use std::sync::RwLock; pub struct MTJoinable(JoinHandle, PhantomData); #[cfg(not(feature = "std"))] impl Joinable for MTJoinable { fn join(self) -> Result { match self.0.join() { Ok(t) => Ok(t), Err(_e) => Err(::new(())), } } } #[cfg(feature = "std")] impl Joinable for MTJoinable { fn join(self) -> Result { match self.0.join() { Ok(t) => Ok(t), Err(e) => Err(::new(e)), } } } pub struct MTOwnedRetriever(std::sync::Arc>); impl Clone for MTOwnedRetriever { fn clone(&self) -> Self { MTOwnedRetriever(self.0.clone()) } } impl OwnedRetriever for MTOwnedRetriever { fn view T>(&self, f: F) -> Result { match self.0.read() { Ok(u) => Ok(f(&*u)), Err(_) => Err(PoisonedThreadError::default()), } } fn unwrap(self) -> Result { match std::sync::Arc::try_unwrap(self.0) { Ok(rwlock) => match rwlock.into_inner() { Ok(u) => Ok(u), Err(_) => Err(PoisonedThreadError::default()), }, Err(_) => Err(PoisonedThreadError::default()), } } } #[derive(Default)] pub struct MTSpawner {} fn spawn_work< T: Send + 'static, ExtraInput: Send + 'static, F: Fn(ExtraInput, usize, usize, &U, Alloc) -> T + Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, >( extra_input: ExtraInput, index: usize, num_threads: usize, locked_input: MTOwnedRetriever, alloc: Alloc, f: F, ) -> std::thread::JoinHandle where >::AllocatedMemory: Send + 'static, { std::thread::spawn(move || { locked_input .view(move |guard: &U| -> T { f(extra_input, index, num_threads, guard, alloc) }) .unwrap() }) } impl< T: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > BatchSpawnable for MTSpawner where >::AllocatedMemory: Send + 'static, { type JoinHandle = MTJoinable; type FinalJoinHandle = MTOwnedRetriever; fn make_spawner(&mut self, input: &mut Owned) -> Self::FinalJoinHandle { MTOwnedRetriever(std::sync::Arc::>::new(RwLock::new( mem::replace(input, Owned(InternalOwned::Borrowed)).unwrap(), ))) } fn spawn T + Send + 'static + Copy>( &mut self, locked_input: &mut Self::FinalJoinHandle, work: &mut SendAlloc, index: usize, num_threads: usize, f: F, ) { let (alloc, extra_input) = work.replace_with_default(); let ret = spawn_work( extra_input, index, num_threads, locked_input.clone(), alloc, f, ); *work = SendAlloc(InternalSendAlloc::Join(MTJoinable(ret, PhantomData))); } } impl< T: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > BatchSpawnableLite for MTSpawner where >::AllocatedMemory: Send + 'static, { type JoinHandle = >::JoinHandle; type FinalJoinHandle = >::FinalJoinHandle; fn make_spawner(&mut self, input: &mut Owned) -> Self::FinalJoinHandle { >::make_spawner(self, input) } fn spawn( &mut self, handle: &mut Self::FinalJoinHandle, alloc_per_thread: &mut SendAlloc, index: usize, num_threads: usize, f: fn(ExtraInput, usize, usize, &U, Alloc) -> T, ) { >::spawn( self, handle, alloc_per_thread, index, num_threads, f, ) } } brotli-6.0.0/src/bin/validate.rs000064400000000000000000000127561046102023000146330ustar 00000000000000use super::{HeapAllocator, IoWriterWrapper, Rebox}; use alloc_no_stdlib::{Allocator, SliceWrapper}; use brotli::enc::BrotliEncoderParams; use brotli::{CustomWrite, DecompressorWriterCustomIo}; #[cfg(feature = "validation")] use core; #[cfg(feature = "validation")] use sha2::{Digest, Sha256}; use std::io::{self, Error, ErrorKind, Read, Write}; #[cfg(feature = "validation")] type Checksum = Sha256; struct Tee(OutputA, OutputB); impl Write for Tee { fn write(&mut self, data: &[u8]) -> Result { match self.0.write(data) { Err(err) => Err(err), Ok(size) => match self.1.write_all(&data[..size]) { Ok(_) => Ok(size), Err(err) => Err(err), }, } } fn flush(&mut self) -> Result<(), io::Error> { match self.0.flush() { Err(err) => Err(err), Ok(_) => loop { match self.1.flush() { Err(e) => match e.kind() { ErrorKind::Interrupted => continue, _ => return Err(e), }, Ok(e) => return Ok(e), } }, } } } struct DecompressAndValidate<'a, OutputType: Write + 'a>( DecompressorWriterCustomIo< io::Error, IoWriterWrapper<'a, OutputType>, Rebox, // buffer type HeapAllocator, HeapAllocator, HeapAllocator, >, ); impl<'a, OutputType: Write> Write for DecompressAndValidate<'a, OutputType> { fn write(&mut self, data: &[u8]) -> Result { self.0.write(data) } fn flush(&mut self) -> Result<(), io::Error> { self.0.flush() } } #[cfg(not(feature = "validation"))] fn make_sha_writer() -> io::Sink { io::sink() } #[cfg(not(feature = "validation"))] fn make_sha_reader(r: &mut InputType) -> &mut InputType { r } #[cfg(not(feature = "validation"))] fn sha_ok(_writer: &mut io::Sink, _reader: &mut InputType) -> bool { false } #[cfg(feature = "validation")] struct ShaReader<'a, InputType: Read + 'a> { reader: &'a mut InputType, checksum: Checksum, } #[cfg(feature = "validation")] impl<'a, InputType: Read + 'a> Read for ShaReader<'a, InputType> { fn read(&mut self, data: &mut [u8]) -> Result { match self.reader.read(data) { Err(e) => Err(e), Ok(size) => { self.checksum.update(&data[..size]); Ok(size) } } } } #[cfg(feature = "validation")] fn make_sha_reader(r: &mut InputType) -> ShaReader { ShaReader { reader: r, checksum: Checksum::default(), } } #[cfg(feature = "validation")] fn sha_ok(writer: &mut ShaWriter, reader: &mut ShaReader) -> bool { core::mem::replace(&mut writer.0, Checksum::default()).finalize() == core::mem::replace(&mut reader.checksum, Checksum::default()).finalize() } #[cfg(feature = "validation")] #[derive(Default)] struct ShaWriter(Checksum); #[cfg(feature = "validation")] impl Write for ShaWriter { fn write(&mut self, data: &[u8]) -> Result { self.0.update(data); Ok(data.len()) } fn flush(&mut self) -> Result<(), io::Error> { Ok(()) } } #[cfg(feature = "validation")] fn make_sha_writer() -> ShaWriter { ShaWriter::default() } #[cfg(feature = "validation")] const VALIDATION_FAILED: &'static str = "Validation failed"; #[cfg(not(feature = "validation"))] const VALIDATION_FAILED: &str = "Validation module not enabled: build with cargo build --features=validation"; pub fn compress_validate( r: &mut InputType, w: &mut OutputType, buffer_size: usize, params: &BrotliEncoderParams, custom_dictionary: Rebox, num_threads: usize, ) -> Result<(), io::Error> { let mut m8 = HeapAllocator::default(); let buffer = >::alloc_cell(&mut m8, buffer_size); // FIXME: could reuse the dictionary to seed the compressor, but that violates the abstraction right now // also dictionaries are not very popular since they are mostly an internal concept, given their deprecation in // the standard brotli spec let mut dict = Vec::::new(); dict.extend_from_slice(custom_dictionary.slice()); let mut sha_writer = make_sha_writer(); let mut sha_reader = make_sha_reader(r); let ret; { let validate_writer = DecompressAndValidate(DecompressorWriterCustomIo::new_with_custom_dictionary( IoWriterWrapper(&mut sha_writer), buffer, m8, HeapAllocator::default(), HeapAllocator::default(), custom_dictionary, Error::new(ErrorKind::InvalidData, "Invalid Data"), )); let mut overarching_writer = Tee(validate_writer, w); ret = super::compress( &mut sha_reader, &mut overarching_writer, buffer_size, params, &dict[..], num_threads, ); } match ret { Ok(_ret) => { if sha_ok(&mut sha_writer, &mut sha_reader) { Ok(()) } else { Err(Error::new(ErrorKind::InvalidData, VALIDATION_FAILED)) } } Err(e) => Err(e), } } brotli-6.0.0/src/concat/mod.rs000064400000000000000000000662371046102023000143230ustar 00000000000000use core::cmp::min; #[repr(C)] #[derive(Debug, Clone, Copy, PartialEq)] pub enum BroCatliResult { Success = 0, NeedsMoreInput = 1, NeedsMoreOutput = 2, BrotliFileNotCraftedForAppend = 124, InvalidWindowSize = 125, WindowSizeLargerThanPreviousFile = 126, BrotliFileNotCraftedForConcatenation = 127, } const NUM_STREAM_HEADER_BYTES: usize = 5; #[derive(Clone, Copy)] struct NewStreamData { bytes_so_far: [u8; NUM_STREAM_HEADER_BYTES], num_bytes_read: u8, num_bytes_written: Option, } impl NewStreamData { pub fn new() -> NewStreamData { NewStreamData { bytes_so_far: [0, 0, 0, 0, 0], num_bytes_read: 0, num_bytes_written: None, } } fn sufficient(&self) -> bool { if self.num_bytes_read == 4 && (127 & self.bytes_so_far[0]) != 17 { return true; } self.num_bytes_read == 5 } } fn parse_window_size(bytes_so_far: &[u8]) -> Result<(u8, usize), ()> { // returns window_size and offset in stream in bits if bytes_so_far[0] & 1 == 0 { return Ok((16, 1)); } match bytes_so_far[0] & 15 { 0x3 => return Ok((18, 4)), 0x5 => return Ok((19, 4)), 0x7 => return Ok((20, 4)), 0x9 => return Ok((21, 4)), 0xb => return Ok((22, 4)), 0xd => return Ok((23, 4)), 0xf => return Ok((24, 4)), _ => match bytes_so_far[0] & 127 { 0x71 => return Ok((15, 7)), 0x61 => return Ok((14, 7)), 0x51 => return Ok((13, 7)), 0x41 => return Ok((12, 7)), 0x31 => return Ok((11, 7)), 0x21 => return Ok((10, 7)), 0x1 => return Ok((17, 7)), _ => {} }, } if (bytes_so_far[0] & 0x80) != 0 { return Err(()); } let ret = bytes_so_far[1] & 0x3f; if !(10..=30).contains(&ret) { return Err(()); } Ok((ret, 14)) } fn detect_varlen_offset(bytes_so_far: &[u8]) -> Result<(usize), ()> { // returns offfset in bits let (_, mut offset) = match parse_window_size(bytes_so_far) { Ok(x) => x, Err(_) => return Err(()), }; let mut bytes = 0u64; for (index, item) in bytes_so_far.iter().enumerate() { bytes |= u64::from(*item) << (index * 8); } bytes >>= offset; offset += 1; if (bytes & 1) != 0 { // ISLAST bytes >>= 1; offset += 1; if (bytes & 1) != 0 { // ISLASTEMPTY return Ok(offset); } } bytes >>= 1; let mut mnibbles = bytes & 3; bytes >>= 2; offset += 2; if mnibbles == 3 { // metadata block if (bytes & 1) != 0 { return Err(()); // reserved, must be zero } bytes >>= 1; offset += 1; let mskipbytes = bytes & ((1 << 2) - 1); offset += 2; offset += (mskipbytes as usize) * 8; // next item is byte aligned return Ok(offset); } mnibbles += 4; offset += (mnibbles as usize) * 4; bytes >>= mnibbles * 4; offset += 1; if (bytes & 1) == 0 { // not UNCOMPRESSED Err(()) // not valid bitstream for concatenation } else { // UNCOMPRESSED: now things are aligend Ok(offset) } } // eat your vegetables #[derive(Default)] pub struct BroCatli { last_bytes: [u8; 2], last_bytes_len: u8, last_byte_sanitized: bool, any_bytes_emitted: bool, last_byte_bit_offset: u8, // need to make sure that window sizes stay similar or get smaller window_size: u8, new_stream_pending: Option, } impl BroCatli { pub fn new() -> Self { Self::default() } pub fn deserialize_from_buffer(buffer: &[u8]) -> Result { if 16 + NUM_STREAM_HEADER_BYTES > buffer.len() { return Err(()); } let mut possible_new_stream_pending = NewStreamData { num_bytes_read: buffer[12], num_bytes_written: if (buffer[9] & (1 << 7)) != 0 { Some(buffer[13]) } else { None }, bytes_so_far: [0; NUM_STREAM_HEADER_BYTES], }; let xlen = possible_new_stream_pending.bytes_so_far.len(); possible_new_stream_pending .bytes_so_far .clone_from_slice(&buffer[16..16 + xlen]); let new_stream_pending: Option = if (buffer[9] & (1 << 6)) != 0 { Some(possible_new_stream_pending) } else { None }; let mut ret = BroCatli { last_bytes: [0, 0], last_bytes_len: buffer[8], last_byte_sanitized: (buffer[9] & 0x1) != 0, last_byte_bit_offset: buffer[10], any_bytes_emitted: (buffer[9] & (1 << 5)) != 0, window_size: buffer[11], new_stream_pending, }; if ret.last_bytes.len() > 8 { return Err(()); } let xlen = ret.last_bytes.len(); ret.last_bytes.clone_from_slice(&buffer[..xlen]); Ok(ret) } #[inline(always)] pub fn serialize_to_buffer(&self, buffer: &mut [u8]) -> Result<(), ()> { if 16 + NUM_STREAM_HEADER_BYTES > buffer.len() { return Err(()); } buffer[..self.last_bytes.len()].clone_from_slice(&self.last_bytes[..]); buffer[8] = self.last_bytes_len; buffer[9] = (self.last_byte_sanitized as u8) | ((self.new_stream_pending.is_some() as u8) << 6) | ((self.any_bytes_emitted as u8) << 5); buffer[10] = self.last_byte_bit_offset; buffer[11] = self.window_size; if let Some(new_stream_pending) = self.new_stream_pending { if new_stream_pending.num_bytes_written.is_some() { buffer[9] |= (1 << 7); } buffer[12] = new_stream_pending.num_bytes_read; buffer[13] = new_stream_pending.num_bytes_written.unwrap_or(0); // 14, 15 reserved buffer[16..16 + new_stream_pending.bytes_so_far.len()] .clone_from_slice(&new_stream_pending.bytes_so_far[..]); } Ok(()) } pub fn new_with_window_size(log_window_size: u8) -> BroCatli { // in this case setup the last_bytes of the stream to perfectly mimic what would // appear in an empty stream with the selected window size... // this means the window size followed by 2 sequential 1 bits (LAST_METABLOCK, EMPTY) // the new_stream code should naturally find the sequential 1 bits and mask them // out and then prepend the window size... then the following window sizes should // be checked to be shorter let last_bytes_len; let last_bytes; if log_window_size > 24 { last_bytes = [17u8, log_window_size | 64 | 128]; last_bytes_len = 2; } else if log_window_size == 16 { last_bytes = [1 | 2 | 4, 0]; last_bytes_len = 1; } else if log_window_size > 17 { last_bytes = [(3 + (log_window_size - 18) * 2) | (16 | 32), 0]; last_bytes_len = 1; } else { match log_window_size { 15 => last_bytes = [0x71 | 0x80, 1], 14 => last_bytes = [0x61 | 0x80, 1], 13 => last_bytes = [0x51 | 0x80, 1], 12 => last_bytes = [0x41 | 0x80, 1], 11 => last_bytes = [0x31 | 0x80, 1], 10 => last_bytes = [0x21 | 0x80, 1], _ => { assert_eq!(log_window_size, 17); last_bytes = [0x1 | 0x80, 1]; } // 17 } last_bytes_len = 2; } BroCatli { last_bytes, last_bytes_len, last_byte_bit_offset: 0, last_byte_sanitized: false, any_bytes_emitted: false, new_stream_pending: None, window_size: log_window_size, } } pub fn new_brotli_file(&mut self) { self.new_stream_pending = Some(NewStreamData::new()); } fn flush_previous_stream( &mut self, out_bytes: &mut [u8], out_offset: &mut usize, ) -> BroCatliResult { if !self.last_byte_sanitized { // if the previous stream hasn't had the last metablock (bit 1,1) sanitized if self.last_bytes_len == 0 { // first stream or otherwise sanitized self.last_byte_sanitized = true; return BroCatliResult::Success; } // create a 16 bit integer with the last 2 bytes of data let mut last_bytes = self.last_bytes[0] as u16 + ((self.last_bytes[1] as u16) << 8); let max = self.last_bytes_len * 8; let mut index = max - 1; for i in 0..max { index = max - 1 - i; if ((1 << index) & last_bytes) != 0 { break; // find the highest set bit } } if index == 0 { // if the bit is too low, return failure, since both bits could not possibly have been set return BroCatliResult::BrotliFileNotCraftedForAppend; } if (last_bytes >> (index - 1)) != 3 { // last two bits need to be set for the final metablock return BroCatliResult::BrotliFileNotCraftedForAppend; } index -= 1; // discard the final two bits last_bytes &= (1 << index) - 1; // mask them out self.last_bytes[0] = last_bytes as u8; // reset the last_bytes pair self.last_bytes[1] = (last_bytes >> 8) as u8; if index >= 8 { // if both bits and one useful bit were in the second block, then write that if out_bytes.len() > *out_offset { out_bytes[*out_offset] = self.last_bytes[0]; self.last_bytes[0] = self.last_bytes[1]; *out_offset += 1; self.any_bytes_emitted = true; index -= 8; self.last_bytes_len -= 1; } else { return BroCatliResult::NeedsMoreOutput; } } self.last_byte_bit_offset = index; assert!(index < 8); self.last_byte_sanitized = true; } BroCatliResult::Success } fn shift_and_check_new_stream_header( &mut self, mut new_stream_pending: NewStreamData, out_bytes: &mut [u8], out_offset: &mut usize, ) -> BroCatliResult { if new_stream_pending.num_bytes_written.is_none() { let (window_size, window_offset) = if let Ok(results) = parse_window_size( &new_stream_pending.bytes_so_far[..usize::from(new_stream_pending.num_bytes_read)], ) { results } else { return BroCatliResult::InvalidWindowSize; }; if self.window_size == 0 { // parse window size and just copy everything self.window_size = window_size; assert_eq!(self.last_byte_bit_offset, 0); // we are first stream out_bytes[*out_offset] = new_stream_pending.bytes_so_far[0]; new_stream_pending.num_bytes_written = Some(1); self.any_bytes_emitted = true; *out_offset += 1; } else { if window_size > self.window_size { return BroCatliResult::WindowSizeLargerThanPreviousFile; } let mut realigned_header: [u8; NUM_STREAM_HEADER_BYTES + 1] = [self.last_bytes[0], 0, 0, 0, 0, 0]; let varlen_offset = if let Ok(voffset) = detect_varlen_offset( &new_stream_pending.bytes_so_far [..usize::from(new_stream_pending.num_bytes_read)], ) { voffset } else { return BroCatliResult::BrotliFileNotCraftedForConcatenation; }; let mut bytes_so_far = 0u64; for index in 0..usize::from(new_stream_pending.num_bytes_read) { bytes_so_far |= u64::from(new_stream_pending.bytes_so_far[index]) << (index * 8); } bytes_so_far >>= window_offset; // mask out the window size bytes_so_far &= (1u64 << (varlen_offset - window_offset)) - 1; let var_len_bytes = (((varlen_offset - window_offset) + 7) / 8); for byte_index in 0..var_len_bytes { let cur_byte = (bytes_so_far >> (byte_index * 8)); realigned_header[byte_index] |= ((cur_byte & ((1 << (8 - self.last_byte_bit_offset)) - 1)) << self.last_byte_bit_offset) as u8; realigned_header[byte_index + 1] = (cur_byte >> (8 - self.last_byte_bit_offset)) as u8; } let whole_byte_destination = ((usize::from(self.last_byte_bit_offset) + varlen_offset - window_offset) + 7) / 8; let whole_byte_source = (varlen_offset + 7) / 8; let num_whole_bytes_to_copy = usize::from(new_stream_pending.num_bytes_read) - whole_byte_source; for aligned_index in 0..num_whole_bytes_to_copy { realigned_header[whole_byte_destination + aligned_index] = new_stream_pending.bytes_so_far[whole_byte_source + aligned_index]; } out_bytes[*out_offset] = realigned_header[0]; self.any_bytes_emitted = true; *out_offset += 1; // subtract one since that has just been written out and we're only copying realigned_header[1..] new_stream_pending.num_bytes_read = (whole_byte_destination + num_whole_bytes_to_copy) as u8 - 1; new_stream_pending.num_bytes_written = Some(0); new_stream_pending .bytes_so_far .clone_from_slice(&realigned_header[1..]); } } else { assert_ne!(self.window_size, 0); } let to_copy = min( out_bytes.len() - *out_offset, usize::from( new_stream_pending.num_bytes_read - new_stream_pending.num_bytes_written.unwrap(), ), ); out_bytes .split_at_mut(*out_offset) .1 .split_at_mut(to_copy) .0 .clone_from_slice( new_stream_pending .bytes_so_far .split_at(usize::from(new_stream_pending.num_bytes_written.unwrap())) .1 .split_at(to_copy) .0, ); *out_offset += to_copy; if to_copy != 0 { self.any_bytes_emitted = true; } new_stream_pending.num_bytes_written = Some((new_stream_pending.num_bytes_written.unwrap() + to_copy as u8)); if new_stream_pending.num_bytes_written.unwrap() != new_stream_pending.num_bytes_read { self.new_stream_pending = Some(new_stream_pending); return BroCatliResult::NeedsMoreOutput; } self.new_stream_pending = None; self.last_byte_sanitized = false; self.last_byte_bit_offset = 0; self.last_bytes_len = 0; self.last_bytes = [0, 0]; //now unwrite from the stream, since the last byte may need to be adjusted to be EOF *out_offset -= 1; self.last_bytes[0] = out_bytes[*out_offset]; self.last_bytes_len = 1; BroCatliResult::Success } pub fn stream( &mut self, in_bytes: &[u8], in_offset: &mut usize, out_bytes: &mut [u8], out_offset: &mut usize, ) -> BroCatliResult { if let Some(mut new_stream_pending) = self.new_stream_pending { let flush_result = self.flush_previous_stream(out_bytes, out_offset); if let BroCatliResult::Success = flush_result { if usize::from(new_stream_pending.num_bytes_read) < new_stream_pending.bytes_so_far.len() { { let dst = &mut new_stream_pending.bytes_so_far [usize::from(new_stream_pending.num_bytes_read)..]; let to_copy = min(dst.len(), in_bytes.len() - *in_offset); dst[..to_copy] .clone_from_slice(in_bytes.split_at(*in_offset).1.split_at(to_copy).0); *in_offset += to_copy; new_stream_pending.num_bytes_read += to_copy as u8; } self.new_stream_pending = Some(new_stream_pending); // write back changes } if !new_stream_pending.sufficient() { return BroCatliResult::NeedsMoreInput; } if out_bytes.len() == *out_offset { return BroCatliResult::NeedsMoreOutput; } let shift_result = self.shift_and_check_new_stream_header( new_stream_pending, out_bytes, out_offset, ); if let BroCatliResult::Success = shift_result { } else { return shift_result; } } else { return flush_result; } if *out_offset == out_bytes.len() { return BroCatliResult::NeedsMoreOutput; // need to be able to write at least one byte of data to make progress } } assert!(self.new_stream_pending.is_none()); // this should have been handled above if self.last_bytes_len != 2 { if out_bytes.len() == *out_offset { return BroCatliResult::NeedsMoreOutput; } if in_bytes.len() == *in_offset { return BroCatliResult::NeedsMoreInput; } self.last_bytes[usize::from(self.last_bytes_len)] = in_bytes[*in_offset]; *in_offset += 1; self.last_bytes_len += 1; if self.last_bytes_len != 2 { if out_bytes.len() == *out_offset { return BroCatliResult::NeedsMoreOutput; } if in_bytes.len() == *in_offset { return BroCatliResult::NeedsMoreInput; } self.last_bytes[usize::from(self.last_bytes_len)] = in_bytes[*in_offset]; self.last_bytes_len += 1; *in_offset += 1; } } if out_bytes.len() == *out_offset { return BroCatliResult::NeedsMoreOutput; } if in_bytes.len() == *in_offset { return BroCatliResult::NeedsMoreInput; } let mut to_copy = min(out_bytes.len() - *out_offset, in_bytes.len() - *in_offset); assert_ne!(to_copy, 0); if to_copy == 1 { out_bytes[*out_offset] = self.last_bytes[0]; self.last_bytes[0] = self.last_bytes[1]; self.last_bytes[1] = in_bytes[*in_offset]; *in_offset += 1; *out_offset += 1; if *out_offset == out_bytes.len() { return BroCatliResult::NeedsMoreOutput; } return BroCatliResult::NeedsMoreInput; } out_bytes .split_at_mut(*out_offset) .1 .split_at_mut(2) .0 .clone_from_slice(&self.last_bytes[..]); *out_offset += 2; let (new_in_offset, last_two) = in_bytes .split_at(*in_offset) .1 .split_at(to_copy) .0 .split_at(to_copy - 2); self.last_bytes.clone_from_slice(last_two); *in_offset += 2; // add this after the clone since we grab the last 2 bytes, not the first to_copy -= 2; out_bytes .split_at_mut(*out_offset) .1 .split_at_mut(to_copy) .0 .clone_from_slice(new_in_offset); *out_offset += to_copy; *in_offset += to_copy; if *out_offset == out_bytes.len() { return BroCatliResult::NeedsMoreOutput; } BroCatliResult::NeedsMoreInput } fn append_eof_metablock_to_last_bytes(&mut self) { assert!(self.last_byte_sanitized); let mut last_bytes = self.last_bytes[0] as u16 | ((self.last_bytes[1] as u16) << 8); let bit_end = (self.last_bytes_len - 1) * 8 + self.last_byte_bit_offset; last_bytes |= 3 << bit_end; self.last_bytes[0] = last_bytes as u8; self.last_bytes[1] = (last_bytes >> 8) as u8; self.last_byte_sanitized = false; self.last_byte_bit_offset += 2; if self.last_byte_bit_offset >= 8 { self.last_byte_bit_offset -= 8; self.last_bytes_len += 1; } } pub fn finish(&mut self, out_bytes: &mut [u8], out_offset: &mut usize) -> BroCatliResult { if self.last_byte_sanitized && self.last_bytes_len != 0 { self.append_eof_metablock_to_last_bytes(); } while self.last_bytes_len != 0 { if *out_offset == out_bytes.len() { return BroCatliResult::NeedsMoreOutput; } out_bytes[*out_offset] = self.last_bytes[0]; *out_offset += 1; self.last_bytes_len -= 1; self.last_bytes[0] = self.last_bytes[1]; self.any_bytes_emitted = true; } if !self.any_bytes_emitted { if out_bytes.len() == *out_offset { return BroCatliResult::NeedsMoreOutput; } self.any_bytes_emitted = true; out_bytes[*out_offset] = b';'; *out_offset += 1; } BroCatliResult::Success } } mod test { #[cfg(test)] use super::BroCatli; #[test] fn test_deserialization() { let broccoli = BroCatli { new_stream_pending: Some(super::NewStreamData { bytes_so_far: [0x33; super::NUM_STREAM_HEADER_BYTES], num_bytes_read: 16, num_bytes_written: Some(3), }), last_bytes: [0x45, 0x46], last_bytes_len: 1, last_byte_sanitized: true, any_bytes_emitted: false, last_byte_bit_offset: 7, window_size: 22, }; let mut buffer = [0u8; 248]; broccoli.serialize_to_buffer(&mut buffer[..]).unwrap(); let bc = BroCatli::deserialize_from_buffer(&buffer[..]).unwrap(); assert_eq!(broccoli.last_bytes, bc.last_bytes); assert_eq!(broccoli.last_bytes_len, bc.last_bytes_len); assert_eq!(broccoli.last_byte_sanitized, bc.last_byte_sanitized); assert_eq!(broccoli.last_byte_bit_offset, bc.last_byte_bit_offset); assert_eq!(broccoli.window_size, bc.window_size); assert_eq!( broccoli.new_stream_pending.unwrap().bytes_so_far, bc.new_stream_pending.unwrap().bytes_so_far ); assert_eq!( broccoli.new_stream_pending.unwrap().num_bytes_read, bc.new_stream_pending.unwrap().num_bytes_read ); assert_eq!( broccoli.new_stream_pending.unwrap().num_bytes_written, bc.new_stream_pending.unwrap().num_bytes_written ); } #[test] fn test_deserialization_any_written() { let broccoli = BroCatli { new_stream_pending: Some(super::NewStreamData { bytes_so_far: [0x33; super::NUM_STREAM_HEADER_BYTES], num_bytes_read: 16, num_bytes_written: Some(3), }), last_bytes: [0x45, 0x46], last_bytes_len: 1, last_byte_sanitized: true, any_bytes_emitted: true, last_byte_bit_offset: 7, window_size: 22, }; let mut buffer = [0u8; 248]; broccoli.serialize_to_buffer(&mut buffer[..]).unwrap(); let bc = BroCatli::deserialize_from_buffer(&buffer[..]).unwrap(); assert_eq!(broccoli.last_bytes, bc.last_bytes); assert_eq!(broccoli.last_bytes_len, bc.last_bytes_len); assert_eq!(broccoli.last_byte_sanitized, bc.last_byte_sanitized); assert_eq!(broccoli.last_byte_bit_offset, bc.last_byte_bit_offset); assert_eq!(broccoli.window_size, bc.window_size); assert_eq!( broccoli.new_stream_pending.unwrap().bytes_so_far, bc.new_stream_pending.unwrap().bytes_so_far ); assert_eq!( broccoli.new_stream_pending.unwrap().num_bytes_read, bc.new_stream_pending.unwrap().num_bytes_read ); assert_eq!( broccoli.new_stream_pending.unwrap().num_bytes_written, bc.new_stream_pending.unwrap().num_bytes_written ); } #[test] fn test_serialization() { let mut buffer = [0u8; 248]; let mut broccoli = BroCatli::deserialize_from_buffer(&buffer).unwrap(); let mut buffer2 = [0u8; 248]; broccoli.serialize_to_buffer(&mut buffer2[..]).unwrap(); assert_eq!(&buffer[..], &buffer2[..]); for (index, item) in buffer.iter_mut().enumerate() { *item = index as u8; } broccoli = BroCatli::deserialize_from_buffer(&buffer).unwrap(); broccoli.serialize_to_buffer(&mut buffer2[..]).unwrap(); broccoli = BroCatli::deserialize_from_buffer(&buffer2).unwrap(); for (_index, item) in buffer.iter_mut().enumerate() { *item = 0; } broccoli.serialize_to_buffer(&mut buffer[..]).unwrap(); assert_eq!(&buffer[..], &buffer2[..]); for (index, item) in buffer.iter_mut().enumerate() { *item = 0xff ^ index as u8; } broccoli = BroCatli::deserialize_from_buffer(&buffer).unwrap(); broccoli.serialize_to_buffer(&mut buffer2[..]).unwrap(); broccoli = BroCatli::deserialize_from_buffer(&buffer2).unwrap(); for (_index, item) in buffer.iter_mut().enumerate() { *item = 0; } broccoli.serialize_to_buffer(&mut buffer[..]).unwrap(); assert_eq!(&buffer[..], &buffer2[..]); } #[test] fn test_cat_empty_stream() { let empty_catable = [b';']; let mut bcat = super::BroCatli::default(); let mut in_offset = 0usize; let mut out_bytes = [0u8; 32]; let mut out_offset = 0usize; bcat.new_brotli_file(); let mut res = bcat.stream( &empty_catable[..], &mut in_offset, &mut out_bytes[..], &mut out_offset, ); assert_eq!(res, super::BroCatliResult::NeedsMoreInput); bcat.new_brotli_file(); in_offset = 0; res = bcat.stream( &empty_catable[..], &mut in_offset, &mut out_bytes[..], &mut out_offset, ); assert_eq!(res, super::BroCatliResult::NeedsMoreInput); res = bcat.finish(&mut out_bytes[..], &mut out_offset); assert_eq!(res, super::BroCatliResult::Success); assert_ne!(out_offset, 0); assert_eq!(&out_bytes[..out_offset], &[b';']); } } brotli-6.0.0/src/enc/backward_references/benchmark.rs000075500000000000000000000304441046102023000207450ustar 00000000000000#![cfg(feature = "benchmark")] #![cfg(feature = "std")] extern crate test; use super::*; use alloc_stdlib::StandardAlloc; static RANDOM_THEN_UNICODE: &'static [u8] = include_bytes!("../../../testdata/random_then_unicode"); static FINALIZE_DATA: &'static [u8] = &[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 20, ]; const TEST_LEN: usize = 256 * 1024; const DISTANCE_CACHE: &'static [i32] = &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; // distance cache fn make_generic_hasher() -> AdvHasher { let params_hasher = BrotliHasherParams { type_: 5, block_bits: 6, bucket_bits: 15, num_last_distances_to_check: 10, hash_len: 4, literal_byte_score: 540, }; let block_size = 1u64 << params_hasher.block_bits; let bucket_size = 1u64 << params_hasher.bucket_bits; let mut alloc = StandardAlloc::default(); let buckets = >::alloc_cell( &mut alloc, (bucket_size * block_size) as usize, ); let num = >::alloc_cell(&mut alloc, bucket_size as usize); AdvHasher:: { buckets: buckets, h9_opts: H9Opts::new(¶ms_hasher), num: num, GetHasherCommon: Struct1 { params: params_hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: H5Sub { hash_shift_: 32i32 - params_hasher.bucket_bits, bucket_size_: bucket_size as u32, block_bits_: params_hasher.block_bits as i32, block_mask_: block_size.wrapping_sub(1) as u32, }, } } fn make_specialized_hasher() -> AdvHasher { let params_hasher = BrotliHasherParams { type_: 5, block_bits: 6, bucket_bits: 15, num_last_distances_to_check: 10, hash_len: 4, literal_byte_score: 540, }; let block_size = 1u64 << params_hasher.block_bits; let bucket_size = 1u64 << params_hasher.bucket_bits; let mut alloc = StandardAlloc::default(); let buckets = >::alloc_cell( &mut alloc, (bucket_size * block_size) as usize, ); let num = >::alloc_cell(&mut alloc, bucket_size as usize); AdvHasher:: { buckets: buckets, h9_opts: H9Opts::new(¶ms_hasher), num: num, GetHasherCommon: Struct1 { params: params_hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: HQ7Sub {}, } } #[bench] fn bench_256k_basic_generic(bench: &mut test::Bencher) { let mut hasher = make_generic_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); for i in 0..TEST_LEN { hasher.Store(testdata, !0usize, i); } let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_basic_specialized(bench: &mut test::Bencher) { let mut hasher = make_specialized_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); for i in 0..TEST_LEN { hasher.Store(testdata, !0usize, i); } let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_opt_generic(bench: &mut test::Bencher) { let mut hasher = make_generic_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRangeOptBatch(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_opt_specialized(bench: &mut test::Bencher) { let mut hasher = make_specialized_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRangeOptBatch(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_mem_fetch_generic(bench: &mut test::Bencher) { let mut hasher = make_generic_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRangeOptMemFetch(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_mem_fetch_specialized(bench: &mut test::Bencher) { let mut hasher = make_specialized_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRangeOptMemFetch(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_mem_lazy_dupe_generic(bench: &mut test::Bencher) { let mut hasher = make_generic_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRangeOptMemFetchLazyDupeUpdate(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_mem_lazy_dupe_specialized(bench: &mut test::Bencher) { let mut hasher = make_specialized_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRangeOptMemFetchLazyDupeUpdate(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_mem_random_dupe_generic(bench: &mut test::Bencher) { let mut hasher = make_generic_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRangeOptRandomDupeUpdate(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_mem_random_dupe_specialized(bench: &mut test::Bencher) { let mut hasher = make_specialized_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRangeOptRandomDupeUpdate(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_cur_generic(bench: &mut test::Bencher) { let mut hasher = make_generic_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRange(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } #[bench] fn bench_256k_cur_specialized(bench: &mut test::Bencher) { let mut hasher = make_specialized_hasher(); bench.iter(|| { let testdata = test::black_box(RANDOM_THEN_UNICODE.split_at(TEST_LEN + 8).0); hasher.BulkStoreRange(testdata, !0usize, 0, TEST_LEN); let mut output = super::HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; hasher.FindLongestMatch( None, &[], test::black_box(FINALIZE_DATA), // data 15, // ring mask DISTANCE_CACHE, 8, // cur_x 8, 4, 4, 4, &mut output, ); }); } brotli-6.0.0/src/enc/backward_references/hash_to_binary_tree.rs000075500000000000000000000400661046102023000230240ustar 00000000000000#![allow(dead_code, unused_imports)] use super::{ kDistanceCacheIndex, kDistanceCacheOffset, kHashMul32, kHashMul64, kHashMul64Long, kInvalidMatch, AnyHasher, BrotliEncoderParams, BrotliHasherParams, CloneWithAlloc, H9Opts, HasherSearchResult, HowPrepared, Struct1, }; use alloc; use alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use core; use core::cmp::{max, min}; use enc::command::{ CombineLengthCodes, Command, ComputeDistanceCode, GetCopyLengthCode, GetInsertLengthCode, PrefixEncodeCopyDistance, }; use enc::constants::{kCopyExtra, kInsExtra}; use enc::dictionary_hash::kStaticDictionaryHash; use enc::literal_cost::BrotliEstimateBitCostsForLiterals; use enc::static_dict::{ kBrotliEncDictionary, BrotliDictionary, BrotliFindAllStaticDictionaryMatches, }; use enc::static_dict::{ FindMatchLengthWithLimit, BROTLI_UNALIGNED_LOAD32, BROTLI_UNALIGNED_LOAD64, }; use enc::util::{floatX, FastLog2, Log2FloorNonZero}; pub const kInfinity: floatX = 1.7e38 as floatX; #[derive(Clone, Copy, Debug)] pub enum Union1 { cost(floatX), next(u32), shortcut(u32), } #[derive(Clone, Copy, Debug)] pub struct ZopfliNode { //highest 7 bit is used to reconstruct the length code pub length: u32, // distance associated with the length pub distance: u32, // number of literal inserts before the copy; highest 5 bits contain distance short code + 1 (or zero if no short code) pub dcode_insert_length: u32, pub u: Union1, } impl Default for ZopfliNode { fn default() -> Self { ZopfliNode { length: 1, distance: 0, dcode_insert_length: 0, u: Union1::cost(kInfinity), } } } pub trait Allocable> { fn new(m: &mut AllocT, init: T) -> Self; fn new_uninit(m: &mut AllocT) -> Self; fn free(&mut self, m: &mut AllocT); } pub trait H10Params { fn max_tree_search_depth() -> u32; fn max_tree_comp_length() -> u32; } pub struct H10DefaultParams {} impl H10Params for H10DefaultParams { #[inline(always)] fn max_tree_search_depth() -> u32 { 64 } #[inline(always)] fn max_tree_comp_length() -> u32 { 128 } } const BUCKET_BITS: usize = 17; pub struct H10Buckets>(AllocU32::AllocatedMemory); impl> Allocable for H10Buckets { fn new(m: &mut AllocU32, initializer: u32) -> H10Buckets { let mut ret = m.alloc_cell(1 << BUCKET_BITS); for item in ret.slice_mut().iter_mut() { *item = initializer; } H10Buckets::(ret) } fn new_uninit(m: &mut AllocU32) -> H10Buckets { H10Buckets::(m.alloc_cell(1 << BUCKET_BITS)) } fn free(&mut self, m: &mut AllocU32) { m.free_cell(core::mem::take(&mut self.0)); } } impl> PartialEq> for H10Buckets { fn eq(&self, other: &H10Buckets) -> bool { return self.0.slice() == other.0.slice(); } } impl> SliceWrapper for H10Buckets { #[inline(always)] fn slice(&self) -> &[u32] { self.0.slice() } } impl> SliceWrapperMut for H10Buckets { #[inline(always)] fn slice_mut(&mut self) -> &mut [u32] { self.0.slice_mut() } } pub struct H10< AllocU32: Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, > where Buckets: PartialEq, { pub window_mask_: usize, pub common: Struct1, pub buckets_: Buckets, pub invalid_pos_: u32, pub forest: AllocU32::AllocatedMemory, pub _params: core::marker::PhantomData, } impl< AllocU32: Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, > PartialEq> for H10 where Buckets: PartialEq, { fn eq(&self, other: &H10) -> bool { self.window_mask_ == other.window_mask_ && self.common == other.common && self.buckets_ == other.buckets_ && self.invalid_pos_ == other.invalid_pos_ && self.forest.slice() == other.forest.slice() && self._params == other._params } } pub fn InitializeH10>( m32: &mut AllocU32, one_shot: bool, params: &BrotliEncoderParams, input_size: usize, ) -> H10, H10DefaultParams> { initialize_h10::>(m32, one_shot, params, input_size) } fn initialize_h10< AllocU32: Allocator, Buckets: SliceWrapperMut + SliceWrapper + Allocable, >( m32: &mut AllocU32, one_shot: bool, params: &BrotliEncoderParams, input_size: usize, ) -> H10 where Buckets: PartialEq, { let mut num_nodes = 1 << params.lgwin; if one_shot && input_size < num_nodes { num_nodes = input_size; } let window_mask = (1 << params.lgwin) - 1; let invalid_pos = 0u32.wrapping_sub(window_mask); let buckets = >::new(m32, invalid_pos); H10:: { common: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, _params: core::marker::PhantomData::, window_mask_: window_mask as usize, invalid_pos_: invalid_pos, buckets_: buckets, forest: m32.alloc_cell(num_nodes * 2), } } impl< AllocU32: Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, > H10 where Buckets: PartialEq, { pub fn free(&mut self, m32: &mut AllocU32) { m32.free_cell(core::mem::take(&mut self.forest)); self.buckets_.free(m32); } } impl< Alloc: alloc::Allocator + alloc::Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, > CloneWithAlloc for H10 where Buckets: PartialEq, { fn clone_with_alloc(&self, m: &mut Alloc) -> Self { let mut ret = H10:: { window_mask_: self.window_mask_, common: self.common.clone(), buckets_: Buckets::new_uninit(m), invalid_pos_: self.invalid_pos_, forest: >::alloc_cell(m, self.forest.len()), _params: core::marker::PhantomData::, }; ret.buckets_ .slice_mut() .clone_from_slice(self.buckets_.slice()); ret.forest.slice_mut().clone_from_slice(self.forest.slice()); ret } } impl< AllocU32: Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, > AnyHasher for H10 where Buckets: PartialEq, { /* fn GetH10Tree(&mut self) -> Option<&mut H10> { Some(self) }*/ #[inline(always)] fn Opts(&self) -> H9Opts { H9Opts { literal_byte_score: 340, } } #[inline(always)] fn PrepareDistanceCache(&self, _distance_cache: &mut [i32]) {} #[inline(always)] fn HashTypeLength(&self) -> usize { 4 } #[inline(always)] fn StoreLookahead(&self) -> usize { Params::max_tree_comp_length() as usize } fn StitchToPreviousBlock( &mut self, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, ) { super::hq::StitchToPreviousBlockH10(self, num_bytes, position, ringbuffer, ringbuffer_mask) } #[inline(always)] fn GetHasherCommon(&mut self) -> &mut Struct1 { &mut self.common } #[inline(always)] fn HashBytes(&self, data: &[u8]) -> usize { let h = BROTLI_UNALIGNED_LOAD32(data).wrapping_mul(kHashMul32); (h >> (32i32 - BUCKET_BITS as i32)) as usize } #[inline(always)] fn Store(&mut self, data: &[u8], mask: usize, ix: usize) { let max_backward: usize = self.window_mask_.wrapping_sub(16).wrapping_add(1); StoreAndFindMatchesH10( self, data, ix, mask, Params::max_tree_comp_length() as usize, max_backward, &mut 0, &mut [], ); } fn StoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize) { let mut i: usize = ix_start; let mut j: usize = ix_start; if ix_start.wrapping_add(63) <= ix_end { i = ix_end.wrapping_sub(63); } if ix_start.wrapping_add(512) <= i { while j < i { { self.Store(data, mask, j); } j = j.wrapping_add(8); } } while i < ix_end { { self.Store(data, mask, i); } i = i.wrapping_add(1); } } fn BulkStoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize) { for i in ix_start..ix_end { self.Store(data, mask, i); } } fn Prepare(&mut self, _one_shot: bool, _input_size: usize, _data: &[u8]) -> HowPrepared { if self.common.is_prepared_ != 0 { return HowPrepared::ALREADY_PREPARED; } let invalid_pos = self.invalid_pos_; for bucket in self.buckets_.slice_mut().iter_mut() { *bucket = invalid_pos; } self.common.is_prepared_ = 1; HowPrepared::NEWLY_PREPARED } fn FindLongestMatch( &mut self, _dictionary: Option<&BrotliDictionary>, _dictionary_hash: &[u16], _data: &[u8], _ring_buffer_mask: usize, _distance_cache: &[i32], _cur_ix: usize, _max_length: usize, _max_backward: usize, _gap: usize, _max_distance: usize, _out: &mut HasherSearchResult, ) -> bool { unimplemented!(); } } pub struct BackwardMatch(pub u64); // pub distance : u32, // pub length_and_code : u32, impl BackwardMatch { #[inline(always)] pub fn distance(&self) -> u32 { self.0 as u32 } #[inline(always)] pub fn length_and_code(&self) -> u32 { (self.0 >> 32) as u32 } } pub struct BackwardMatchMut<'a>(pub &'a mut u64); // pub distance : u32, // pub length_and_code : u32, impl<'a> BackwardMatchMut<'a> { #[inline(always)] pub fn distance(&self) -> u32 { *self.0 as u32 } #[inline(always)] pub fn length_and_code(&self) -> u32 { (*self.0 >> 32) as u32 } #[inline(always)] pub fn set_distance(&mut self, data: u32) { *self.0 &= 0xffffffff00000000; *self.0 |= u64::from(data) } #[inline(always)] pub fn set_length_and_code(&mut self, data: u32) { *self.0 = u64::from((*self.0) as u32) | (u64::from(data) << 32); } #[inline(always)] pub fn init(&mut self, dist: usize, len: usize) { self.set_distance(dist as u32); self.set_length_and_code((len << 5) as u32); } #[inline(always)] pub(crate) fn init_dictionary(&mut self, dist: usize, len: usize, len_code: usize) { self.set_distance(dist as u32); self.set_length_and_code((len << 5 | if len == len_code { 0 } else { len_code }) as u32); } } macro_rules! LeftChildIndexH10 { ($xself: expr, $pos: expr) => { (2usize).wrapping_mul($pos & (*$xself).window_mask_) }; } macro_rules! RightChildIndexH10 { ($xself: expr, $pos: expr) => { (2usize) .wrapping_mul($pos & (*$xself).window_mask_) .wrapping_add(1) }; } /* fn LeftChildIndexH10, Buckets: Allocable+SliceWrapperMut+SliceWrapper, Params:H10Params>( mut xself : &mut H10, pos : usize ) -> usize { (2usize).wrapping_mul(pos & xself.window_mask_) } fn RightChildIndexH10, Buckets: Allocable+SliceWrapperMut+SliceWrapper, Params:H10Params>( mut xself : &mut H10, pos : usize ) -> usize { (2usize).wrapping_mul( pos & xself.window_mask_ ).wrapping_add( 1 ) } */ pub fn StoreAndFindMatchesH10< AllocU32: Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, >( xself: &mut H10, data: &[u8], cur_ix: usize, ring_buffer_mask: usize, max_length: usize, max_backward: usize, best_len: &mut usize, matches: &mut [u64], ) -> usize where Buckets: PartialEq, { let mut matches_offset = 0usize; let cur_ix_masked: usize = cur_ix & ring_buffer_mask; let max_comp_len: usize = min(max_length, 128usize); let should_reroot_tree = max_length >= 128; let key = xself.HashBytes(&data[cur_ix_masked..]); let forest: &mut [u32] = xself.forest.slice_mut(); let mut prev_ix: usize = xself.buckets_.slice()[key] as usize; let mut node_left: usize = LeftChildIndexH10!(xself, cur_ix); let mut node_right: usize = RightChildIndexH10!(xself, cur_ix); let mut best_len_left: usize = 0usize; let mut best_len_right: usize = 0usize; let mut depth_remaining: usize; if should_reroot_tree { xself.buckets_.slice_mut()[key] = cur_ix as u32; } depth_remaining = 64usize; 'break16: loop { { let backward: usize = cur_ix.wrapping_sub(prev_ix); let prev_ix_masked: usize = prev_ix & ring_buffer_mask; if backward == 0usize || backward > max_backward || depth_remaining == 0usize { if should_reroot_tree { forest[node_left] = xself.invalid_pos_; forest[node_right] = xself.invalid_pos_; } break 'break16; } { let cur_len: usize = min(best_len_left, best_len_right); let len: usize = cur_len.wrapping_add(FindMatchLengthWithLimit( &data[cur_ix_masked.wrapping_add(cur_len)..], &data[prev_ix_masked.wrapping_add(cur_len)..], max_length.wrapping_sub(cur_len), )); if matches_offset != matches.len() && (len > *best_len) { *best_len = len; BackwardMatchMut(&mut matches[matches_offset]).init(backward, len); matches_offset += 1; } if len >= max_comp_len { if should_reroot_tree { forest[node_left] = forest[LeftChildIndexH10!(xself, prev_ix)]; forest[node_right] = forest[RightChildIndexH10!(xself, prev_ix)]; } break 'break16; } if data[cur_ix_masked.wrapping_add(len)] as i32 > data[prev_ix_masked.wrapping_add(len)] as i32 { best_len_left = len; if should_reroot_tree { forest[node_left] = prev_ix as u32; } node_left = RightChildIndexH10!(xself, prev_ix); prev_ix = forest[node_left] as usize; } else { best_len_right = len; if should_reroot_tree { forest[node_right] = prev_ix as u32; } node_right = LeftChildIndexH10!(xself, prev_ix); prev_ix = forest[node_right] as usize; } } } depth_remaining = depth_remaining.wrapping_sub(1); } matches_offset } brotli-6.0.0/src/enc/backward_references/hq.rs000075500000000000000000001456671046102023000174410ustar 00000000000000#![allow(dead_code, unused_imports)] use super::hash_to_binary_tree::{ kInfinity, Allocable, BackwardMatch, BackwardMatchMut, H10Params, StoreAndFindMatchesH10, Union1, ZopfliNode, H10, }; use super::{ kDistanceCacheIndex, kDistanceCacheOffset, kHashMul32, kHashMul64, kHashMul64Long, kInvalidMatch, AnyHasher, BrotliEncoderParams, BrotliHasherParams, }; use alloc; use alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use core; use core::cmp::{max, min}; use enc::command::{ BrotliDistanceParams, CombineLengthCodes, Command, ComputeDistanceCode, GetCopyLengthCode, GetInsertLengthCode, PrefixEncodeCopyDistance, }; use enc::constants::{kCopyExtra, kInsExtra}; use enc::dictionary_hash::kStaticDictionaryHash; use enc::encode; use enc::literal_cost::BrotliEstimateBitCostsForLiterals; use enc::static_dict::{ kBrotliEncDictionary, BrotliDictionary, BrotliFindAllStaticDictionaryMatches, }; use enc::static_dict::{ FindMatchLengthWithLimit, BROTLI_UNALIGNED_LOAD32, BROTLI_UNALIGNED_LOAD64, }; use enc::util::{floatX, FastLog2, FastLog2f64, Log2FloorNonZero}; const BROTLI_WINDOW_GAP: usize = 16; const BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN: usize = 37; /* static kBrotliMinWindowBits: i32 = 10i32; static kBrotliMaxWindowBits: i32 = 24i32; static kInvalidMatch: u32 = 0xfffffffu32; static kCutoffTransformsCount: u32 = 10u32; static kCutoffTransforms: u64 = 0x71b520au64 << 32 | 0xda2d3200u32 as (u64); pub static kHashMul32: u32 = 0x1e35a7bdu32; pub static kHashMul64: u64 = 0x1e35a7bdu64 << 32 | 0x1e35a7bdu64; pub static kHashMul64Long: u64 = 0x1fe35a7bu32 as (u64) << 32 | 0xd3579bd3u32 as (u64); */ pub const BROTLI_MAX_EFFECTIVE_DISTANCE_ALPHABET_SIZE: usize = 544; pub const BROTLI_NUM_LITERAL_SYMBOLS: usize = 256; pub const BROTLI_NUM_COMMAND_SYMBOLS: usize = 704; pub const BROTLI_SIMPLE_DISTANCE_ALPHABET_SIZE: usize = encode::BROTLI_NUM_DISTANCE_SHORT_CODES as usize + (2 * encode::BROTLI_LARGE_MAX_DISTANCE_BITS as usize); const STORE_LOOKAHEAD_H_10: usize = 128; #[inline(always)] pub fn BrotliInitZopfliNodes(array: &mut [ZopfliNode], length: usize) { let stub = ZopfliNode::default(); let mut i: usize; i = 0usize; while i < length { array[i] = stub; i = i.wrapping_add(1); } } impl ZopfliNode { #[inline(always)] fn copy_length(&self) -> u32 { self.length & 0x01ff_ffff } #[inline(always)] fn copy_distance(&self) -> u32 { self.distance } #[inline(always)] fn length_code(&self) -> u32 { self.copy_length() .wrapping_add(9) .wrapping_sub(self.length >> 25) } #[inline(always)] fn distance_code(&self) -> u32 { let short_code: u32 = self.dcode_insert_length >> 27; if short_code == 0u32 { self.copy_distance().wrapping_add(16).wrapping_sub(1) } else { short_code.wrapping_sub(1) } } } pub fn BrotliZopfliCreateCommands( num_bytes: usize, block_start: usize, max_backward_limit: usize, nodes: &[ZopfliNode], dist_cache: &mut [i32], last_insert_len: &mut usize, params: &BrotliEncoderParams, commands: &mut [Command], num_literals: &mut usize, ) { let mut pos: usize = 0usize; let mut offset: u32 = match (nodes[0]).u { Union1::next(off) => off, _ => 0, }; let mut i: usize; let gap: usize = 0usize; i = 0usize; while offset != !(0u32) { { let next: &ZopfliNode = &nodes[pos.wrapping_add(offset as usize)]; let copy_length = next.copy_length() as usize; let mut insert_length: usize = (next.dcode_insert_length & 0x07ff_ffff) as usize; pos = pos.wrapping_add(insert_length); offset = match next.u { Union1::next(off) => off, _ => 0, }; if i == 0usize { insert_length = insert_length.wrapping_add(*last_insert_len); *last_insert_len = 0usize; } { let distance: usize = next.copy_distance() as usize; let len_code: usize = next.length_code() as usize; let max_distance: usize = min(block_start.wrapping_add(pos), max_backward_limit); let is_dictionary = distance > max_distance.wrapping_add(gap); let dist_code: usize = next.distance_code() as usize; commands[i].init( ¶ms.dist, insert_length, copy_length, len_code, dist_code, ); if !is_dictionary && dist_code > 0 { dist_cache[3] = dist_cache[2]; dist_cache[2] = dist_cache[1]; dist_cache[1] = dist_cache[0]; dist_cache[0] = distance as i32; } } *num_literals = num_literals.wrapping_add(insert_length); pos = pos.wrapping_add(copy_length); } i = i.wrapping_add(1); } *last_insert_len = last_insert_len.wrapping_add(num_bytes.wrapping_sub(pos)); } #[inline(always)] fn MaxZopfliLen(params: &BrotliEncoderParams) -> usize { (if params.quality <= 10i32 { 150i32 } else { 325i32 }) as usize } pub struct ZopfliCostModel> { pub cost_cmd_: [floatX; BROTLI_NUM_COMMAND_SYMBOLS], pub cost_dist_: AllocF::AllocatedMemory, pub distance_histogram_size: u32, pub literal_costs_: AllocF::AllocatedMemory, pub min_cost_cmd_: floatX, pub num_bytes_: usize, } #[derive(Copy, Clone, Debug)] pub struct PosData { pub pos: usize, pub distance_cache: [i32; 4], pub costdiff: floatX, pub cost: floatX, } #[derive(Copy, Clone, Debug)] pub struct StartPosQueue { pub q_: [PosData; 8], pub idx_: usize, } impl Default for StartPosQueue { #[inline(always)] fn default() -> Self { StartPosQueue { q_: [PosData { pos: 0, distance_cache: [0; 4], costdiff: 0.0, cost: 0.0, }; 8], idx_: 0, } } } impl> ZopfliCostModel { fn init(m: &mut AllocF, dist: &BrotliDistanceParams, num_bytes: usize) -> Self { Self { num_bytes_: num_bytes, cost_cmd_: [0.0; 704], min_cost_cmd_: 0.0, literal_costs_: if num_bytes.wrapping_add(2) > 0usize { m.alloc_cell(num_bytes.wrapping_add(2)) } else { AllocF::AllocatedMemory::default() }, cost_dist_: if dist.alphabet_size > 0u32 { m.alloc_cell(num_bytes.wrapping_add(dist.alphabet_size as usize)) } else { AllocF::AllocatedMemory::default() }, distance_histogram_size: min(dist.alphabet_size, 544), } } fn set_from_literal_costs( &mut self, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, ) { let literal_costs = self.literal_costs_.slice_mut(); let mut literal_carry: floatX = 0.0; let cost_dist = self.cost_dist_.slice_mut(); let cost_cmd = &mut self.cost_cmd_[..]; let num_bytes: usize = self.num_bytes_; BrotliEstimateBitCostsForLiterals( position, num_bytes, ringbuffer_mask, ringbuffer, &mut literal_costs[1..], ); literal_costs[0] = 0.0 as (floatX); for i in 0usize..num_bytes { literal_carry = literal_carry as floatX + literal_costs[i.wrapping_add(1)] as floatX; literal_costs[i.wrapping_add(1)] = (literal_costs[i] as floatX + literal_carry) as floatX; literal_carry -= (literal_costs[i.wrapping_add(1)] as floatX - literal_costs[i] as floatX); } for i in 0..BROTLI_NUM_COMMAND_SYMBOLS { cost_cmd[i] = FastLog2(11 + i as u64); } for i in 0usize..self.distance_histogram_size as usize { cost_dist[i] = FastLog2((20u64).wrapping_add(i as (u64))) as (floatX); } self.min_cost_cmd_ = FastLog2(11) as (floatX); } } #[inline(always)] fn HashBytesH10(data: &[u8]) -> u32 { let h: u32 = BROTLI_UNALIGNED_LOAD32(data).wrapping_mul(kHashMul32); h >> (32i32 - 17i32) } pub fn StitchToPreviousBlockH10< AllocU32: Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, >( handle: &mut H10, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, ) where Buckets: PartialEq, { if (num_bytes >= handle.HashTypeLength() - 1 && position >= Params::max_tree_comp_length() as usize) { /* Store the last `MAX_TREE_COMP_LENGTH - 1` positions in the hasher. These could not be calculated before, since they require knowledge of both the previous and the current block. */ let i_start = position - Params::max_tree_comp_length() as usize; let i_end = min(position, i_start.wrapping_add(num_bytes)); for i in i_start..i_end { /* Maximum distance is window size - 16, see section 9.1. of the spec. Furthermore, we have to make sure that we don't look further back from the start of the next block than the window size, otherwise we could access already overwritten areas of the ring-buffer. */ let max_backward = handle.window_mask_ - max(BROTLI_WINDOW_GAP - 1, position - i); let mut _best_len = 0; /* We know that i + MAX_TREE_COMP_LENGTH <= position + num_bytes, i.e. the end of the current block and that we have at least MAX_TREE_COMP_LENGTH tail in the ring-buffer. */ StoreAndFindMatchesH10( handle, ringbuffer, i, ringbuffer_mask, ::max_tree_comp_length() as usize, max_backward, &mut _best_len, &mut [], ); } } } fn FindAllMatchesH10< AllocU32: Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, >( handle: &mut H10, dictionary: Option<&BrotliDictionary>, data: &[u8], ring_buffer_mask: usize, cur_ix: usize, max_length: usize, max_backward: usize, gap: usize, params: &BrotliEncoderParams, matches: &mut [u64], ) -> usize where Buckets: PartialEq, { let mut matches_offset = 0usize; let cur_ix_masked: usize = cur_ix & ring_buffer_mask; let mut best_len: usize = 1usize; let short_match_max_backward: usize = (if params.quality != 11i32 { 16i32 } else { 64i32 }) as usize; let mut stop: usize = cur_ix.wrapping_sub(short_match_max_backward); let mut dict_matches = [kInvalidMatch; BROTLI_MAX_STATIC_DICTIONARY_MATCH_LEN + 1]; let mut i: usize; if cur_ix < short_match_max_backward { stop = 0usize; } i = cur_ix.wrapping_sub(1); 'break14: while i > stop && (best_len <= 2usize) { 'continue15: loop { { let mut prev_ix: usize = i; let backward: usize = cur_ix.wrapping_sub(prev_ix); if backward > max_backward { break 'break14; } prev_ix &= ring_buffer_mask; if data[cur_ix_masked] as i32 != data[prev_ix] as i32 || data[cur_ix_masked.wrapping_add(1)] as i32 != data[prev_ix.wrapping_add(1)] as i32 { break 'continue15; } { let len: usize = FindMatchLengthWithLimit( &data[prev_ix..], &data[cur_ix_masked..], max_length, ); if len > best_len { best_len = len; BackwardMatchMut(&mut matches[matches_offset]).init(backward, len); matches_offset += 1; } } } break; } i = i.wrapping_sub(1); } if best_len < max_length { let loc_offset = StoreAndFindMatchesH10( handle, data, cur_ix, ring_buffer_mask, max_length, max_backward, &mut best_len, matches.split_at_mut(matches_offset).1, ); matches_offset += loc_offset; } for i in 0..=37 { dict_matches[i] = kInvalidMatch } { let minlen = max(4, best_len.wrapping_add(1)); if dictionary.is_some() && BrotliFindAllStaticDictionaryMatches( dictionary.unwrap(), &data[cur_ix_masked..], minlen, max_length, &mut dict_matches[..], ) != 0 { assert!(params.use_dictionary); let maxlen = min(37, max_length); for l in minlen..=maxlen { let dict_id: u32 = dict_matches[l]; if dict_id < kInvalidMatch { let distance: usize = max_backward .wrapping_add(gap) .wrapping_add((dict_id >> 5) as usize) .wrapping_add(1); if distance <= params.dist.max_distance { BackwardMatchMut(&mut matches[matches_offset]).init_dictionary( distance, l, (dict_id & 31u32) as usize, ); matches_offset += 1; } } } } } matches_offset } impl BackwardMatch { #[inline(always)] fn length(&self) -> usize { (self.length_and_code() >> 5) as usize } } #[inline(always)] fn MaxZopfliCandidates(params: &BrotliEncoderParams) -> usize { (if params.quality <= 10i32 { 1i32 } else { 5i32 }) as usize } #[inline(always)] fn ComputeDistanceShortcut( block_start: usize, pos: usize, max_backward: usize, gap: usize, nodes: &[ZopfliNode], ) -> u32 { let clen: usize = nodes[pos].copy_length() as usize; let ilen: usize = ((nodes[pos]).dcode_insert_length) as usize & 0x07ff_ffff; let dist: usize = nodes[pos].copy_distance() as usize; if pos == 0usize { 0u32 } else if dist.wrapping_add(clen) <= block_start.wrapping_add(pos).wrapping_add(gap) && dist <= max_backward.wrapping_add(gap) && nodes[pos].distance_code() > 0 { pos as u32 } else { match (nodes[(pos.wrapping_sub(clen).wrapping_sub(ilen) as usize)]).u { Union1::shortcut(shrt) => shrt, _ => 0, } } } impl> ZopfliCostModel { #[inline(always)] fn get_literal_costs(&self, from: usize, to: usize) -> floatX { self.literal_costs_.slice()[to] - self.literal_costs_.slice()[from] } } fn ComputeDistanceCache( pos: usize, mut starting_dist_cache: &[i32], nodes: &[ZopfliNode], dist_cache: &mut [i32], ) { let mut idx: i32 = 0i32; let mut p: usize = match (nodes[pos]).u { Union1::shortcut(shrt) => shrt, _ => 0, } as usize; while idx < 4i32 && (p > 0usize) { let ilen: usize = ((nodes[p]).dcode_insert_length) as usize & 0x07ff_ffff; let clen = nodes[p].copy_length() as usize; let dist = nodes[p].copy_distance() as usize; dist_cache[({ let _old = idx; idx += 1; _old } as usize)] = dist as i32; p = match (nodes[(p.wrapping_sub(clen).wrapping_sub(ilen) as usize)]).u { Union1::shortcut(shrt) => shrt, _ => 0, } as usize; } while idx < 4i32 { { dist_cache[(idx as usize)] = { let (_old, _upper) = starting_dist_cache.split_at(1); starting_dist_cache = _upper; _old[0] }; } idx += 1; } } impl StartPosQueue { #[inline(always)] fn size(&self) -> usize { min(self.idx_, 8) } fn push(&mut self, posdata: &PosData) { let mut offset: usize = !self.idx_ & 7usize; self.idx_ = self.idx_.wrapping_add(1); let len: usize = self.size(); let q: &mut [PosData; 8] = &mut self.q_; q[offset] = *posdata; for _i in 1..len { if q[offset & 7].costdiff > q[(offset + 1) & 7].costdiff { q.swap(offset & 7, (offset + 1) & 7); } offset = offset.wrapping_add(1); } } } fn EvaluateNode>( block_start: usize, pos: usize, max_backward_limit: usize, gap: usize, starting_dist_cache: &[i32], model: &ZopfliCostModel, queue: &mut StartPosQueue, nodes: &mut [ZopfliNode], ) { let node_cost: floatX = match (nodes[pos]).u { Union1::cost(cst) => cst, _ => 0.0, }; (nodes[pos]).u = Union1::shortcut(ComputeDistanceShortcut( block_start, pos, max_backward_limit, gap, nodes, )); if node_cost <= model.get_literal_costs(0, pos) { let mut posdata = PosData { pos, cost: node_cost, costdiff: node_cost - model.get_literal_costs(0, pos), distance_cache: [0; 4], }; ComputeDistanceCache( pos, starting_dist_cache, nodes, &mut posdata.distance_cache[..], ); queue.push(&mut posdata); } } impl StartPosQueue { #[inline(always)] fn at(&self, k: usize) -> &PosData { &self.q_[k.wrapping_sub(self.idx_) & 7usize] } } impl> ZopfliCostModel { #[inline(always)] fn get_min_cost_cmd(&self) -> floatX { self.min_cost_cmd_ } } #[inline(always)] fn ComputeMinimumCopyLength( start_cost: floatX, nodes: &[ZopfliNode], num_bytes: usize, pos: usize, ) -> usize { let mut min_cost: floatX = start_cost; let mut len: usize = 2usize; let mut next_len_bucket: usize = 4usize; let mut next_len_offset: usize = 10usize; while pos.wrapping_add(len) <= num_bytes && (match (nodes[pos.wrapping_add(len)]).u { Union1::cost(cst) => cst, _ => 0.0, } <= min_cost) { len = len.wrapping_add(1); if len == next_len_offset { min_cost += 1.0 as floatX; next_len_offset = next_len_offset.wrapping_add(next_len_bucket); next_len_bucket = next_len_bucket.wrapping_mul(2); } } len } #[inline(always)] fn GetInsertExtra(inscode: u16) -> u32 { kInsExtra[(inscode as usize)] } impl> ZopfliCostModel { #[inline(always)] fn get_distance_cost(&self, distcode: usize) -> floatX { self.cost_dist_.slice()[distcode] } } #[inline(always)] fn GetCopyExtra(copycode: u16) -> u32 { kCopyExtra[(copycode as usize)] } impl> ZopfliCostModel { #[inline(always)] fn get_command_cost(&self, cmdcode: u16) -> floatX { self.cost_cmd_[cmdcode as usize] } } #[inline(always)] fn UpdateZopfliNode( nodes: &mut [ZopfliNode], pos: usize, start_pos: usize, len: usize, len_code: usize, dist: usize, short_code: usize, cost: floatX, ) { let next = &mut nodes[pos.wrapping_add(len)]; next.length = (len | len.wrapping_add(9u32 as usize).wrapping_sub(len_code) << 25) as u32; next.distance = dist as u32; next.dcode_insert_length = pos.wrapping_sub(start_pos) as u32 | (short_code << 27) as u32; next.u = Union1::cost(cost); } impl BackwardMatch { #[inline(always)] fn length_code(&self) -> usize { let code = (self.length_and_code() & 31u32) as usize; if code != 0 { code } else { self.length() } } } fn UpdateNodes>( num_bytes: usize, block_start: usize, pos: usize, ringbuffer: &[u8], ringbuffer_mask: usize, params: &BrotliEncoderParams, max_backward_limit: usize, starting_dist_cache: &[i32], num_matches: usize, matches: &[u64], model: &ZopfliCostModel, queue: &mut StartPosQueue, nodes: &mut [ZopfliNode], ) -> usize { let cur_ix: usize = block_start.wrapping_add(pos); let cur_ix_masked: usize = cur_ix & ringbuffer_mask; let max_distance: usize = min(cur_ix, max_backward_limit); let max_len: usize = num_bytes.wrapping_sub(pos); let max_zopfli_len: usize = MaxZopfliLen(params); let max_iters: usize = MaxZopfliCandidates(params); let min_len: usize; let mut result: usize = 0usize; let mut k: usize; let gap: usize = 0usize; EvaluateNode( block_start, pos, max_backward_limit, gap, starting_dist_cache, model, queue, nodes, ); { let posdata = queue.at(0); let min_cost = posdata.cost + model.get_min_cost_cmd() + model.get_literal_costs(posdata.pos, pos); min_len = ComputeMinimumCopyLength(min_cost, nodes, num_bytes, pos); } k = 0usize; while k < max_iters && k < queue.size() { 'continue28: loop { { let posdata = queue.at(k); let start: usize = posdata.pos; let inscode: u16 = GetInsertLengthCode(pos.wrapping_sub(start)); let start_costdiff: floatX = posdata.costdiff; let base_cost: floatX = start_costdiff + GetInsertExtra(inscode) as (floatX) + model.get_literal_costs(0, pos); let mut best_len: usize = min_len.wrapping_sub(1); let mut j: usize = 0usize; 'break29: while j < 16usize && (best_len < max_len) { 'continue30: loop { { let idx: usize = kDistanceCacheIndex[j] as usize; let distance_cache_len_minus_1 = 3; debug_assert_eq!( distance_cache_len_minus_1 + 1, posdata.distance_cache.len() ); let backward: usize = (posdata.distance_cache [(idx & distance_cache_len_minus_1)] + i32::from(kDistanceCacheOffset[j])) as usize; let mut prev_ix: usize = cur_ix.wrapping_sub(backward); let len: usize; let continuation: u8 = ringbuffer[cur_ix_masked.wrapping_add(best_len)]; if cur_ix_masked.wrapping_add(best_len) > ringbuffer_mask { break 'break29; } if backward > max_distance.wrapping_add(gap) { break 'continue30; } if backward <= max_distance { if prev_ix >= cur_ix { break 'continue30; } prev_ix &= ringbuffer_mask; if prev_ix.wrapping_add(best_len) > ringbuffer_mask || continuation as i32 != ringbuffer[(prev_ix.wrapping_add(best_len) as usize)] as i32 { break 'continue30; } len = FindMatchLengthWithLimit( &ringbuffer[(prev_ix as usize)..], &ringbuffer[cur_ix_masked..], max_len, ); } else { break 'continue30; } { let dist_cost = base_cost + model.get_distance_cost(j); for l in best_len.wrapping_add(1)..=len { let copycode: u16 = GetCopyLengthCode(l); let cmdcode: u16 = CombineLengthCodes(inscode, copycode, (j == 0usize) as i32); let cost: floatX = (if cmdcode < 128 { base_cost } else { dist_cost }) + (GetCopyExtra(copycode) as floatX) + model.get_command_cost(cmdcode); if cost < match (nodes[pos.wrapping_add(l)]).u { Union1::cost(cost) => cost, _ => 0.0, } { UpdateZopfliNode( nodes, pos, start, l, l, backward, j.wrapping_add(1), cost, ); result = max(result, l); } best_len = l; } } } break; } j = j.wrapping_add(1); } if k >= 2usize { break 'continue28; } { let mut len: usize = min_len; for j in 0usize..num_matches { let match_ = BackwardMatch(matches[j]); let dist: usize = match_.distance() as usize; let is_dictionary_match = dist > max_distance.wrapping_add(gap); let dist_code: usize = dist.wrapping_add(16).wrapping_sub(1); let mut dist_symbol: u16 = 0; let mut distextra: u32 = 0; PrefixEncodeCopyDistance( dist_code, params.dist.num_direct_distance_codes as usize, u64::from(params.dist.distance_postfix_bits), &mut dist_symbol, &mut distextra, ); let distnumextra: u32 = u32::from(dist_symbol) >> 10; let dist_cost = base_cost + (distnumextra as floatX) + model.get_distance_cost((dist_symbol as i32 & 0x03ff) as usize); let max_match_len = match_.length(); if len < max_match_len && (is_dictionary_match || max_match_len > max_zopfli_len) { len = max_match_len; } while len <= max_match_len { { let len_code: usize = if is_dictionary_match { match_.length_code() } else { len }; let copycode: u16 = GetCopyLengthCode(len_code); let cmdcode: u16 = CombineLengthCodes(inscode, copycode, 0i32); let cost: floatX = dist_cost + GetCopyExtra(copycode) as (floatX) + model.get_command_cost(cmdcode); if let Union1::cost(nodeCost) = (nodes[pos.wrapping_add(len)]).u { if cost < nodeCost { UpdateZopfliNode( nodes, pos, start, len, len_code, dist, 0usize, cost, ); result = max(result, len); } } } len = len.wrapping_add(1); } } } } break; } k = k.wrapping_add(1); } result } impl> ZopfliCostModel { #[inline(always)] fn cleanup(&mut self, m: &mut AllocF) { m.free_cell(core::mem::take(&mut self.literal_costs_)); m.free_cell(core::mem::take(&mut self.cost_dist_)); } } impl ZopfliNode { #[inline(always)] fn command_length(&self) -> u32 { self.copy_length() .wrapping_add(self.dcode_insert_length & 0x07ff_ffff) } } #[inline(always)] fn ComputeShortestPathFromNodes(num_bytes: usize, nodes: &mut [ZopfliNode]) -> usize { let mut index: usize = num_bytes; let mut num_commands: usize = 0usize; while (nodes[index].dcode_insert_length & 0x07ff_ffff) == 0 && nodes[index].length == 1 { index = index.wrapping_sub(1); } nodes[index].u = Union1::next(!(0u32)); while index != 0 { let len = nodes[index].command_length() as usize; index = index.wrapping_sub(len); (nodes[index]).u = Union1::next(len as u32); num_commands = num_commands.wrapping_add(1); } num_commands } const MAX_NUM_MATCHES_H10: usize = 128; pub fn BrotliZopfliComputeShortestPath< AllocU32: Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, AllocF: Allocator, >( m: &mut AllocF, dictionary: Option<&BrotliDictionary>, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, params: &BrotliEncoderParams, max_backward_limit: usize, dist_cache: &[i32], handle: &mut H10, nodes: &mut [ZopfliNode], ) -> usize where Buckets: PartialEq, { let max_zopfli_len: usize = MaxZopfliLen(params); let mut model: ZopfliCostModel; let mut queue: StartPosQueue; let mut matches = [0; MAX_NUM_MATCHES_H10]; let store_end: usize = if num_bytes >= STORE_LOOKAHEAD_H_10 { position .wrapping_add(num_bytes) .wrapping_sub(STORE_LOOKAHEAD_H_10) .wrapping_add(1) } else { position }; let mut i: usize; let gap: usize = 0usize; let lz_matches_offset: usize = 0usize; (nodes[0]).length = 0u32; (nodes[0]).u = Union1::cost(0.0); model = ZopfliCostModel::init(m, ¶ms.dist, num_bytes); if !(0i32 == 0) { return 0usize; } model.set_from_literal_costs(position, ringbuffer, ringbuffer_mask); queue = StartPosQueue::default(); i = 0usize; while i.wrapping_add(handle.HashTypeLength()).wrapping_sub(1) < num_bytes { { let pos: usize = position.wrapping_add(i); let max_distance: usize = min(pos, max_backward_limit); let mut skip: usize; let mut num_matches: usize = FindAllMatchesH10( handle, dictionary, ringbuffer, ringbuffer_mask, pos, num_bytes.wrapping_sub(i), max_distance, gap, params, &mut matches[lz_matches_offset..], ); if num_matches > 0 && BackwardMatch(matches[num_matches.wrapping_sub(1)]).length() > max_zopfli_len { matches[0] = matches[num_matches.wrapping_sub(1)]; num_matches = 1usize; } skip = UpdateNodes( num_bytes, position, i, ringbuffer, ringbuffer_mask, params, max_backward_limit, dist_cache, num_matches, &matches[..], &mut model, &mut queue, nodes, ); if skip < 16384usize { skip = 0usize; } if num_matches == 1 && BackwardMatch(matches[0]).length() > max_zopfli_len { skip = max(BackwardMatch(matches[0]).length(), skip); } if skip > 1usize { handle.StoreRange( ringbuffer, ringbuffer_mask, pos.wrapping_add(1), min(pos.wrapping_add(skip), store_end), ); skip = skip.wrapping_sub(1); while skip != 0 { i = i.wrapping_add(1); if i.wrapping_add(handle.HashTypeLength()).wrapping_sub(1) >= num_bytes { break; } EvaluateNode( position, i, max_backward_limit, gap, dist_cache, &mut model, &mut queue, nodes, ); skip = skip.wrapping_sub(1); } } } i = i.wrapping_add(1); } model.cleanup(m); ComputeShortestPathFromNodes(num_bytes, nodes) } pub fn BrotliCreateZopfliBackwardReferences< Alloc: Allocator + Allocator + Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, >( alloc: &mut Alloc, dictionary: Option<&BrotliDictionary>, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, params: &BrotliEncoderParams, hasher: &mut H10, dist_cache: &mut [i32], last_insert_len: &mut usize, commands: &mut [Command], num_commands: &mut usize, num_literals: &mut usize, ) where Buckets: PartialEq, { let max_backward_limit: usize = (1usize << params.lgwin).wrapping_sub(16); let mut nodes: >::AllocatedMemory; nodes = if num_bytes.wrapping_add(1) > 0usize { >::alloc_cell(alloc, num_bytes.wrapping_add(1)) } else { >::AllocatedMemory::default() }; if !(0i32 == 0) { return; } BrotliInitZopfliNodes(nodes.slice_mut(), num_bytes.wrapping_add(1)); *num_commands = num_commands.wrapping_add(BrotliZopfliComputeShortestPath( alloc, dictionary, num_bytes, position, ringbuffer, ringbuffer_mask, params, max_backward_limit, dist_cache, hasher, nodes.slice_mut(), )); if !(0i32 == 0) { return; } BrotliZopfliCreateCommands( num_bytes, position, max_backward_limit, nodes.slice(), dist_cache, last_insert_len, params, commands, num_literals, ); { >::free_cell(alloc, core::mem::take(&mut nodes)); } } fn SetCost(histogram: &[u32], histogram_size: usize, literal_histogram: i32, cost: &mut [floatX]) { let mut sum: u64 = 0; let mut missing_symbol_sum: u64; let mut i: usize; for i in 0usize..histogram_size { sum = sum.wrapping_add(u64::from(histogram[i])); } let log2sum: floatX = FastLog2(sum) as (floatX); missing_symbol_sum = sum; if literal_histogram == 0 { for i in 0usize..histogram_size { if histogram[i] == 0u32 { missing_symbol_sum = missing_symbol_sum.wrapping_add(1); } } } let missing_symbol_cost: floatX = FastLog2f64(missing_symbol_sum) as (floatX) + 2i32 as (floatX); i = 0usize; while i < histogram_size { 'continue56: loop { { if histogram[i] == 0u32 { cost[i] = missing_symbol_cost; break 'continue56; } cost[i] = log2sum - FastLog2(u64::from(histogram[i])) as (floatX); if cost[i] < 1i32 as (floatX) { cost[i] = 1i32 as (floatX); } } break; } i = i.wrapping_add(1); } } impl> ZopfliCostModel { fn set_from_commands( &mut self, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, commands: &[Command], num_commands: usize, last_insert_len: usize, ) { let mut histogram_literal = [0u32; BROTLI_NUM_LITERAL_SYMBOLS]; let mut histogram_cmd = [0u32; BROTLI_NUM_COMMAND_SYMBOLS]; let mut histogram_dist = [0u32; BROTLI_SIMPLE_DISTANCE_ALPHABET_SIZE]; let mut cost_literal = [0.0 as floatX; BROTLI_NUM_LITERAL_SYMBOLS]; let mut pos: usize = position.wrapping_sub(last_insert_len); let mut min_cost_cmd: floatX = kInfinity; let mut i: usize; let cost_cmd: &mut [floatX] = &mut self.cost_cmd_[..]; i = 0usize; while i < num_commands { { let inslength: usize = (commands[i]).insert_len_ as usize; let copylength: usize = commands[i].copy_len() as usize; let distcode: usize = (commands[i].dist_prefix_ as i32 & 0x03ff) as usize; let cmdcode: usize = (commands[i]).cmd_prefix_ as usize; { let _rhs = 1; let _lhs = &mut histogram_cmd[cmdcode]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } if cmdcode >= 128usize { let _rhs = 1; let _lhs = &mut histogram_dist[distcode]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } for j in 0usize..inslength { let _rhs = 1; let _lhs = &mut histogram_literal [(ringbuffer[(pos.wrapping_add(j) & ringbuffer_mask)] as usize)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } pos = pos.wrapping_add(inslength.wrapping_add(copylength)); } i = i.wrapping_add(1); } SetCost( &histogram_literal[..], BROTLI_NUM_LITERAL_SYMBOLS, 1i32, &mut cost_literal, ); SetCost( &histogram_cmd[..], BROTLI_NUM_COMMAND_SYMBOLS, 0i32, &mut cost_cmd[..], ); SetCost( &histogram_dist[..], self.distance_histogram_size as usize, 0i32, self.cost_dist_.slice_mut(), ); for i in 0usize..704usize { min_cost_cmd = min_cost_cmd.min(cost_cmd[i]); } self.min_cost_cmd_ = min_cost_cmd; { let literal_costs: &mut [floatX] = self.literal_costs_.slice_mut(); let mut literal_carry: floatX = 0.0; let num_bytes: usize = self.num_bytes_; literal_costs[0] = 0.0 as (floatX); for i in 0usize..num_bytes { literal_carry += cost_literal [(ringbuffer[(position.wrapping_add(i) & ringbuffer_mask)] as usize)] as floatX; literal_costs[i.wrapping_add(1)] = (literal_costs[i] as floatX + literal_carry) as floatX; literal_carry -= (literal_costs[i.wrapping_add(1)] as floatX - literal_costs[i] as floatX); } } } } fn ZopfliIterate>( num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, params: &BrotliEncoderParams, max_backward_limit: usize, gap: usize, dist_cache: &[i32], model: &ZopfliCostModel, num_matches: &[u32], matches: &[u64], nodes: &mut [ZopfliNode], ) -> usize { let max_zopfli_len: usize = MaxZopfliLen(params); let mut queue: StartPosQueue; let mut cur_match_pos: usize = 0usize; let mut i: usize; (nodes[0]).length = 0u32; (nodes[0]).u = Union1::cost(0.0); queue = StartPosQueue::default(); i = 0usize; while i.wrapping_add(3) < num_bytes { { let mut skip: usize = UpdateNodes( num_bytes, position, i, ringbuffer, ringbuffer_mask, params, max_backward_limit, dist_cache, num_matches[i] as usize, &matches[cur_match_pos..], model, &mut queue, nodes, ); if skip < 16384usize { skip = 0usize; } cur_match_pos = cur_match_pos.wrapping_add(num_matches[i] as usize); if num_matches[i] == 1 && BackwardMatch(matches[cur_match_pos.wrapping_sub(1)]).length() > max_zopfli_len { skip = max( BackwardMatch(matches[cur_match_pos.wrapping_sub(1)]).length(), skip, ); } if skip > 1usize { skip = skip.wrapping_sub(1); while skip != 0 { i = i.wrapping_add(1); if i.wrapping_add(3) >= num_bytes { break; } EvaluateNode( position, i, max_backward_limit, gap, dist_cache, model, &mut queue, nodes, ); cur_match_pos = cur_match_pos.wrapping_add(num_matches[i] as usize); skip = skip.wrapping_sub(1); } } } i = i.wrapping_add(1); } ComputeShortestPathFromNodes(num_bytes, nodes) } pub fn BrotliCreateHqZopfliBackwardReferences< Alloc: Allocator + Allocator + Allocator + Allocator, Buckets: Allocable + SliceWrapperMut + SliceWrapper, Params: H10Params, >( alloc: &mut Alloc, dictionary: Option<&BrotliDictionary>, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, params: &BrotliEncoderParams, hasher: &mut H10, dist_cache: &mut [i32], last_insert_len: &mut usize, commands: &mut [Command], num_commands: &mut usize, num_literals: &mut usize, ) where Buckets: PartialEq, { let max_backward_limit: usize = (1usize << params.lgwin).wrapping_sub(16); let mut num_matches: >::AllocatedMemory = if num_bytes > 0usize { >::alloc_cell(alloc, num_bytes) } else { >::AllocatedMemory::default() }; let mut matches_size: usize = (4usize).wrapping_mul(num_bytes); let store_end: usize = if num_bytes >= STORE_LOOKAHEAD_H_10 { position .wrapping_add(num_bytes) .wrapping_sub(STORE_LOOKAHEAD_H_10) .wrapping_add(1) } else { position }; let mut cur_match_pos: usize = 0usize; let mut i: usize; let mut orig_dist_cache = [0i32; 4]; let mut model: ZopfliCostModel; let mut nodes: >::AllocatedMemory; let mut matches: >::AllocatedMemory = if matches_size > 0usize { >::alloc_cell(alloc, matches_size) } else { >::AllocatedMemory::default() }; let gap: usize = 0usize; let shadow_matches: usize = 0usize; i = 0usize; while i.wrapping_add(hasher.HashTypeLength()).wrapping_sub(1) < num_bytes { { let pos: usize = position.wrapping_add(i); let max_distance: usize = min(pos, max_backward_limit); let max_length: usize = num_bytes.wrapping_sub(i); let mut j: usize; { if matches_size < cur_match_pos.wrapping_add(128).wrapping_add(shadow_matches) { let mut new_size: usize = if matches_size == 0usize { cur_match_pos.wrapping_add(128).wrapping_add(shadow_matches) } else { matches_size }; let mut new_array: >::AllocatedMemory; while new_size < cur_match_pos.wrapping_add(128).wrapping_add(shadow_matches) { new_size = new_size.wrapping_mul(2); } new_array = if new_size > 0usize { >::alloc_cell(alloc, new_size) } else { >::AllocatedMemory::default() }; if matches_size != 0 { for (dst, src) in new_array .slice_mut() .split_at_mut(matches_size) .0 .iter_mut() .zip(matches.slice().split_at(matches_size).0.iter()) { *dst = *src; } } { >::free_cell(alloc, core::mem::take(&mut matches)); } matches = new_array; matches_size = new_size; } } if !(0i32 == 0) { return; } let num_found_matches: usize = FindAllMatchesH10( hasher, dictionary, //¶ms.dictionary , ringbuffer, ringbuffer_mask, pos, max_length, max_distance, gap, params, &mut matches.slice_mut()[cur_match_pos.wrapping_add(shadow_matches)..], ); let cur_match_end: usize = cur_match_pos.wrapping_add(num_found_matches); j = cur_match_pos; while j.wrapping_add(1) < cur_match_end { {} j = j.wrapping_add(1); } num_matches.slice_mut()[i] = num_found_matches as u32; if num_found_matches > 0usize { let match_len = BackwardMatch(matches.slice()[cur_match_end.wrapping_sub(1)]).length(); if match_len > 325usize { let skip: usize = match_len.wrapping_sub(1); let tmp = matches.slice()[(cur_match_end.wrapping_sub(1) as usize)]; matches.slice_mut()[cur_match_pos] = tmp; cur_match_pos = cur_match_pos.wrapping_add(1); num_matches.slice_mut()[i] = 1u32; hasher.StoreRange( ringbuffer, ringbuffer_mask, pos.wrapping_add(1), min(pos.wrapping_add(match_len), store_end), ); for item in num_matches .slice_mut() .split_at_mut(i.wrapping_add(1)) .1 .split_at_mut(skip) .0 .iter_mut() { *item = 0; } i = i.wrapping_add(skip); } else { cur_match_pos = cur_match_end; } } } i = i.wrapping_add(1); } let orig_num_literals: usize = *num_literals; let orig_last_insert_len: usize = *last_insert_len; for (i, j) in orig_dist_cache .split_at_mut(4) .0 .iter_mut() .zip(dist_cache.split_at(4).0) { *i = *j; } let orig_num_commands: usize = *num_commands; nodes = if num_bytes.wrapping_add(1) > 0usize { >::alloc_cell(alloc, num_bytes.wrapping_add(1)) } else { >::AllocatedMemory::default() }; if !(0i32 == 0) { return; } model = ZopfliCostModel::init(alloc, ¶ms.dist, num_bytes); if !(0i32 == 0) { return; } for i in 0usize..2usize { BrotliInitZopfliNodes(nodes.slice_mut(), num_bytes.wrapping_add(1)); if i == 0usize { model.set_from_literal_costs(position, ringbuffer, ringbuffer_mask); } else { model.set_from_commands( position, ringbuffer, ringbuffer_mask, commands, num_commands.wrapping_sub(orig_num_commands), orig_last_insert_len, ); } *num_commands = orig_num_commands; *num_literals = orig_num_literals; *last_insert_len = orig_last_insert_len; for (i, j) in dist_cache .split_at_mut(4) .0 .iter_mut() .zip(orig_dist_cache.split_at(4).0) { *i = *j; } *num_commands = num_commands.wrapping_add(ZopfliIterate( num_bytes, position, ringbuffer, ringbuffer_mask, params, max_backward_limit, gap, dist_cache, &mut model, num_matches.slice(), matches.slice(), nodes.slice_mut(), )); BrotliZopfliCreateCommands( num_bytes, position, max_backward_limit, nodes.slice(), dist_cache, last_insert_len, params, commands, num_literals, ); } model.cleanup(alloc); >::free_cell(alloc, nodes); >::free_cell(alloc, matches); >::free_cell(alloc, num_matches); } brotli-6.0.0/src/enc/backward_references/mod.rs000075500000000000000000003133461046102023000175770ustar 00000000000000#![allow(dead_code)] mod benchmark; pub mod hash_to_binary_tree; pub mod hq; mod test; use super::super::alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use super::command::{BrotliDistanceParams, Command, ComputeDistanceCode}; use super::dictionary_hash::kStaticDictionaryHash; use super::hash_to_binary_tree::{H10Buckets, H10DefaultParams, ZopfliNode, H10}; use super::static_dict::BrotliDictionary; use super::static_dict::{ FindMatchLengthWithLimit, FindMatchLengthWithLimitMin4, BROTLI_UNALIGNED_LOAD32, BROTLI_UNALIGNED_LOAD64, }; use super::util::{floatX, Log2FloorNonZero}; use core::cmp::{max, min}; static kBrotliMinWindowBits: i32 = 10; static kBrotliMaxWindowBits: i32 = 24; pub static kInvalidMatch: u32 = 0x0fff_ffff; static kCutoffTransformsCount: u32 = 10; static kCutoffTransforms: u64 = 0x071b_520a_da2d_3200; pub static kHashMul32: u32 = 0x1e35_a7bd; pub static kHashMul64: u64 = 0x1e35_a7bd_1e35_a7bd; pub static kHashMul64Long: u64 = 0x1fe3_5a7b_d357_9bd3; #[derive(PartialEq, Eq, Copy, Clone, Debug)] #[repr(C)] pub enum BrotliEncoderMode { BROTLI_MODE_GENERIC = 0, BROTLI_MODE_TEXT = 1, BROTLI_MODE_FONT = 2, BROTLI_FORCE_LSB_PRIOR = 3, BROTLI_FORCE_MSB_PRIOR = 4, BROTLI_FORCE_UTF8_PRIOR = 5, BROTLI_FORCE_SIGNED_PRIOR = 6, } #[derive(Clone, Copy, Debug, PartialEq)] pub struct BrotliHasherParams { /// type of hasher to use (default: type 6, but others have tradeoffs of speed/memory) pub type_: i32, /// number of the number of buckets to have in the hash table (defaults to quality - 1) pub bucket_bits: i32, /// number of potential matches to hold per bucket (hash collisions) pub block_bits: i32, /// number of bytes of a potential match to hash pub hash_len: i32, /// number of previous distance matches to check for future matches (defaults to 16) pub num_last_distances_to_check: i32, /// how much to weigh distance vs an extra byte of copy match when comparing possible copy srcs pub literal_byte_score: i32, } #[derive(Clone, Debug)] pub struct BrotliEncoderParams { pub dist: BrotliDistanceParams, /// if this brotli file is generic, font or specifically text pub mode: BrotliEncoderMode, /// quality param between 0 and 11 (11 is smallest but takes longest to encode) pub quality: i32, pub q9_5: bool, /// log of how big the ring buffer should be for copying prior data pub lgwin: i32, /// log of how often metablocks should be serialized pub lgblock: i32, /// how big the source file is (or 0 if no hint is provided) pub size_hint: usize, /// avoid serializing out priors for literal sections in the favor of decode speed pub disable_literal_context_modeling: i32, pub hasher: BrotliHasherParams, /// produce an IR of the compression file pub log_meta_block: bool, /// attempt to detect how many bytes before the current byte generates the best prediction of it /// * 0 = off (stride 1 always) /// * 1 = on per 16th of a file /// * 2 = on per block type switch pub stride_detection_quality: u8, /// if nonzero, will search for high entropy strings and log them differently to the IR pub high_entropy_detection_quality: u8, /// if nonzero it will search for the temporal locality and effectiveness of the priors /// for literals. The best adaptation and forgetfulness will be logged per metablock to the IR pub cdf_adaptation_detection: u8, /// whether to search for whether the previous byte or the context_map are better predictors on a per-context-map basis pub prior_bitmask_detection: u8, /// for prior bitmask detection: stride_low, stride_speed, cm_low, cm_speed pub literal_adaptation: [(u16, u16); 4], pub large_window: bool, /// avoid search for the best ndirect vs npostfix parameters for distance pub avoid_distance_prefix_search: bool, /// construct brotli in such a way that it may be concatenated with another brotli file using appropriate bit ops pub catable: bool, /// can use the dictionary (default yes unless catable is set) pub use_dictionary: bool, /// construct brotli in such a way that another concatable brotli file may be appended pub appendable: bool, /// include a magic number and version number and size_hint at the beginning pub magic_number: bool, /// prefer to compute the map of previously seen strings /// just once for all the threads at the beginning, since they overlap significantly pub favor_cpu_efficiency: bool, } impl Default for BrotliEncoderParams { fn default() -> BrotliEncoderParams { super::encode::BrotliEncoderInitParams() } } #[derive(Clone, Copy, Default, PartialEq)] pub struct H9Opts { pub literal_byte_score: u32, } pub enum HowPrepared { ALREADY_PREPARED, NEWLY_PREPARED, } #[derive(Clone, PartialEq)] pub struct Struct1 { pub params: BrotliHasherParams, pub is_prepared_: i32, pub dict_num_lookups: usize, pub dict_num_matches: usize, } fn LiteralSpreeLengthForSparseSearch(params: &BrotliEncoderParams) -> usize { (if params.quality < 9 { 64i32 } else { 512i32 }) as usize } pub struct HasherSearchResult { pub len: usize, pub len_x_code: usize, pub distance: usize, pub score: u64, } pub trait CloneWithAlloc + alloc::Allocator> { fn clone_with_alloc(&self, m: &mut Alloc) -> Self; } pub trait AnyHasher { fn Opts(&self) -> H9Opts; fn GetHasherCommon(&mut self) -> &mut Struct1; fn HashBytes(&self, data: &[u8]) -> usize; fn HashTypeLength(&self) -> usize; fn StoreLookahead(&self) -> usize; fn PrepareDistanceCache(&self, distance_cache: &mut [i32]); fn FindLongestMatch( &mut self, dictionary: Option<&BrotliDictionary>, dictionary_hash: &[u16], data: &[u8], ring_buffer_mask: usize, distance_cache: &[i32], cur_ix: usize, max_length: usize, max_backward: usize, gap: usize, max_distance: usize, out: &mut HasherSearchResult, ) -> bool; fn Store(&mut self, data: &[u8], mask: usize, ix: usize); fn Store4Vec4(&mut self, data: &[u8], mask: usize, ix: usize) { for i in 0..4 { self.Store(data, mask, ix + i * 4); } } fn StoreEvenVec4(&mut self, data: &[u8], mask: usize, ix: usize) { for i in 0..4 { self.Store(data, mask, ix + i * 2); } } fn StoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize); fn BulkStoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize); fn Prepare(&mut self, one_shot: bool, input_size: usize, data: &[u8]) -> HowPrepared; fn StitchToPreviousBlock( &mut self, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, ); } pub fn StitchToPreviousBlockInternal( handle: &mut T, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, ) { if num_bytes >= handle.HashTypeLength().wrapping_sub(1) && (position >= 3) { handle.Store(ringbuffer, ringbuffer_mask, position.wrapping_sub(3)); handle.Store(ringbuffer, ringbuffer_mask, position.wrapping_sub(2)); handle.Store(ringbuffer, ringbuffer_mask, position.wrapping_sub(1)); } } pub fn StoreLookaheadThenStore(hasher: &mut T, size: usize, dict: &[u8]) { let overlap = hasher.StoreLookahead().wrapping_sub(1); if size > overlap { hasher.BulkStoreRange(dict, !(0), 0, size - overlap); } } pub trait BasicHashComputer { fn HashBytes(&self, data: &[u8]) -> u32; fn BUCKET_BITS(&self) -> i32; fn USE_DICTIONARY(&self) -> i32; fn BUCKET_SWEEP(&self) -> i32; } pub struct BasicHasher + SliceWrapper + BasicHashComputer> { pub GetHasherCommon: Struct1, pub buckets_: Buckets, pub h9_opts: H9Opts, } impl + SliceWrapper + BasicHashComputer> PartialEq> for BasicHasher { fn eq(&self, other: &BasicHasher) -> bool { self.GetHasherCommon == other.GetHasherCommon && self.h9_opts == other.h9_opts && self.buckets_.slice() == other.buckets_.slice() } } impl + SliceWrapper + BasicHashComputer> BasicHasher { fn StoreRangeOptBasic( &mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize, ) -> usize { let lookahead = 8; if ix_end >= ix_start + lookahead * 2 { let chunk_count = (ix_end - ix_start) / 4; for chunk_id in 0..chunk_count { let i = (ix_start + chunk_id * 4) & mask; let word11 = data.split_at(i).1.split_at(11).0; let mixed0 = self.HashBytes(word11); let mixed1 = self.HashBytes(word11.split_at(1).1); let mixed2 = self.HashBytes(word11.split_at(2).1); let mixed3 = self.HashBytes(word11.split_at(3).1); let off: u32 = (i >> 3).wrapping_rem(self.buckets_.BUCKET_SWEEP() as usize) as u32; let offset0: usize = mixed0 + off as usize; let offset1: usize = mixed1 + off as usize; let offset2: usize = mixed2 + off as usize; let offset3: usize = mixed3 + off as usize; self.buckets_.slice_mut()[offset0] = i as u32; self.buckets_.slice_mut()[offset1] = i as u32 + 1; self.buckets_.slice_mut()[offset2] = i as u32 + 2; self.buckets_.slice_mut()[offset3] = i as u32 + 3; } return ix_start + chunk_count * 4; } ix_start } } pub struct H2Sub> { pub buckets_: AllocU32::AllocatedMemory, // 65537 } impl + SliceWrapper + BasicHashComputer> AnyHasher for BasicHasher { #[inline(always)] fn Opts(&self) -> H9Opts { self.h9_opts } #[allow(unused_variables)] fn PrepareDistanceCache(&self, distance_cache: &mut [i32]) {} #[inline(always)] fn HashTypeLength(&self) -> usize { 8 } #[inline(always)] fn StoreLookahead(&self) -> usize { 8 } fn StitchToPreviousBlock( &mut self, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, ) { StitchToPreviousBlockInternal(self, num_bytes, position, ringbuffer, ringbuffer_mask); } #[inline(always)] fn GetHasherCommon(&mut self) -> &mut Struct1 { &mut self.GetHasherCommon } #[inline(always)] fn HashBytes(&self, data: &[u8]) -> usize { self.buckets_.HashBytes(data) as usize } fn Store(&mut self, data: &[u8], mask: usize, ix: usize) { let (_, data_window) = data.split_at((ix & mask)); let key: u32 = self.HashBytes(data_window) as u32; let off: u32 = (ix >> 3).wrapping_rem(self.buckets_.BUCKET_SWEEP() as usize) as u32; self.buckets_.slice_mut()[key.wrapping_add(off) as usize] = ix as u32; } fn StoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize) { for i in self.StoreRangeOptBasic(data, mask, ix_start, ix_end)..ix_end { self.Store(data, mask, i); } } fn BulkStoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize) { self.StoreRange(data, mask, ix_start, ix_end); } fn Prepare(&mut self, one_shot: bool, input_size: usize, data: &[u8]) -> HowPrepared { if self.GetHasherCommon.is_prepared_ != 0 { return HowPrepared::ALREADY_PREPARED; } let partial_prepare_threshold = (4 << self.buckets_.BUCKET_BITS()) >> 7; if one_shot && input_size <= partial_prepare_threshold { for i in 0..input_size { let key = self.HashBytes(&data[i..]); let bs = self.buckets_.BUCKET_SWEEP() as usize; for item in self.buckets_.slice_mut()[key..(key + bs)].iter_mut() { *item = 0; } } } else { for item in self.buckets_.slice_mut().iter_mut() { *item = 0; } } self.GetHasherCommon.is_prepared_ = 1; HowPrepared::NEWLY_PREPARED } fn FindLongestMatch( &mut self, dictionary: Option<&BrotliDictionary>, dictionary_hash: &[u16], data: &[u8], ring_buffer_mask: usize, distance_cache: &[i32], cur_ix: usize, max_length: usize, max_backward: usize, gap: usize, max_distance: usize, out: &mut HasherSearchResult, ) -> bool { let opts = self.Opts(); let best_len_in: usize = out.len; let cur_ix_masked: usize = cur_ix & ring_buffer_mask; let key: u32 = self.HashBytes(&data[cur_ix_masked..]) as u32; let mut compare_char: i32 = data[cur_ix_masked.wrapping_add(best_len_in)] as i32; let mut best_score: u64 = out.score; let mut best_len: usize = best_len_in; let cached_backward: usize = distance_cache[0] as usize; let mut prev_ix: usize = cur_ix.wrapping_sub(cached_backward); let mut is_match_found = false; out.len_x_code = 0usize; if prev_ix < cur_ix { prev_ix &= ring_buffer_mask as u32 as usize; if compare_char == data[prev_ix.wrapping_add(best_len)] as i32 { let len: usize = FindMatchLengthWithLimitMin4( &data[prev_ix..], &data[cur_ix_masked..], max_length, ); if len != 0 { best_score = BackwardReferenceScoreUsingLastDistance(len, opts); best_len = len; out.len = len; out.distance = cached_backward; out.score = best_score; compare_char = data[cur_ix_masked.wrapping_add(best_len)] as i32; if self.buckets_.BUCKET_SWEEP() == 1i32 { self.buckets_.slice_mut()[key as usize] = cur_ix as u32; return true; } else { is_match_found = true; } } } } let bucket_sweep = self.buckets_.BUCKET_SWEEP(); if bucket_sweep == 1i32 { prev_ix = self.buckets_.slice()[key as usize] as usize; self.buckets_.slice_mut()[key as usize] = cur_ix as u32; let backward: usize = cur_ix.wrapping_sub(prev_ix); prev_ix &= ring_buffer_mask as u32 as usize; if compare_char != data[prev_ix.wrapping_add(best_len_in)] as i32 { return false; } if backward == 0usize || backward > max_backward { return false; } let len: usize = FindMatchLengthWithLimitMin4(&data[prev_ix..], &data[cur_ix_masked..], max_length); if len != 0 { out.len = len; out.distance = backward; out.score = BackwardReferenceScore(len, backward, opts); return true; } } else { for prev_ix_ref in self.buckets_.slice().split_at(key as usize).1[..bucket_sweep as usize].iter() { let mut prev_ix = *prev_ix_ref as usize; let backward: usize = cur_ix.wrapping_sub(prev_ix); prev_ix &= ring_buffer_mask as u32 as usize; if compare_char != data[prev_ix.wrapping_add(best_len)] as i32 { continue; } if backward == 0usize || backward > max_backward { continue; } let len = FindMatchLengthWithLimitMin4( &data[prev_ix..], &data[cur_ix_masked..], max_length, ); if len != 0 { let score: u64 = BackwardReferenceScore(len, backward, opts); if best_score < score { best_score = score; best_len = len; out.len = best_len; out.distance = backward; out.score = score; compare_char = data[cur_ix_masked.wrapping_add(best_len)] as i32; is_match_found = true; } } } } if dictionary.is_some() && self.buckets_.USE_DICTIONARY() != 0 && !is_match_found { is_match_found = SearchInStaticDictionary( dictionary.unwrap(), dictionary_hash, self, &data[cur_ix_masked..], max_length, max_backward.wrapping_add(gap), max_distance, out, true, ); } self.buckets_.slice_mut() [(key as usize).wrapping_add((cur_ix >> 3).wrapping_rem(bucket_sweep as usize))] = cur_ix as u32; is_match_found } } impl> BasicHashComputer for H2Sub { fn HashBytes(&self, data: &[u8]) -> u32 { let h: u64 = (BROTLI_UNALIGNED_LOAD64(data) << (64i32 - 8i32 * 5i32)).wrapping_mul(kHashMul64); (h >> (64i32 - 16i32)) as u32 } fn BUCKET_BITS(&self) -> i32 { 16 } fn BUCKET_SWEEP(&self) -> i32 { 1 } fn USE_DICTIONARY(&self) -> i32 { 1 } } impl> SliceWrapperMut for H2Sub { fn slice_mut(&mut self) -> &mut [u32] { return self.buckets_.slice_mut(); } } impl> SliceWrapper for H2Sub { fn slice(&self) -> &[u32] { return self.buckets_.slice(); } } pub struct H3Sub> { pub buckets_: AllocU32::AllocatedMemory, // 65538 } impl> SliceWrapperMut for H3Sub { fn slice_mut(&mut self) -> &mut [u32] { return self.buckets_.slice_mut(); } } impl> SliceWrapper for H3Sub { fn slice(&self) -> &[u32] { return self.buckets_.slice(); } } impl> BasicHashComputer for H3Sub { fn BUCKET_BITS(&self) -> i32 { 16 } fn BUCKET_SWEEP(&self) -> i32 { 2 } fn USE_DICTIONARY(&self) -> i32 { 0 } fn HashBytes(&self, data: &[u8]) -> u32 { let h: u64 = (BROTLI_UNALIGNED_LOAD64(data) << (64i32 - 8i32 * 5i32)).wrapping_mul(kHashMul64); (h >> (64i32 - 16i32)) as u32 } } pub struct H4Sub> { pub buckets_: AllocU32::AllocatedMemory, // 131076 } impl> BasicHashComputer for H4Sub { fn BUCKET_BITS(&self) -> i32 { 17 } fn BUCKET_SWEEP(&self) -> i32 { 4 } fn USE_DICTIONARY(&self) -> i32 { 1 } fn HashBytes(&self, data: &[u8]) -> u32 { let h: u64 = (BROTLI_UNALIGNED_LOAD64(data) << (64i32 - 8i32 * 5i32)).wrapping_mul(kHashMul64); (h >> (64i32 - 17i32)) as u32 } } impl> SliceWrapperMut for H4Sub { fn slice_mut(&mut self) -> &mut [u32] { return self.buckets_.slice_mut(); } } impl> SliceWrapper for H4Sub { fn slice(&self) -> &[u32] { return self.buckets_.slice(); } } pub struct H54Sub> { pub buckets_: AllocU32::AllocatedMemory, } impl> BasicHashComputer for H54Sub { fn BUCKET_BITS(&self) -> i32 { 20 } fn BUCKET_SWEEP(&self) -> i32 { 4 } fn USE_DICTIONARY(&self) -> i32 { 0 } fn HashBytes(&self, data: &[u8]) -> u32 { let h: u64 = (BROTLI_UNALIGNED_LOAD64(data) << (64i32 - 8i32 * 7i32)).wrapping_mul(kHashMul64); (h >> (64i32 - 20i32)) as u32 } } impl> SliceWrapperMut for H54Sub { fn slice_mut(&mut self) -> &mut [u32] { return self.buckets_.slice_mut(); } } impl> SliceWrapper for H54Sub { fn slice(&self) -> &[u32] { return self.buckets_.slice(); } } pub const H9_BUCKET_BITS: usize = 15; pub const H9_BLOCK_BITS: usize = 8; pub const H9_NUM_LAST_DISTANCES_TO_CHECK: usize = 16; pub const H9_BLOCK_SIZE: usize = 1 << H9_BLOCK_BITS; const H9_BLOCK_MASK: usize = (1 << H9_BLOCK_BITS) - 1; impl H9Opts { pub fn new(params: &BrotliHasherParams) -> H9Opts { H9Opts { literal_byte_score: if params.literal_byte_score != 0 { params.literal_byte_score as u32 } else { 540 }, } } } pub struct H9 + alloc::Allocator> { pub num_: >::AllocatedMemory, //[u16;1 << H9_BUCKET_BITS], pub buckets_: >::AllocatedMemory, //[u32; H9_BLOCK_SIZE << H9_BUCKET_BITS], pub dict_search_stats_: Struct1, pub h9_opts: H9Opts, } impl + alloc::Allocator> PartialEq> for H9 { fn eq(&self, other: &H9) -> bool { self.dict_search_stats_ == other.dict_search_stats_ && self.num_.slice() == other.num_.slice() && self.buckets_.slice() == other.buckets_.slice() && self.h9_opts == other.h9_opts } } fn adv_prepare_distance_cache(distance_cache: &mut [i32], num_distances: i32) { if num_distances > 4i32 { let last_distance: i32 = distance_cache[0]; distance_cache[4] = last_distance - 1i32; distance_cache[5] = last_distance + 1i32; distance_cache[6] = last_distance - 2i32; distance_cache[7] = last_distance + 2i32; distance_cache[8] = last_distance - 3i32; distance_cache[9] = last_distance + 3i32; if num_distances > 10i32 { let next_last_distance: i32 = distance_cache[1]; distance_cache[10] = next_last_distance - 1i32; distance_cache[11] = next_last_distance + 1i32; distance_cache[12] = next_last_distance - 2i32; distance_cache[13] = next_last_distance + 2i32; distance_cache[14] = next_last_distance - 3i32; distance_cache[15] = next_last_distance + 3i32; } } } pub const kDistanceCacheIndex: [u8; 16] = [0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]; pub const kDistanceCacheOffset: [i8; 16] = [0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3]; //const BROTLI_LITERAL_BYTE_SCORE: u64 = 540; const BROTLI_DISTANCE_BIT_PENALTY: u32 = 120; // Score must be positive after applying maximal penalty. const BROTLI_SCORE_BASE: u32 = (BROTLI_DISTANCE_BIT_PENALTY * 8 * 8/* sizeof usize*/); const kDistanceShortCodeCost: [u32; 16] = [ /* Repeat last */ BROTLI_SCORE_BASE + 60, /* 2nd, 3rd, 4th last */ BROTLI_SCORE_BASE - 95, BROTLI_SCORE_BASE - 117, BROTLI_SCORE_BASE - 127, /* Last with offset */ BROTLI_SCORE_BASE - 93, BROTLI_SCORE_BASE - 93, BROTLI_SCORE_BASE - 96, BROTLI_SCORE_BASE - 96, BROTLI_SCORE_BASE - 99, BROTLI_SCORE_BASE - 99, /* 2nd last with offset */ BROTLI_SCORE_BASE - 105, BROTLI_SCORE_BASE - 105, BROTLI_SCORE_BASE - 115, BROTLI_SCORE_BASE - 115, BROTLI_SCORE_BASE - 125, BROTLI_SCORE_BASE - 125, ]; fn BackwardReferenceScoreH9( copy_length: usize, backward_reference_offset: usize, h9_opts: H9Opts, ) -> u64 { (u64::from(BROTLI_SCORE_BASE) .wrapping_add((h9_opts.literal_byte_score as u64).wrapping_mul(copy_length as u64)) .wrapping_sub( (BROTLI_DISTANCE_BIT_PENALTY as u64) .wrapping_mul(Log2FloorNonZero(backward_reference_offset as u64) as u64), )) >> 2 } fn BackwardReferenceScoreUsingLastDistanceH9( copy_length: usize, distance_short_code: usize, h9_opts: H9Opts, ) -> u64 { ((h9_opts.literal_byte_score as u64) .wrapping_mul(copy_length as u64) .wrapping_add(u64::from(kDistanceShortCodeCost[distance_short_code]))) >> 2 } impl + alloc::Allocator> AnyHasher for H9 { #[inline(always)] fn Opts(&self) -> H9Opts { self.h9_opts } #[inline(always)] fn GetHasherCommon(&mut self) -> &mut Struct1 { &mut self.dict_search_stats_ } #[inline(always)] fn HashBytes(&self, data: &[u8]) -> usize { let h: u32 = BROTLI_UNALIGNED_LOAD32(data).wrapping_mul(kHashMul32); let thirty_two: usize = 32; (h >> (thirty_two.wrapping_sub(H9_BUCKET_BITS))) as usize } #[inline(always)] fn HashTypeLength(&self) -> usize { 4 } #[inline(always)] fn StoreLookahead(&self) -> usize { 4 } fn PrepareDistanceCache(&self, distance_cache: &mut [i32]) { let num_distances = H9_NUM_LAST_DISTANCES_TO_CHECK as i32; adv_prepare_distance_cache(distance_cache, num_distances); } fn FindLongestMatch( &mut self, dictionary: Option<&BrotliDictionary>, dictionary_hash: &[u16], data: &[u8], ring_buffer_mask: usize, distance_cache: &[i32], cur_ix: usize, max_length: usize, max_backward: usize, gap: usize, max_distance: usize, out: &mut HasherSearchResult, ) -> bool { let best_len_in: usize = out.len; let cur_ix_masked: usize = cur_ix & ring_buffer_mask; let mut best_score: u64 = out.score; let mut best_len: usize = best_len_in; let mut is_match_found = false; out.len_x_code = 0usize; for i in 0..H9_NUM_LAST_DISTANCES_TO_CHECK { let idx = kDistanceCacheIndex[i] as usize; let backward = (distance_cache[idx] as usize).wrapping_add(kDistanceCacheOffset[i] as usize); let mut prev_ix = cur_ix.wrapping_sub(backward); if prev_ix >= cur_ix { continue; } if backward > max_backward { continue; } prev_ix &= ring_buffer_mask; if cur_ix_masked.wrapping_add(best_len) > ring_buffer_mask || prev_ix.wrapping_add(best_len) > ring_buffer_mask || data[cur_ix_masked.wrapping_add(best_len)] != data[prev_ix.wrapping_add(best_len)] { continue; } { let len: usize = FindMatchLengthWithLimit(&data[prev_ix..], &data[cur_ix_masked..], max_length); if len >= 3 || (len == 2 && i < 2) { let score = BackwardReferenceScoreUsingLastDistanceH9(len, i, self.h9_opts); if best_score < score { best_score = score; best_len = len; out.len = best_len; out.distance = backward; out.score = best_score; is_match_found = true; } } } } if max_length >= 4 && cur_ix_masked.wrapping_add(best_len) <= ring_buffer_mask { let key = self.HashBytes(data.split_at(cur_ix_masked).1); let bucket = &mut self .buckets_ .slice_mut() .split_at_mut(key << H9_BLOCK_BITS) .1 .split_at_mut(H9_BLOCK_SIZE) .0; assert!(bucket.len() > H9_BLOCK_MASK); assert_eq!(bucket.len(), H9_BLOCK_MASK + 1); let self_num_key = &mut self.num_.slice_mut()[key]; let down = if *self_num_key > H9_BLOCK_SIZE as u16 { (*self_num_key as usize) - H9_BLOCK_SIZE } else { 0usize }; let mut i: usize = *self_num_key as usize; let mut prev_best_val = data[cur_ix_masked.wrapping_add(best_len)]; while i > down { i -= 1; let mut prev_ix = bucket[i & H9_BLOCK_MASK] as usize; let backward = cur_ix.wrapping_sub(prev_ix); if (backward > max_backward) { break; } prev_ix &= ring_buffer_mask; if (prev_ix.wrapping_add(best_len) > ring_buffer_mask || prev_best_val != data[prev_ix.wrapping_add(best_len)]) { continue; } { let len = FindMatchLengthWithLimit( data.split_at(prev_ix).1, data.split_at(cur_ix_masked).1, max_length, ); if (len >= 4) { /* Comparing for >= 3 does not change the semantics, but just saves for a few unnecessary binary logarithms in backward reference score, since we are not interested in such short matches. */ let score = BackwardReferenceScoreH9(len, backward, self.h9_opts); if (best_score < score) { best_score = score; best_len = len; out.len = best_len; out.distance = backward; out.score = best_score; is_match_found = true; if cur_ix_masked.wrapping_add(best_len) > ring_buffer_mask { break; } prev_best_val = data[cur_ix_masked.wrapping_add(best_len)]; } } } } bucket[*self_num_key as usize & H9_BLOCK_MASK] = cur_ix as u32; *self_num_key = self_num_key.wrapping_add(1); } if !is_match_found && dictionary.is_some() { let (_, cur_data) = data.split_at(cur_ix_masked); is_match_found = SearchInStaticDictionary( dictionary.unwrap(), dictionary_hash, self, cur_data, max_length, max_backward.wrapping_add(gap), max_distance, out, false, ); } is_match_found } fn Store(&mut self, data: &[u8], mask: usize, ix: usize) { let (_, data_window) = data.split_at((ix & mask)); let key: u32 = self.HashBytes(data_window) as u32; let self_num_key = &mut self.num_.slice_mut()[key as usize]; let minor_ix: usize = (*self_num_key as usize & H9_BLOCK_MASK); self.buckets_.slice_mut()[minor_ix.wrapping_add((key as usize) << H9_BLOCK_BITS)] = ix as u32; *self_num_key = self_num_key.wrapping_add(1); } fn StoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize) { for i in ix_start..ix_end { self.Store(data, mask, i); } } fn BulkStoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize) { for i in ix_start..ix_end { self.Store(data, mask, i); } } fn Prepare(&mut self, _one_shot: bool, _input_size: usize, _data: &[u8]) -> HowPrepared { if self.GetHasherCommon().is_prepared_ != 0 { return HowPrepared::ALREADY_PREPARED; } for item in self.num_.slice_mut().iter_mut() { *item = 0; } self.GetHasherCommon().is_prepared_ = 1; HowPrepared::NEWLY_PREPARED } fn StitchToPreviousBlock( &mut self, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, ) { StitchToPreviousBlockInternal(self, num_bytes, position, ringbuffer, ringbuffer_mask) } } pub trait AdvHashSpecialization: PartialEq { fn get_hash_mask(&self) -> u64; fn set_hash_mask(&mut self, params_hash_len: i32); fn get_k_hash_mul(&self) -> u64; fn HashTypeLength(&self) -> usize; fn StoreLookahead(&self) -> usize; fn load_and_mix_word(&self, data: &[u8]) -> u64; fn hash_shift(&self) -> i32; fn bucket_size(&self) -> u32; fn block_mask(&self) -> u32; fn block_size(&self) -> u32; fn block_bits(&self) -> i32; } pub struct AdvHasher< Specialization: AdvHashSpecialization + Sized + Clone, Alloc: alloc::Allocator + alloc::Allocator, > { pub GetHasherCommon: Struct1, pub specialization: Specialization, // contains hash_mask_ pub num: >::AllocatedMemory, pub buckets: >::AllocatedMemory, pub h9_opts: H9Opts, } impl< Specialization: AdvHashSpecialization + Sized + Clone, Alloc: alloc::Allocator + alloc::Allocator, > PartialEq> for AdvHasher { fn eq(&self, other: &Self) -> bool { self.GetHasherCommon == other.GetHasherCommon && self.specialization == other.specialization && self.num.slice() == other.num.slice() && self.buckets.slice() == other.buckets.slice() && self.h9_opts == other.h9_opts } } #[derive(Clone, PartialEq)] pub struct HQ5Sub {} impl AdvHashSpecialization for HQ5Sub { #[inline(always)] fn hash_shift(&self) -> i32 { 32i32 - 14 // 32 - bucket_bits } #[inline(always)] fn bucket_size(&self) -> u32 { 1 << 14 } #[inline(always)] fn block_bits(&self) -> i32 { 4 } #[inline(always)] fn block_size(&self) -> u32 { 1 << 4 } #[inline(always)] fn block_mask(&self) -> u32 { (1 << 4) - 1 } #[inline(always)] fn get_hash_mask(&self) -> u64 { //return 0xffff_ffff_ffff_ffff; 0xffff_ffff // make it 32 bit } #[inline(always)] fn get_k_hash_mul(&self) -> u64 { kHashMul32 as u64 } #[inline(always)] fn load_and_mix_word(&self, data: &[u8]) -> u64 { (BROTLI_UNALIGNED_LOAD32(data) as u64 * self.get_k_hash_mul()) & self.get_hash_mask() } #[inline(always)] fn set_hash_mask(&mut self, _params_hash_len: i32) {} fn HashTypeLength(&self) -> usize { 4 } #[inline(always)] fn StoreLookahead(&self) -> usize { 4 } } #[derive(Clone, PartialEq)] pub struct HQ7Sub {} impl AdvHashSpecialization for HQ7Sub { #[inline(always)] fn hash_shift(&self) -> i32 { 32i32 - 15 // 32 - bucket_bits } #[inline(always)] fn bucket_size(&self) -> u32 { 1 << 15 } #[inline(always)] fn block_bits(&self) -> i32 { 6 } #[inline(always)] fn block_size(&self) -> u32 { 1 << 6 } #[inline(always)] fn block_mask(&self) -> u32 { (1 << 6) - 1 } #[inline(always)] fn get_hash_mask(&self) -> u64 { //return 0xffff_ffff_ffff_ffff; 0xffff_ffff // make it 32 bit } #[inline(always)] fn get_k_hash_mul(&self) -> u64 { kHashMul32 as u64 } #[inline(always)] fn load_and_mix_word(&self, data: &[u8]) -> u64 { (BROTLI_UNALIGNED_LOAD32(data) as u64 * self.get_k_hash_mul()) & self.get_hash_mask() } #[inline(always)] fn set_hash_mask(&mut self, _params_hash_len: i32) {} fn HashTypeLength(&self) -> usize { 4 } #[inline(always)] fn StoreLookahead(&self) -> usize { 4 } } #[derive(Clone, PartialEq)] pub struct H5Sub { pub hash_shift_: i32, pub bucket_size_: u32, pub block_mask_: u32, pub block_bits_: i32, } impl AdvHashSpecialization for H5Sub { #[inline(always)] fn hash_shift(&self) -> i32 { self.hash_shift_ } fn bucket_size(&self) -> u32 { self.bucket_size_ } fn block_bits(&self) -> i32 { self.block_bits_ } fn block_size(&self) -> u32 { 1 << self.block_bits_ } fn block_mask(&self) -> u32 { self.block_mask_ } fn get_hash_mask(&self) -> u64 { //return 0xffff_ffff_ffff_ffff; 0xffff_ffff // make it 32 bit } fn get_k_hash_mul(&self) -> u64 { kHashMul32 as u64 } fn load_and_mix_word(&self, data: &[u8]) -> u64 { (BROTLI_UNALIGNED_LOAD32(data) as u64 * self.get_k_hash_mul()) & self.get_hash_mask() } #[allow(unused_variables)] fn set_hash_mask(&mut self, params_hash_len: i32) {} fn HashTypeLength(&self) -> usize { 4 } fn StoreLookahead(&self) -> usize { 4 } } #[derive(Clone, PartialEq)] pub struct H6Sub { pub hash_mask: u64, pub hash_shift_: i32, pub bucket_size_: u32, pub block_mask_: u32, pub block_bits_: i32, } impl AdvHashSpecialization for H6Sub { #[inline(always)] fn hash_shift(&self) -> i32 { self.hash_shift_ } #[inline(always)] fn bucket_size(&self) -> u32 { self.bucket_size_ } fn block_bits(&self) -> i32 { self.block_bits_ } fn block_size(&self) -> u32 { 1 << self.block_bits_ } #[inline(always)] fn block_mask(&self) -> u32 { self.block_mask_ } #[inline(always)] fn get_hash_mask(&self) -> u64 { self.hash_mask } #[inline(always)] fn set_hash_mask(&mut self, params_hash_len: i32) { self.hash_mask = !(0u32 as (u64)) >> (64i32 - 8i32 * params_hash_len); } #[inline(always)] fn get_k_hash_mul(&self) -> u64 { kHashMul64Long } #[inline(always)] fn load_and_mix_word(&self, data: &[u8]) -> u64 { (BROTLI_UNALIGNED_LOAD64(data) & self.get_hash_mask()).wrapping_mul(self.get_k_hash_mul()) } #[inline(always)] fn HashTypeLength(&self) -> usize { 8 } #[inline(always)] fn StoreLookahead(&self) -> usize { 8 } } fn BackwardReferencePenaltyUsingLastDistance(distance_short_code: usize) -> u64 { // FIXME?: double bitwise AND with the same value? (39u64).wrapping_add((0x0001_ca10_u64 >> (distance_short_code & 0x0e) & 0x0e)) } impl< Specialization: AdvHashSpecialization + Clone, Alloc: alloc::Allocator + alloc::Allocator, > AdvHasher { // 7 opt // returns a new ix_start fn StoreRangeOptBatch( &mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize, ) -> usize { let lookahead = self.specialization.StoreLookahead(); if ix_end >= ix_start + lookahead * 2 && lookahead == 4 { let num = self.num.slice_mut(); let buckets = self.buckets.slice_mut(); assert_eq!(num.len(), self.specialization.bucket_size() as usize); assert_eq!( buckets.len(), self.specialization.bucket_size() as usize * self.specialization.block_size() as usize ); let shift = self.specialization.hash_shift(); let chunk_count = (ix_end - ix_start) / 4; for chunk_id in 0..chunk_count { let i = (ix_start + chunk_id * 4) & mask; let ffffffff = 0xffff_ffff; let word = u64::from(data[i]) | (u64::from(data[i + 1]) << 8) | (u64::from(data[i + 2]) << 16) | (u64::from(data[i + 3]) << 24) | (u64::from(data[i + 4]) << 32) | (u64::from(data[i + 5]) << 40) | (u64::from(data[i + 6]) << 48); let mixed0 = ((((word & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed1 = (((((word >> 8) & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed2 = (((((word >> 16) & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed3 = (((((word >> 24) & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mut num_ref0 = u32::from(num[mixed0]); num[mixed0] = num_ref0.wrapping_add(1) as u16; num_ref0 &= self.specialization.block_mask(); let mut num_ref1 = u32::from(num[mixed1]); num[mixed1] = num_ref1.wrapping_add(1) as u16; num_ref1 &= self.specialization.block_mask(); let mut num_ref2 = u32::from(num[mixed2]); num[mixed2] = num_ref2.wrapping_add(1) as u16; num_ref2 &= self.specialization.block_mask(); let mut num_ref3 = u32::from(num[mixed3]); num[mixed3] = num_ref3.wrapping_add(1) as u16; num_ref3 &= self.specialization.block_mask(); let offset0: usize = (mixed0 << self.specialization.block_bits()) + num_ref0 as usize; let offset1: usize = (mixed1 << self.specialization.block_bits()) + num_ref1 as usize; let offset2: usize = (mixed2 << self.specialization.block_bits()) + num_ref2 as usize; let offset3: usize = (mixed3 << self.specialization.block_bits()) + num_ref3 as usize; buckets[offset0] = (i) as u32; buckets[offset1] = (i + 1) as u32; buckets[offset2] = (i + 2) as u32; buckets[offset3] = (i + 3) as u32; } return ix_start + chunk_count * 4; } ix_start } fn BulkStoreRangeOptMemFetch( &mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize, ) -> usize { const REG_SIZE: usize = 32usize; let lookahead = self.specialization.StoreLookahead(); if mask == !0 && ix_end > ix_start + REG_SIZE && lookahead == 4 { const lookahead4: usize = 4; assert_eq!(lookahead4, lookahead); let mut data64 = [0u8; REG_SIZE + lookahead4 - 1]; let del = (ix_end - ix_start) / REG_SIZE; let num = self.num.slice_mut(); let buckets = self.buckets.slice_mut(); assert_eq!(num.len(), self.specialization.bucket_size() as usize); assert_eq!( buckets.len(), self.specialization.bucket_size() as usize * self.specialization.block_size() as usize ); let shift = self.specialization.hash_shift(); for chunk_id in 0..del { let ix_offset = ix_start + chunk_id * REG_SIZE; data64[..REG_SIZE + lookahead4 - 1].clone_from_slice( data.split_at(ix_offset) .1 .split_at(REG_SIZE + lookahead4 - 1) .0, ); for quad_index in 0..(REG_SIZE >> 2) { let i = quad_index << 2; let ffffffff = 0xffff_ffff; let word = u64::from(data64[i]) | (u64::from(data64[i + 1]) << 8) | (u64::from(data64[i + 2]) << 16) | (u64::from(data64[i + 3]) << 24) | (u64::from(data64[i + 4]) << 32) | (u64::from(data64[i + 5]) << 40) | (u64::from(data64[i + 6]) << 48); let mixed0 = ((((word & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed1 = (((((word >> 8) & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed2 = (((((word >> 16) & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed3 = (((((word >> 24) & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mut num_ref0 = u32::from(num[mixed0]); num[mixed0] = num_ref0.wrapping_add(1) as u16; num_ref0 &= self.specialization.block_mask(); let mut num_ref1 = u32::from(num[mixed1]); num[mixed1] = num_ref1.wrapping_add(1) as u16; num_ref1 &= self.specialization.block_mask(); let mut num_ref2 = u32::from(num[mixed2]); num[mixed2] = num_ref2.wrapping_add(1) as u16; num_ref2 &= self.specialization.block_mask(); let mut num_ref3 = u32::from(num[mixed3]); num[mixed3] = num_ref3.wrapping_add(1) as u16; num_ref3 &= self.specialization.block_mask(); let offset0: usize = (mixed0 << self.specialization.block_bits()) + num_ref0 as usize; let offset1: usize = (mixed1 << self.specialization.block_bits()) + num_ref1 as usize; let offset2: usize = (mixed2 << self.specialization.block_bits()) + num_ref2 as usize; let offset3: usize = (mixed3 << self.specialization.block_bits()) + num_ref3 as usize; buckets[offset0] = (ix_offset + i) as u32; buckets[offset1] = (ix_offset + i + 1) as u32; buckets[offset2] = (ix_offset + i + 2) as u32; buckets[offset3] = (ix_offset + i + 3) as u32; } } return ix_start + del * REG_SIZE; } ix_start } fn BulkStoreRangeOptMemFetchLazyDupeUpdate( &mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize, ) -> usize { const REG_SIZE: usize = 32usize; let lookahead = self.specialization.StoreLookahead(); if mask == !0 && ix_end > ix_start + REG_SIZE && lookahead == 4 { const lookahead4: usize = 4; assert_eq!(lookahead4, lookahead); let mut data64 = [0u8; REG_SIZE + lookahead4]; let del = (ix_end - ix_start) / REG_SIZE; let num = self.num.slice_mut(); let buckets = self.buckets.slice_mut(); assert_eq!(num.len(), self.specialization.bucket_size() as usize); assert_eq!( buckets.len(), self.specialization.bucket_size() as usize * self.specialization.block_size() as usize ); let shift = self.specialization.hash_shift(); for chunk_id in 0..del { let ix_offset = ix_start + chunk_id * REG_SIZE; data64[..REG_SIZE + lookahead4] .clone_from_slice(data.split_at(ix_offset).1.split_at(REG_SIZE + lookahead4).0); for quad_index in 0..(REG_SIZE >> 2) { let i = quad_index << 2; let ffffffff = 0xffff_ffff; let word = u64::from(data64[i]) | (u64::from(data64[i + 1]) << 8) | (u64::from(data64[i + 2]) << 16) | (u64::from(data64[i + 3]) << 24) | (u64::from(data64[i + 4]) << 32) | (u64::from(data64[i + 5]) << 40) | (u64::from(data64[i + 6]) << 48); let mixed0 = ((((word & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed1 = (((((word >> 8) & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed2 = (((((word >> 16) & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed3 = (((((word >> 24) & ffffffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mut num_ref0 = u32::from(num[mixed0]); let mut num_ref1 = u32::from(num[mixed1]); let mut num_ref2 = u32::from(num[mixed2]); let mut num_ref3 = u32::from(num[mixed3]); num[mixed0] = num_ref0.wrapping_add(1) as u16; num[mixed1] = num_ref1.wrapping_add(1) as u16; num[mixed2] = num_ref2.wrapping_add(1) as u16; num[mixed3] = num_ref3.wrapping_add(1) as u16; num_ref0 &= self.specialization.block_mask(); num_ref1 &= self.specialization.block_mask(); num_ref2 &= self.specialization.block_mask(); num_ref3 &= self.specialization.block_mask(); let offset0: usize = (mixed0 << self.specialization.block_bits()) + num_ref0 as usize; let offset1: usize = (mixed1 << self.specialization.block_bits()) + num_ref1 as usize; let offset2: usize = (mixed2 << self.specialization.block_bits()) + num_ref2 as usize; let offset3: usize = (mixed3 << self.specialization.block_bits()) + num_ref3 as usize; buckets[offset0] = (ix_offset + i) as u32; buckets[offset1] = (ix_offset + i + 1) as u32; buckets[offset2] = (ix_offset + i + 2) as u32; buckets[offset3] = (ix_offset + i + 3) as u32; } } return ix_start + del * REG_SIZE; } ix_start } fn BulkStoreRangeOptRandomDupeUpdate( &mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize, ) -> usize { const REG_SIZE: usize = 32usize; let lookahead = self.specialization.StoreLookahead(); if mask == !0 && ix_end > ix_start + REG_SIZE && lookahead == 4 { const lookahead4: usize = 4; assert_eq!(lookahead4, lookahead); let mut data64 = [0u8; REG_SIZE + lookahead4]; let del = (ix_end - ix_start) / REG_SIZE; let num = self.num.slice_mut(); let buckets = self.buckets.slice_mut(); assert_eq!(num.len(), self.specialization.bucket_size() as usize); assert_eq!( buckets.len(), self.specialization.bucket_size() as usize * self.specialization.block_size() as usize ); let shift = self.specialization.hash_shift(); for chunk_id in 0..del { let ix_offset = ix_start + chunk_id * REG_SIZE; data64[..REG_SIZE + lookahead4] .clone_from_slice(data.split_at(ix_offset).1.split_at(REG_SIZE + lookahead4).0); for i in 0..REG_SIZE { let mixed_word = ((u32::from(data64[i]) | (u32::from(data64[i + 1]) << 8) | (u32::from(data64[i + 2]) << 16) | (u32::from(data64[i + 3]) << 24)) as u64 * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask(); let key = mixed_word >> shift; let minor_ix: usize = chunk_id & self.specialization.block_mask() as usize; // *num_ref as usize & self.specialization.block_mask() as usize; //GIGANTIC HAX: overwrite firsst option let offset: usize = minor_ix + (key << self.specialization.block_bits()) as usize; buckets[offset] = (ix_offset + i) as u32; } } for (bucket_index, num_ref) in num.iter_mut().enumerate() { let region = buckets .split_at_mut(bucket_index << self.specialization.block_bits()) .1 .split_at_mut(self.specialization.block_size() as usize) .0; let mut lnum = 0usize; for block_index in 0..self.specialization.block_size() as usize { if region[block_index] != 0 { let byte_addr = region[block_index]; region[lnum] = byte_addr; lnum += 1; } } *num_ref = lnum as u16; } return ix_start + del * REG_SIZE; } ix_start } } impl< Specialization: AdvHashSpecialization + Clone, Alloc: alloc::Allocator + alloc::Allocator, > AnyHasher for AdvHasher { fn Opts(&self) -> H9Opts { self.h9_opts } fn PrepareDistanceCache(&self, distance_cache: &mut [i32]) { let num_distances = self.GetHasherCommon.params.num_last_distances_to_check; adv_prepare_distance_cache(distance_cache, num_distances); } fn StitchToPreviousBlock( &mut self, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, ) { StitchToPreviousBlockInternal(self, num_bytes, position, ringbuffer, ringbuffer_mask); } fn Prepare(&mut self, one_shot: bool, input_size: usize, data: &[u8]) -> HowPrepared { if self.GetHasherCommon.is_prepared_ != 0 { return HowPrepared::ALREADY_PREPARED; } let partial_prepare_threshold = self.specialization.bucket_size() as usize >> 6; if one_shot && input_size <= partial_prepare_threshold { for i in 0..input_size { let key = self.HashBytes(&data[i..]); self.num.slice_mut()[key] = 0; } } else { for item in self.num.slice_mut()[..(self.specialization.bucket_size() as usize)].iter_mut() { *item = 0; } } self.GetHasherCommon.is_prepared_ = 1; HowPrepared::NEWLY_PREPARED } fn GetHasherCommon(&mut self) -> &mut Struct1 { &mut self.GetHasherCommon } fn HashTypeLength(&self) -> usize { self.specialization.HashTypeLength() } fn StoreLookahead(&self) -> usize { self.specialization.StoreLookahead() } fn HashBytes(&self, data: &[u8]) -> usize { let shift = self.specialization.hash_shift(); let h: u64 = self.specialization.load_and_mix_word(data); (h >> shift) as u32 as usize } fn StoreEvenVec4(&mut self, data: &[u8], mask: usize, ix: usize) { if self.specialization.StoreLookahead() != 4 { for i in 0..4 { self.Store(data, mask, ix + i * 2); } return; } let shift = self.specialization.hash_shift(); let num = self.num.slice_mut(); let buckets = self.buckets.slice_mut(); let li = ix & mask; let lword = u64::from(data[li]) | (u64::from(data[li + 1]) << 8) | (u64::from(data[li + 2]) << 16) | (u64::from(data[li + 3]) << 24) | (u64::from(data[li + 4]) << 32) | (u64::from(data[li + 5]) << 40) | (u64::from(data[li + 6]) << 48) | (u64::from(data[li + 7]) << 56); let hi = (ix + 8) & mask; let hword = u64::from(data[hi]) | (u64::from(data[hi + 1]) << 8); let mixed0 = ((((lword & 0xffff_ffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed1 = (((((lword >> 16) & 0xffff_ffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed2 = (((((lword >> 32) & 0xffff_ffff) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed3 = ((((((hword & 0xffff) << 16) | ((lword >> 48) & 0xffff)) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mut num_ref0 = u32::from(num[mixed0]); num[mixed0] = num_ref0.wrapping_add(1) as u16; num_ref0 &= self.specialization.block_mask(); let mut num_ref1 = u32::from(num[mixed1]); num[mixed1] = num_ref1.wrapping_add(1) as u16; num_ref1 &= self.specialization.block_mask(); let mut num_ref2 = u32::from(num[mixed2]); num[mixed2] = num_ref2.wrapping_add(1) as u16; num_ref2 &= self.specialization.block_mask(); let mut num_ref3 = u32::from(num[mixed3]); num[mixed3] = num_ref3.wrapping_add(1) as u16; num_ref3 &= self.specialization.block_mask(); let offset0: usize = (mixed0 << self.specialization.block_bits()) + num_ref0 as usize; let offset1: usize = (mixed1 << self.specialization.block_bits()) + num_ref1 as usize; let offset2: usize = (mixed2 << self.specialization.block_bits()) + num_ref2 as usize; let offset3: usize = (mixed3 << self.specialization.block_bits()) + num_ref3 as usize; buckets[offset0] = ix as u32; buckets[offset1] = (ix + 2) as u32; buckets[offset2] = (ix + 4) as u32; buckets[offset3] = (ix + 6) as u32; } fn Store4Vec4(&mut self, data: &[u8], mask: usize, ix: usize) { if self.specialization.StoreLookahead() != 4 { for i in 0..4 { self.Store(data, mask, ix + i * 4); } return; } let shift = self.specialization.hash_shift(); let num = self.num.slice_mut(); let buckets = self.buckets.slice_mut(); let li = ix & mask; let llword = u32::from(data[li]) | (u32::from(data[li + 1]) << 8) | (u32::from(data[li + 2]) << 16) | (u32::from(data[li + 3]) << 24); let luword = u32::from(data[li + 4]) | (u32::from(data[li + 5]) << 8) | (u32::from(data[li + 6]) << 16) | (u32::from(data[li + 7]) << 24); let ui = (ix + 8) & mask; let ulword = u32::from(data[ui]) | (u32::from(data[ui + 1]) << 8) | (u32::from(data[ui + 2]) << 16) | (u32::from(data[ui + 3]) << 24); let uuword = u32::from(data[ui + 4]) | (u32::from(data[ui + 5]) << 8) | (u32::from(data[ui + 6]) << 16) | (u32::from(data[ui + 7]) << 24); let mixed0 = (((u64::from(llword) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed1 = (((u64::from(luword) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed2 = (((u64::from(ulword) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mixed3 = (((u64::from(uuword) * self.specialization.get_k_hash_mul()) & self.specialization.get_hash_mask()) >> shift) as usize; let mut num_ref0 = u32::from(num[mixed0]); num[mixed0] = num_ref0.wrapping_add(1) as u16; num_ref0 &= self.specialization.block_mask(); let mut num_ref1 = u32::from(num[mixed1]); num[mixed1] = num_ref1.wrapping_add(1) as u16; num_ref1 &= self.specialization.block_mask(); let mut num_ref2 = u32::from(num[mixed2]); num[mixed2] = num_ref2.wrapping_add(1) as u16; num_ref2 &= self.specialization.block_mask(); let mut num_ref3 = u32::from(num[mixed3]); num[mixed3] = num_ref3.wrapping_add(1) as u16; num_ref3 &= self.specialization.block_mask(); let offset0: usize = (mixed0 << self.specialization.block_bits()) + num_ref0 as usize; let offset1: usize = (mixed1 << self.specialization.block_bits()) + num_ref1 as usize; let offset2: usize = (mixed2 << self.specialization.block_bits()) + num_ref2 as usize; let offset3: usize = (mixed3 << self.specialization.block_bits()) + num_ref3 as usize; buckets[offset0] = ix as u32; buckets[offset1] = (ix + 4) as u32; buckets[offset2] = (ix + 8) as u32; buckets[offset3] = (ix + 12) as u32; } fn Store(&mut self, data: &[u8], mask: usize, ix: usize) { let (_, data_window) = data.split_at((ix & mask)); let key: u32 = self.HashBytes(data_window) as u32; let minor_ix: usize = (self.num.slice()[(key as usize)] as u32 & self.specialization.block_mask()) as usize; let offset: usize = minor_ix.wrapping_add((key << self.specialization.block_bits()) as usize); self.buckets.slice_mut()[offset] = ix as u32; { let _lhs = &mut self.num.slice_mut()[(key as usize)]; *_lhs = (*_lhs as i32 + 1) as u16; } } fn StoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize) { for i in self.StoreRangeOptBatch(data, mask, ix_start, ix_end)..ix_end { self.Store(data, mask, i); } } fn BulkStoreRange(&mut self, data: &[u8], mask: usize, mut ix_start: usize, ix_end: usize) { /* if ix_start + 4096 < ix_end { for vec_offset in 0..(ix_end - ix_start - 4096) / 16 { self.Store4Vec4(data, mask, ix_start + vec_offset * 16); } ix_start += 16 * ((ix_end - ix_start - 4096) / 16); } if ix_start + 512 < ix_end { for vec_offset in 0..(ix_end - ix_start - 512) / 8 { self.StoreEvenVec4(data, mask, ix_start + vec_offset * 8); //self.StoreRange(data, mask, ix_start + vec_offset * 8, ix_start + (1+ vec_offset) * 8); } ix_start += 8 * ((ix_end - ix_start - 512) / 8); } */ ix_start = self.BulkStoreRangeOptMemFetch(data, mask, ix_start, ix_end); for i in ix_start..ix_end { self.Store(data, mask, i); } } fn FindLongestMatch( &mut self, dictionary: Option<&BrotliDictionary>, dictionary_hash: &[u16], data: &[u8], ring_buffer_mask: usize, distance_cache: &[i32], cur_ix: usize, max_length: usize, max_backward: usize, gap: usize, max_distance: usize, out: &mut HasherSearchResult, ) -> bool { let opts = self.Opts(); let cur_ix_masked: usize = cur_ix & ring_buffer_mask; let mut is_match_found = false; let mut best_score: u64 = out.score; let mut best_len: usize = out.len; let mut i: usize; out.len = 0usize; out.len_x_code = 0usize; i = 0usize; let cur_data = data.split_at(cur_ix_masked).1; while i < self.GetHasherCommon.params.num_last_distances_to_check as usize { 'continue45: loop { { let backward: usize = distance_cache[i] as usize; let mut prev_ix: usize = cur_ix.wrapping_sub(backward); if prev_ix >= cur_ix { break 'continue45; } if backward > max_backward { break 'continue45; } prev_ix &= ring_buffer_mask; if (cur_ix_masked.wrapping_add(best_len) > ring_buffer_mask || prev_ix.wrapping_add(best_len) > ring_buffer_mask || cur_data[best_len] != data[prev_ix.wrapping_add(best_len)]) { break 'continue45; } let prev_data = data.split_at(prev_ix).1; let len: usize = FindMatchLengthWithLimit(prev_data, cur_data, max_length); if len >= 3usize || len == 2usize && (i < 2usize) { let mut score: u64 = BackwardReferenceScoreUsingLastDistance(len, opts); if best_score < score { if i != 0usize { score = score .wrapping_sub(BackwardReferencePenaltyUsingLastDistance(i)); } if best_score < score { best_score = score; best_len = len; out.len = best_len; out.distance = backward; out.score = best_score; is_match_found = true; } } } } break; } i = i.wrapping_add(1); } { let key: u32 = self.HashBytes(cur_data) as u32; let common_block_bits = self.specialization.block_bits(); let num_ref_mut = &mut self.num.slice_mut()[key as usize]; let num_copy = *num_ref_mut; let bucket: &mut [u32] = self .buckets .slice_mut() .split_at_mut((key << common_block_bits) as usize) .1 .split_at_mut(self.specialization.block_size() as usize) .0; assert!(bucket.len() > self.specialization.block_mask() as usize); if num_copy != 0 { let down: usize = max( i32::from(num_copy) - self.specialization.block_size() as i32, 0, ) as usize; i = num_copy as usize; while i > down { i -= 1; let mut prev_ix = bucket[i & self.specialization.block_mask() as usize] as usize; let backward = cur_ix.wrapping_sub(prev_ix); prev_ix &= ring_buffer_mask; if (cur_ix_masked.wrapping_add(best_len) > ring_buffer_mask || prev_ix.wrapping_add(best_len) > ring_buffer_mask || cur_data[best_len] != data[prev_ix.wrapping_add(best_len)]) { if backward > max_backward { break; } continue; } if backward > max_backward { break; } let prev_data = data.split_at(prev_ix).1; let len = FindMatchLengthWithLimitMin4(prev_data, cur_data, max_length); if len != 0 { let score: u64 = BackwardReferenceScore(len, backward, opts); if best_score < score { best_score = score; best_len = len; out.len = best_len; out.distance = backward; out.score = best_score; is_match_found = true; } } } } bucket[((num_copy as u32 & (self).specialization.block_mask()) as usize)] = cur_ix as u32; *num_ref_mut = num_ref_mut.wrapping_add(1); } if !is_match_found && dictionary.is_some() { let (_, cur_data) = data.split_at(cur_ix_masked); is_match_found = SearchInStaticDictionary( dictionary.unwrap(), dictionary_hash, self, cur_data, max_length, max_backward.wrapping_add(gap), max_distance, out, false, ); } is_match_found } } pub struct BankH40 { pub slots: [SlotH40; 65536], } pub struct BankH41 { pub slots: [SlotH41; 65536], } pub struct BankH42 { pub slots: [SlotH42; 512], } pub struct SlotH40 { pub delta: u16, pub next: u16, } pub struct SlotH41 { pub delta: u16, pub next: u16, } pub struct SlotH42 { pub delta: u16, pub next: u16, } // UNSUPPORTED, for now. pub struct H40 { pub common: Struct1, pub addr: [u32; 32768], pub head: [u16; 32768], pub tiny_hash: [u8; 65536], pub banks: [BankH40; 1], pub free_slot_idx: [u16; 1], pub max_hops: usize, } pub struct H41 { pub common: Struct1, pub addr: [u32; 32768], pub head: [u16; 32768], pub tiny_hash: [u8; 65536], pub banks: [BankH41; 1], pub free_slot_idx: [u16; 1], pub max_hops: usize, } pub struct H42 { pub common: Struct1, pub addr: [u32; 32768], pub head: [u16; 32768], pub tiny_hash: [u8; 65536], pub banks: [BankH42; 512], free_slot_idx: [u16; 512], pub max_hops: usize, } fn unopt_ctzll(mut val: usize) -> u8 { let mut cnt: u8 = 0u8; while val & 1 == 0usize { val >>= 1i32; cnt = (cnt as i32 + 1) as u8; } cnt } fn BackwardReferenceScoreUsingLastDistance(copy_length: usize, h9_opts: H9Opts) -> u64 { ((h9_opts.literal_byte_score as u64) >> 2) .wrapping_mul(copy_length as u64) .wrapping_add((30u64 * 8u64).wrapping_mul(::core::mem::size_of::() as u64)) .wrapping_add(15) } fn BackwardReferenceScore( copy_length: usize, backward_reference_offset: usize, h9_opts: H9Opts, ) -> u64 { (30u64 * 8u64) .wrapping_mul(::core::mem::size_of::() as u64) .wrapping_add(((h9_opts.literal_byte_score as usize) >> 2).wrapping_mul(copy_length) as u64) .wrapping_sub( (30u64).wrapping_mul(Log2FloorNonZero(backward_reference_offset as u64) as u64), ) } fn Hash14(data: &[u8]) -> u32 { let h: u32 = BROTLI_UNALIGNED_LOAD32(data).wrapping_mul(kHashMul32); h >> (32i32 - 14i32) } fn TestStaticDictionaryItem( dictionary: &BrotliDictionary, item: usize, data: &[u8], max_length: usize, max_backward: usize, max_distance: usize, h9_opts: H9Opts, out: &mut HasherSearchResult, ) -> i32 { let backward: usize; let len: usize = item & 0x1fusize; let dist: usize = item >> 5; let offset: usize = (dictionary.offsets_by_length[len] as usize).wrapping_add(len.wrapping_mul(dist)); if len > max_length { return 0i32; } let matchlen: usize = FindMatchLengthWithLimit(data, &dictionary.data[offset..], len); if matchlen.wrapping_add(kCutoffTransformsCount as usize) <= len || matchlen == 0usize { return 0i32; } { let cut: u64 = len.wrapping_sub(matchlen) as u64; let transform_id: usize = (cut << 2).wrapping_add(kCutoffTransforms >> cut.wrapping_mul(6) & 0x3f) as usize; backward = max_backward .wrapping_add(dist) .wrapping_add(1) .wrapping_add(transform_id << dictionary.size_bits_by_length[len] as i32); } if backward > max_distance { return 0i32; } let score: u64 = BackwardReferenceScore(matchlen, backward, h9_opts); if score < out.score { return 0i32; } out.len = matchlen; out.len_x_code = len ^ matchlen; out.distance = backward; out.score = score; 1i32 } fn SearchInStaticDictionary( dictionary: &BrotliDictionary, dictionary_hash: &[u16], handle: &mut HasherType, data: &[u8], max_length: usize, max_backward: usize, max_distance: usize, out: &mut HasherSearchResult, shallow: bool, ) -> bool { let mut key: usize; let mut i: usize; let mut is_match_found = false; let opts = handle.Opts(); let xself: &mut Struct1 = handle.GetHasherCommon(); if xself.dict_num_matches < xself.dict_num_lookups >> 7 { return false; } key = (Hash14(data) << 1) as usize; //FIXME: works for any kind of hasher?? i = 0usize; while i < if shallow { 1 } else { 2 } { { let item: usize = dictionary_hash[key] as usize; xself.dict_num_lookups = xself.dict_num_lookups.wrapping_add(1); if item != 0usize { let item_matches: i32 = TestStaticDictionaryItem( dictionary, item, data, max_length, max_backward, max_distance, opts, out, ); if item_matches != 0 { xself.dict_num_matches = xself.dict_num_matches.wrapping_add(1); is_match_found = true; } } } i = i.wrapping_add(1); key = key.wrapping_add(1); } is_match_found } impl + alloc::Allocator> CloneWithAlloc for BasicHasher> { fn clone_with_alloc(&self, m: &mut Alloc) -> Self { let mut ret = BasicHasher::> { GetHasherCommon: self.GetHasherCommon.clone(), buckets_: H2Sub:: { buckets_: >::alloc_cell(m, self.buckets_.buckets_.len()), }, h9_opts: self.h9_opts, }; ret.buckets_ .buckets_ .slice_mut() .clone_from_slice(self.buckets_.buckets_.slice()); ret } } impl + alloc::Allocator> CloneWithAlloc for BasicHasher> { fn clone_with_alloc(&self, m: &mut Alloc) -> Self { let mut ret = BasicHasher::> { GetHasherCommon: self.GetHasherCommon.clone(), buckets_: H3Sub:: { buckets_: >::alloc_cell(m, self.buckets_.buckets_.len()), }, h9_opts: self.h9_opts, }; ret.buckets_ .buckets_ .slice_mut() .clone_from_slice(self.buckets_.buckets_.slice()); ret } } impl + alloc::Allocator> CloneWithAlloc for BasicHasher> { fn clone_with_alloc(&self, m: &mut Alloc) -> Self { let mut ret = BasicHasher::> { GetHasherCommon: self.GetHasherCommon.clone(), buckets_: H4Sub:: { buckets_: >::alloc_cell(m, self.buckets_.buckets_.len()), }, h9_opts: self.h9_opts, }; ret.buckets_ .buckets_ .slice_mut() .clone_from_slice(self.buckets_.buckets_.slice()); ret } } impl + alloc::Allocator> CloneWithAlloc for BasicHasher> { fn clone_with_alloc(&self, m: &mut Alloc) -> Self { let mut ret = BasicHasher::> { GetHasherCommon: self.GetHasherCommon.clone(), buckets_: H54Sub:: { buckets_: >::alloc_cell(m, self.buckets_.len()), }, h9_opts: self.h9_opts, }; ret.buckets_ .buckets_ .slice_mut() .clone_from_slice(self.buckets_.buckets_.slice()); ret } } impl + alloc::Allocator> CloneWithAlloc for H9 { fn clone_with_alloc(&self, m: &mut Alloc) -> Self { let mut num = >::alloc_cell(m, self.num_.len()); num.slice_mut().clone_from_slice(self.num_.slice()); let mut buckets = >::alloc_cell(m, self.buckets_.len()); buckets.slice_mut().clone_from_slice(self.buckets_.slice()); H9:: { num_: num, buckets_: buckets, dict_search_stats_: self.dict_search_stats_.clone(), h9_opts: self.h9_opts, } } } impl< Alloc: alloc::Allocator + alloc::Allocator, Special: AdvHashSpecialization + Sized + Clone, > CloneWithAlloc for AdvHasher { fn clone_with_alloc(&self, m: &mut Alloc) -> Self { let mut num = >::alloc_cell(m, self.num.len()); num.slice_mut().clone_from_slice(self.num.slice()); let mut buckets = >::alloc_cell(m, self.buckets.len()); buckets.slice_mut().clone_from_slice(self.buckets.slice()); AdvHasher:: { GetHasherCommon: self.GetHasherCommon.clone(), specialization: self.specialization.clone(), num, buckets, h9_opts: self.h9_opts, } } } pub enum UnionHasher + alloc::Allocator> { Uninit, H2(BasicHasher>), H3(BasicHasher>), H4(BasicHasher>), H54(BasicHasher>), H5(AdvHasher), H5q7(AdvHasher), H5q5(AdvHasher), H6(AdvHasher), H9(H9), H10(H10, H10DefaultParams>), } impl + alloc::Allocator> PartialEq> for UnionHasher { fn eq(&self, other: &UnionHasher) -> bool { match *self { UnionHasher::H2(ref hasher) => match *other { UnionHasher::H2(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::H3(ref hasher) => match *other { UnionHasher::H3(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::H4(ref hasher) => match *other { UnionHasher::H4(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::H54(ref hasher) => match *other { UnionHasher::H54(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::H5(ref hasher) => match *other { UnionHasher::H5(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::H5q7(ref hasher) => match *other { UnionHasher::H5q7(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::H5q5(ref hasher) => match *other { UnionHasher::H5q5(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::H6(ref hasher) => match *other { UnionHasher::H6(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::H9(ref hasher) => match *other { UnionHasher::H9(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::H10(ref hasher) => match *other { UnionHasher::H10(ref otherh) => *hasher == *otherh, _ => false, }, UnionHasher::Uninit => match *other { UnionHasher::Uninit => true, _ => false, }, } } } impl + alloc::Allocator> CloneWithAlloc for UnionHasher { fn clone_with_alloc(&self, m: &mut Alloc) -> Self { match *self { UnionHasher::H2(ref hasher) => UnionHasher::H2(hasher.clone_with_alloc(m)), UnionHasher::H3(ref hasher) => UnionHasher::H3(hasher.clone_with_alloc(m)), UnionHasher::H4(ref hasher) => UnionHasher::H4(hasher.clone_with_alloc(m)), UnionHasher::H5(ref hasher) => UnionHasher::H5(hasher.clone_with_alloc(m)), UnionHasher::H5q7(ref hasher) => UnionHasher::H5q7(hasher.clone_with_alloc(m)), UnionHasher::H5q5(ref hasher) => UnionHasher::H5q5(hasher.clone_with_alloc(m)), UnionHasher::H6(ref hasher) => UnionHasher::H6(hasher.clone_with_alloc(m)), UnionHasher::H54(ref hasher) => UnionHasher::H54(hasher.clone_with_alloc(m)), UnionHasher::H9(ref hasher) => UnionHasher::H9(hasher.clone_with_alloc(m)), UnionHasher::H10(ref hasher) => UnionHasher::H10(hasher.clone_with_alloc(m)), UnionHasher::Uninit => UnionHasher::Uninit, } } } macro_rules! match_all_hashers_mut { ($xself : expr, $func_call : ident, $( $args:expr),*) => { match $xself { &mut UnionHasher::H2(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::H3(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::H4(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::H5(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::H5q7(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::H5q5(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::H6(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::H54(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::H9(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::H10(ref mut hasher) => hasher.$func_call($($args),*), &mut UnionHasher::Uninit => panic!("UNINTIALIZED"), } }; } macro_rules! match_all_hashers { ($xself : expr, $func_call : ident, $( $args:expr),*) => { match $xself { &UnionHasher::H2(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::H3(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::H4(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::H5(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::H5q7(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::H5q5(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::H6(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::H54(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::H9(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::H10(ref hasher) => hasher.$func_call($($args),*), &UnionHasher::Uninit => panic!("UNINTIALIZED"), } }; } impl + alloc::Allocator> AnyHasher for UnionHasher { fn Opts(&self) -> H9Opts { match_all_hashers!(self, Opts,) } fn GetHasherCommon(&mut self) -> &mut Struct1 { match_all_hashers_mut!(self, GetHasherCommon,) } /* fn GetH10Tree(&mut self) -> Option<&mut H10> { return match_all_hashers_mut!(self, GetH10Tree,); }*/ fn Prepare(&mut self, one_shot: bool, input_size: usize, data: &[u8]) -> HowPrepared { match_all_hashers_mut!(self, Prepare, one_shot, input_size, data) } fn HashBytes(&self, data: &[u8]) -> usize { match_all_hashers!(self, HashBytes, data) } fn HashTypeLength(&self) -> usize { match_all_hashers!(self, HashTypeLength,) } fn StoreLookahead(&self) -> usize { match_all_hashers!(self, StoreLookahead,) } fn PrepareDistanceCache(&self, distance_cache: &mut [i32]) { match_all_hashers!(self, PrepareDistanceCache, distance_cache) } fn StitchToPreviousBlock( &mut self, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, ) { match_all_hashers_mut!( self, StitchToPreviousBlock, num_bytes, position, ringbuffer, ringbuffer_mask ) } fn FindLongestMatch( &mut self, dictionary: Option<&BrotliDictionary>, dictionary_hash: &[u16], data: &[u8], ring_buffer_mask: usize, distance_cache: &[i32], cur_ix: usize, max_length: usize, max_backward: usize, gap: usize, max_distance: usize, out: &mut HasherSearchResult, ) -> bool { match_all_hashers_mut!( self, FindLongestMatch, dictionary, dictionary_hash, data, ring_buffer_mask, distance_cache, cur_ix, max_length, max_backward, gap, max_distance, out ) } fn Store(&mut self, data: &[u8], mask: usize, ix: usize) { match_all_hashers_mut!(self, Store, data, mask, ix) } fn StoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize) { match_all_hashers_mut!(self, StoreRange, data, mask, ix_start, ix_end) } fn BulkStoreRange(&mut self, data: &[u8], mask: usize, ix_start: usize, ix_end: usize) { match_all_hashers_mut!(self, BulkStoreRange, data, mask, ix_start, ix_end) } } impl + alloc::Allocator> UnionHasher { pub fn free(&mut self, alloc: &mut Alloc) { match self { &mut UnionHasher::H2(ref mut hasher) => { >::free_cell( alloc, core::mem::take(&mut hasher.buckets_.buckets_), ); } &mut UnionHasher::H3(ref mut hasher) => { >::free_cell( alloc, core::mem::take(&mut hasher.buckets_.buckets_), ); } &mut UnionHasher::H4(ref mut hasher) => { >::free_cell( alloc, core::mem::take(&mut hasher.buckets_.buckets_), ); } &mut UnionHasher::H54(ref mut hasher) => { >::free_cell( alloc, core::mem::take(&mut hasher.buckets_.buckets_), ); } &mut UnionHasher::H5q7(ref mut hasher) => { >::free_cell(alloc, core::mem::take(&mut hasher.num)); >::free_cell(alloc, core::mem::take(&mut hasher.buckets)); } &mut UnionHasher::H5q5(ref mut hasher) => { >::free_cell(alloc, core::mem::take(&mut hasher.num)); >::free_cell(alloc, core::mem::take(&mut hasher.buckets)); } &mut UnionHasher::H5(ref mut hasher) => { >::free_cell(alloc, core::mem::take(&mut hasher.num)); >::free_cell(alloc, core::mem::take(&mut hasher.buckets)); } &mut UnionHasher::H6(ref mut hasher) => { >::free_cell(alloc, core::mem::take(&mut hasher.num)); >::free_cell(alloc, core::mem::take(&mut hasher.buckets)); } &mut UnionHasher::H9(ref mut hasher) => { >::free_cell(alloc, core::mem::take(&mut hasher.num_)); >::free_cell(alloc, core::mem::take(&mut hasher.buckets_)); } &mut UnionHasher::H10(ref mut hasher) => { hasher.free(alloc); } &mut UnionHasher::Uninit => {} } *self = UnionHasher::::default(); } } impl + alloc::Allocator> Default for UnionHasher { fn default() -> Self { UnionHasher::Uninit } } /*UnionHasher::H2(BasicHasher { GetHasherCommon:Struct1{params:BrotliHasherParams{ type_:2, block_bits: 8, bucket_bits:16, hash_len: 4, num_last_distances_to_check:0}, is_prepared_:0, dict_num_lookups:0, dict_num_matches:0, }, buckets_:H2Sub{ buckets_:[0;65537], }, }) */ fn CreateBackwardReferences( dictionary: Option<&BrotliDictionary>, dictionary_hash: &[u16], num_bytes: usize, mut position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, params: &BrotliEncoderParams, hasher: &mut AH, dist_cache: &mut [i32], last_insert_len: &mut usize, mut commands: &mut [Command], num_commands: &mut usize, num_literals: &mut usize, ) { let gap = 0usize; let max_backward_limit: usize = (1usize << params.lgwin).wrapping_sub(16); let mut new_commands_count: usize = 0; let mut insert_length: usize = *last_insert_len; let pos_end: usize = position.wrapping_add(num_bytes); let store_end: usize = if num_bytes >= hasher.StoreLookahead() { position .wrapping_add(num_bytes) .wrapping_sub(hasher.StoreLookahead()) .wrapping_add(1) } else { position }; let random_heuristics_window_size: usize = LiteralSpreeLengthForSparseSearch(params); let mut apply_random_heuristics: usize = position.wrapping_add(random_heuristics_window_size); let kMinScore: u64 = (30u64 * 8) .wrapping_mul(::core::mem::size_of::() as u64) .wrapping_add(100); hasher.PrepareDistanceCache(dist_cache); while position.wrapping_add(hasher.HashTypeLength()) < pos_end { let mut max_length: usize = pos_end.wrapping_sub(position); let mut max_distance: usize = min(position, max_backward_limit); let mut sr = HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; sr.len = 0usize; sr.len_x_code = 0usize; sr.distance = 0usize; sr.score = kMinScore; if hasher.FindLongestMatch( dictionary, dictionary_hash, ringbuffer, ringbuffer_mask, dist_cache, position, max_length, max_distance, gap, params.dist.max_distance, &mut sr, ) { let mut delayed_backward_references_in_row: i32 = 0i32; max_length = max_length.wrapping_sub(1); 'break6: loop { 'continue7: loop { let cost_diff_lazy: u64 = 175; let mut sr2 = HasherSearchResult { len: 0, len_x_code: 0, distance: 0, score: 0, }; sr2.len = if params.quality < 5 { min(sr.len.wrapping_sub(1), max_length) } else { 0usize }; sr2.len_x_code = 0usize; sr2.distance = 0usize; sr2.score = kMinScore; max_distance = min(position.wrapping_add(1), max_backward_limit); let is_match_found: bool = hasher.FindLongestMatch( dictionary, dictionary_hash, ringbuffer, ringbuffer_mask, dist_cache, position.wrapping_add(1), max_length, max_distance, gap, params.dist.max_distance, &mut sr2, ); if is_match_found && (sr2.score >= sr.score.wrapping_add(cost_diff_lazy)) { position = position.wrapping_add(1); insert_length = insert_length.wrapping_add(1); sr = sr2; if { delayed_backward_references_in_row += 1; delayed_backward_references_in_row } < 4i32 && (position.wrapping_add(hasher.HashTypeLength()) < pos_end) { break 'continue7; } } break 'break6; } max_length = max_length.wrapping_sub(1); } apply_random_heuristics = position .wrapping_add((2usize).wrapping_mul(sr.len)) .wrapping_add(random_heuristics_window_size); max_distance = min(position, max_backward_limit); { let distance_code: usize = ComputeDistanceCode(sr.distance, max_distance, dist_cache); if sr.distance <= max_distance && (distance_code > 0usize) { dist_cache[3] = dist_cache[2]; dist_cache[2] = dist_cache[1]; dist_cache[1] = dist_cache[0]; dist_cache[0] = sr.distance as i32; hasher.PrepareDistanceCache(dist_cache); } new_commands_count += 1; let (old, new_commands) = core::mem::take(&mut commands).split_at_mut(1); commands = new_commands; old[0].init( ¶ms.dist, insert_length, sr.len, sr.len ^ sr.len_x_code, distance_code, ); } *num_literals = num_literals.wrapping_add(insert_length); insert_length = 0usize; hasher.StoreRange( ringbuffer, ringbuffer_mask, position.wrapping_add(2), min(position.wrapping_add(sr.len), store_end), ); position = position.wrapping_add(sr.len); } else { insert_length = insert_length.wrapping_add(1); position = position.wrapping_add(1); if position > apply_random_heuristics { let kMargin: usize = max(hasher.StoreLookahead().wrapping_sub(1), 4); if position.wrapping_add(16) >= pos_end.wrapping_sub(kMargin) { insert_length = insert_length.wrapping_add(pos_end - position); position = pos_end; } else if position > apply_random_heuristics .wrapping_add((4usize).wrapping_mul(random_heuristics_window_size)) { hasher.Store4Vec4(ringbuffer, ringbuffer_mask, position); insert_length = insert_length.wrapping_add(16); position = position.wrapping_add(16); } else { hasher.StoreEvenVec4(ringbuffer, ringbuffer_mask, position); insert_length = insert_length.wrapping_add(8); position = position.wrapping_add(8); } } } } insert_length = insert_length.wrapping_add(pos_end.wrapping_sub(position)); *last_insert_len = insert_length; *num_commands = num_commands.wrapping_add(new_commands_count); } pub fn BrotliCreateBackwardReferences< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, >( alloc: &mut Alloc, dictionary: &BrotliDictionary, num_bytes: usize, position: usize, ringbuffer: &[u8], ringbuffer_mask: usize, params: &BrotliEncoderParams, hasher_union: &mut UnionHasher, dist_cache: &mut [i32], last_insert_len: &mut usize, commands: &mut [Command], num_commands: &mut usize, num_literals: &mut usize, ) { match (hasher_union) { &mut UnionHasher::Uninit => panic!("working with uninitialized hash map"), &mut UnionHasher::H10(ref mut hasher) => { if params.quality >= 11 { super::backward_references_hq::BrotliCreateHqZopfliBackwardReferences( alloc, if params.use_dictionary { Some(dictionary) } else { None }, num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ) } else { super::backward_references_hq::BrotliCreateZopfliBackwardReferences( alloc, if params.use_dictionary { Some(dictionary) } else { None }, num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ) } } &mut UnionHasher::H2(ref mut hasher) => CreateBackwardReferences( if params.use_dictionary { Some(dictionary) } else { None }, &kStaticDictionaryHash[..], num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ), &mut UnionHasher::H3(ref mut hasher) => CreateBackwardReferences( if params.use_dictionary { Some(dictionary) } else { None }, &kStaticDictionaryHash[..], num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ), &mut UnionHasher::H4(ref mut hasher) => CreateBackwardReferences( if params.use_dictionary { Some(dictionary) } else { None }, &kStaticDictionaryHash[..], num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ), &mut UnionHasher::H5(ref mut hasher) => CreateBackwardReferences( if params.use_dictionary { Some(dictionary) } else { None }, &kStaticDictionaryHash[..], num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ), &mut UnionHasher::H5q7(ref mut hasher) => CreateBackwardReferences( if params.use_dictionary { Some(dictionary) } else { None }, &kStaticDictionaryHash[..], num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ), &mut UnionHasher::H5q5(ref mut hasher) => CreateBackwardReferences( if params.use_dictionary { Some(dictionary) } else { None }, &kStaticDictionaryHash[..], num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ), &mut UnionHasher::H6(ref mut hasher) => CreateBackwardReferences( if params.use_dictionary { Some(dictionary) } else { None }, &kStaticDictionaryHash[..], num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ), &mut UnionHasher::H9(ref mut hasher) => CreateBackwardReferences( if params.use_dictionary { Some(dictionary) } else { None }, &kStaticDictionaryHash[..], num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ), &mut UnionHasher::H54(ref mut hasher) => CreateBackwardReferences( if params.use_dictionary { Some(dictionary) } else { None }, &kStaticDictionaryHash[..], num_bytes, position, ringbuffer, ringbuffer_mask, params, hasher, dist_cache, last_insert_len, commands, num_commands, num_literals, ), } } brotli-6.0.0/src/enc/backward_references/test.rs000075500000000000000000000246411046102023000177740ustar 00000000000000#![cfg(feature = "std")] #![cfg(test)] use super::{ AdvHasher, AnyHasher, BrotliHasherParams, CloneWithAlloc, H5Sub, H9Opts, HQ7Sub, Struct1, }; use alloc_stdlib::StandardAlloc; use enc::{Allocator, SliceWrapper}; static RANDOM_THEN_UNICODE: &[u8] = include_bytes!("../../../testdata/random_then_unicode"); //&[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]; #[cfg(feature = "std")] #[test] fn test_bulk_store_range() { let params_hasher = BrotliHasherParams { type_: 5, block_bits: 6, bucket_bits: 15, num_last_distances_to_check: 10, hash_len: 4, literal_byte_score: 540, }; let block_size = 1u64 << params_hasher.block_bits; let bucket_size = 1u64 << params_hasher.bucket_bits; let mut alloc = StandardAlloc::default(); let mut buckets = >::alloc_cell( &mut alloc, (bucket_size * block_size) as usize, ); let mut num = >::alloc_cell(&mut alloc, bucket_size as usize); let mut hasher_a = AdvHasher:: { buckets, h9_opts: H9Opts::new(¶ms_hasher), num, GetHasherCommon: Struct1 { params: params_hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: H5Sub { hash_shift_: 32i32 - params_hasher.bucket_bits, bucket_size_: bucket_size as u32, block_bits_: params_hasher.block_bits, block_mask_: block_size.wrapping_sub(1) as u32, }, }; buckets = >::alloc_cell( &mut alloc, (bucket_size * block_size) as usize, ); num = >::alloc_cell(&mut alloc, bucket_size as usize); let mut hasher_b = hasher_a.clone_with_alloc(&mut alloc); assert!(hasher_a == hasher_b); let mut hasher_e = hasher_a.clone_with_alloc(&mut alloc); let mut hasher_c = AdvHasher:: { buckets, h9_opts: H9Opts::new(¶ms_hasher), num, GetHasherCommon: Struct1 { params: params_hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: HQ7Sub {}, }; let mut hasher_d = hasher_c.clone_with_alloc(&mut alloc); assert!(hasher_d == hasher_c); hasher_a.BulkStoreRange( RANDOM_THEN_UNICODE, !0usize, 15, RANDOM_THEN_UNICODE.len() - 8, ); hasher_c.BulkStoreRange( RANDOM_THEN_UNICODE, !0usize, 15, RANDOM_THEN_UNICODE.len() - 8, ); for i in 15..RANDOM_THEN_UNICODE.len() - 8 { hasher_b.Store(RANDOM_THEN_UNICODE, !0usize, i); } hasher_d.StoreRange( RANDOM_THEN_UNICODE, !0usize, 15, RANDOM_THEN_UNICODE.len() - 8, ); let ret_start = hasher_e.StoreRangeOptBatch(RANDOM_THEN_UNICODE, !0, 15, RANDOM_THEN_UNICODE.len() - 8); assert!(ret_start > 15); hasher_e.BulkStoreRange( RANDOM_THEN_UNICODE, !0, ret_start, RANDOM_THEN_UNICODE.len() - 8, ); assert_eq!(hasher_a.buckets.slice(), hasher_c.buckets.slice()); assert_eq!(hasher_b.buckets.slice(), hasher_d.buckets.slice()); assert_eq!(hasher_a.num.slice(), hasher_c.num.slice()); assert_eq!(hasher_b.num.slice(), hasher_d.num.slice()); assert_eq!(hasher_a.buckets.slice(), hasher_b.buckets.slice()); assert_eq!(hasher_c.buckets.slice(), hasher_d.buckets.slice()); assert_eq!(hasher_a.num.slice(), hasher_b.num.slice()); assert_eq!(hasher_c.num.slice(), hasher_d.num.slice()); assert!(hasher_a == hasher_b); assert!(hasher_d == hasher_c); assert!(hasher_a == hasher_e); } #[cfg(feature = "std")] #[test] // does not use the fancy optimizations for q7 fn test_bulk_store_range_off_spec() { let params_hasher = BrotliHasherParams { type_: 5, block_bits: 6, bucket_bits: 15, num_last_distances_to_check: 10, hash_len: 4, literal_byte_score: 540, }; let block_size = 1u64 << params_hasher.block_bits; let bucket_size = 1u64 << params_hasher.bucket_bits; let mut alloc = StandardAlloc::default(); let mut buckets = >::alloc_cell( &mut alloc, (bucket_size * block_size) as usize, ); let mut num = >::alloc_cell(&mut alloc, bucket_size as usize); let mut hasher_a = AdvHasher:: { buckets, h9_opts: H9Opts::new(¶ms_hasher), num, GetHasherCommon: Struct1 { params: params_hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: H5Sub { hash_shift_: 32i32 - params_hasher.bucket_bits, bucket_size_: bucket_size as u32, block_bits_: params_hasher.block_bits, block_mask_: block_size.wrapping_sub(1) as u32, }, }; buckets = >::alloc_cell( &mut alloc, (bucket_size * block_size) as usize, ); num = >::alloc_cell(&mut alloc, bucket_size as usize); let mut hasher_b = hasher_a.clone_with_alloc(&mut alloc); assert!(hasher_a == hasher_b); let mut hasher_c = AdvHasher:: { buckets, h9_opts: H9Opts::new(¶ms_hasher), num, GetHasherCommon: Struct1 { params: params_hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: HQ7Sub {}, }; let mut hasher_d = hasher_c.clone_with_alloc(&mut alloc); assert!(hasher_d == hasher_c); hasher_a.BulkStoreRange( RANDOM_THEN_UNICODE, 0x0fff, 15, RANDOM_THEN_UNICODE.len() - 8, ); hasher_c.BulkStoreRange( RANDOM_THEN_UNICODE, 0x0fff, 15, RANDOM_THEN_UNICODE.len() - 8, ); hasher_c.BulkStoreRange( RANDOM_THEN_UNICODE, 0x0fff, RANDOM_THEN_UNICODE.len(), RANDOM_THEN_UNICODE.len() - 8, ); // noop for i in 15..RANDOM_THEN_UNICODE.len() - 8 { hasher_b.Store(RANDOM_THEN_UNICODE, 0x0fff, i); hasher_d.Store(RANDOM_THEN_UNICODE, 0x0fff, i); } assert_eq!(hasher_a.buckets.slice(), hasher_c.buckets.slice()); assert_eq!(hasher_b.buckets.slice(), hasher_d.buckets.slice()); assert_eq!(hasher_a.num.slice(), hasher_c.num.slice()); assert_eq!(hasher_b.num.slice(), hasher_d.num.slice()); assert!(hasher_a == hasher_b); assert!(hasher_d == hasher_c); } #[cfg(feature = "std")] #[test] fn test_bulk_store_range_pow2() { let params_hasher = BrotliHasherParams { type_: 5, block_bits: 6, bucket_bits: 15, num_last_distances_to_check: 10, hash_len: 4, literal_byte_score: 540, }; let block_size = 1u64 << params_hasher.block_bits; let bucket_size = 1u64 << params_hasher.bucket_bits; let mut alloc = StandardAlloc::default(); let mut buckets = >::alloc_cell( &mut alloc, (bucket_size * block_size) as usize, ); let mut num = >::alloc_cell(&mut alloc, bucket_size as usize); let mut hasher_a = AdvHasher:: { buckets, h9_opts: H9Opts::new(¶ms_hasher), num, GetHasherCommon: Struct1 { params: params_hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: H5Sub { hash_shift_: 32i32 - params_hasher.bucket_bits, bucket_size_: bucket_size as u32, block_bits_: params_hasher.block_bits, block_mask_: block_size.wrapping_sub(1) as u32, }, }; buckets = >::alloc_cell( &mut alloc, (bucket_size * block_size) as usize, ); num = >::alloc_cell(&mut alloc, bucket_size as usize); let mut hasher_b = hasher_a.clone_with_alloc(&mut alloc); assert!(hasher_a == hasher_b); let mut hasher_e = hasher_a.clone_with_alloc(&mut alloc); let mut hasher_c = AdvHasher:: { buckets, h9_opts: H9Opts::new(¶ms_hasher), num, GetHasherCommon: Struct1 { params: params_hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: HQ7Sub {}, }; let mut hasher_d = hasher_c.clone_with_alloc(&mut alloc); assert!(hasher_d == hasher_c); hasher_a.BulkStoreRange( RANDOM_THEN_UNICODE, !0usize, RANDOM_THEN_UNICODE.len() - 64 - 3, RANDOM_THEN_UNICODE.len() - 3, ); hasher_c.BulkStoreRange( RANDOM_THEN_UNICODE, !0usize, RANDOM_THEN_UNICODE.len() - 64 - 3, RANDOM_THEN_UNICODE.len() - 3, ); for i in RANDOM_THEN_UNICODE.len() - 64 - 3..RANDOM_THEN_UNICODE.len() - 3 { hasher_b.Store(RANDOM_THEN_UNICODE, !0usize, i); } hasher_d.StoreRange( RANDOM_THEN_UNICODE, !0usize, RANDOM_THEN_UNICODE.len() - 64 - 3, RANDOM_THEN_UNICODE.len() - 3, ); let ret_start = hasher_e.StoreRangeOptBatch( RANDOM_THEN_UNICODE, !0, RANDOM_THEN_UNICODE.len() - 64 - 3, RANDOM_THEN_UNICODE.len() - 3, ); assert!(ret_start > 15); hasher_e.BulkStoreRange( RANDOM_THEN_UNICODE, !0, ret_start, RANDOM_THEN_UNICODE.len() - 3, ); assert_eq!(hasher_a.buckets.slice(), hasher_c.buckets.slice()); assert_eq!(hasher_b.buckets.slice(), hasher_d.buckets.slice()); assert_eq!(hasher_a.num.slice(), hasher_c.num.slice()); assert_eq!(hasher_b.num.slice(), hasher_d.num.slice()); assert_eq!(hasher_a.buckets.slice(), hasher_b.buckets.slice()); assert_eq!(hasher_c.buckets.slice(), hasher_d.buckets.slice()); assert_eq!(hasher_a.num.slice(), hasher_b.num.slice()); assert_eq!(hasher_c.num.slice(), hasher_d.num.slice()); assert!(hasher_a == hasher_b); assert!(hasher_d == hasher_c); assert!(hasher_a == hasher_e); } brotli-6.0.0/src/enc/bit_cost.rs000075500000000000000000000216631046102023000146450ustar 00000000000000#![allow(dead_code)] use super::super::alloc::SliceWrapper; use super::histogram::CostAccessors; use core::cmp::{max, min}; use super::util::{FastLog2, FastLog2u16}; use super::vectorization::Mem256i; static kCopyBase: [u32; 24] = [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 18, 22, 30, 38, 54, 70, 102, 134, 198, 326, 582, 1094, 2118, ]; static kCopyExtra: [u32; 24] = [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 24, ]; static kBrotliMinWindowBits: i32 = 10i32; static kBrotliMaxWindowBits: i32 = 24i32; pub fn ShannonEntropy( mut population: &[u32], size: usize, total: &mut usize, ) -> super::util::floatX { let mut sum: usize = 0usize; let mut retval: super::util::floatX = 0i32 as super::util::floatX; let mut p: usize; if size & 1 != 0 && !population.is_empty() { p = population[0] as usize; population = population.split_at(1).1; sum = sum.wrapping_add(p); retval -= p as super::util::floatX * FastLog2u16(p as u16); } for pop_iter in population.split_at((size >> 1) << 1).0 { p = *pop_iter as usize; sum = sum.wrapping_add(p); retval -= p as super::util::floatX * FastLog2u16(p as u16); } if sum != 0 { retval += sum as super::util::floatX * FastLog2(sum as u64); // not sure it's 16 bit } *total = sum; retval } #[inline(always)] pub fn BitsEntropy(population: &[u32], size: usize) -> super::util::floatX { let mut sum: usize = 0; let mut retval: super::util::floatX = ShannonEntropy(population, size, &mut sum); if retval < sum as super::util::floatX { retval = sum as super::util::floatX; } retval } const BROTLI_REPEAT_ZERO_CODE_LENGTH: usize = 17; const BROTLI_CODE_LENGTH_CODES: usize = BROTLI_REPEAT_ZERO_CODE_LENGTH + 1; /* use std::io::{self, Error, ErrorKind, Read, Write}; macro_rules! println_stderr( ($($val:tt)*) => { { writeln!(&mut ::std::io::stderr(), $($val)*).unwrap(); } } ); */ #[cfg(feature = "vector_scratch_space")] const vectorize_population_cost: bool = true; #[cfg(not(feature = "vector_scratch_space"))] const vectorize_population_cost: bool = false; #[allow(clippy::excessive_precision)] fn CostComputation>( depth_histo: &mut [u32; BROTLI_CODE_LENGTH_CODES], nnz_data: &T, nnz: usize, _total_count: super::util::floatX, log2total: super::util::floatX, ) -> super::util::floatX { let mut bits: super::util::floatX = 0.0 as super::util::floatX; let mut max_depth: usize = 1; for i in 0..nnz { // Compute -log2(P(symbol)) = -log2(count(symbol)/total_count) = // = log2(total_count) - log2(count(symbol)) let element = nnz_data.slice()[i >> 3][i & 7]; let log2p = log2total - FastLog2u16(element as u16); // Approximate the bit depth by round(-log2(P(symbol))) let depth = min((log2p + 0.5) as u8, 15u8); bits += element as super::util::floatX * log2p; if (depth as usize > max_depth) { max_depth = depth as usize; } depth_histo[depth as usize] += 1; } // Add the estimated encoding cost of the code length code histogram. bits += (18 + 2 * max_depth) as super::util::floatX; // Add the entropy of the code length code histogram. bits += BitsEntropy(depth_histo, BROTLI_CODE_LENGTH_CODES); //println_stderr!("{:?} {:?}", &depth_histo[..], bits); bits } use alloc::SliceWrapperMut; pub fn BrotliPopulationCost + CostAccessors>( histogram: &HistogramType, nnz_data: &mut HistogramType::i32vec, ) -> super::util::floatX { static kOneSymbolHistogramCost: super::util::floatX = 12i32 as super::util::floatX; static kTwoSymbolHistogramCost: super::util::floatX = 20i32 as super::util::floatX; static kThreeSymbolHistogramCost: super::util::floatX = 28i32 as super::util::floatX; static kFourSymbolHistogramCost: super::util::floatX = 37i32 as super::util::floatX; let data_size: usize = histogram.slice().len(); let mut count: i32 = 0i32; let mut s: [usize; 5] = [0; 5]; let mut bits: super::util::floatX = 0.0 as super::util::floatX; let mut i: usize; if histogram.total_count() == 0usize { return kOneSymbolHistogramCost; } i = 0usize; 'break1: while i < data_size { { if histogram.slice()[i] > 0u32 { s[count as usize] = i; count += 1; if count > 4i32 { break 'break1; } } } i = i.wrapping_add(1); } if count == 1i32 { return kOneSymbolHistogramCost; } if count == 2i32 { return kTwoSymbolHistogramCost + histogram.total_count() as super::util::floatX; } if count == 3i32 { let histo0: u32 = histogram.slice()[s[0]]; let histo1: u32 = histogram.slice()[s[1]]; let histo2: u32 = histogram.slice()[s[2]]; let histomax: u32 = max(histo0, max(histo1, histo2)); return kThreeSymbolHistogramCost + (2u32).wrapping_mul(histo0.wrapping_add(histo1).wrapping_add(histo2)) as super::util::floatX - histomax as super::util::floatX; } if count == 4i32 { let mut histo: [u32; 4] = [0; 4]; for i in 0usize..4usize { histo[i] = histogram.slice()[s[i]]; } for i in 0..4 { for j in i + 1..4 { if histo[j] > histo[i] { histo.swap(j, i); } } } let h23: u32 = histo[2].wrapping_add(histo[3]); let histomax: u32 = max(h23, histo[0]); return kFourSymbolHistogramCost + (3u32).wrapping_mul(h23) as super::util::floatX + (2u32).wrapping_mul(histo[0].wrapping_add(histo[1])) as super::util::floatX - histomax as super::util::floatX; } if vectorize_population_cost { // vectorization failed: it's faster to do things inline than split into two loops let mut nnz: usize = 0; let mut depth_histo = [0u32; 18]; let total_count = histogram.total_count() as super::util::floatX; let log2total = FastLog2(histogram.total_count() as u64); i = 0usize; while i < data_size { if histogram.slice()[i] > 0u32 { let nnz_val = &mut nnz_data.slice_mut()[nnz >> 3]; nnz_val[nnz & 7] = histogram.slice()[i] as i32; i += 1; nnz += 1; } else { let mut reps: u32 = 1; for hd in histogram.slice()[i + 1..data_size].iter() { if *hd != 0 { break; } reps += 1 } i += reps as usize; if i == data_size { break; } if reps < 3 { depth_histo[0] += reps } else { reps -= 2; let mut depth_histo_adds: u32 = 0; while reps > 0u32 { depth_histo_adds += 1; bits += 3i32 as super::util::floatX; reps >>= 3i32; } depth_histo[BROTLI_REPEAT_ZERO_CODE_LENGTH] += depth_histo_adds; } } } bits += CostComputation(&mut depth_histo, nnz_data, nnz, total_count, log2total); } else { let mut max_depth: usize = 1; let mut depth_histo = [0u32; 18]; let log2total: super::util::floatX = FastLog2(histogram.total_count() as u64); // 64 bit here let mut reps: u32 = 0; for histo in histogram.slice()[..data_size].iter() { if *histo != 0 { if reps != 0 { if reps < 3 { depth_histo[0] += reps; } else { reps -= 2; while reps > 0u32 { depth_histo[17] += 1; bits += 3 as super::util::floatX; reps >>= 3; } } reps = 0; } let log2p: super::util::floatX = log2total - FastLog2u16(*histo as u16); let mut depth: usize = (log2p + 0.5 as super::util::floatX) as usize; bits += *histo as super::util::floatX * log2p; depth = min(depth, 15); max_depth = max(depth, max_depth); depth_histo[depth] += 1; } else { reps += 1; } } bits += (18usize).wrapping_add((2usize).wrapping_mul(max_depth)) as super::util::floatX; bits += BitsEntropy(&depth_histo[..], 18usize); } bits } /* fn HistogramDataSizeCommand() -> usize { 704usize }*/ /* fn HistogramDataSizeDistance() -> usize { 520usize } */ brotli-6.0.0/src/enc/block_split.rs000075500000000000000000000024271046102023000153410ustar 00000000000000#![allow(dead_code)] use super::super::alloc::Allocator; use super::super::alloc::SliceWrapper; pub struct BlockSplit + alloc::Allocator> { pub num_types: usize, pub num_blocks: usize, pub types: >::AllocatedMemory, pub lengths: >::AllocatedMemory, } impl + alloc::Allocator> Default for BlockSplit { fn default() -> Self { Self { num_types: 0, num_blocks: 0, types: >::AllocatedMemory::default(), lengths: >::AllocatedMemory::default(), } } } impl + alloc::Allocator> BlockSplit { pub fn new() -> BlockSplit { Self::default() } pub fn destroy(&mut self, m: &mut Alloc) { >::free_cell(m, core::mem::take(&mut self.types)); >::free_cell(m, core::mem::take(&mut self.lengths)); self.num_blocks = 0; self.num_types = 0; } pub fn types_alloc_size(&self) -> usize { self.types.slice().len() } pub fn lengths_alloc_size(&self) -> usize { self.lengths.slice().len() } } brotli-6.0.0/src/enc/block_splitter.rs000075500000000000000000001040321046102023000160470ustar 00000000000000#![allow(dead_code)] use super::backward_references::BrotliEncoderParams; use super::vectorization::{sum8i, v256, v256i, Mem256f}; use super::super::alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use super::bit_cost::BrotliPopulationCost; use super::block_split::BlockSplit; use super::cluster::{BrotliHistogramBitCostDistance, BrotliHistogramCombine, HistogramPair}; use super::command::Command; use super::histogram::{ ClearHistograms, CostAccessors, HistogramAddHistogram, HistogramAddItem, HistogramAddVector, HistogramClear, HistogramCommand, HistogramDistance, HistogramLiteral, }; use super::util::FastLog2; use core::cmp::{max, min}; #[cfg(feature = "simd")] use core::simd::prelude::{SimdFloat, SimdPartialOrd}; static kMaxLiteralHistograms: usize = 100usize; static kMaxCommandHistograms: usize = 50usize; static kLiteralBlockSwitchCost: super::util::floatX = 28.1 as super::util::floatX; static kCommandBlockSwitchCost: super::util::floatX = 13.5 as super::util::floatX; static kDistanceBlockSwitchCost: super::util::floatX = 14.6 as super::util::floatX; static kLiteralStrideLength: usize = 70usize; static kCommandStrideLength: usize = 40usize; static kSymbolsPerLiteralHistogram: usize = 544usize; static kSymbolsPerCommandHistogram: usize = 530usize; static kSymbolsPerDistanceHistogram: usize = 544usize; static kMinLengthForBlockSplitting: usize = 128usize; static kIterMulForRefining: usize = 2usize; static kMinItersForRefining: usize = 100usize; #[inline(always)] fn update_cost_and_signal( num_histograms32: u32, ix: usize, min_cost: super::util::floatX, block_switch_cost: super::util::floatX, cost: &mut [Mem256f], switch_signal: &mut [u8], ) { let ymm_min_cost = v256::splat(min_cost); let ymm_block_switch_cost = v256::splat(block_switch_cost); let ymm_and_mask = v256i::from([ 1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7, ]); for (index, cost_it) in cost[..((num_histograms32 as usize + 7) >> 3)] .iter_mut() .enumerate() { let mut ymm_cost = *cost_it; let costk_minus_min_cost = ymm_cost - ymm_min_cost; let ymm_cmpge: v256i = costk_minus_min_cost.simd_ge(ymm_block_switch_cost).to_int(); let ymm_bits = ymm_cmpge & ymm_and_mask; let result = sum8i(ymm_bits); //super::vectorization::sum8(ymm_bits) as u8; switch_signal[ix + index] |= result as u8; ymm_cost = costk_minus_min_cost.simd_min(ymm_block_switch_cost); *cost_it = Mem256f::from(ymm_cost); //println_stderr!("{:} ss {:} c {:?}", (index << 3) + 7, switch_signal[ix + index],*cost_it); } } fn CountLiterals(cmds: &[Command], num_commands: usize) -> usize { let mut total_length: usize = 0usize; for i in 0usize..num_commands { total_length = total_length.wrapping_add((cmds[i]).insert_len_ as usize); } total_length } fn CopyLiteralsToByteArray( cmds: &[Command], num_commands: usize, data: &[u8], offset: usize, mask: usize, literals: &mut [u8], ) { let mut pos: usize = 0usize; let mut from_pos: usize = offset & mask; for i in 0usize..num_commands { let mut insert_len: usize = (cmds[i]).insert_len_ as usize; if from_pos.wrapping_add(insert_len) > mask { let head_size: usize = mask.wrapping_add(1).wrapping_sub(from_pos); literals[pos..(pos + head_size)] .clone_from_slice(&data[from_pos..(from_pos + head_size)]); from_pos = 0usize; pos = pos.wrapping_add(head_size); insert_len = insert_len.wrapping_sub(head_size); } if insert_len > 0usize { literals[pos..(pos + insert_len)] .clone_from_slice(&data[from_pos..(from_pos + insert_len)]); pos = pos.wrapping_add(insert_len); } from_pos = from_pos .wrapping_add(insert_len) .wrapping_add(cmds[i].copy_len() as usize) & mask; } } fn MyRand(seed: &mut u32) -> u32 { *seed = seed.wrapping_mul(16807); if *seed == 0u32 { *seed = 1u32; } *seed } fn InitialEntropyCodes< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors, IntegerType: Sized + Clone, >( data: &[IntegerType], length: usize, stride: usize, num_histograms: usize, histograms: &mut [HistogramType], ) where u64: core::convert::From, { let mut seed: u32 = 7u32; let block_length: usize = length.wrapping_div(num_histograms); ClearHistograms(histograms, num_histograms); for i in 0usize..num_histograms { let mut pos: usize = length.wrapping_mul(i).wrapping_div(num_histograms); if i != 0usize { pos = pos.wrapping_add((MyRand(&mut seed) as usize).wrapping_rem(block_length)); } if pos.wrapping_add(stride) >= length { pos = length.wrapping_sub(stride).wrapping_sub(1); } HistogramAddVector(&mut histograms[i], &data[pos..], stride); } } fn RandomSample< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors, IntegerType: Sized + Clone, >( seed: &mut u32, data: &[IntegerType], length: usize, mut stride: usize, sample: &mut HistogramType, ) where u64: core::convert::From, { let pos: usize; if stride >= length { pos = 0usize; stride = length; } else { pos = (MyRand(seed) as usize).wrapping_rem(length.wrapping_sub(stride).wrapping_add(1)); } HistogramAddVector(sample, &data[pos..], stride); } fn RefineEntropyCodes< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors + core::default::Default, IntegerType: Sized + Clone, >( data: &[IntegerType], length: usize, stride: usize, num_histograms: usize, histograms: &mut [HistogramType], ) where u64: core::convert::From, { let mut iters: usize = kIterMulForRefining .wrapping_mul(length) .wrapping_div(stride) .wrapping_add(kMinItersForRefining); let mut seed: u32 = 7u32; iters = iters .wrapping_add(num_histograms) .wrapping_sub(1) .wrapping_div(num_histograms) .wrapping_mul(num_histograms); for iter in 0usize..iters { let mut sample = HistogramType::default(); HistogramClear(&mut sample); RandomSample(&mut seed, data, length, stride, &mut sample); HistogramAddHistogram( &mut histograms[iter.wrapping_rem(num_histograms)], &mut sample, ); } } fn BitCost(count: usize) -> super::util::floatX { if count == 0usize { -2.0 as super::util::floatX } else { FastLog2(count as u64) } } fn FindBlocks< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors, IntegerType: Sized + Clone, >( data: &[IntegerType], length: usize, block_switch_bitcost: super::util::floatX, num_histograms: usize, histograms: &[HistogramType], insert_cost: &mut [super::util::floatX], cost: &mut [Mem256f], switch_signal: &mut [u8], block_id: &mut [u8], ) -> usize where u64: core::convert::From, { if num_histograms == 0 { return 0; } let data_size: usize = histograms[0].slice().len(); let bitmaplen: usize = num_histograms.wrapping_add(7) >> 3; let mut num_blocks: usize = 1; let mut i: usize; if num_histograms <= 1 { for i in 0usize..length { block_id[i] = 0u8; } return 1; } for item in insert_cost[..(data_size * num_histograms)].iter_mut() { *item = 0.0 as super::util::floatX; } for i in 0usize..num_histograms { insert_cost[i] = FastLog2((histograms[i]).total_count() as u32 as (u64)); } i = data_size; while i != 0usize { i = i.wrapping_sub(1); for j in 0usize..num_histograms { insert_cost[i.wrapping_mul(num_histograms).wrapping_add(j)] = insert_cost[j] - BitCost((histograms[j]).slice()[i] as usize); } } for item in cost.iter_mut() { *item = Mem256f::default(); } for item in switch_signal[..(length * bitmaplen)].iter_mut() { *item = 0; } for (byte_ix, data_byte_ix) in data[..length].iter().enumerate() { let block_id_ptr = &mut block_id[byte_ix]; let ix: usize = byte_ix.wrapping_mul(bitmaplen); let insert_cost_ix: usize = u64::from(data_byte_ix.clone()).wrapping_mul(num_histograms as u64) as usize; let mut min_cost: super::util::floatX = 1e38 as super::util::floatX; let mut block_switch_cost: super::util::floatX = block_switch_bitcost; // main (vectorized) loop let insert_cost_slice = insert_cost.split_at(insert_cost_ix).1; for (v_index, cost_iter) in cost .split_at_mut(num_histograms >> 3) .0 .iter_mut() .enumerate() { let base_index = v_index << 3; let mut local_insert_cost = [0.0 as super::util::floatX; 8]; local_insert_cost .clone_from_slice(insert_cost_slice.split_at(base_index).1.split_at(8).0); for sub_index in 0usize..8usize { cost_iter[sub_index] += local_insert_cost[sub_index]; let final_cost = cost_iter[sub_index]; if final_cost < min_cost { min_cost = final_cost; *block_id_ptr = (base_index + sub_index) as u8; } } } let vectorized_offset = ((num_histograms >> 3) << 3); let mut k = vectorized_offset; //remainder loop for for insert_cost_iter in insert_cost .split_at(insert_cost_ix + vectorized_offset) .1 .split_at(num_histograms & 7) .0 .iter() { let cost_iter = &mut cost[(k >> 3)]; cost_iter[k & 7] += *insert_cost_iter; if cost_iter[k & 7] < min_cost { min_cost = cost_iter[k & 7]; *block_id_ptr = k as u8; } k += 1; } if byte_ix < 2000usize { block_switch_cost *= (0.77 as super::util::floatX + 0.07 as super::util::floatX * byte_ix as (super::util::floatX) / 2000i32 as (super::util::floatX)); } update_cost_and_signal( num_histograms as u32, ix, min_cost, block_switch_cost, cost, switch_signal, ); } { let mut byte_ix: usize = length.wrapping_sub(1); let mut ix: usize = byte_ix.wrapping_mul(bitmaplen); let mut cur_id: u8 = block_id[byte_ix]; while byte_ix > 0usize { let mask: u8 = (1u32 << (cur_id as i32 & 7i32)) as u8; byte_ix -= 1; ix = ix.wrapping_sub(bitmaplen); if switch_signal[ix.wrapping_add((cur_id as i32 >> 3) as usize)] as i32 & mask as i32 != 0 && cur_id as i32 != block_id[byte_ix] as i32 { cur_id = block_id[byte_ix]; num_blocks = num_blocks.wrapping_add(1); } block_id[byte_ix] = cur_id; } } num_blocks } fn RemapBlockIds( block_ids: &mut [u8], length: usize, new_id: &mut [u16], num_histograms: usize, ) -> usize { static kInvalidId: u16 = 256u16; let mut next_id: u16 = 0u16; for i in 0usize..num_histograms { new_id[i] = kInvalidId; } for i in 0usize..length { if new_id[(block_ids[i] as usize)] as i32 == kInvalidId as i32 { new_id[(block_ids[i] as usize)] = { let _old = next_id; next_id = (next_id as i32 + 1) as u16; _old }; } } for i in 0usize..length { block_ids[i] = new_id[(block_ids[i] as usize)] as u8; } next_id as usize } fn BuildBlockHistograms< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors, IntegerType: Sized + Clone, >( data: &[IntegerType], length: usize, block_ids: &[u8], num_histograms: usize, histograms: &mut [HistogramType], ) where u64: core::convert::From, { ClearHistograms(histograms, num_histograms); for i in 0usize..length { HistogramAddItem( &mut histograms[(block_ids[i] as usize)], u64::from(data[i].clone()) as usize, ); } } fn ClusterBlocks< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors + core::default::Default + Clone, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, IntegerType: Sized + Clone, >( alloc: &mut Alloc, data: &[IntegerType], length: usize, num_blocks: usize, scratch_space: &mut HistogramType::i32vec, block_ids: &mut [u8], split: &mut BlockSplit, ) where u64: core::convert::From, { let mut histogram_symbols = >::alloc_cell(alloc, num_blocks); let mut block_lengths = >::alloc_cell(alloc, num_blocks); let expected_num_clusters: usize = (16usize) .wrapping_mul(num_blocks.wrapping_add(64).wrapping_sub(1)) .wrapping_div(64); let mut all_histograms_size: usize = 0usize; let mut all_histograms_capacity: usize = expected_num_clusters; let mut all_histograms = >::alloc_cell(alloc, all_histograms_capacity); let mut cluster_size_size: usize = 0usize; let mut cluster_size_capacity: usize = expected_num_clusters; let mut cluster_size = >::alloc_cell(alloc, cluster_size_capacity); let mut num_clusters: usize = 0usize; let mut histograms = >::alloc_cell(alloc, min(num_blocks, 64)); let mut max_num_pairs: usize = (64i32 * 64i32 / 2i32) as usize; let pairs_capacity: usize = max_num_pairs.wrapping_add(1); let mut pairs = >::alloc_cell(alloc, pairs_capacity); let mut pos: usize = 0usize; let mut clusters: >::AllocatedMemory; static kInvalidIndex: u32 = !(0u32); let mut i: usize; let mut sizes: [u32; 64] = [0; 64]; let mut new_clusters: [u32; 64] = [0; 64]; let mut symbols: [u32; 64] = [0; 64]; let mut remap: [u32; 64] = [0; 64]; { let mut block_idx: usize = 0usize; i = 0usize; while i < length { { { let _rhs = 1; let _lhs = &mut block_lengths.slice_mut()[block_idx]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } if i.wrapping_add(1) == length || block_ids[i] as i32 != block_ids[i.wrapping_add(1)] as i32 { block_idx = block_idx.wrapping_add(1); } } i = i.wrapping_add(1); } } i = 0usize; while i < num_blocks { { let num_to_combine: usize = min(num_blocks.wrapping_sub(i), 64); for j in 0usize..num_to_combine { HistogramClear(&mut histograms.slice_mut()[j]); for _k in 0usize..block_lengths.slice()[i.wrapping_add(j)] as usize { HistogramAddItem( &mut histograms.slice_mut()[j], u64::from(data[pos].clone()) as usize, ); pos = pos.wrapping_add(1); } let new_cost = BrotliPopulationCost(&histograms.slice()[j], scratch_space); (histograms.slice_mut()[j]).set_bit_cost(new_cost); new_clusters[j] = j as u32; symbols[j] = j as u32; sizes[j] = 1u32; } let num_new_clusters: usize = BrotliHistogramCombine( histograms.slice_mut(), &mut sizes[..], &mut symbols[..], &mut new_clusters[..], pairs.slice_mut(), num_to_combine, num_to_combine, 64usize, max_num_pairs, scratch_space, ); { if all_histograms_capacity < all_histograms_size.wrapping_add(num_new_clusters) { let mut _new_size: usize = if all_histograms_capacity == 0usize { all_histograms_size.wrapping_add(num_new_clusters) } else { all_histograms_capacity }; while _new_size < all_histograms_size.wrapping_add(num_new_clusters) { _new_size = _new_size.wrapping_mul(2); } let mut new_array = >::alloc_cell(alloc, _new_size); new_array.slice_mut()[..all_histograms_capacity] .clone_from_slice(&all_histograms.slice()[..all_histograms_capacity]); >::free_cell( alloc, core::mem::replace(&mut all_histograms, new_array), ); all_histograms_capacity = _new_size; } } { if cluster_size_capacity < cluster_size_size.wrapping_add(num_new_clusters) { let mut _new_size: usize = if cluster_size_capacity == 0usize { cluster_size_size.wrapping_add(num_new_clusters) } else { cluster_size_capacity }; while _new_size < cluster_size_size.wrapping_add(num_new_clusters) { _new_size = _new_size.wrapping_mul(2); } let mut new_array = >::alloc_cell(alloc, _new_size); new_array.slice_mut()[..cluster_size_capacity] .clone_from_slice(&cluster_size.slice()[..cluster_size_capacity]); >::free_cell( alloc, core::mem::replace(&mut cluster_size, new_array), ); cluster_size_capacity = _new_size; } } for j in 0usize..num_new_clusters { all_histograms.slice_mut()[all_histograms_size] = histograms.slice()[new_clusters[j] as usize].clone(); all_histograms_size = all_histograms_size.wrapping_add(1); cluster_size.slice_mut()[cluster_size_size] = sizes[new_clusters[j] as usize]; cluster_size_size = cluster_size_size.wrapping_add(1); remap[new_clusters[j] as usize] = j as u32; } for j in 0usize..num_to_combine { histogram_symbols.slice_mut()[i.wrapping_add(j)] = (num_clusters as u32).wrapping_add(remap[symbols[j] as usize]); } num_clusters = num_clusters.wrapping_add(num_new_clusters); } i = i.wrapping_add(64); } >::free_cell(alloc, core::mem::take(&mut histograms)); max_num_pairs = min( (64usize).wrapping_mul(num_clusters), num_clusters.wrapping_div(2).wrapping_mul(num_clusters), ); if pairs_capacity < max_num_pairs.wrapping_add(1) { let new_cell = >::alloc_cell(alloc, max_num_pairs.wrapping_add(1)); >::free_cell( alloc, core::mem::replace(&mut pairs, new_cell), ); } clusters = >::alloc_cell(alloc, num_clusters); i = 0usize; for item in clusters.slice_mut()[..num_clusters].iter_mut() { *item = i as u32; i = i.wrapping_add(1); } let num_final_clusters: usize = BrotliHistogramCombine( all_histograms.slice_mut(), cluster_size.slice_mut(), histogram_symbols.slice_mut(), clusters.slice_mut(), pairs.slice_mut(), num_clusters, num_blocks, 256usize, max_num_pairs, scratch_space, ); >::free_cell(alloc, core::mem::take(&mut pairs)); >::free_cell(alloc, core::mem::take(&mut cluster_size)); let mut new_index = >::alloc_cell(alloc, num_clusters); for item in new_index.slice_mut().iter_mut() { *item = kInvalidIndex; } pos = 0usize; { let mut next_index: u32 = 0u32; for i in 0usize..num_blocks { let mut histo: HistogramType = HistogramType::default(); let mut best_out: u32; let mut best_bits: super::util::floatX; HistogramClear(&mut histo); for _j in 0usize..block_lengths.slice()[i] as usize { HistogramAddItem(&mut histo, u64::from(data[pos].clone()) as usize); pos = pos.wrapping_add(1); } best_out = if i == 0usize { histogram_symbols.slice()[0] } else { histogram_symbols.slice()[i.wrapping_sub(1)] }; best_bits = BrotliHistogramBitCostDistance( &mut histo, &mut all_histograms.slice_mut()[(best_out as usize)], scratch_space, ); for j in 0usize..num_final_clusters { let cur_bits: super::util::floatX = BrotliHistogramBitCostDistance( &mut histo, &mut all_histograms.slice_mut()[(clusters.slice()[j] as usize)], scratch_space, ); if cur_bits < best_bits { best_bits = cur_bits; best_out = clusters.slice()[j]; } } histogram_symbols.slice_mut()[i] = best_out; if new_index.slice()[best_out as usize] == kInvalidIndex { new_index.slice_mut()[best_out as usize] = next_index; next_index = next_index.wrapping_add(1); } } } >::free_cell(alloc, core::mem::take(&mut clusters)); >::free_cell(alloc, core::mem::take(&mut all_histograms)); { if split.types_alloc_size() < num_blocks { let mut _new_size: usize = if split.types_alloc_size() == 0usize { num_blocks } else { split.types_alloc_size() }; while _new_size < num_blocks { _new_size = _new_size.wrapping_mul(2); } let mut new_array = >::alloc_cell(alloc, _new_size); new_array.slice_mut()[..split.types_alloc_size()] .clone_from_slice(&split.types.slice()[..split.types_alloc_size()]); >::free_cell( alloc, core::mem::replace(&mut split.types, new_array), ); } } { if split.lengths_alloc_size() < num_blocks { let mut _new_size: usize = if split.lengths_alloc_size() == 0usize { num_blocks } else { split.lengths_alloc_size() }; while _new_size < num_blocks { _new_size = _new_size.wrapping_mul(2); } let mut new_array = >::alloc_cell(alloc, _new_size); new_array.slice_mut()[..split.lengths_alloc_size()] .clone_from_slice(split.lengths.slice()); >::free_cell( alloc, core::mem::replace(&mut split.lengths, new_array), ); } } { let mut cur_length: u32 = 0u32; let mut block_idx: usize = 0usize; let mut max_type: u8 = 0u8; for i in 0usize..num_blocks { cur_length = cur_length.wrapping_add(block_lengths.slice()[i]); if i.wrapping_add(1) == num_blocks || histogram_symbols.slice()[i] != histogram_symbols.slice()[i.wrapping_add(1)] { let id: u8 = new_index.slice()[(histogram_symbols.slice()[i] as usize)] as u8; split.types.slice_mut()[block_idx] = id; split.lengths.slice_mut()[block_idx] = cur_length; max_type = max(max_type, id); cur_length = 0u32; block_idx = block_idx.wrapping_add(1); } } split.num_blocks = block_idx; split.num_types = (max_type as usize).wrapping_add(1); } >::free_cell(alloc, new_index); >::free_cell(alloc, block_lengths); >::free_cell(alloc, histogram_symbols); } fn SplitByteVector< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors + core::default::Default + Clone, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, IntegerType: Sized + Clone, >( alloc: &mut Alloc, data: &[IntegerType], length: usize, literals_per_histogram: usize, max_histograms: usize, sampling_stride_length: usize, block_switch_cost: super::util::floatX, params: &BrotliEncoderParams, scratch_space: &mut HistogramType::i32vec, split: &mut BlockSplit, ) where u64: core::convert::From, { let data_size: usize = HistogramType::default().slice().len(); let mut num_histograms: usize = length.wrapping_div(literals_per_histogram).wrapping_add(1); if num_histograms > max_histograms { num_histograms = max_histograms; } if length == 0usize { split.num_types = 1; return; } else if length < kMinLengthForBlockSplitting { { if split.types_alloc_size() < split.num_blocks.wrapping_add(1) { let mut _new_size: usize = if split.types_alloc_size() == 0usize { split.num_blocks.wrapping_add(1) } else { split.types_alloc_size() }; while _new_size < split.num_blocks.wrapping_add(1) { _new_size = _new_size.wrapping_mul(2); } let mut new_array = >::alloc_cell(alloc, _new_size); new_array.slice_mut()[..split.types_alloc_size()] .clone_from_slice(&split.types.slice()[..split.types_alloc_size()]); >::free_cell( alloc, core::mem::replace(&mut split.types, new_array), ); } } { if split.lengths_alloc_size() < split.num_blocks.wrapping_add(1) { let mut _new_size: usize = if split.lengths_alloc_size() == 0usize { split.num_blocks.wrapping_add(1) } else { split.lengths_alloc_size() }; while _new_size < split.num_blocks.wrapping_add(1) { _new_size = _new_size.wrapping_mul(2); } let mut new_array = >::alloc_cell(alloc, _new_size); new_array.slice_mut()[..split.lengths_alloc_size()] .clone_from_slice(&split.lengths.slice()[..split.lengths_alloc_size()]); >::free_cell( alloc, core::mem::replace(&mut split.lengths, new_array), ); } } split.num_types = 1; split.types.slice_mut()[split.num_blocks] = 0u8; split.lengths.slice_mut()[split.num_blocks] = length as u32; split.num_blocks = split.num_blocks.wrapping_add(1); return; } let mut histograms = >::alloc_cell(alloc, num_histograms); InitialEntropyCodes( data, length, sampling_stride_length, num_histograms, histograms.slice_mut(), ); RefineEntropyCodes( data, length, sampling_stride_length, num_histograms, histograms.slice_mut(), ); { let mut block_ids = >::alloc_cell(alloc, length); let mut num_blocks: usize = 0usize; let bitmaplen: usize = num_histograms.wrapping_add(7) >> 3; let mut insert_cost = >::alloc_cell( alloc, data_size.wrapping_mul(num_histograms), ); let mut cost = >::alloc_cell(alloc, ((num_histograms + 7) >> 3)); let mut switch_signal = >::alloc_cell(alloc, length.wrapping_mul(bitmaplen)); let mut new_id = >::alloc_cell(alloc, num_histograms); let iters: usize = (if params.quality <= 11 { 3i32 } else { 10i32 }) as usize; for _i in 0usize..iters { num_blocks = FindBlocks( data, length, block_switch_cost, num_histograms, histograms.slice_mut(), insert_cost.slice_mut(), cost.slice_mut(), switch_signal.slice_mut(), block_ids.slice_mut(), ); num_histograms = RemapBlockIds( block_ids.slice_mut(), length, new_id.slice_mut(), num_histograms, ); BuildBlockHistograms( data, length, block_ids.slice(), num_histograms, histograms.slice_mut(), ); } >::free_cell(alloc, insert_cost); >::free_cell(alloc, cost); >::free_cell(alloc, switch_signal); >::free_cell(alloc, new_id); >::free_cell(alloc, histograms); ClusterBlocks::( alloc, data, length, num_blocks, scratch_space, block_ids.slice_mut(), split, ); >::free_cell(alloc, block_ids); } } pub fn BrotliSplitBlock< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, >( alloc: &mut Alloc, cmds: &[Command], num_commands: usize, data: &[u8], pos: usize, mask: usize, params: &BrotliEncoderParams, lit_scratch_space: &mut ::i32vec, cmd_scratch_space: &mut ::i32vec, dst_scratch_space: &mut ::i32vec, literal_split: &mut BlockSplit, insert_and_copy_split: &mut BlockSplit, dist_split: &mut BlockSplit, ) { { /*for (i, cmd) in cmds[..num_commands].iter().enumerate() { println_stderr!("C {:} {:} {:} {:} {:} {:}", i, cmd.insert_len_, cmd.copy_len_, cmd.dist_extra_, cmd.cmd_prefix_, cmd.dist_prefix_); }*/ let literals_count: usize = CountLiterals(cmds, num_commands); let mut literals = >::alloc_cell(alloc, literals_count); CopyLiteralsToByteArray(cmds, num_commands, data, pos, mask, literals.slice_mut()); SplitByteVector::( alloc, literals.slice(), literals_count, kSymbolsPerLiteralHistogram, kMaxLiteralHistograms, kLiteralStrideLength, kLiteralBlockSwitchCost, params, lit_scratch_space, literal_split, ); >::free_cell(alloc, literals); } { let mut insert_and_copy_codes = >::alloc_cell(alloc, num_commands); for i in 0..min(num_commands, cmds.len()) { insert_and_copy_codes.slice_mut()[i] = (cmds[i]).cmd_prefix_; } SplitByteVector::( alloc, insert_and_copy_codes.slice(), num_commands, kSymbolsPerCommandHistogram, kMaxCommandHistograms, kCommandStrideLength, kCommandBlockSwitchCost, params, cmd_scratch_space, insert_and_copy_split, ); >::free_cell(alloc, insert_and_copy_codes); } { let mut distance_prefixes = >::alloc_cell(alloc, num_commands); let mut j: usize = 0usize; for i in 0usize..num_commands { let cmd = &cmds[i]; if cmd.copy_len() != 0 && cmd.cmd_prefix_ >= 128 { distance_prefixes.slice_mut()[j] = cmd.dist_prefix_ & 0x03ff; j = j.wrapping_add(1); } } SplitByteVector::( alloc, distance_prefixes.slice(), j, kSymbolsPerDistanceHistogram, kMaxCommandHistograms, kCommandStrideLength, kDistanceBlockSwitchCost, params, dst_scratch_space, dist_split, ); >::free_cell(alloc, distance_prefixes); } } brotli-6.0.0/src/enc/brotli_bit_stream.rs000075500000000000000000003046101046102023000165370ustar 00000000000000#![allow(unknown_lints)] #![allow(dead_code)] #![allow(unused_imports)] #![allow(unused_macros)] use super::combined_alloc::BrotliAlloc; use super::prior_eval; use super::stride_eval; use super::util::floatX; use super::{s16, v8}; #[cfg(feature = "std")] use std::io::Write; use VERSION; use super::block_split::BlockSplit; use super::input_pair::{InputPair, InputReference, InputReferenceMut}; use enc::backward_references::BrotliEncoderParams; use super::super::alloc; use super::super::alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use super::super::core; use super::super::dictionary::{ kBrotliDictionary, kBrotliDictionaryOffsetsByLength, kBrotliDictionarySizeBitsByLength, }; use super::super::transform::TransformDictionaryWord; use super::command::{Command, GetCopyLengthCode, GetInsertLengthCode}; use super::constants::{ kCodeLengthBits, kCodeLengthDepth, kCopyBase, kCopyExtra, kInsBase, kInsExtra, kNonZeroRepsBits, kNonZeroRepsDepth, kSigned3BitContextLookup, kStaticCommandCodeBits, kStaticCommandCodeDepth, kStaticDistanceCodeBits, kStaticDistanceCodeDepth, kUTF8ContextLookup, kZeroRepsBits, kZeroRepsDepth, BROTLI_CONTEXT_LUT, BROTLI_NUM_BLOCK_LEN_SYMBOLS, BROTLI_NUM_COMMAND_SYMBOLS, BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS, BROTLI_NUM_LITERAL_SYMBOLS, }; use super::context_map_entropy::{speed_to_tuple, ContextMapEntropy, SpeedAndMax}; use super::entropy_encode::{ BrotliConvertBitDepthsToSymbols, BrotliCreateHuffmanTree, BrotliSetDepth, BrotliWriteHuffmanTree, HuffmanComparator, HuffmanTree, SortHuffmanTreeItems, }; use super::find_stride; use super::histogram::{ ContextType, HistogramAddItem, HistogramCommand, HistogramDistance, HistogramLiteral, }; use super::interface; use super::interface::{CommandProcessor, StaticCommand}; use super::pdf::PDF; use super::static_dict::kNumDistanceCacheEntries; use super::vectorization::Mem256f; use core::cmp::{max, min}; pub struct PrefixCodeRange { pub offset: u32, pub nbits: u32, } pub const MAX_SIMPLE_DISTANCE_ALPHABET_SIZE: usize = 140; fn window_size_from_lgwin(lgwin: i32) -> usize { (1 << lgwin) - 16usize } fn context_type_str(context_type: ContextType) -> &'static str { match context_type { ContextType::CONTEXT_LSB6 => "lsb6", ContextType::CONTEXT_MSB6 => "msb6", ContextType::CONTEXT_UTF8 => "utf8", ContextType::CONTEXT_SIGNED => "sign", } } fn prediction_mode_str( prediction_mode_nibble: interface::LiteralPredictionModeNibble, ) -> &'static str { match prediction_mode_nibble.prediction_mode() { interface::LITERAL_PREDICTION_MODE_SIGN => "sign", interface::LITERAL_PREDICTION_MODE_LSB6 => "lsb6", interface::LITERAL_PREDICTION_MODE_MSB6 => "msb6", interface::LITERAL_PREDICTION_MODE_UTF8 => "utf8", _ => "unknown", } } fn is_long_enough_to_be_random(len: usize, high_entropy_detection_quality: u8) -> bool { match high_entropy_detection_quality { 0 => false, 1 => false, 2 => len >= 128, 3 => len >= 96, 4 => len >= 64, 5 => len >= 48, 6 => len >= 32, 7 => len >= 24, 8 => len >= 16, 9 => len >= 8, 10 => len >= 4, 11 => len >= 1, _ => len >= 8, } } const COMMAND_BUFFER_SIZE: usize = 4096; struct CommandQueue<'a, Alloc: BrotliAlloc + 'a> { mb: InputPair<'a>, mb_byte_offset: usize, mc: &'a mut Alloc, queue: >::AllocatedMemory, pred_mode: interface::PredictionModeContextMap>, loc: usize, entropy_tally_scratch: find_stride::EntropyTally, best_strides_per_block_type: >::AllocatedMemory, entropy_pyramid: find_stride::EntropyPyramid, context_map_entropy: ContextMapEntropy<'a, Alloc>, stride_detection_quality: u8, high_entropy_detection_quality: u8, block_type_literal: u8, best_stride_index: usize, overfull: bool, } impl<'a, Alloc: BrotliAlloc> CommandQueue<'a, Alloc> { fn new( alloc: &'a mut Alloc, num_commands: usize, pred_mode: interface::PredictionModeContextMap>, mb: InputPair<'a>, stride_detection_quality: u8, high_entropy_detection_quality: u8, context_map_entropy: ContextMapEntropy<'a, Alloc>, best_strides: >::AllocatedMemory, entropy_tally_scratch: find_stride::EntropyTally, entropy_pyramid: find_stride::EntropyPyramid, ) -> CommandQueue<'a, Alloc> { // assume no more than 1/16 of the stream is block_types which may chop up literals // also there's the first btypel and a potential wrap around the ring buffer let queue = >::alloc_cell(alloc, num_commands * 17 / 16 + 4); CommandQueue { mc: alloc, queue, // always need a spare command in case the ring buffer splits a literal into two pred_mode, mb, mb_byte_offset: 0, loc: 0, best_strides_per_block_type: best_strides, entropy_tally_scratch, entropy_pyramid, stride_detection_quality, high_entropy_detection_quality, context_map_entropy, block_type_literal: 0, best_stride_index: 0, overfull: false, } } fn full(&self) -> bool { self.loc == self.queue.len() } fn error_if_full(&mut self) { if self.full() { self.overfull = true; } } fn size(&self) -> usize { self.loc } fn clear(&mut self) { self.loc = 0; self.block_type_literal = 0; } fn free(&mut self, callback: &mut Cb) -> Result<(), ()> where Cb: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], InputPair, &mut Alloc, ), { callback( &mut self.pred_mode, self.queue.slice_mut().split_at_mut(self.loc).0, self.mb, self.mc, ); self.clear(); self.entropy_tally_scratch.free(self.mc); self.entropy_pyramid.free(self.mc); self.context_map_entropy.free(self.mc); >::free_cell(self.mc, core::mem::take(&mut self.queue)); >::free_cell( self.mc, core::mem::take(&mut self.best_strides_per_block_type), ); if self.overfull { return Err(()); } Ok(()) } } impl<'a, Alloc: BrotliAlloc> interface::CommandProcessor<'a> for CommandQueue<'a, Alloc> { fn push(&mut self, val: interface::Command>) { if self.full() { let mut tmp = >::alloc_cell( self.mc, self.queue.slice().len() * 2, ); tmp.slice_mut() .split_at_mut(self.queue.slice().len()) .0 .clone_from_slice(self.queue.slice()); >::free_cell( self.mc, core::mem::replace(&mut self.queue, tmp), ); } if !self.full() { self.queue.slice_mut()[self.loc] = val.freeze(); self.loc += 1; } else { self.error_if_full(); } } fn push_block_switch_literal(&mut self, block_type: u8) { self.push(interface::Command::BlockSwitchLiteral( interface::LiteralBlockSwitch::new(block_type, 0), )) } } #[cfg(feature = "std")] fn warn_on_missing_free() { let _err = ::std::io::stderr() .write(b"Need to free entropy_tally_scratch before dropping CommandQueue\n"); } #[cfg(not(feature = "std"))] fn warn_on_missing_free() { // no way to warn in this case } impl<'a, Alloc: BrotliAlloc> Drop for CommandQueue<'a, Alloc> { fn drop(&mut self) { if !self.entropy_tally_scratch.is_free() { warn_on_missing_free(); } } } #[cfg(not(feature = "billing"))] fn best_singleton_speed_log(_name: &str, _data: &[SpeedAndMax; 2], _cost: &[floatX; 2]) {} #[cfg(feature = "billing")] fn best_singleton_speed_log(name: &str, data: &[SpeedAndMax; 2], cost: &[floatX; 2]) { println!( "{} hi cost: {} lo cost: {} speeds {:?} {:?}", name, cost[1], cost[0], data[1], data[0] ); } #[cfg(not(feature = "billing"))] fn best_speed_log(_name: &str, _data: &[SpeedAndMax; 2], _cost: &[floatX; 2]) {} #[cfg(feature = "billing")] fn best_speed_log(name: &str, data: &[SpeedAndMax; 2], cost: &[floatX; 2]) { for high in 0..2 { println!( "{} Speed [ inc: {}, max: {}, algo: 0 ] cost: {}", name, if high != 0 { "hi" } else { "lo" }, data[high].0, data[high].1, cost[high] ); } } fn process_command_queue<'a, CmdProcessor: interface::CommandProcessor<'a>>( command_queue: &mut CmdProcessor, input: InputPair<'a>, commands: &[Command], dist_cache: &[i32; kNumDistanceCacheEntries], mut recoder_state: RecoderState, block_type: &MetaBlockSplitRefs, params: &BrotliEncoderParams, context_type: Option, ) -> RecoderState { let mut input_iter = input; let mut local_dist_cache = [0i32; kNumDistanceCacheEntries]; local_dist_cache.clone_from_slice(&dist_cache[..]); let mut btypel_counter = 0usize; let mut btypec_counter = 0usize; let mut btyped_counter = 0usize; let mut btypel_sub = if block_type.btypel.num_types == 1 { 1u32 << 31 } else { block_type.btypel.lengths[0] }; let mut btypec_sub = if block_type.btypec.num_types == 1 { 1u32 << 31 } else { block_type.btypec.lengths[0] }; let mut btyped_sub = if block_type.btyped.num_types == 1 { 1u32 << 31 } else { block_type.btyped.lengths[0] }; { command_queue.push_block_switch_literal(0); } let mut mb_len = input.len(); for cmd in commands.iter() { let (inserts, interim) = input_iter.split_at(min(cmd.insert_len_ as usize, mb_len)); recoder_state.num_bytes_encoded += inserts.len(); let _copy_cursor = input.len() - interim.len(); // let distance_context = cmd.distance_context(); let copylen_code = cmd.copy_len_code(); let (prev_dist_index, dist_offset) = cmd.distance_index_and_offset(¶ms.dist); let final_distance: usize; if prev_dist_index == 0 { final_distance = dist_offset as usize; } else { final_distance = (local_dist_cache[prev_dist_index - 1] as isize + dist_offset) as usize; } let copy_len = copylen_code as usize; let actual_copy_len: usize; let max_distance = min( recoder_state.num_bytes_encoded, window_size_from_lgwin(params.lgwin), ); assert!(inserts.len() <= mb_len); if inserts.len() != 0 { let mut tmp_inserts = inserts; while tmp_inserts.len() > btypel_sub as usize { // we have to divide some: let (in_a, in_b) = tmp_inserts.split_at(btypel_sub as usize); if in_a.len() != 0 { if context_type.is_some() { command_queue.push_literals(&in_a); } else if params.high_entropy_detection_quality == 0 { command_queue.push_literals(&in_a); } else { command_queue.push_rand_literals(&in_a); } } mb_len -= in_a.len(); tmp_inserts = in_b; btypel_counter += 1; if block_type.btypel.types.len() > btypel_counter { btypel_sub = block_type.btypel.lengths[btypel_counter]; command_queue .push_block_switch_literal(block_type.btypel.types[btypel_counter]); } else { btypel_sub = 1u32 << 31; } } if context_type.is_some() { command_queue.push_literals(&tmp_inserts); } else if params.high_entropy_detection_quality == 0 { command_queue.push_literals(&tmp_inserts); } else { command_queue.push_rand_literals(&tmp_inserts); } if tmp_inserts.len() != 0 { mb_len -= tmp_inserts.len(); btypel_sub -= tmp_inserts.len() as u32; } } if final_distance > max_distance { // is dictionary assert!(copy_len >= 4); assert!(copy_len < 25); let dictionary_offset = final_distance - max_distance - 1; let ndbits = kBrotliDictionarySizeBitsByLength[copy_len] as usize; let action = dictionary_offset >> ndbits; let word_sub_index = dictionary_offset & ((1 << ndbits) - 1); let word_index = word_sub_index * copy_len + kBrotliDictionaryOffsetsByLength[copy_len] as usize; let raw_word = &kBrotliDictionary[word_index..word_index + copy_len]; let mut transformed_word = [0u8; 38]; actual_copy_len = TransformDictionaryWord( &mut transformed_word[..], raw_word, copy_len as i32, action as i32, ) as usize; if actual_copy_len <= mb_len { command_queue.push(interface::Command::Dict(interface::DictCommand { word_size: copy_len as u8, transform: action as u8, final_size: actual_copy_len as u8, empty: 0, word_id: word_sub_index as u32, })); mb_len -= actual_copy_len; assert_eq!( InputPair( InputReference { data: transformed_word.split_at(actual_copy_len).0, orig_offset: 0 }, InputReference::default() ), interim.split_at(actual_copy_len).0 ); } else if mb_len != 0 { // truncated dictionary word: represent it as literals instead // won't be random noise since it fits in the dictionary, so we won't check for rand command_queue.push_literals(&interim.split_at(mb_len).0); mb_len = 0; assert_eq!( InputPair( InputReference { data: transformed_word.split_at(mb_len).0, orig_offset: 0 }, InputReference::default() ), interim.split_at(mb_len).0 ); } } else { actual_copy_len = min(mb_len, copy_len); if actual_copy_len != 0 { command_queue.push(interface::Command::Copy(interface::CopyCommand { distance: final_distance as u32, num_bytes: actual_copy_len as u32, })); } mb_len -= actual_copy_len; if prev_dist_index != 1 || dist_offset != 0 { // update distance cache unless it's the "0 distance symbol" let mut tmp_dist_cache = [0i32; kNumDistanceCacheEntries - 1]; tmp_dist_cache.clone_from_slice(&local_dist_cache[..kNumDistanceCacheEntries - 1]); local_dist_cache[1..].clone_from_slice(&tmp_dist_cache[..]); local_dist_cache[0] = final_distance as i32; } } { btypec_sub -= 1; if btypec_sub == 0 { btypec_counter += 1; if block_type.btypec.types.len() > btypec_counter { btypec_sub = block_type.btypec.lengths[btypec_counter]; command_queue.push(interface::Command::BlockSwitchCommand( interface::BlockSwitch(block_type.btypec.types[btypec_counter]), )); } else { btypec_sub = 1u32 << 31; } } } if copy_len != 0 && cmd.cmd_prefix_ >= 128 { btyped_sub -= 1; if btyped_sub == 0 { btyped_counter += 1; if block_type.btyped.types.len() > btyped_counter { btyped_sub = block_type.btyped.lengths[btyped_counter]; command_queue.push(interface::Command::BlockSwitchDistance( interface::BlockSwitch(block_type.btyped.types[btyped_counter]), )); } else { btyped_sub = 1u32 << 31; } } } let (copied, remainder) = interim.split_at(actual_copy_len); recoder_state.num_bytes_encoded += copied.len(); input_iter = remainder; } recoder_state } fn LogMetaBlock<'a, Alloc: BrotliAlloc, Cb>( alloc: &mut Alloc, commands: &[Command], input0: &'a [u8], input1: &'a [u8], dist_cache: &[i32; kNumDistanceCacheEntries], recoder_state: &mut RecoderState, block_type: MetaBlockSplitRefs, params: &BrotliEncoderParams, context_type: Option, callback: &mut Cb, ) where Cb: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], InputPair, &mut Alloc, ), { let mut local_literal_context_map = [0u8; 256 * 64]; let mut local_distance_context_map = [0u8; 256 * 64 + interface::DISTANCE_CONTEXT_MAP_OFFSET]; assert_eq!( *block_type.btypel.types.iter().max().unwrap_or(&0) as u32 + 1, block_type.btypel.num_types ); assert_eq!( *block_type.btypec.types.iter().max().unwrap_or(&0) as u32 + 1, block_type.btypec.num_types ); assert_eq!( *block_type.btyped.types.iter().max().unwrap_or(&0) as u32 + 1, block_type.btyped.num_types ); if block_type.literal_context_map.len() <= 256 * 64 { for (index, item) in block_type.literal_context_map.iter().enumerate() { local_literal_context_map[index] = *item as u8; } } if block_type.distance_context_map.len() <= 256 * 64 { for (index, item) in block_type.distance_context_map.iter().enumerate() { local_distance_context_map[interface::DISTANCE_CONTEXT_MAP_OFFSET + index] = *item as u8; } } let mut prediction_mode = interface::PredictionModeContextMap:: { literal_context_map: InputReferenceMut { data: local_literal_context_map .split_at_mut(block_type.literal_context_map.len()) .0, orig_offset: 0, }, predmode_speed_and_distance_context_map: InputReferenceMut { data: local_distance_context_map .split_at_mut( interface::PredictionModeContextMap::::size_of_combined_array( block_type.distance_context_map.len(), ), ) .0, orig_offset: 0, }, }; for item in prediction_mode.get_mixing_values_mut().iter_mut() { *item = prior_eval::WhichPrior::STRIDE1 as u8; } prediction_mode .set_stride_context_speed([params.literal_adaptation[2], params.literal_adaptation[3]]); prediction_mode .set_context_map_speed([params.literal_adaptation[0], params.literal_adaptation[1]]); prediction_mode.set_combined_stride_context_speed([ params.literal_adaptation[0], params.literal_adaptation[1], ]); prediction_mode.set_literal_prediction_mode(interface::LiteralPredictionModeNibble( context_type.unwrap_or(ContextType::CONTEXT_LSB6) as u8, )); let mut entropy_tally_scratch; let mut entropy_pyramid; if params.stride_detection_quality == 1 || params.stride_detection_quality == 2 { entropy_tally_scratch = find_stride::EntropyTally::::new(alloc, None); entropy_pyramid = find_stride::EntropyPyramid::::new(alloc); entropy_pyramid.populate(input0, input1, &mut entropy_tally_scratch); } else { entropy_tally_scratch = find_stride::EntropyTally::::disabled_placeholder(alloc); entropy_pyramid = find_stride::EntropyPyramid::::disabled_placeholder(alloc); } let input = InputPair( InputReference { data: input0, orig_offset: 0, }, InputReference { data: input1, orig_offset: input0.len(), }, ); let mut best_strides = >::AllocatedMemory::default(); if params.stride_detection_quality > 2 { let mut stride_selector = stride_eval::StrideEval::::new(alloc, input, &prediction_mode, params); process_command_queue( &mut stride_selector, input, commands, dist_cache, *recoder_state, &block_type, params, context_type, ); let ntypes = stride_selector.num_types(); best_strides = >::alloc_cell(stride_selector.alloc(), ntypes); stride_selector.choose_stride(best_strides.slice_mut()); } let mut context_map_entropy = ContextMapEntropy::::new( alloc, input, entropy_pyramid.stride_last_level_range(), prediction_mode, params.cdf_adaptation_detection, ); if params.cdf_adaptation_detection != 0 { process_command_queue( &mut context_map_entropy, input, commands, dist_cache, *recoder_state, &block_type, params, context_type, ); { let (cm_speed, cm_cost) = context_map_entropy.best_singleton_speeds(true, false); let (stride_speed, stride_cost) = context_map_entropy.best_singleton_speeds(false, false); let (combined_speed, combined_cost) = context_map_entropy.best_singleton_speeds(false, true); best_singleton_speed_log("CM", &cm_speed, &cm_cost); best_singleton_speed_log("stride", &stride_speed, &stride_cost); best_singleton_speed_log("combined", &combined_speed, &combined_cost); } let cm_speed = context_map_entropy.best_speeds(true, false); let stride_speed = context_map_entropy.best_speeds(false, false); let combined_speed = context_map_entropy.best_speeds(false, true); let acost = context_map_entropy.best_speeds_costs(true, false); let bcost = context_map_entropy.best_speeds_costs(false, false); let ccost = context_map_entropy.best_speeds_costs(false, true); context_map_entropy .prediction_mode_mut() .set_stride_context_speed(speed_to_tuple(stride_speed)); context_map_entropy .prediction_mode_mut() .set_context_map_speed(speed_to_tuple(cm_speed)); context_map_entropy .prediction_mode_mut() .set_combined_stride_context_speed(speed_to_tuple(combined_speed)); best_speed_log("CM", &cm_speed, &acost); best_speed_log("Stride", &stride_speed, &bcost); best_speed_log("StrideCombined", &combined_speed, &ccost); } let mut prior_selector = prior_eval::PriorEval::::new( alloc, input, entropy_pyramid.stride_last_level_range(), context_map_entropy.take_prediction_mode(), params, ); if params.prior_bitmask_detection != 0 { process_command_queue( &mut prior_selector, input, commands, dist_cache, *recoder_state, &block_type, params, context_type, ); prior_selector.choose_bitmask(); } let prediction_mode = prior_selector.take_prediction_mode(); prior_selector.free(alloc); let mut command_queue = CommandQueue::new( alloc, commands.len(), prediction_mode, input, params.stride_detection_quality, params.high_entropy_detection_quality, context_map_entropy, best_strides, entropy_tally_scratch, entropy_pyramid, ); *recoder_state = process_command_queue( &mut command_queue, input, commands, dist_cache, *recoder_state, &block_type, params, context_type, ); command_queue.free(callback).unwrap(); // ::std::io::stderr().write(input0).unwrap(); // ::std::io::stderr().write(input1).unwrap(); } static kBlockLengthPrefixCode: [PrefixCodeRange; BROTLI_NUM_BLOCK_LEN_SYMBOLS] = [ PrefixCodeRange { offset: 1u32, nbits: 2u32, }, PrefixCodeRange { offset: 5u32, nbits: 2u32, }, PrefixCodeRange { offset: 9u32, nbits: 2u32, }, PrefixCodeRange { offset: 13u32, nbits: 2u32, }, PrefixCodeRange { offset: 17u32, nbits: 3u32, }, PrefixCodeRange { offset: 25u32, nbits: 3u32, }, PrefixCodeRange { offset: 33u32, nbits: 3u32, }, PrefixCodeRange { offset: 41u32, nbits: 3u32, }, PrefixCodeRange { offset: 49u32, nbits: 4u32, }, PrefixCodeRange { offset: 65u32, nbits: 4u32, }, PrefixCodeRange { offset: 81u32, nbits: 4u32, }, PrefixCodeRange { offset: 97u32, nbits: 4u32, }, PrefixCodeRange { offset: 113u32, nbits: 5u32, }, PrefixCodeRange { offset: 145u32, nbits: 5u32, }, PrefixCodeRange { offset: 177u32, nbits: 5u32, }, PrefixCodeRange { offset: 209u32, nbits: 5u32, }, PrefixCodeRange { offset: 241u32, nbits: 6u32, }, PrefixCodeRange { offset: 305u32, nbits: 6u32, }, PrefixCodeRange { offset: 369u32, nbits: 7u32, }, PrefixCodeRange { offset: 497u32, nbits: 8u32, }, PrefixCodeRange { offset: 753u32, nbits: 9u32, }, PrefixCodeRange { offset: 1265u32, nbits: 10u32, }, PrefixCodeRange { offset: 2289u32, nbits: 11u32, }, PrefixCodeRange { offset: 4337u32, nbits: 12u32, }, PrefixCodeRange { offset: 8433u32, nbits: 13u32, }, PrefixCodeRange { offset: 16625u32, nbits: 24u32, }, ]; fn BrotliWriteBits(n_bits: u8, bits: u64, pos: &mut usize, array: &mut [u8]) { assert_eq!(bits >> n_bits, 0); assert!(n_bits <= 56); let ptr_offset: usize = ((*pos >> 3) as u32) as usize; let mut v = array[ptr_offset] as u64; v |= bits << ((*pos) as u64 & 7); array[ptr_offset + 7] = (v >> 56) as u8; array[ptr_offset + 6] = ((v >> 48) & 0xff) as u8; array[ptr_offset + 5] = ((v >> 40) & 0xff) as u8; array[ptr_offset + 4] = ((v >> 32) & 0xff) as u8; array[ptr_offset + 3] = ((v >> 24) & 0xff) as u8; array[ptr_offset + 2] = ((v >> 16) & 0xff) as u8; array[ptr_offset + 1] = ((v >> 8) & 0xff) as u8; array[ptr_offset] = (v & 0xff) as u8; *pos += n_bits as usize } fn BrotliWriteBitsPrepareStorage(pos: usize, array: &mut [u8]) { assert_eq!(pos & 7, 0); array[pos >> 3] = 0; } fn BrotliStoreHuffmanTreeOfHuffmanTreeToBitMask( num_codes: i32, code_length_bitdepth: &[u8], storage_ix: &mut usize, storage: &mut [u8], ) { static kStorageOrder: [u8; 18] = [1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15]; static kHuffmanBitLengthHuffmanCodeSymbols: [u8; 6] = [0, 7, 3, 2, 1, 15]; static kHuffmanBitLengthHuffmanCodeBitLengths: [u8; 6] = [2, 4, 3, 2, 2, 4]; let mut skip_some: u64 = 0u64; let mut codes_to_store: u64 = 18; if num_codes > 1i32 { 'break5: while codes_to_store > 0 { { if code_length_bitdepth [(kStorageOrder[codes_to_store.wrapping_sub(1) as usize] as usize)] as i32 != 0i32 { break 'break5; } } codes_to_store = codes_to_store.wrapping_sub(1); } } if code_length_bitdepth[(kStorageOrder[0] as usize)] as i32 == 0i32 && (code_length_bitdepth[(kStorageOrder[1] as usize)] as i32 == 0i32) { skip_some = 2; if code_length_bitdepth[(kStorageOrder[2] as usize)] as i32 == 0i32 { skip_some = 3; } } BrotliWriteBits(2, skip_some, storage_ix, storage); for i in skip_some..codes_to_store { let l = code_length_bitdepth[kStorageOrder[i as usize] as usize] as usize; BrotliWriteBits( kHuffmanBitLengthHuffmanCodeBitLengths[l], kHuffmanBitLengthHuffmanCodeSymbols[l] as u64, storage_ix, storage, ); } } fn BrotliStoreHuffmanTreeToBitMask( huffman_tree_size: usize, huffman_tree: &[u8], huffman_tree_extra_bits: &[u8], code_length_bitdepth: &[u8], code_length_bitdepth_symbols: &[u16], storage_ix: &mut usize, storage: &mut [u8], ) { for i in 0usize..huffman_tree_size { let ix: usize = huffman_tree[i] as usize; BrotliWriteBits( code_length_bitdepth[ix], code_length_bitdepth_symbols[ix] as (u64), storage_ix, storage, ); if ix == 16usize { BrotliWriteBits(2, huffman_tree_extra_bits[i] as (u64), storage_ix, storage); } else if ix == 17usize { BrotliWriteBits(3, huffman_tree_extra_bits[i] as (u64), storage_ix, storage); } } } pub fn BrotliStoreHuffmanTree( depths: &[u8], num: usize, tree: &mut [HuffmanTree], storage_ix: &mut usize, storage: &mut [u8], ) { let mut huffman_tree = [0u8; 704]; let mut huffman_tree_extra_bits = [0u8; 704]; let mut huffman_tree_size = 0usize; let mut code_length_bitdepth = [0u8; 18]; let mut code_length_bitdepth_symbols = [0u16; 18]; let mut huffman_tree_histogram = [0u32; 18]; let mut i: usize; let mut num_codes: i32 = 0i32; let mut code: usize = 0usize; BrotliWriteHuffmanTree( depths, num, &mut huffman_tree_size, &mut huffman_tree[..], &mut huffman_tree_extra_bits[..], ); for i in 0usize..huffman_tree_size { let _rhs = 1; let _lhs = &mut huffman_tree_histogram[huffman_tree[i] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } i = 0usize; 'break3: while i < 18usize { { if huffman_tree_histogram[i] != 0 { if num_codes == 0i32 { code = i; num_codes = 1i32; } else if num_codes == 1i32 { num_codes = 2i32; { break 'break3; } } } } i = i.wrapping_add(1); } BrotliCreateHuffmanTree( &mut huffman_tree_histogram, 18usize, 5i32, tree, &mut code_length_bitdepth, ); BrotliConvertBitDepthsToSymbols( &mut code_length_bitdepth, 18usize, &mut code_length_bitdepth_symbols, ); BrotliStoreHuffmanTreeOfHuffmanTreeToBitMask( num_codes, &code_length_bitdepth, storage_ix, storage, ); if num_codes == 1i32 { code_length_bitdepth[code] = 0u8; } BrotliStoreHuffmanTreeToBitMask( huffman_tree_size, &huffman_tree, &huffman_tree_extra_bits, &code_length_bitdepth, &code_length_bitdepth_symbols, storage_ix, storage, ); } fn StoreStaticCodeLengthCode(storage_ix: &mut usize, storage: &mut [u8]) { BrotliWriteBits(40, 0xff_5555_5554, storage_ix, storage); } pub struct SimpleSortHuffmanTree {} impl HuffmanComparator for SimpleSortHuffmanTree { fn Cmp(&self, v0: &HuffmanTree, v1: &HuffmanTree) -> bool { v0.total_count_ < v1.total_count_ } } pub fn BrotliBuildAndStoreHuffmanTreeFast>( m: &mut AllocHT, histogram: &[u32], histogram_total: usize, max_bits: usize, depth: &mut [u8], bits: &mut [u16], storage_ix: &mut usize, storage: &mut [u8], ) { let mut count: u64 = 0; let mut symbols: [u64; 4] = [0; 4]; let mut length: u64 = 0; let mut total: usize = histogram_total; while total != 0usize { if histogram[(length as usize)] != 0 { if count < 4 { symbols[count as usize] = length; } count = count.wrapping_add(1); total = total.wrapping_sub(histogram[(length as usize)] as usize); } length = length.wrapping_add(1); } if count <= 1 { BrotliWriteBits(4, 1, storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[0], storage_ix, storage); depth[symbols[0] as usize] = 0u8; bits[symbols[0] as usize] = 0u16; return; } for depth_elem in depth[..(length as usize)].iter_mut() { *depth_elem = 0; // memset } { let max_tree_size: u64 = (2u64).wrapping_mul(length).wrapping_add(1); let mut tree = if max_tree_size != 0 { m.alloc_cell(max_tree_size as usize) } else { AllocHT::AllocatedMemory::default() // null }; let mut count_limit: u32; if !(0i32 == 0) { return; } count_limit = 1u32; 'break11: loop { { let mut node_index: u32 = 0u32; let mut l: u64; l = length; while l != 0 { l = l.wrapping_sub(1); if histogram[l as usize] != 0 { if histogram[l as usize] >= count_limit { tree.slice_mut()[node_index as usize] = HuffmanTree::new(histogram[l as usize], -1, l as i16); } else { tree.slice_mut()[node_index as usize] = HuffmanTree::new(count_limit, -1, l as i16); } node_index = node_index.wrapping_add(1); } } { let n: i32 = node_index as i32; let mut i: i32 = 0i32; let mut j: i32 = n + 1i32; let mut k: i32; SortHuffmanTreeItems(tree.slice_mut(), n as usize, SimpleSortHuffmanTree {}); let sentinel = HuffmanTree::new(u32::MAX, -1, -1); tree.slice_mut()[(node_index.wrapping_add(1) as usize)] = sentinel; tree.slice_mut()[(node_index as usize)] = sentinel; node_index = node_index.wrapping_add(2); k = n - 1i32; while k > 0i32 { { let left: i32; let right: i32; if (tree.slice()[(i as usize)]).total_count_ <= (tree.slice()[(j as usize)]).total_count_ { left = i; i += 1; } else { left = j; j += 1; } if (tree.slice()[(i as usize)]).total_count_ <= (tree.slice()[(j as usize)]).total_count_ { right = i; i += 1; } else { right = j; j += 1; } let sum_total = (tree.slice()[(left as usize)]) .total_count_ .wrapping_add((tree.slice()[(right as usize)]).total_count_); let tree_ind = (node_index.wrapping_sub(1) as usize); (tree.slice_mut()[tree_ind]).total_count_ = sum_total; (tree.slice_mut()[tree_ind]).index_left_ = left as i16; (tree.slice_mut()[tree_ind]).index_right_or_value_ = right as i16; tree.slice_mut()[(node_index as usize)] = sentinel; node_index = node_index.wrapping_add(1); } k -= 1; } if BrotliSetDepth(2i32 * n - 1i32, tree.slice_mut(), depth, 14i32) { break 'break11; } } } count_limit = count_limit.wrapping_mul(2); } { m.free_cell(core::mem::take(&mut tree)); } } BrotliConvertBitDepthsToSymbols(depth, length as usize, bits); if count <= 4 { BrotliWriteBits(2, 1, storage_ix, storage); BrotliWriteBits(2, count.wrapping_sub(1), storage_ix, storage); for i in 0..count as usize { for j in i + 1..count as usize { if depth[symbols[j] as usize] < depth[symbols[i] as usize] { symbols.swap(j, i); } } } if count == 2 { BrotliWriteBits(max_bits as u8, symbols[0], storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[1], storage_ix, storage); } else if count == 3 { BrotliWriteBits(max_bits as u8, symbols[0], storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[1], storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[2], storage_ix, storage); } else { BrotliWriteBits(max_bits as u8, symbols[0], storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[1], storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[2], storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[3], storage_ix, storage); BrotliWriteBits( 1, if depth[(symbols[0] as usize)] as i32 == 1i32 { 1i32 } else { 0i32 } as (u64), storage_ix, storage, ); } } else { let mut previous_value: u8 = 8u8; let mut i: u64; StoreStaticCodeLengthCode(storage_ix, storage); i = 0; while i < length { let value: u8 = depth[(i as usize)]; let mut reps: u64 = 1; let mut k: u64; k = i.wrapping_add(1); while k < length && (depth[(k as usize)] as i32 == value as i32) { { reps = reps.wrapping_add(1); } k = k.wrapping_add(1); } i = i.wrapping_add(reps); if value as i32 == 0i32 { BrotliWriteBits( kZeroRepsDepth[reps as usize] as u8, kZeroRepsBits[reps as usize] as u64, storage_ix, storage, ); } else { if previous_value as i32 != value as i32 { BrotliWriteBits( kCodeLengthDepth[value as usize], kCodeLengthBits[value as usize] as (u64), storage_ix, storage, ); reps = reps.wrapping_sub(1); } if reps < 3 { while reps != 0 { reps = reps.wrapping_sub(1); BrotliWriteBits( kCodeLengthDepth[value as usize], kCodeLengthBits[value as usize] as (u64), storage_ix, storage, ); } } else { reps = reps.wrapping_sub(3); BrotliWriteBits( kNonZeroRepsDepth[reps as usize] as u8, kNonZeroRepsBits[reps as usize] as u64, storage_ix, storage, ); } previous_value = value; } } } } pub struct MetaBlockSplit< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, > { pub literal_split: BlockSplit, pub command_split: BlockSplit, pub distance_split: BlockSplit, pub literal_context_map: >::AllocatedMemory, pub literal_context_map_size: usize, pub distance_context_map: >::AllocatedMemory, pub distance_context_map_size: usize, pub literal_histograms: >::AllocatedMemory, pub literal_histograms_size: usize, pub command_histograms: >::AllocatedMemory, pub command_histograms_size: usize, pub distance_histograms: >::AllocatedMemory, pub distance_histograms_size: usize, } impl< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, > Default for MetaBlockSplit { fn default() -> Self { Self { literal_split: BlockSplit::::new(), command_split: BlockSplit::::new(), distance_split: BlockSplit::::new(), literal_context_map: >::AllocatedMemory::default(), literal_context_map_size: 0, distance_context_map: >::AllocatedMemory::default(), distance_context_map_size: 0, literal_histograms: >::AllocatedMemory::default(), literal_histograms_size: 0, command_histograms: >::AllocatedMemory::default(), command_histograms_size: 0, distance_histograms: >::AllocatedMemory::default( ), distance_histograms_size: 0, } } } impl< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, > MetaBlockSplit { pub fn new() -> Self { Self::default() } pub fn destroy(&mut self, alloc: &mut Alloc) { self.literal_split.destroy(alloc); self.command_split.destroy(alloc); self.distance_split.destroy(alloc); >::free_cell(alloc, core::mem::take(&mut self.literal_context_map)); self.literal_context_map_size = 0; >::free_cell( alloc, core::mem::take(&mut self.distance_context_map), ); self.distance_context_map_size = 0; >::free_cell( alloc, core::mem::take(&mut self.literal_histograms), ); self.literal_histograms_size = 0; >::free_cell( alloc, core::mem::take(&mut self.command_histograms), ); self.command_histograms_size = 0; >::free_cell( alloc, core::mem::take(&mut self.distance_histograms), ); self.distance_histograms_size = 0; } } #[derive(Clone, Copy)] pub struct BlockTypeCodeCalculator { pub last_type: usize, pub second_last_type: usize, } pub struct BlockSplitCode { pub type_code_calculator: BlockTypeCodeCalculator, pub type_depths: [u8; 258], pub type_bits: [u16; 258], pub length_depths: [u8; 26], pub length_bits: [u16; 26], } pub struct BlockEncoder<'a, Alloc: alloc::Allocator + alloc::Allocator> { /* pub alloc_u8 : AllocU8, pub alloc_u16 : AllocU16, pub alloc_u32 : AllocU32, pub alloc_ht : AllocHT,*/ pub histogram_length_: usize, pub num_block_types_: usize, pub block_types_: &'a [u8], pub block_lengths_: &'a [u32], pub num_blocks_: usize, pub block_split_code_: BlockSplitCode, pub block_ix_: usize, pub block_len_: usize, pub entropy_ix_: usize, pub depths_: >::AllocatedMemory, pub bits_: >::AllocatedMemory, } fn Log2FloorNonZero(mut n: u64) -> u32 { let mut result: u32 = 0u32; 'loop1: loop { if { n >>= 1i32; n } != 0 { result = result.wrapping_add(1); continue 'loop1; } else { break 'loop1; } } result } fn BrotliEncodeMlen(length: u32, bits: &mut u64, numbits: &mut u32, nibblesbits: &mut u32) { let lg: u32 = (if length == 1u32 { 1u32 } else { Log2FloorNonZero(length.wrapping_sub(1) as (u64)).wrapping_add(1) }); let mnibbles: u32 = (if lg < 16u32 { 16u32 } else { lg.wrapping_add(3) }) .wrapping_div(4); assert!(length > 0); assert!(length <= (1 << 24)); assert!(lg <= 24); *nibblesbits = mnibbles.wrapping_sub(4); *numbits = mnibbles.wrapping_mul(4); *bits = length.wrapping_sub(1) as u64; } fn StoreCompressedMetaBlockHeader( is_final_block: i32, length: usize, storage_ix: &mut usize, storage: &mut [u8], ) { let mut lenbits: u64 = 0; let mut nlenbits: u32 = 0; let mut nibblesbits: u32 = 0; BrotliWriteBits(1, is_final_block as (u64), storage_ix, storage); if is_final_block != 0 { BrotliWriteBits(1, 0, storage_ix, storage); } BrotliEncodeMlen(length as u32, &mut lenbits, &mut nlenbits, &mut nibblesbits); BrotliWriteBits(2, nibblesbits as u64, storage_ix, storage); BrotliWriteBits(nlenbits as u8, lenbits, storage_ix, storage); if is_final_block == 0 { BrotliWriteBits(1, 0, storage_ix, storage); } } impl BlockTypeCodeCalculator { fn new() -> Self { Self { last_type: 1, second_last_type: 0, } } } impl<'a, Alloc: Allocator + Allocator> BlockEncoder<'a, Alloc> { fn new( histogram_length: usize, num_block_types: usize, block_types: &'a [u8], block_lengths: &'a [u32], num_blocks: usize, ) -> Self { let block_len = if num_blocks != 0 && !block_lengths.is_empty() { block_lengths[0] as usize } else { 0 }; Self { histogram_length_: histogram_length, num_block_types_: num_block_types, block_types_: block_types, block_lengths_: block_lengths, num_blocks_: num_blocks, block_split_code_: BlockSplitCode { type_code_calculator: BlockTypeCodeCalculator::new(), type_depths: [0; 258], type_bits: [0; 258], length_depths: [0; 26], length_bits: [0; 26], }, block_ix_: 0, block_len_: block_len, entropy_ix_: 0, depths_: >::AllocatedMemory::default(), bits_: >::AllocatedMemory::default(), } } } fn NextBlockTypeCode(calculator: &mut BlockTypeCodeCalculator, type_: u8) -> usize { let type_code: usize = (if type_ as usize == calculator.last_type.wrapping_add(1) { 1u32 } else if type_ as usize == calculator.second_last_type { 0u32 } else { (type_ as u32).wrapping_add(2) }) as usize; calculator.second_last_type = calculator.last_type; calculator.last_type = type_ as usize; type_code } fn BlockLengthPrefixCode(len: u32) -> u32 { let mut code: u32 = (if len >= 177u32 { if len >= 753u32 { 20i32 } else { 14i32 } } else if len >= 41u32 { 7i32 } else { 0i32 }) as u32; while code < (26i32 - 1i32) as u32 && (len >= kBlockLengthPrefixCode[code.wrapping_add(1) as usize].offset) { code = code.wrapping_add(1); } code } fn StoreVarLenUint8(n: u64, storage_ix: &mut usize, storage: &mut [u8]) { if n == 0 { BrotliWriteBits(1, 0, storage_ix, storage); } else { let nbits: u8 = Log2FloorNonZero(n) as u8; BrotliWriteBits(1, 1, storage_ix, storage); BrotliWriteBits(3, nbits as u64, storage_ix, storage); BrotliWriteBits(nbits, n.wrapping_sub(1u64 << nbits), storage_ix, storage); } } fn StoreSimpleHuffmanTree( depths: &[u8], symbols: &mut [usize], num_symbols: usize, max_bits: usize, storage_ix: &mut usize, storage: &mut [u8], ) { BrotliWriteBits(2, 1, storage_ix, storage); BrotliWriteBits(2, num_symbols.wrapping_sub(1) as u64, storage_ix, storage); { for i in 0..num_symbols { for j in i + 1..num_symbols { if depths[symbols[j]] < depths[symbols[i]] { symbols.swap(j, i); } } } } if num_symbols == 2usize { BrotliWriteBits(max_bits as u8, symbols[0] as u64, storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[1] as u64, storage_ix, storage); } else if num_symbols == 3usize { BrotliWriteBits(max_bits as u8, symbols[0] as u64, storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[1] as u64, storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[2] as u64, storage_ix, storage); } else { BrotliWriteBits(max_bits as u8, symbols[0] as u64, storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[1] as u64, storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[2] as u64, storage_ix, storage); BrotliWriteBits(max_bits as u8, symbols[3] as u64, storage_ix, storage); BrotliWriteBits( 1, if depths[symbols[0]] as i32 == 1i32 { 1i32 } else { 0i32 } as (u64), storage_ix, storage, ); } } fn BuildAndStoreHuffmanTree( histogram: &[u32], histogram_length: usize, alphabet_size: usize, tree: &mut [HuffmanTree], depth: &mut [u8], bits: &mut [u16], storage_ix: &mut usize, storage: &mut [u8], ) { let mut count: usize = 0usize; let mut s4 = [0usize; 4]; let mut i: usize; let mut max_bits: usize = 0usize; i = 0usize; 'break31: while i < histogram_length { { if histogram[i] != 0 { if count < 4usize { s4[count] = i; } else if count > 4usize { break 'break31; } count = count.wrapping_add(1); } } i = i.wrapping_add(1); } { let mut max_bits_counter: usize = alphabet_size.wrapping_sub(1); while max_bits_counter != 0 { max_bits_counter >>= 1i32; max_bits = max_bits.wrapping_add(1); } } if count <= 1 { BrotliWriteBits(4, 1, storage_ix, storage); BrotliWriteBits(max_bits as u8, s4[0] as u64, storage_ix, storage); depth[s4[0]] = 0u8; bits[s4[0]] = 0u16; return; } for depth_elem in depth[..histogram_length].iter_mut() { *depth_elem = 0; // memset } BrotliCreateHuffmanTree(histogram, histogram_length, 15i32, tree, depth); BrotliConvertBitDepthsToSymbols(depth, histogram_length, bits); if count <= 4usize { StoreSimpleHuffmanTree(depth, &mut s4[..], count, max_bits, storage_ix, storage); } else { BrotliStoreHuffmanTree(depth, histogram_length, tree, storage_ix, storage); } } fn GetBlockLengthPrefixCode(len: u32, code: &mut usize, n_extra: &mut u32, extra: &mut u32) { *code = BlockLengthPrefixCode(len) as usize; *n_extra = kBlockLengthPrefixCode[*code].nbits; *extra = len.wrapping_sub(kBlockLengthPrefixCode[*code].offset); } fn StoreBlockSwitch( code: &mut BlockSplitCode, block_len: u32, block_type: u8, is_first_block: i32, storage_ix: &mut usize, storage: &mut [u8], ) { let typecode: usize = NextBlockTypeCode(&mut code.type_code_calculator, block_type); let mut lencode: usize = 0; let mut len_nextra: u32 = 0; let mut len_extra: u32 = 0; if is_first_block == 0 { BrotliWriteBits( code.type_depths[typecode] as u8, code.type_bits[typecode] as (u64), storage_ix, storage, ); } GetBlockLengthPrefixCode(block_len, &mut lencode, &mut len_nextra, &mut len_extra); BrotliWriteBits( code.length_depths[lencode], code.length_bits[lencode] as (u64), storage_ix, storage, ); BrotliWriteBits(len_nextra as u8, len_extra as (u64), storage_ix, storage); } fn BuildAndStoreBlockSplitCode( types: &[u8], lengths: &[u32], num_blocks: usize, num_types: usize, tree: &mut [HuffmanTree], code: &mut BlockSplitCode, storage_ix: &mut usize, storage: &mut [u8], ) { let mut type_histo: [u32; 258] = [0; 258]; let mut length_histo: [u32; 26] = [0; 26]; let mut i: usize; let mut type_code_calculator = BlockTypeCodeCalculator::new(); i = 0usize; while i < num_blocks { { let type_code: usize = NextBlockTypeCode(&mut type_code_calculator, types[i]); if i != 0usize { let _rhs = 1; let _lhs = &mut type_histo[type_code]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } { let _rhs = 1; let _lhs = &mut length_histo[BlockLengthPrefixCode(lengths[i]) as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } i = i.wrapping_add(1); } StoreVarLenUint8(num_types.wrapping_sub(1) as u64, storage_ix, storage); if num_types > 1 { BuildAndStoreHuffmanTree( &mut type_histo[0..], num_types.wrapping_add(2), num_types.wrapping_add(2), tree, &mut code.type_depths[0..], &mut code.type_bits[0..], storage_ix, storage, ); BuildAndStoreHuffmanTree( &mut length_histo[0..], super::constants::BROTLI_NUM_BLOCK_LEN_SYMBOLS, // 26 super::constants::BROTLI_NUM_BLOCK_LEN_SYMBOLS, tree, &mut code.length_depths[0..], &mut code.length_bits[0..], storage_ix, storage, ); StoreBlockSwitch(code, lengths[0], types[0], 1i32, storage_ix, storage); } } impl + Allocator> BlockEncoder<'_, Alloc> { fn build_and_store_block_switch_entropy_codes( &mut self, tree: &mut [HuffmanTree], storage_ix: &mut usize, storage: &mut [u8], ) { BuildAndStoreBlockSplitCode( self.block_types_, self.block_lengths_, self.num_blocks_, self.num_block_types_, tree, &mut self.block_split_code_, storage_ix, storage, ); } } fn StoreTrivialContextMap( num_types: usize, context_bits: usize, tree: &mut [HuffmanTree], storage_ix: &mut usize, storage: &mut [u8], ) { StoreVarLenUint8(num_types.wrapping_sub(1) as u64, storage_ix, storage); if num_types > 1 { let repeat_code: usize = context_bits.wrapping_sub(1u32 as usize); let repeat_bits: usize = (1u32 << repeat_code).wrapping_sub(1) as usize; let alphabet_size: usize = num_types.wrapping_add(repeat_code); let mut histogram: [u32; 272] = [0; 272]; let mut depths: [u8; 272] = [0; 272]; let mut bits: [u16; 272] = [0; 272]; BrotliWriteBits(1u8, 1u64, storage_ix, storage); BrotliWriteBits(4u8, repeat_code.wrapping_sub(1) as u64, storage_ix, storage); histogram[repeat_code] = num_types as u32; histogram[0] = 1; for i in context_bits..alphabet_size { histogram[i] = 1; } BuildAndStoreHuffmanTree( &mut histogram[..], alphabet_size, alphabet_size, tree, &mut depths[..], &mut bits[..], storage_ix, storage, ); for i in 0usize..num_types { let code: usize = if i == 0usize { 0usize } else { i.wrapping_add(context_bits).wrapping_sub(1) }; BrotliWriteBits(depths[code], bits[code] as (u64), storage_ix, storage); BrotliWriteBits( depths[repeat_code], bits[repeat_code] as (u64), storage_ix, storage, ); BrotliWriteBits(repeat_code as u8, repeat_bits as u64, storage_ix, storage); } BrotliWriteBits(1, 1, storage_ix, storage); } } fn IndexOf(v: &[u8], v_size: usize, value: u8) -> usize { let mut i: usize = 0usize; while i < v_size { { if v[i] as i32 == value as i32 { return i; } } i = i.wrapping_add(1); } i } fn MoveToFront(v: &mut [u8], index: usize) { let value: u8 = v[index]; let mut i: usize; i = index; while i != 0usize { { v[i] = v[i.wrapping_sub(1)]; } i = i.wrapping_sub(1); } v[0] = value; } fn MoveToFrontTransform(v_in: &[u32], v_size: usize, v_out: &mut [u32]) { let mut mtf: [u8; 256] = [0; 256]; let mut max_value: u32; if v_size == 0usize { return; } max_value = v_in[0]; for i in 1..v_size { if v_in[i] > max_value { max_value = v_in[i]; } } for i in 0..=max_value as usize { mtf[i] = i as u8; } { let mtf_size: usize = max_value.wrapping_add(1) as usize; for i in 0usize..v_size { let index: usize = IndexOf(&mtf[..], mtf_size, v_in[i] as u8); v_out[i] = index as u32; MoveToFront(&mut mtf[..], index); } } } fn RunLengthCodeZeros( in_size: usize, v: &mut [u32], out_size: &mut usize, max_run_length_prefix: &mut u32, ) { let mut max_reps: u32 = 0u32; let mut i: usize; let mut max_prefix: u32; i = 0usize; while i < in_size { let mut reps: u32 = 0u32; while i < in_size && (v[i] != 0u32) { i = i.wrapping_add(1); } while i < in_size && (v[i] == 0u32) { { reps = reps.wrapping_add(1); } i = i.wrapping_add(1); } max_reps = max(reps, max_reps); } max_prefix = if max_reps > 0u32 { Log2FloorNonZero(max_reps as (u64)) } else { 0u32 }; max_prefix = min(max_prefix, *max_run_length_prefix); *max_run_length_prefix = max_prefix; *out_size = 0usize; i = 0usize; while i < in_size { if v[i] != 0u32 { v[*out_size] = (v[i]).wrapping_add(*max_run_length_prefix); i = i.wrapping_add(1); *out_size = out_size.wrapping_add(1); } else { let mut reps: u32 = 1u32; let mut k: usize; k = i.wrapping_add(1); while k < in_size && (v[k] == 0u32) { { reps = reps.wrapping_add(1); } k = k.wrapping_add(1); } i = i.wrapping_add(reps as usize); while reps != 0u32 { if reps < 2u32 << max_prefix { let run_length_prefix: u32 = Log2FloorNonZero(reps as (u64)); let extra_bits: u32 = reps.wrapping_sub(1u32 << run_length_prefix); v[*out_size] = run_length_prefix.wrapping_add(extra_bits << 9); *out_size = out_size.wrapping_add(1); { break; } } else { let extra_bits: u32 = (1u32 << max_prefix).wrapping_sub(1); v[*out_size] = max_prefix.wrapping_add(extra_bits << 9); reps = reps.wrapping_sub((2u32 << max_prefix).wrapping_sub(1)); *out_size = out_size.wrapping_add(1); } } } } } fn EncodeContextMap>( m: &mut AllocU32, context_map: &[u32], context_map_size: usize, num_clusters: usize, tree: &mut [HuffmanTree], storage_ix: &mut usize, storage: &mut [u8], ) { let mut rle_symbols: AllocU32::AllocatedMemory; let mut max_run_length_prefix: u32 = 6u32; let mut num_rle_symbols: usize = 0usize; static kSymbolMask: u32 = (1u32 << 9) - 1; let mut depths: [u8; 272] = [0; 272]; let mut bits: [u16; 272] = [0; 272]; StoreVarLenUint8(num_clusters.wrapping_sub(1) as u64, storage_ix, storage); if num_clusters == 1 { return; } rle_symbols = if context_map_size != 0 { m.alloc_cell(context_map_size) } else { AllocU32::AllocatedMemory::default() }; MoveToFrontTransform(context_map, context_map_size, rle_symbols.slice_mut()); RunLengthCodeZeros( context_map_size, rle_symbols.slice_mut(), &mut num_rle_symbols, &mut max_run_length_prefix, ); let mut histogram: [u32; 272] = [0; 272]; for i in 0usize..num_rle_symbols { let _rhs = 1; let _lhs = &mut histogram[(rle_symbols.slice()[i] & kSymbolMask) as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } { let use_rle = max_run_length_prefix > 0; BrotliWriteBits(1, u64::from(use_rle), storage_ix, storage); if use_rle { BrotliWriteBits( 4, max_run_length_prefix.wrapping_sub(1) as (u64), storage_ix, storage, ); } } BuildAndStoreHuffmanTree( &mut histogram[..], num_clusters.wrapping_add(max_run_length_prefix as usize), num_clusters.wrapping_add(max_run_length_prefix as usize), tree, &mut depths[..], &mut bits[..], storage_ix, storage, ); for i in 0usize..num_rle_symbols { let rle_symbol: u32 = rle_symbols.slice()[i] & kSymbolMask; let extra_bits_val: u32 = rle_symbols.slice()[i] >> 9; BrotliWriteBits( depths[rle_symbol as usize], bits[rle_symbol as usize] as (u64), storage_ix, storage, ); if rle_symbol > 0u32 && (rle_symbol <= max_run_length_prefix) { BrotliWriteBits( rle_symbol as u8, extra_bits_val as (u64), storage_ix, storage, ); } } BrotliWriteBits(1, 1, storage_ix, storage); m.free_cell(rle_symbols); } impl + Allocator> BlockEncoder<'_, Alloc> { fn build_and_store_entropy_codes>( &mut self, m: &mut Alloc, histograms: &[HistogramType], histograms_size: usize, alphabet_size: usize, tree: &mut [HuffmanTree], storage_ix: &mut usize, storage: &mut [u8], ) { let table_size: usize = histograms_size.wrapping_mul(self.histogram_length_); self.depths_ = if table_size != 0 { >::alloc_cell(m, table_size) } else { >::AllocatedMemory::default() }; self.bits_ = if table_size != 0 { >::alloc_cell(m, table_size) } else { >::AllocatedMemory::default() }; { for i in 0usize..histograms_size { let ix: usize = i.wrapping_mul(self.histogram_length_); BuildAndStoreHuffmanTree( &(histograms[i]).slice()[0..], self.histogram_length_, alphabet_size, tree, &mut self.depths_.slice_mut()[ix..], &mut self.bits_.slice_mut()[ix..], storage_ix, storage, ); } } } fn store_symbol(&mut self, symbol: usize, storage_ix: &mut usize, storage: &mut [u8]) { if self.block_len_ == 0usize { let block_ix: usize = { self.block_ix_ = self.block_ix_.wrapping_add(1); self.block_ix_ }; let block_len: u32 = self.block_lengths_[block_ix]; let block_type: u8 = self.block_types_[block_ix]; self.block_len_ = block_len as usize; self.entropy_ix_ = (block_type as usize).wrapping_mul(self.histogram_length_); StoreBlockSwitch( &mut self.block_split_code_, block_len, block_type, 0i32, storage_ix, storage, ); } self.block_len_ = self.block_len_.wrapping_sub(1); { let ix: usize = self.entropy_ix_.wrapping_add(symbol); BrotliWriteBits( self.depths_.slice()[ix], self.bits_.slice()[ix] as (u64), storage_ix, storage, ); } } } impl Command { fn copy_len_code(&self) -> u32 { let modifier = self.copy_len_ >> 25; let delta: i32 = ((modifier | ((modifier & 0x40) << 1)) as u8) as i8 as i32; ((self.copy_len_ & 0x01ff_ffff) as i32 + delta) as u32 } } fn GetInsertExtra(inscode: u16) -> u32 { kInsExtra[inscode as usize] } fn GetInsertBase(inscode: u16) -> u32 { kInsBase[inscode as usize] } fn GetCopyBase(copycode: u16) -> u32 { kCopyBase[copycode as usize] } fn GetCopyExtra(copycode: u16) -> u32 { kCopyExtra[copycode as usize] } fn StoreCommandExtra(cmd: &Command, storage_ix: &mut usize, storage: &mut [u8]) { let copylen_code = cmd.copy_len_code(); let inscode: u16 = GetInsertLengthCode(cmd.insert_len_ as usize); let copycode: u16 = GetCopyLengthCode(copylen_code as usize); let insnumextra: u32 = GetInsertExtra(inscode); let insextraval: u64 = cmd.insert_len_.wrapping_sub(GetInsertBase(inscode)) as (u64); let copyextraval: u64 = copylen_code.wrapping_sub(GetCopyBase(copycode)) as (u64); let bits: u64 = copyextraval << insnumextra | insextraval; BrotliWriteBits( insnumextra.wrapping_add(GetCopyExtra(copycode)) as u8, bits, storage_ix, storage, ); } fn Context(p1: u8, p2: u8, mode: ContextType) -> u8 { match mode { ContextType::CONTEXT_LSB6 => (p1 as i32 & 0x3fi32) as u8, ContextType::CONTEXT_MSB6 => (p1 as i32 >> 2) as u8, ContextType::CONTEXT_UTF8 => { (kUTF8ContextLookup[p1 as usize] as i32 | kUTF8ContextLookup[(p2 as i32 + 256i32) as usize] as i32) as u8 } ContextType::CONTEXT_SIGNED => { (((kSigned3BitContextLookup[p1 as usize] as i32) << 3) + kSigned3BitContextLookup[p2 as usize] as i32) as u8 } } // 0u8 } impl + Allocator> BlockEncoder<'_, Alloc> { fn store_symbol_with_context( &mut self, symbol: usize, context: usize, context_map: &[u32], storage_ix: &mut usize, storage: &mut [u8], context_bits: usize, ) { if self.block_len_ == 0 { let block_ix: usize = { self.block_ix_ = self.block_ix_.wrapping_add(1); self.block_ix_ }; let block_len: u32 = self.block_lengths_[block_ix]; let block_type: u8 = self.block_types_[block_ix]; self.block_len_ = block_len as usize; self.entropy_ix_ = (block_type as usize) << context_bits; StoreBlockSwitch( &mut self.block_split_code_, block_len, block_type, 0, storage_ix, storage, ); } self.block_len_ = self.block_len_.wrapping_sub(1); { let histo_ix: usize = context_map[self.entropy_ix_.wrapping_add(context)] as usize; let ix: usize = histo_ix .wrapping_mul(self.histogram_length_) .wrapping_add(symbol); BrotliWriteBits( self.depths_.slice()[ix], self.bits_.slice()[ix] as (u64), storage_ix, storage, ); } } } impl + Allocator> BlockEncoder<'_, Alloc> { fn cleanup(&mut self, m: &mut Alloc) { >::free_cell(m, core::mem::take(&mut self.depths_)); >::free_cell(m, core::mem::take(&mut self.bits_)); } } pub fn JumpToByteBoundary(storage_ix: &mut usize, storage: &mut [u8]) { *storage_ix = storage_ix.wrapping_add(7u32 as usize) & !7u32 as usize; storage[(*storage_ix >> 3)] = 0u8; } pub fn BrotliStoreMetaBlock( alloc: &mut Alloc, input: &[u8], start_pos: usize, length: usize, mask: usize, mut prev_byte: u8, mut prev_byte2: u8, is_last: i32, params: &BrotliEncoderParams, literal_context_mode: ContextType, distance_cache: &[i32; kNumDistanceCacheEntries], commands: &[Command], n_commands: usize, mb: &mut MetaBlockSplit, recoder_state: &mut RecoderState, storage_ix: &mut usize, storage: &mut [u8], callback: &mut Cb, ) where Cb: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], InputPair, &mut Alloc, ), { let (input0, input1) = InputPairFromMaskedInput(input, start_pos, length, mask); if params.log_meta_block { LogMetaBlock( alloc, commands.split_at(n_commands).0, input0, input1, distance_cache, recoder_state, block_split_reference(mb), params, Some(literal_context_mode), callback, ); } let mut pos: usize = start_pos; let num_distance_symbols = params.dist.alphabet_size; let mut num_effective_distance_symbols = num_distance_symbols as usize; let mut tree: >::AllocatedMemory; let _literal_context_lut = BROTLI_CONTEXT_LUT(literal_context_mode); let mut literal_enc: BlockEncoder; let mut command_enc: BlockEncoder; let mut distance_enc: BlockEncoder; let dist = ¶ms.dist; if params.large_window && num_effective_distance_symbols > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS { num_effective_distance_symbols = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS; } StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage); tree = if 2i32 * 704i32 + 1i32 != 0 { >::alloc_cell(alloc, (2i32 * 704i32 + 1i32) as usize) } else { >::AllocatedMemory::default() }; literal_enc = BlockEncoder::new( BROTLI_NUM_LITERAL_SYMBOLS, mb.literal_split.num_types, mb.literal_split.types.slice(), mb.literal_split.lengths.slice(), mb.literal_split.num_blocks, ); command_enc = BlockEncoder::new( BROTLI_NUM_COMMAND_SYMBOLS, mb.command_split.num_types, mb.command_split.types.slice(), mb.command_split.lengths.slice(), mb.command_split.num_blocks, ); distance_enc = BlockEncoder::new( num_effective_distance_symbols, mb.distance_split.num_types, mb.distance_split.types.slice(), mb.distance_split.lengths.slice(), mb.distance_split.num_blocks, ); literal_enc.build_and_store_block_switch_entropy_codes(tree.slice_mut(), storage_ix, storage); command_enc.build_and_store_block_switch_entropy_codes(tree.slice_mut(), storage_ix, storage); distance_enc.build_and_store_block_switch_entropy_codes(tree.slice_mut(), storage_ix, storage); BrotliWriteBits(2, dist.distance_postfix_bits as (u64), storage_ix, storage); BrotliWriteBits( 4, (dist.num_direct_distance_codes >> dist.distance_postfix_bits) as (u64), storage_ix, storage, ); for _i in 0usize..mb.literal_split.num_types { BrotliWriteBits(2, literal_context_mode as (u64), storage_ix, storage); } if mb.literal_context_map_size == 0usize { StoreTrivialContextMap( mb.literal_histograms_size, 6, tree.slice_mut(), storage_ix, storage, ); } else { EncodeContextMap( alloc, mb.literal_context_map.slice(), mb.literal_context_map_size, mb.literal_histograms_size, tree.slice_mut(), storage_ix, storage, ); } if mb.distance_context_map_size == 0usize { StoreTrivialContextMap( mb.distance_histograms_size, 2usize, tree.slice_mut(), storage_ix, storage, ); } else { EncodeContextMap( alloc, mb.distance_context_map.slice(), mb.distance_context_map_size, mb.distance_histograms_size, tree.slice_mut(), storage_ix, storage, ); } literal_enc.build_and_store_entropy_codes( alloc, mb.literal_histograms.slice(), mb.literal_histograms_size, BROTLI_NUM_LITERAL_SYMBOLS, tree.slice_mut(), storage_ix, storage, ); command_enc.build_and_store_entropy_codes( alloc, mb.command_histograms.slice(), mb.command_histograms_size, BROTLI_NUM_COMMAND_SYMBOLS, tree.slice_mut(), storage_ix, storage, ); distance_enc.build_and_store_entropy_codes( alloc, mb.distance_histograms.slice(), mb.distance_histograms_size, num_distance_symbols as usize, tree.slice_mut(), storage_ix, storage, ); { >::free_cell(alloc, core::mem::take(&mut tree)); } for i in 0usize..n_commands { let cmd: Command = commands[i]; let cmd_code: usize = cmd.cmd_prefix_ as usize; command_enc.store_symbol(cmd_code, storage_ix, storage); StoreCommandExtra(&cmd, storage_ix, storage); if mb.literal_context_map_size == 0usize { let mut j: usize; j = cmd.insert_len_ as usize; while j != 0usize { { literal_enc.store_symbol(input[(pos & mask)] as usize, storage_ix, storage); pos = pos.wrapping_add(1); } j = j.wrapping_sub(1); } } else { let mut j: usize; j = cmd.insert_len_ as usize; while j != 0usize { { let context: usize = Context(prev_byte, prev_byte2, literal_context_mode) as usize; let literal: u8 = input[(pos & mask)]; literal_enc.store_symbol_with_context( literal as usize, context, mb.literal_context_map.slice(), storage_ix, storage, 6usize, ); prev_byte2 = prev_byte; prev_byte = literal; pos = pos.wrapping_add(1); } j = j.wrapping_sub(1); } } pos = pos.wrapping_add(cmd.copy_len() as usize); if cmd.copy_len() != 0 { prev_byte2 = input[(pos.wrapping_sub(2) & mask)]; prev_byte = input[(pos.wrapping_sub(1) & mask)]; if cmd.cmd_prefix_ as i32 >= 128i32 { let dist_code: usize = cmd.dist_prefix_ as usize & 0x03ff; let distnumextra: u32 = u32::from(cmd.dist_prefix_) >> 10; //FIXME: from command let distextra: u64 = cmd.dist_extra_ as (u64); if mb.distance_context_map_size == 0usize { distance_enc.store_symbol(dist_code, storage_ix, storage); } else { distance_enc.store_symbol_with_context( dist_code, cmd.distance_context() as usize, mb.distance_context_map.slice(), storage_ix, storage, 2usize, ); } BrotliWriteBits(distnumextra as u8, distextra, storage_ix, storage); } } } distance_enc.cleanup(alloc); command_enc.cleanup(alloc); literal_enc.cleanup(alloc); if is_last != 0 { JumpToByteBoundary(storage_ix, storage); } } fn BuildHistograms( input: &[u8], start_pos: usize, mask: usize, commands: &[Command], n_commands: usize, lit_histo: &mut HistogramLiteral, cmd_histo: &mut HistogramCommand, dist_histo: &mut HistogramDistance, ) { let mut pos: usize = start_pos; for i in 0usize..n_commands { let cmd: Command = commands[i]; let mut j: usize; HistogramAddItem(cmd_histo, cmd.cmd_prefix_ as usize); j = cmd.insert_len_ as usize; while j != 0usize { { HistogramAddItem(lit_histo, input[(pos & mask)] as usize); pos = pos.wrapping_add(1); } j = j.wrapping_sub(1); } pos = pos.wrapping_add(cmd.copy_len() as usize); if cmd.copy_len() != 0 && cmd.cmd_prefix_ >= 128 { HistogramAddItem(dist_histo, cmd.dist_prefix_ as usize & 0x03ff); } } } fn StoreDataWithHuffmanCodes( input: &[u8], start_pos: usize, mask: usize, commands: &[Command], n_commands: usize, lit_depth: &[u8], lit_bits: &[u16], cmd_depth: &[u8], cmd_bits: &[u16], dist_depth: &[u8], dist_bits: &[u16], storage_ix: &mut usize, storage: &mut [u8], ) { let mut pos: usize = start_pos; for i in 0usize..n_commands { let cmd: Command = commands[i]; let cmd_code: usize = cmd.cmd_prefix_ as usize; let mut j: usize; BrotliWriteBits( cmd_depth[cmd_code], cmd_bits[cmd_code] as (u64), storage_ix, storage, ); StoreCommandExtra(&cmd, storage_ix, storage); j = cmd.insert_len_ as usize; while j != 0usize { { let literal: u8 = input[(pos & mask)]; BrotliWriteBits( lit_depth[(literal as usize)], lit_bits[(literal as usize)] as (u64), storage_ix, storage, ); pos = pos.wrapping_add(1); } j = j.wrapping_sub(1); } pos = pos.wrapping_add(cmd.copy_len() as usize); if cmd.copy_len() != 0 && cmd.cmd_prefix_ >= 128 { let dist_code: usize = cmd.dist_prefix_ as usize & 0x03ff; let distnumextra: u32 = u32::from(cmd.dist_prefix_) >> 10; let distextra: u32 = cmd.dist_extra_; BrotliWriteBits( dist_depth[dist_code], dist_bits[dist_code] as (u64), storage_ix, storage, ); BrotliWriteBits(distnumextra as u8, distextra as (u64), storage_ix, storage); } } } fn nop<'a>(_data: &[interface::Command]) {} pub fn BrotliStoreMetaBlockTrivial( alloc: &mut Alloc, input: &[u8], start_pos: usize, length: usize, mask: usize, is_last: i32, params: &BrotliEncoderParams, distance_cache: &[i32; kNumDistanceCacheEntries], commands: &[Command], n_commands: usize, recoder_state: &mut RecoderState, storage_ix: &mut usize, storage: &mut [u8], f: &mut Cb, ) where Cb: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], InputPair, &mut Alloc, ), { let (input0, input1) = InputPairFromMaskedInput(input, start_pos, length, mask); if params.log_meta_block { LogMetaBlock( alloc, commands.split_at(n_commands).0, input0, input1, distance_cache, recoder_state, block_split_nop(), params, Some(ContextType::CONTEXT_LSB6), f, ); } let mut lit_histo: HistogramLiteral = HistogramLiteral::default(); let mut cmd_histo: HistogramCommand = HistogramCommand::default(); let mut dist_histo: HistogramDistance = HistogramDistance::default(); let mut lit_depth: [u8; 256] = [0; 256]; let mut lit_bits: [u16; 256] = [0; 256]; let mut cmd_depth: [u8; 704] = [0; 704]; let mut cmd_bits: [u16; 704] = [0; 704]; let mut dist_depth: [u8; MAX_SIMPLE_DISTANCE_ALPHABET_SIZE] = [0; MAX_SIMPLE_DISTANCE_ALPHABET_SIZE]; let mut dist_bits: [u16; MAX_SIMPLE_DISTANCE_ALPHABET_SIZE] = [0; MAX_SIMPLE_DISTANCE_ALPHABET_SIZE]; const MAX_HUFFMAN_TREE_SIZE: usize = (2i32 * 704i32 + 1i32) as usize; let mut tree: [HuffmanTree; MAX_HUFFMAN_TREE_SIZE] = [HuffmanTree { total_count_: 0, index_left_: 0, index_right_or_value_: 0, }; MAX_HUFFMAN_TREE_SIZE]; let num_distance_symbols = params.dist.alphabet_size; StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage); BuildHistograms( input, start_pos, mask, commands, n_commands, &mut lit_histo, &mut cmd_histo, &mut dist_histo, ); BrotliWriteBits(13, 0, storage_ix, storage); BuildAndStoreHuffmanTree( lit_histo.slice_mut(), BROTLI_NUM_LITERAL_SYMBOLS, BROTLI_NUM_LITERAL_SYMBOLS, &mut tree[..], &mut lit_depth[..], &mut lit_bits[..], storage_ix, storage, ); BuildAndStoreHuffmanTree( cmd_histo.slice_mut(), BROTLI_NUM_COMMAND_SYMBOLS, BROTLI_NUM_COMMAND_SYMBOLS, &mut tree[..], &mut cmd_depth[..], &mut cmd_bits[..], storage_ix, storage, ); BuildAndStoreHuffmanTree( dist_histo.slice_mut(), MAX_SIMPLE_DISTANCE_ALPHABET_SIZE, num_distance_symbols as usize, &mut tree[..], &mut dist_depth[..], &mut dist_bits[..], storage_ix, storage, ); StoreDataWithHuffmanCodes( input, start_pos, mask, commands, n_commands, &mut lit_depth[..], &mut lit_bits[..], &mut cmd_depth[..], &mut cmd_bits[..], &mut dist_depth[..], &mut dist_bits[..], storage_ix, storage, ); if is_last != 0 { JumpToByteBoundary(storage_ix, storage); } } fn StoreStaticCommandHuffmanTree(storage_ix: &mut usize, storage: &mut [u8]) { BrotliWriteBits(56, 0x0092_6244_1630_7003, storage_ix, storage); BrotliWriteBits(3, 0, storage_ix, storage); } fn StoreStaticDistanceHuffmanTree(storage_ix: &mut usize, storage: &mut [u8]) { BrotliWriteBits(28, 0x0369_dc03, storage_ix, storage); } struct BlockSplitRef<'a> { types: &'a [u8], lengths: &'a [u32], num_types: u32, } impl<'a> Default for BlockSplitRef<'a> { fn default() -> Self { BlockSplitRef { types: &[], lengths: &[], num_types: 1, } } } #[derive(Default)] struct MetaBlockSplitRefs<'a> { btypel: BlockSplitRef<'a>, literal_context_map: &'a [u32], btypec: BlockSplitRef<'a>, btyped: BlockSplitRef<'a>, distance_context_map: &'a [u32], } fn block_split_nop() -> MetaBlockSplitRefs<'static> { MetaBlockSplitRefs::default() } fn block_split_reference<'a, Alloc: BrotliAlloc>( mb: &'a MetaBlockSplit, ) -> MetaBlockSplitRefs<'a> { return MetaBlockSplitRefs::<'a> { btypel: BlockSplitRef { types: mb .literal_split .types .slice() .split_at(mb.literal_split.num_blocks) .0, lengths: mb .literal_split .lengths .slice() .split_at(mb.literal_split.num_blocks) .0, num_types: mb.literal_split.num_types as u32, }, literal_context_map: mb .literal_context_map .slice() .split_at(mb.literal_context_map_size) .0, btypec: BlockSplitRef { types: mb .command_split .types .slice() .split_at(mb.command_split.num_blocks) .0, lengths: mb .command_split .lengths .slice() .split_at(mb.command_split.num_blocks) .0, num_types: mb.command_split.num_types as u32, }, btyped: BlockSplitRef { types: mb .distance_split .types .slice() .split_at(mb.distance_split.num_blocks) .0, lengths: mb .distance_split .lengths .slice() .split_at(mb.distance_split.num_blocks) .0, num_types: mb.distance_split.num_types as u32, }, distance_context_map: mb .distance_context_map .slice() .split_at(mb.distance_context_map_size) .0, }; } #[derive(Clone, Copy, Default)] pub struct RecoderState { pub num_bytes_encoded: usize, } impl RecoderState { pub fn new() -> Self { Self::default() } } pub fn BrotliStoreMetaBlockFast( m: &mut Alloc, input: &[u8], start_pos: usize, length: usize, mask: usize, is_last: i32, params: &BrotliEncoderParams, dist_cache: &[i32; kNumDistanceCacheEntries], commands: &[Command], n_commands: usize, recoder_state: &mut RecoderState, storage_ix: &mut usize, storage: &mut [u8], cb: &mut Cb, ) where Cb: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], InputPair, &mut Alloc, ), { let (input0, input1) = InputPairFromMaskedInput(input, start_pos, length, mask); if params.log_meta_block { LogMetaBlock( m, commands.split_at(n_commands).0, input0, input1, dist_cache, recoder_state, block_split_nop(), params, Some(ContextType::CONTEXT_LSB6), cb, ); } let num_distance_symbols = params.dist.alphabet_size; let distance_alphabet_bits = Log2FloorNonZero(u64::from(num_distance_symbols) - 1) + 1; StoreCompressedMetaBlockHeader(is_last, length, storage_ix, storage); BrotliWriteBits(13, 0, storage_ix, storage); if n_commands <= 128usize { let mut histogram: [u32; 256] = [0; 256]; let mut pos: usize = start_pos; let mut num_literals: usize = 0usize; let mut lit_depth: [u8; 256] = [0; 256]; let mut lit_bits: [u16; 256] = [0; 256]; for i in 0usize..n_commands { let cmd: Command = commands[i]; let mut j: usize; j = cmd.insert_len_ as usize; while j != 0usize { { { let _rhs = 1; let _lhs = &mut histogram[input[(pos & mask)] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } pos = pos.wrapping_add(1); } j = j.wrapping_sub(1); } num_literals = num_literals.wrapping_add(cmd.insert_len_ as usize); pos = pos.wrapping_add(cmd.copy_len() as usize); } BrotliBuildAndStoreHuffmanTreeFast( m, &mut histogram[..], num_literals, 8usize, &mut lit_depth[..], &mut lit_bits[..], storage_ix, storage, ); StoreStaticCommandHuffmanTree(storage_ix, storage); StoreStaticDistanceHuffmanTree(storage_ix, storage); StoreDataWithHuffmanCodes( input, start_pos, mask, commands, n_commands, &mut lit_depth[..], &mut lit_bits[..], &kStaticCommandCodeDepth[..], &kStaticCommandCodeBits[..], &kStaticDistanceCodeDepth[..], &kStaticDistanceCodeBits[..], storage_ix, storage, ); } else { let mut lit_histo: HistogramLiteral = HistogramLiteral::default(); let mut cmd_histo: HistogramCommand = HistogramCommand::default(); let mut dist_histo: HistogramDistance = HistogramDistance::default(); let mut lit_depth: [u8; 256] = [0; 256]; let mut lit_bits: [u16; 256] = [0; 256]; let mut cmd_depth: [u8; 704] = [0; 704]; let mut cmd_bits: [u16; 704] = [0; 704]; let mut dist_depth: [u8; MAX_SIMPLE_DISTANCE_ALPHABET_SIZE] = [0; MAX_SIMPLE_DISTANCE_ALPHABET_SIZE]; let mut dist_bits: [u16; MAX_SIMPLE_DISTANCE_ALPHABET_SIZE] = [0; MAX_SIMPLE_DISTANCE_ALPHABET_SIZE]; BuildHistograms( input, start_pos, mask, commands, n_commands, &mut lit_histo, &mut cmd_histo, &mut dist_histo, ); BrotliBuildAndStoreHuffmanTreeFast( m, lit_histo.slice(), lit_histo.total_count_, 8usize, &mut lit_depth[..], &mut lit_bits[..], storage_ix, storage, ); BrotliBuildAndStoreHuffmanTreeFast( m, cmd_histo.slice(), cmd_histo.total_count_, 10usize, &mut cmd_depth[..], &mut cmd_bits[..], storage_ix, storage, ); BrotliBuildAndStoreHuffmanTreeFast( m, dist_histo.slice(), dist_histo.total_count_, distance_alphabet_bits as usize, &mut dist_depth[..], &mut dist_bits[..], storage_ix, storage, ); StoreDataWithHuffmanCodes( input, start_pos, mask, commands, n_commands, &mut lit_depth[..], &mut lit_bits[..], &mut cmd_depth[..], &mut cmd_bits[..], &mut dist_depth[..], &mut dist_bits[..], storage_ix, storage, ); } if is_last != 0 { JumpToByteBoundary(storage_ix, storage); } } fn BrotliStoreUncompressedMetaBlockHeader( length: usize, storage_ix: &mut usize, storage: &mut [u8], ) { let mut lenbits: u64 = 0; let mut nlenbits: u32 = 0; let mut nibblesbits: u32 = 0; BrotliWriteBits(1, 0, storage_ix, storage); BrotliEncodeMlen(length as u32, &mut lenbits, &mut nlenbits, &mut nibblesbits); BrotliWriteBits(2, nibblesbits as u64, storage_ix, storage); BrotliWriteBits(nlenbits as u8, lenbits, storage_ix, storage); BrotliWriteBits(1, 1, storage_ix, storage); } fn InputPairFromMaskedInput( input: &[u8], position: usize, len: usize, mask: usize, ) -> (&[u8], &[u8]) { let masked_pos: usize = position & mask; if masked_pos.wrapping_add(len) > mask.wrapping_add(1) { let len1: usize = mask.wrapping_add(1).wrapping_sub(masked_pos); return ( &input[masked_pos..(masked_pos + len1)], &input[0..len.wrapping_sub(len1)], ); } (&input[masked_pos..masked_pos + len], &[]) } pub fn BrotliStoreUncompressedMetaBlock( alloc: &mut Alloc, is_final_block: i32, input: &[u8], position: usize, mask: usize, params: &BrotliEncoderParams, len: usize, recoder_state: &mut RecoderState, storage_ix: &mut usize, storage: &mut [u8], suppress_meta_block_logging: bool, cb: &mut Cb, ) where Cb: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], InputPair, &mut Alloc, ), { let (input0, input1) = InputPairFromMaskedInput(input, position, len, mask); BrotliStoreUncompressedMetaBlockHeader(len, storage_ix, storage); JumpToByteBoundary(storage_ix, storage); let dst_start0 = (*storage_ix >> 3); storage[dst_start0..(dst_start0 + input0.len())].clone_from_slice(input0); *storage_ix = storage_ix.wrapping_add(input0.len() << 3); let dst_start1 = (*storage_ix >> 3); storage[dst_start1..(dst_start1 + input1.len())].clone_from_slice(input1); *storage_ix = storage_ix.wrapping_add(input1.len() << 3); BrotliWriteBitsPrepareStorage(*storage_ix, storage); if params.log_meta_block && !suppress_meta_block_logging { let cmds = [Command { insert_len_: len as u32, copy_len_: 0, dist_extra_: 0, cmd_prefix_: 0, dist_prefix_: 0, }]; LogMetaBlock( alloc, &cmds, input0, input1, &[0, 0, 0, 0], recoder_state, block_split_nop(), params, None, cb, ); } if is_final_block != 0 { BrotliWriteBits(1u8, 1u64, storage_ix, storage); BrotliWriteBits(1u8, 1u64, storage_ix, storage); JumpToByteBoundary(storage_ix, storage); } } pub fn BrotliStoreSyncMetaBlock(storage_ix: &mut usize, storage: &mut [u8]) { BrotliWriteBits(6, 6, storage_ix, storage); JumpToByteBoundary(storage_ix, storage); } pub fn BrotliWriteEmptyLastMetaBlock(storage_ix: &mut usize, storage: &mut [u8]) { BrotliWriteBits(1u8, 1u64, storage_ix, storage); BrotliWriteBits(1u8, 1u64, storage_ix, storage); JumpToByteBoundary(storage_ix, storage); } const MAX_SIZE_ENCODING: usize = 10; fn encode_base_128(mut value: u64) -> (usize, [u8; MAX_SIZE_ENCODING]) { let mut ret = [0u8; MAX_SIZE_ENCODING]; for index in 0..ret.len() { ret[index] = (value & 0x7f) as u8; value >>= 7; if value != 0 { ret[index] |= 0x80; } else { return (index + 1, ret); } } (ret.len(), ret) } pub fn BrotliWriteMetadataMetaBlock( params: &BrotliEncoderParams, storage_ix: &mut usize, storage: &mut [u8], ) { BrotliWriteBits(1u8, 0u64, storage_ix, storage); // not last BrotliWriteBits(2u8, 3u64, storage_ix, storage); // MNIBBLES = 0 (pattern 1,1) BrotliWriteBits(1u8, 0u64, storage_ix, storage); // reserved BrotliWriteBits(2u8, 1u64, storage_ix, storage); // num bytes for length of magic number header let (size_hint_count, size_hint_b128) = encode_base_128(params.size_hint as u64); BrotliWriteBits(8u8, 3 + size_hint_count as u64, storage_ix, storage); // 1 byte of data: writing 12 for the magic number header JumpToByteBoundary(storage_ix, storage); let magic_number: [u8; 3] = if params.catable && !params.use_dictionary { [0xe1, 0x97, 0x81] } else if params.appendable { [0xe1, 0x97, 0x82] } else { [0xe1, 0x97, 0x80] }; for magic in magic_number.iter() { BrotliWriteBits(8u8, u64::from(*magic), storage_ix, storage); } BrotliWriteBits(8u8, u64::from(VERSION), storage_ix, storage); for sh in size_hint_b128[..size_hint_count].iter() { BrotliWriteBits(8u8, u64::from(*sh), storage_ix, storage); } } mod test { use super::{encode_base_128, MAX_SIZE_ENCODING}; #[test] fn test_encode_base_128() { assert_eq!(encode_base_128(0), (1, [0u8; MAX_SIZE_ENCODING])); assert_eq!(encode_base_128(1), (1, [1, 0, 0, 0, 0, 0, 0, 0, 0, 0])); assert_eq!(encode_base_128(127), (1, [0x7f, 0, 0, 0, 0, 0, 0, 0, 0, 0])); assert_eq!( encode_base_128(128), (2, [0x80, 0x1, 0, 0, 0, 0, 0, 0, 0, 0]) ); assert_eq!( encode_base_128(16383), (2, [0xff, 0x7f, 0, 0, 0, 0, 0, 0, 0, 0]) ); assert_eq!( encode_base_128(16384), (3, [0x80, 0x80, 0x1, 0, 0, 0, 0, 0, 0, 0]) ); assert_eq!( encode_base_128(2097151), (3, [0xff, 0xff, 0x7f, 0, 0, 0, 0, 0, 0, 0]) ); assert_eq!( encode_base_128(2097152), (4, [0x80, 0x80, 0x80, 0x1, 0, 0, 0, 0, 0, 0]) ); assert_eq!( encode_base_128(4194303), (4, [0xff, 0xff, 0xff, 0x1, 0, 0, 0, 0, 0, 0]) ); assert_eq!( encode_base_128(4294967295), (5, [0xff, 0xff, 0xff, 0xff, 0xf, 0, 0, 0, 0, 0]) ); assert_eq!( encode_base_128(4294967296), (5, [0x80, 0x80, 0x80, 0x80, 0x10, 0, 0, 0, 0, 0]) ); assert_eq!( encode_base_128(9223372036854775808), ( 10, [0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x1] ) ); assert_eq!( encode_base_128(18446744073709551615), ( 10, [0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1] ) ); } } brotli-6.0.0/src/enc/cluster.rs000075500000000000000000000416571046102023000145250ustar 00000000000000#![allow(dead_code)] use super::bit_cost::BrotliPopulationCost; use super::histogram::{ CostAccessors, HistogramAddHistogram, HistogramClear, HistogramSelfAddHistogram, }; use super::util::FastLog2; use alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use core::cmp::min; #[derive(Clone, Copy)] pub struct HistogramPair { pub idx1: u32, pub idx2: u32, pub cost_combo: super::util::floatX, pub cost_diff: super::util::floatX, } impl Default for HistogramPair { #[inline(always)] fn default() -> HistogramPair { HistogramPair { idx1: 0, idx2: 0, cost_combo: 0.0 as super::util::floatX, cost_diff: 0.0 as super::util::floatX, } } } /* Returns entropy reduction of the context map when we combine two clusters. */ #[inline(always)] fn ClusterCostDiff(size_a: usize, size_b: usize) -> super::util::floatX { let size_c: usize = size_a.wrapping_add(size_b); size_a as (super::util::floatX) * FastLog2(size_a as u64) + size_b as (super::util::floatX) * FastLog2(size_b as u64) - size_c as (super::util::floatX) * FastLog2(size_c as u64) } #[inline(always)] fn HistogramPairIsLess(p1: &HistogramPair, p2: &HistogramPair) -> bool { if p1.cost_diff != p2.cost_diff { p1.cost_diff > p2.cost_diff } else { p1.idx2.wrapping_sub(p1.idx1) > p2.idx2.wrapping_sub(p2.idx1) } } /* Computes the bit cost reduction by combining out[idx1] and out[idx2] and if it is below a threshold, stores the pair (idx1, idx2) in the *pairs queue. */ fn BrotliCompareAndPushToQueue< HistogramType: SliceWrapperMut + SliceWrapper + CostAccessors + Clone, >( out: &[HistogramType], cluster_size: &[u32], mut idx1: u32, mut idx2: u32, max_num_pairs: usize, scratch_space: &mut HistogramType::i32vec, pairs: &mut [HistogramPair], num_pairs: &mut usize, ) { let mut is_good_pair: i32 = 0i32; let mut p: HistogramPair = HistogramPair { idx1: 0, idx2: 0, cost_combo: 0.0, cost_diff: 0.0, }; if idx1 == idx2 { } else { if idx2 < idx1 { core::mem::swap(&mut idx2, &mut idx1); } p.idx1 = idx1; p.idx2 = idx2; p.cost_diff = 0.5 as super::util::floatX * ClusterCostDiff( cluster_size[idx1 as usize] as usize, cluster_size[idx2 as usize] as usize, ); p.cost_diff -= (out[idx1 as usize]).bit_cost(); p.cost_diff -= (out[idx2 as usize]).bit_cost(); if (out[idx1 as usize]).total_count() == 0usize { p.cost_combo = (out[idx2 as usize]).bit_cost(); is_good_pair = 1i32; } else if (out[idx2 as usize]).total_count() == 0usize { p.cost_combo = (out[idx1 as usize]).bit_cost(); is_good_pair = 1i32; } else { let threshold: super::util::floatX = if *num_pairs == 0usize { 1e38 as super::util::floatX } else { pairs[0].cost_diff.max(0.0) }; let mut combo: HistogramType = out[idx1 as usize].clone(); HistogramAddHistogram(&mut combo, &out[idx2 as usize]); let cost_combo: super::util::floatX = BrotliPopulationCost(&combo, scratch_space); if cost_combo < threshold - p.cost_diff { p.cost_combo = cost_combo; is_good_pair = 1i32; } } if is_good_pair != 0 { p.cost_diff += p.cost_combo; if *num_pairs > 0usize && HistogramPairIsLess(&pairs[0], &p) { /* Replace the top of the queue if needed. */ if *num_pairs < max_num_pairs { pairs[*num_pairs] = pairs[0]; *num_pairs = num_pairs.wrapping_add(1); } pairs[0] = p; } else if *num_pairs < max_num_pairs { pairs[*num_pairs] = p; *num_pairs = num_pairs.wrapping_add(1); } } } } pub fn BrotliHistogramCombine< HistogramType: SliceWrapperMut + SliceWrapper + CostAccessors + Clone, >( out: &mut [HistogramType], cluster_size: &mut [u32], symbols: &mut [u32], clusters: &mut [u32], pairs: &mut [HistogramPair], mut num_clusters: usize, symbols_size: usize, max_clusters: usize, max_num_pairs: usize, scratch_space: &mut HistogramType::i32vec, ) -> usize { let mut cost_diff_threshold: super::util::floatX = 0.0 as super::util::floatX; let mut min_cluster_size: usize = 1; let mut num_pairs: usize = 0usize; { /* We maintain a vector of histogram pairs, with the property that the pair with the maximum bit cost reduction is the first. */ for idx1 in 0..num_clusters { for idx2 in idx1 + 1..num_clusters { BrotliCompareAndPushToQueue( out, cluster_size, clusters[idx1], clusters[idx2], max_num_pairs, scratch_space, pairs, &mut num_pairs, ); } } } while num_clusters > min_cluster_size { let mut i: usize; if (pairs[0]).cost_diff >= cost_diff_threshold { cost_diff_threshold = 1e38 as super::util::floatX; min_cluster_size = max_clusters; { continue; } } /* Take the best pair from the top of heap. */ let best_idx1: u32 = (pairs[0]).idx1; let best_idx2: u32 = (pairs[0]).idx2; HistogramSelfAddHistogram(out, (best_idx1 as usize), (best_idx2 as usize)); (out[(best_idx1 as usize)]).set_bit_cost((pairs[0]).cost_combo); { let _rhs = cluster_size[(best_idx2 as usize)]; let _lhs = &mut cluster_size[(best_idx1 as usize)]; *_lhs = (*_lhs).wrapping_add(_rhs); } for i in 0usize..symbols_size { if symbols[i] == best_idx2 { symbols[i] = best_idx1; } } i = 0usize; 'break9: while i < num_clusters { { if clusters[i] == best_idx2 { for offset in 0..(num_clusters - i - 1) { clusters[i + offset] = clusters[i + 1 + offset]; } break 'break9; } } i = i.wrapping_add(1); } num_clusters = num_clusters.wrapping_sub(1); { /* Remove pairs intersecting the just combined best pair. */ let mut copy_to_idx: usize = 0usize; i = 0usize; while i < num_pairs { 'continue12: loop { { let p: HistogramPair = pairs[i]; if (p).idx1 == best_idx1 || (p).idx2 == best_idx1 || (p).idx1 == best_idx2 || (p).idx2 == best_idx2 { /* Remove invalid pair from the queue. */ break 'continue12; } if HistogramPairIsLess(&pairs[0], &p) { /* Replace the top of the queue if needed. */ let front: HistogramPair = pairs[0]; pairs[0] = p; pairs[copy_to_idx] = front; } else { pairs[copy_to_idx] = p; } copy_to_idx = copy_to_idx.wrapping_add(1); } break; } i = i.wrapping_add(1); } num_pairs = copy_to_idx; } for i in 0usize..num_clusters { BrotliCompareAndPushToQueue( out, cluster_size, best_idx1, clusters[i], max_num_pairs, scratch_space, pairs, &mut num_pairs, ); } } num_clusters } /* What is the bit cost of moving histogram from cur_symbol to candidate. */ #[inline(always)] pub fn BrotliHistogramBitCostDistance< HistogramType: SliceWrapperMut + SliceWrapper + CostAccessors + Clone, >( histogram: &HistogramType, candidate: &HistogramType, scratch_space: &mut HistogramType::i32vec, ) -> super::util::floatX { if histogram.total_count() == 0usize { 0.0 as super::util::floatX } else { let mut tmp: HistogramType = histogram.clone(); HistogramAddHistogram(&mut tmp, candidate); BrotliPopulationCost(&tmp, scratch_space) - candidate.bit_cost() } } /* Find the best 'out' histogram for each of the 'in' histograms. When called, clusters[0..num_clusters) contains the unique values from symbols[0..in_size), but this property is not preserved in this function. Note: we assume that out[]->bit_cost_ is already up-to-date. */ pub fn BrotliHistogramRemap< HistogramType: SliceWrapperMut + SliceWrapper + CostAccessors + Clone, >( inp: &[HistogramType], in_size: usize, clusters: &[u32], num_clusters: usize, scratch_space: &mut HistogramType::i32vec, out: &mut [HistogramType], symbols: &mut [u32], ) { for i in 0usize..in_size { let mut best_out: u32 = if i == 0usize { symbols[0] } else { symbols[i.wrapping_sub(1)] }; let mut best_bits: super::util::floatX = BrotliHistogramBitCostDistance(&inp[i], &mut out[(best_out as usize)], scratch_space); for j in 0usize..num_clusters { let cur_bits: super::util::floatX = BrotliHistogramBitCostDistance( &inp[i], &mut out[(clusters[j] as usize)], scratch_space, ); if cur_bits < best_bits { best_bits = cur_bits; best_out = clusters[j]; } } symbols[i] = best_out; } for i in 0usize..num_clusters { HistogramClear(&mut out[(clusters[i] as usize)]); } for i in 0usize..in_size { HistogramAddHistogram(&mut out[(symbols[i] as usize)], &inp[i]); } } /* Reorders elements of the out[0..length) array and changes values in symbols[0..length) array in the following way: * when called, symbols[] contains indexes into out[], and has N unique values (possibly N < length) * on return, symbols'[i] = f(symbols[i]) and out'[symbols'[i]] = out[symbols[i]], for each 0 <= i < length, where f is a bijection between the range of symbols[] and [0..N), and the first occurrences of values in symbols'[i] come in consecutive increasing order. Returns N, the number of unique values in symbols[]. */ pub fn BrotliHistogramReindex< HistogramType: SliceWrapperMut + SliceWrapper + CostAccessors + Clone, Alloc: alloc::Allocator + alloc::Allocator, >( alloc: &mut Alloc, out: &mut [HistogramType], symbols: &mut [u32], length: usize, ) -> usize { static kInvalidIndex: u32 = !(0u32); let mut new_index = if length != 0 { >::alloc_cell(alloc, length) } else { >::AllocatedMemory::default() }; let mut next_index: u32; let mut tmp: >::AllocatedMemory; for i in 0usize..length { new_index.slice_mut()[i] = kInvalidIndex; } next_index = 0u32; for i in 0usize..length { if new_index.slice()[(symbols[i] as usize)] == kInvalidIndex { new_index.slice_mut()[(symbols[i] as usize)] = next_index; next_index = next_index.wrapping_add(1); } } tmp = if next_index != 0 { >::alloc_cell(alloc, next_index as usize) } else { >::AllocatedMemory::default() }; next_index = 0u32; for i in 0usize..length { if new_index.slice()[(symbols[i] as usize)] == next_index { tmp.slice_mut()[(next_index as usize)] = out[(symbols[i] as usize)].clone(); next_index = next_index.wrapping_add(1); } symbols[i] = new_index.slice()[(symbols[i] as usize)]; } { >::free_cell(alloc, new_index); } for i in 0usize..next_index as usize { out[i] = tmp.slice()[i].clone(); } { >::free_cell(alloc, tmp) } next_index as usize } pub fn BrotliClusterHistograms< HistogramType: SliceWrapperMut + SliceWrapper + CostAccessors + Clone, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator, >( alloc: &mut Alloc, inp: &[HistogramType], in_size: usize, max_histograms: usize, scratch_space: &mut HistogramType::i32vec, out: &mut [HistogramType], out_size: &mut usize, histogram_symbols: &mut [u32], ) { let mut cluster_size = if in_size != 0 { >::alloc_cell(alloc, in_size) } else { >::AllocatedMemory::default() }; let mut clusters = if in_size != 0 { >::alloc_cell(alloc, in_size) } else { >::AllocatedMemory::default() }; let mut num_clusters: usize = 0usize; let max_input_histograms: usize = 64usize; let pairs_capacity: usize = max_input_histograms .wrapping_mul(max_input_histograms) .wrapping_div(2); let mut pairs = >::alloc_cell(alloc, pairs_capacity.wrapping_add(1)); let mut i: usize; for i in 0usize..in_size { cluster_size.slice_mut()[i] = 1u32; } for i in 0usize..in_size { out[i] = inp[i].clone(); (out[i]).set_bit_cost(BrotliPopulationCost(&inp[i], scratch_space)); histogram_symbols[i] = i as u32; } i = 0usize; while i < in_size { { let num_to_combine: usize = min(in_size.wrapping_sub(i), max_input_histograms); for j in 0usize..num_to_combine { clusters.slice_mut()[num_clusters.wrapping_add(j)] = i.wrapping_add(j) as u32; } let num_new_clusters: usize = BrotliHistogramCombine( out, cluster_size.slice_mut(), &mut histogram_symbols[i..], &mut clusters.slice_mut()[num_clusters..], pairs.slice_mut(), num_to_combine, num_to_combine, max_histograms, pairs_capacity, scratch_space, ); num_clusters = num_clusters.wrapping_add(num_new_clusters); } i = i.wrapping_add(max_input_histograms); } { let max_num_pairs: usize = min( (64usize).wrapping_mul(num_clusters), num_clusters.wrapping_div(2).wrapping_mul(num_clusters), ); { if pairs_capacity < max_num_pairs.wrapping_add(1) { let mut _new_size: usize = if pairs_capacity == 0usize { max_num_pairs.wrapping_add(1) } else { pairs_capacity }; let mut new_array: >::AllocatedMemory; while _new_size < max_num_pairs.wrapping_add(1) { _new_size = _new_size.wrapping_mul(2); } new_array = if _new_size != 0 { >::alloc_cell(alloc, _new_size) } else { >::AllocatedMemory::default() }; new_array.slice_mut()[..pairs_capacity] .clone_from_slice(&pairs.slice()[..pairs_capacity]); >::free_cell( alloc, core::mem::replace(&mut pairs, new_array), ); } } num_clusters = BrotliHistogramCombine( out, cluster_size.slice_mut(), histogram_symbols, clusters.slice_mut(), pairs.slice_mut(), num_clusters, in_size, max_histograms, max_num_pairs, scratch_space, ); } >::free_cell(alloc, pairs); >::free_cell(alloc, cluster_size); BrotliHistogramRemap( inp, in_size, clusters.slice(), num_clusters, scratch_space, out, histogram_symbols, ); >::free_cell(alloc, clusters); *out_size = BrotliHistogramReindex(alloc, out, histogram_symbols, in_size); } /////////// DONE ////////////////////////// brotli-6.0.0/src/enc/combined_alloc.rs000064400000000000000000000400731046102023000157620ustar 00000000000000use super::cluster::HistogramPair; use super::command::Command; use super::histogram::{ContextType, HistogramCommand, HistogramDistance, HistogramLiteral}; use super::interface::StaticCommand; use super::s16; use super::util::floatX; use super::v8; use super::PDF; pub use alloc::Allocator; use super::entropy_encode::HuffmanTree; use super::hash_to_binary_tree::ZopfliNode; #[cfg(feature = "std")] use alloc_stdlib::StandardAlloc; /* struct CombiningAllocator, AllocT2:Allocator>(AllocT1, AllocT2); impl , AllocT2:Allocator> CombiningAllocator { pub fn new(a: AllocT1, b: AllocT2) -> Self { CombiningAllocator(a, b) } } impl , AllocT2:Allocator> Allocator for CombiningAllocator { } impl , AllocT2:Allocator> Allocator for CombiningAllocator { } */ pub trait BrotliAlloc: Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator + Allocator { } #[cfg(feature = "std")] impl BrotliAlloc for StandardAlloc {} pub struct CombiningAllocator< AllocU8: Allocator, AllocU16: Allocator, AllocI32: Allocator, AllocU32: Allocator, AllocU64: Allocator, AllocCommand: Allocator, AllocFloatX: Allocator, AllocV8: Allocator, AllocS16: Allocator, AllocPDF: Allocator, AllocStaticCommand: Allocator, AllocHistogramLiteral: Allocator, AllocHistogramCommand: Allocator, AllocHistogramDistance: Allocator, AllocHistogramPair: Allocator, AllocContextType: Allocator, AllocHuffmanTree: Allocator, AllocZopfliNode: Allocator, > { alloc_u8: AllocU8, alloc_u16: AllocU16, alloc_i32: AllocI32, alloc_u32: AllocU32, alloc_u64: AllocU64, alloc_c: AllocCommand, alloc_f: AllocFloatX, alloc_f32x8: AllocV8, alloc_i16x16: AllocS16, alloc_pdf: AllocPDF, alloc_sc: AllocStaticCommand, alloc_hl: AllocHistogramLiteral, alloc_hc: AllocHistogramCommand, alloc_hd: AllocHistogramDistance, alloc_hp: AllocHistogramPair, alloc_ct: AllocContextType, alloc_ht: AllocHuffmanTree, alloc_zn: AllocZopfliNode, } impl< AllocU8: Allocator, AllocU16: Allocator, AllocI32: Allocator, AllocU32: Allocator, AllocU64: Allocator, AllocCommand: Allocator, AllocFloatX: Allocator, AllocV8: Allocator, AllocS16: Allocator, AllocPDF: Allocator, AllocStaticCommand: Allocator, AllocHistogramLiteral: Allocator, AllocHistogramCommand: Allocator, AllocHistogramDistance: Allocator, AllocHistogramPair: Allocator, AllocContextType: Allocator, AllocHuffmanTree: Allocator, AllocZopfliNode: Allocator, > CombiningAllocator< AllocU8, AllocU16, AllocI32, AllocU32, AllocU64, AllocCommand, AllocFloatX, AllocV8, AllocS16, AllocPDF, AllocStaticCommand, AllocHistogramLiteral, AllocHistogramCommand, AllocHistogramDistance, AllocHistogramPair, AllocContextType, AllocHuffmanTree, AllocZopfliNode, > { pub fn new( alloc_u8: AllocU8, alloc_u16: AllocU16, alloc_i32: AllocI32, alloc_u32: AllocU32, alloc_u64: AllocU64, alloc_c: AllocCommand, alloc_f: AllocFloatX, alloc_f32x8: AllocV8, alloc_i16x16: AllocS16, alloc_pdf: AllocPDF, alloc_sc: AllocStaticCommand, alloc_hl: AllocHistogramLiteral, alloc_hc: AllocHistogramCommand, alloc_hd: AllocHistogramDistance, alloc_hp: AllocHistogramPair, alloc_ct: AllocContextType, alloc_ht: AllocHuffmanTree, alloc_zn: AllocZopfliNode, ) -> Self { CombiningAllocator { alloc_u8, alloc_u16, alloc_i32, alloc_u32, alloc_u64, alloc_c, alloc_f, alloc_f32x8, alloc_i16x16, alloc_pdf, alloc_sc, alloc_hl, alloc_hc, alloc_hd, alloc_hp, alloc_ct, alloc_ht, alloc_zn, } } } impl< AllocU8: Allocator, AllocU16: Allocator, AllocI32: Allocator, AllocU32: Allocator, AllocU64: Allocator, AllocCommand: Allocator, AllocFloatX: Allocator, AllocV8: Allocator, AllocS16: Allocator, AllocPDF: Allocator, AllocStaticCommand: Allocator, AllocHistogramLiteral: Allocator, AllocHistogramCommand: Allocator, AllocHistogramDistance: Allocator, AllocHistogramPair: Allocator, AllocContextType: Allocator, AllocHuffmanTree: Allocator, AllocZopfliNode: Allocator, > BrotliAlloc for CombiningAllocator< AllocU8, AllocU16, AllocI32, AllocU32, AllocU64, AllocCommand, AllocFloatX, AllocV8, AllocS16, AllocPDF, AllocStaticCommand, AllocHistogramLiteral, AllocHistogramCommand, AllocHistogramDistance, AllocHistogramPair, AllocContextType, AllocHuffmanTree, AllocZopfliNode, > { } impl< AllocU8: Allocator + Default, AllocU16: Allocator + Default, AllocI32: Allocator + Default, AllocU32: Allocator + Default, AllocU64: Allocator + Default, AllocCommand: Allocator + Default, AllocFloatX: Allocator + Default, AllocV8: Allocator + Default, AllocS16: Allocator + Default, AllocPDF: Allocator + Default, AllocStaticCommand: Allocator + Default, AllocHistogramLiteral: Allocator + Default, AllocHistogramCommand: Allocator + Default, AllocHistogramDistance: Allocator + Default, AllocHistogramPair: Allocator + Default, AllocContextType: Allocator + Default, AllocHuffmanTree: Allocator + Default, AllocZopfliNode: Allocator + Default, > Default for CombiningAllocator< AllocU8, AllocU16, AllocI32, AllocU32, AllocU64, AllocCommand, AllocFloatX, AllocV8, AllocS16, AllocPDF, AllocStaticCommand, AllocHistogramLiteral, AllocHistogramCommand, AllocHistogramDistance, AllocHistogramPair, AllocContextType, AllocHuffmanTree, AllocZopfliNode, > { fn default() -> Self { CombiningAllocator { alloc_u8: AllocU8::default(), alloc_u16: AllocU16::default(), alloc_i32: AllocI32::default(), alloc_u32: AllocU32::default(), alloc_u64: AllocU64::default(), alloc_c: AllocCommand::default(), alloc_f: AllocFloatX::default(), alloc_f32x8: AllocV8::default(), alloc_i16x16: AllocS16::default(), alloc_pdf: AllocPDF::default(), alloc_sc: AllocStaticCommand::default(), alloc_hl: AllocHistogramLiteral::default(), alloc_hc: AllocHistogramCommand::default(), alloc_hd: AllocHistogramDistance::default(), alloc_hp: AllocHistogramPair::default(), alloc_ct: AllocContextType::default(), alloc_ht: AllocHuffmanTree::default(), alloc_zn: AllocZopfliNode::default(), } } } impl< AllocU8: Allocator + Clone, AllocU16: Allocator + Clone, AllocI32: Allocator + Clone, AllocU32: Allocator + Clone, AllocU64: Allocator + Clone, AllocCommand: Allocator + Clone, AllocFloatX: Allocator + Clone, AllocV8: Allocator + Clone, AllocS16: Allocator + Clone, AllocPDF: Allocator + Clone, AllocStaticCommand: Allocator + Clone, AllocHistogramLiteral: Allocator + Clone, AllocHistogramCommand: Allocator + Clone, AllocHistogramDistance: Allocator + Clone, AllocHistogramPair: Allocator + Clone, AllocContextType: Allocator + Clone, AllocHuffmanTree: Allocator + Clone, AllocZopfliNode: Allocator + Clone, > Clone for CombiningAllocator< AllocU8, AllocU16, AllocI32, AllocU32, AllocU64, AllocCommand, AllocFloatX, AllocV8, AllocS16, AllocPDF, AllocStaticCommand, AllocHistogramLiteral, AllocHistogramCommand, AllocHistogramDistance, AllocHistogramPair, AllocContextType, AllocHuffmanTree, AllocZopfliNode, > { fn clone(&self) -> Self { CombiningAllocator { alloc_u8: self.alloc_u8.clone(), alloc_u16: self.alloc_u16.clone(), alloc_i32: self.alloc_i32.clone(), alloc_u32: self.alloc_u32.clone(), alloc_u64: self.alloc_u64.clone(), alloc_c: self.alloc_c.clone(), alloc_f: self.alloc_f.clone(), alloc_f32x8: self.alloc_f32x8.clone(), alloc_i16x16: self.alloc_i16x16.clone(), alloc_pdf: self.alloc_pdf.clone(), alloc_sc: self.alloc_sc.clone(), alloc_hl: self.alloc_hl.clone(), alloc_hc: self.alloc_hc.clone(), alloc_hd: self.alloc_hd.clone(), alloc_hp: self.alloc_hp.clone(), alloc_ct: self.alloc_ct.clone(), alloc_ht: self.alloc_ht.clone(), alloc_zn: self.alloc_zn.clone(), } } } impl< AllocU8: Allocator + Copy, AllocU16: Allocator + Copy, AllocI32: Allocator + Copy, AllocU32: Allocator + Copy, AllocU64: Allocator + Copy, AllocCommand: Allocator + Copy, AllocFloatX: Allocator + Copy, AllocV8: Allocator + Copy, AllocS16: Allocator + Copy, AllocPDF: Allocator + Copy, AllocStaticCommand: Allocator + Copy, AllocHistogramLiteral: Allocator + Copy, AllocHistogramCommand: Allocator + Copy, AllocHistogramDistance: Allocator + Copy, AllocHistogramPair: Allocator + Copy, AllocContextType: Allocator + Copy, AllocHuffmanTree: Allocator + Copy, AllocZopfliNode: Allocator + Copy, > Copy for CombiningAllocator< AllocU8, AllocU16, AllocI32, AllocU32, AllocU64, AllocCommand, AllocFloatX, AllocV8, AllocS16, AllocPDF, AllocStaticCommand, AllocHistogramLiteral, AllocHistogramCommand, AllocHistogramDistance, AllocHistogramPair, AllocContextType, AllocHuffmanTree, AllocZopfliNode, > { } macro_rules! implement_allocator { ($bound_name: ty, $type_name: ty, $sub_type_name: ty, $local_name: ident) => { impl< AllocU8: Allocator, AllocU16: Allocator, AllocI32: Allocator, AllocU32: Allocator, AllocU64: Allocator, AllocCommand: Allocator, AllocFloatX: Allocator, AllocV8: Allocator, AllocS16: Allocator, AllocPDF: Allocator, AllocStaticCommand: Allocator, AllocHistogramLiteral: Allocator, AllocHistogramCommand: Allocator, AllocHistogramDistance: Allocator, AllocHistogramPair: Allocator, AllocContextType: Allocator, AllocHuffmanTree: Allocator, AllocZopfliNode: Allocator, > Allocator<$type_name> for CombiningAllocator< AllocU8, AllocU16, AllocI32, AllocU32, AllocU64, AllocCommand, AllocFloatX, AllocV8, AllocS16, AllocPDF, AllocStaticCommand, AllocHistogramLiteral, AllocHistogramCommand, AllocHistogramDistance, AllocHistogramPair, AllocContextType, AllocHuffmanTree, AllocZopfliNode, > { type AllocatedMemory = $sub_type_name; fn alloc_cell( &mut self, size: usize, ) -> >::AllocatedMemory { self.$local_name.alloc_cell(size) } fn free_cell(&mut self, data: >::AllocatedMemory) { self.$local_name.free_cell(data) } } }; } implement_allocator!(AllocU8, u8, AllocU8::AllocatedMemory, alloc_u8); implement_allocator!(AllocU16, u16, AllocU16::AllocatedMemory, alloc_u16); implement_allocator!(AllocI32, i32, AllocI32::AllocatedMemory, alloc_i32); implement_allocator!(AllocU32, u32, AllocU32::AllocatedMemory, alloc_u32); implement_allocator!(AllocU64, u64, AllocU64::AllocatedMemory, alloc_u64); implement_allocator!( AllocCommand, Command, AllocCommand::AllocatedMemory, alloc_c ); implement_allocator!(AllocFloatX, floatX, AllocFloatX::AllocatedMemory, alloc_f); implement_allocator!(AllocV8, v8, AllocV8::AllocatedMemory, alloc_f32x8); implement_allocator!(AllocS16, s16, AllocS16::AllocatedMemory, alloc_i16x16); implement_allocator!(AllocPDF, PDF, AllocPDF::AllocatedMemory, alloc_pdf); implement_allocator!( AllocStaticCommand, StaticCommand, AllocStaticCommand::AllocatedMemory, alloc_sc ); implement_allocator!( AllocHistogramLiteral, HistogramLiteral, AllocHistogramLiteral::AllocatedMemory, alloc_hl ); implement_allocator!( AllocHistogramCommand, HistogramCommand, AllocHistogramCommand::AllocatedMemory, alloc_hc ); implement_allocator!( AllocHistogramDistance, HistogramDistance, AllocHistogramDistance::AllocatedMemory, alloc_hd ); implement_allocator!( AllocHistogramPair, HistogramPair, AllocHistogramPair::AllocatedMemory, alloc_hp ); implement_allocator!( AllocContextType, ContextType, AllocContextType::AllocatedMemory, alloc_ct ); implement_allocator!( AllocHuffmanTree, HuffmanTree, AllocHuffmanTree::AllocatedMemory, alloc_ht ); implement_allocator!( AllocZopfliNode, ZopfliNode, AllocZopfliNode::AllocatedMemory, alloc_zn ); brotli-6.0.0/src/enc/command.rs000075500000000000000000000367641046102023000144650ustar 00000000000000use super::encode::BROTLI_NUM_DISTANCE_SHORT_CODES; use super::util::Log2FloorNonZero; #[derive(Copy, Clone, Debug)] pub struct BrotliDistanceParams { pub distance_postfix_bits: u32, pub num_direct_distance_codes: u32, pub alphabet_size: u32, pub max_distance: usize, } #[derive(Clone, Copy, Debug, Default)] pub struct Command { // stores copy_len in low 25 bits and copy_code - copy_len in high 7 bit pub insert_len_: u32, pub copy_len_: u32, //stores distance_extra bits pub dist_extra_: u32, pub cmd_prefix_: u16, // stores distance code in low 10 bits and num extra bits in high 6 bits pub dist_prefix_: u16, } impl Command { pub fn copy_len(&self) -> u32 { self.copy_len_ & 0x01ff_ffff } pub fn distance_context(&self) -> u32 { let r: u32 = (self.cmd_prefix_ as i32 >> 6) as u32; let c: u32 = (self.cmd_prefix_ as i32 & 7i32) as u32; if (r == 0 || r == 2 || r == 4 || r == 7) && c <= 2 { c } else { 3 } } pub fn init_insert(&mut self, insertlen: usize) { self.insert_len_ = insertlen as u32; self.copy_len_ = (4i32 << 25) as u32; self.dist_extra_ = 0u32; self.dist_prefix_ = (1u16 << 10) | BROTLI_NUM_DISTANCE_SHORT_CODES as u16; GetLengthCode(insertlen, 4usize, 0i32, &mut self.cmd_prefix_); } } #[inline(always)] pub fn ComputeDistanceCode(distance: usize, max_distance: usize, dist_cache: &[i32]) -> usize { if distance <= max_distance { let distance_plus_3: usize = distance.wrapping_add(3); let offset0: usize = distance_plus_3.wrapping_sub(dist_cache[0] as usize); let offset1: usize = distance_plus_3.wrapping_sub(dist_cache[1] as usize); if distance == dist_cache[0] as usize { return 0usize; } else if distance == dist_cache[1] as usize { return 1; } else if offset0 < 7usize { return (0x0975_0468_i32 >> (4usize).wrapping_mul(offset0) & 0xfi32) as usize; } else if offset1 < 7usize { return (0x0fdb_1ace_i32 >> (4usize).wrapping_mul(offset1) & 0xfi32) as usize; } else if distance == dist_cache[2] as usize { return 2usize; } else if distance == dist_cache[3] as usize { return 3usize; } } distance.wrapping_add(16).wrapping_sub(1) } #[inline(always)] pub fn GetInsertLengthCode(insertlen: usize) -> u16 { if insertlen < 6usize { insertlen as u16 } else if insertlen < 130usize { let nbits: u32 = Log2FloorNonZero(insertlen.wrapping_sub(2) as u64).wrapping_sub(1); ((nbits << 1) as usize) .wrapping_add(insertlen.wrapping_sub(2) >> nbits) .wrapping_add(2) as u16 } else if insertlen < 2114usize { Log2FloorNonZero(insertlen.wrapping_sub(66) as u64).wrapping_add(10) as u16 } else if insertlen < 6210usize { 21u32 as u16 } else if insertlen < 22594usize { 22u32 as u16 } else { 23u32 as u16 } } #[inline(always)] pub fn GetCopyLengthCode(copylen: usize) -> u16 { if copylen < 10usize { copylen.wrapping_sub(2) as u16 } else if copylen < 134usize { let nbits: u32 = Log2FloorNonZero(copylen.wrapping_sub(6) as u64).wrapping_sub(1); ((nbits << 1) as usize) .wrapping_add(copylen.wrapping_sub(6) >> nbits) .wrapping_add(4) as u16 } else if copylen < 2118usize { Log2FloorNonZero(copylen.wrapping_sub(70) as u64).wrapping_add(12) as u16 } else { 23u32 as u16 } } #[inline(always)] pub fn CombineLengthCodes(inscode: u16, copycode: u16, use_last_distance: i32) -> u16 { let bits64: u16 = (copycode as u32 & 0x7u32 | (inscode as u32 & 0x7u32) << 3) as u16; if use_last_distance != 0 && ((inscode as i32) < 8i32) && ((copycode as i32) < 16i32) { if (copycode as i32) < 8i32 { bits64 } else { let s64: u16 = 64u16; (bits64 as i32 | s64 as i32) as u16 } } else { let sub_offset: i32 = 2i32 * ((copycode as i32 >> 3) + 3i32 * (inscode as i32 >> 3)); let offset = (sub_offset << 5) + 0x40i32 + (0x520d40i32 >> sub_offset & 0xc0i32); (offset as u16 as i32 | bits64 as i32) as u16 } } #[inline(always)] pub fn GetLengthCode(insertlen: usize, copylen: usize, use_last_distance: i32, code: &mut u16) { let inscode: u16 = GetInsertLengthCode(insertlen); let copycode: u16 = GetCopyLengthCode(copylen); *code = CombineLengthCodes(inscode, copycode, use_last_distance); } pub fn PrefixEncodeCopyDistance( distance_code: usize, num_direct_codes: usize, postfix_bits: u64, code: &mut u16, extra_bits: &mut u32, ) { if distance_code < (BROTLI_NUM_DISTANCE_SHORT_CODES as usize).wrapping_add(num_direct_codes) { *code = distance_code as u16; *extra_bits = 0u32; } else { let dist: u64 = (1u64 << postfix_bits.wrapping_add(2u32 as (u64))).wrapping_add( (distance_code as u64) .wrapping_sub(BROTLI_NUM_DISTANCE_SHORT_CODES as u64) .wrapping_sub(num_direct_codes as u64), ); let bucket: u64 = Log2FloorNonZero(dist).wrapping_sub(1) as (u64); let postfix_mask: u64 = (1u32 << postfix_bits).wrapping_sub(1) as (u64); let postfix: u64 = dist & postfix_mask; let prefix: u64 = (dist >> bucket) & 1; let offset: u64 = (2u64).wrapping_add(prefix) << bucket; let nbits: u64 = bucket.wrapping_sub(postfix_bits); *code = ((nbits << 10) | ((BROTLI_NUM_DISTANCE_SHORT_CODES as u64) .wrapping_add(num_direct_codes as u64) .wrapping_add( 2u64.wrapping_mul(nbits.wrapping_sub(1)) .wrapping_add(prefix) << postfix_bits, ) .wrapping_add(postfix))) as u16; *extra_bits = (dist.wrapping_sub(offset) >> postfix_bits) as u32; /*(16u64) .wrapping_add(num_direct_codes as u64) .wrapping_add((2u64).wrapping_mul(nbits.wrapping_sub(1)).wrapping_add(prefix) << postfix_bits) .wrapping_add(postfix) as u16;*/ //*extra_bits = (nbits << 24 | dist.wrapping_sub(offset) >> postfix_bits) as u32; } } impl Command { pub fn restore_distance_code(&self, dist: &BrotliDistanceParams) -> u32 { if (self.dist_prefix_ as i32 & 0x3ff) < BROTLI_NUM_DISTANCE_SHORT_CODES as i32 + dist.num_direct_distance_codes as i32 { self.dist_prefix_ as u32 & 0x3ff } else { let dcode = self.dist_prefix_ as u32 & 0x3ff; let nbits: u32 = u32::from(self.dist_prefix_ >> 10); let extra: u32 = self.dist_extra_; let postfix_mask = (1u32 << dist.distance_postfix_bits) - 1; let hcode = dcode .wrapping_sub(dist.num_direct_distance_codes) .wrapping_sub(BROTLI_NUM_DISTANCE_SHORT_CODES) >> dist.distance_postfix_bits; let lcode = dcode .wrapping_sub(dist.num_direct_distance_codes) .wrapping_sub(BROTLI_NUM_DISTANCE_SHORT_CODES) & postfix_mask; let offset = (2u32.wrapping_add((hcode & 1)) << nbits).wrapping_sub(4); (offset.wrapping_add(extra) << dist.distance_postfix_bits) .wrapping_add(lcode) .wrapping_add(dist.num_direct_distance_codes) .wrapping_add(BROTLI_NUM_DISTANCE_SHORT_CODES) } } // returns which distance code to use ( 0 means none, 1 means last, 2 means penultimate, 3 means the prior to penultimate pub fn distance_index_and_offset(&self, dist: &BrotliDistanceParams) -> (usize, isize) { let n_postfix = dist.distance_postfix_bits; let n_direct = dist.num_direct_distance_codes; let dextra = self.dist_extra_; let dprefix = self.dist_prefix_ & 0x3ff; let n_dist_bits = self.dist_prefix_ >> 10; if u32::from(dprefix) < BROTLI_NUM_DISTANCE_SHORT_CODES { let table: [(usize, isize); 16] = [ (1, 0), (2, 0), (3, 0), (4, 0), (1, -1), (1, 1), (1, -2), (1, 2), (1, -3), (1, 3), (2, -1), (2, 1), (2, -2), (2, 2), (2, -3), (2, 3), ]; //eprint!("AA {:?} {:?} -> {:?}\n",*self, *dist, table[dprefix as usize]); return table[dprefix as usize]; } if (dprefix as usize) < BROTLI_NUM_DISTANCE_SHORT_CODES as usize + n_direct as usize { let ret = dprefix as isize + 1 - BROTLI_NUM_DISTANCE_SHORT_CODES as isize; //eprint!("BB {:?} {:?} -> {:?}\n",*self, *dist, ret); return (0, ret); } let postfix_mask = (1 << n_postfix) - 1; let dcode = dprefix as u32 - BROTLI_NUM_DISTANCE_SHORT_CODES - n_direct; let hcode = dcode >> n_postfix; let lcode = dcode & postfix_mask; let offset = ((2 + (hcode & 1)) << n_dist_bits) - 4; let ret = (((offset + dextra) << n_postfix) + lcode + n_direct + 1) as isize; //assert!(ret != 0); (0, ret) } } mod test { // returns which distance code to use ( 0 means none, 1 means last, 2 means penultimate, 3 means the prior to penultimate #[cfg(test)] pub fn helperCommandDistanceIndexAndOffset( cmd: &super::Command, dist: &super::BrotliDistanceParams, ) -> (usize, isize) { let n_postfix = dist.distance_postfix_bits; let n_direct = dist.num_direct_distance_codes; let dextra = cmd.dist_extra_; let dist_prefix = cmd.dist_prefix_ & 0x3ff; if dist_prefix < 16 { let table: [(usize, isize); 16] = [ (1, 0), (2, 0), (3, 0), (4, 0), (1, -1), (1, 1), (1, -2), (1, 2), (1, -3), (1, 3), (2, -1), (2, 1), (2, -2), (2, 2), (2, -3), (2, 3), ]; return table[cmd.dist_prefix_ as usize]; } if (dist_prefix as usize) < 16 + n_direct as usize { return (0, dist_prefix as isize + 1 - 16); } let postfix_mask = (1 << n_postfix) - 1; let dcode = dist_prefix as u32 - 16 - n_direct; let n_dist_bits = 1 + (dcode >> (n_postfix + 1)); let hcode = dcode >> n_postfix; let lcode = dcode & postfix_mask; let offset = ((2 + (hcode & 1)) << n_dist_bits) - 4; ( 0, (((offset + dextra) << n_postfix) + lcode + n_direct + 1) as isize, ) } #[test] fn test_command_return_distance_index_offset() { let param = super::BrotliDistanceParams { distance_postfix_bits: 2, num_direct_distance_codes: 16, alphabet_size: 224, max_distance: 268435456, }; let mut cmd = super::Command::default(); cmd.insert_len_ = 63; cmd.copy_len_ = 3; cmd.dist_extra_ = 3; cmd.cmd_prefix_ = 297; cmd.dist_prefix_ = 2089; assert_eq!(cmd.distance_index_and_offset(¶m), (0, 46)); assert_eq!( cmd.distance_index_and_offset(¶m), helperCommandDistanceIndexAndOffset(&cmd, ¶m) ); cmd = super::Command { insert_len_: 27, copy_len_: 3, dist_extra_: 0, cmd_prefix_: 281, dist_prefix_: 6, }; assert_eq!(cmd.distance_index_and_offset(¶m), (1, -2)); assert_eq!( cmd.distance_index_and_offset(¶m), helperCommandDistanceIndexAndOffset(&cmd, ¶m) ); cmd = super::Command { insert_len_: 1, copy_len_: 3, dist_extra_: 0, cmd_prefix_: 137, dist_prefix_: 27, }; assert_eq!(cmd.distance_index_and_offset(¶m), (0, 12)); assert_eq!( cmd.distance_index_and_offset(¶m), helperCommandDistanceIndexAndOffset(&cmd, ¶m) ); cmd = super::Command { insert_len_: 5, copy_len_: 4, dist_extra_: 297, cmd_prefix_: 170, dist_prefix_: 11377, }; assert_eq!(cmd.distance_index_and_offset(¶m), (0, 17574)); assert_eq!( cmd.distance_index_and_offset(¶m), helperCommandDistanceIndexAndOffset(&cmd, ¶m) ); cmd.init_insert(24); assert_eq!(cmd.distance_index_and_offset(¶m), (0, 1)); } /* #[test] fn test_restore_distance_code() { for dist_code in 0..50000 { let mut cmd = super::Command::default(); let param =super::BrotliDistanceParams{ distance_postfix_bits:2, num_direct_distance_codes:16, alphabet_size:224, max_distance:268435456, }; super::InitCommand(&mut cmd, ¶m, 4, 4, 4, dist_code); let exp_dist_code = super::CommandRestoreDistanceCode(&cmd, ¶m); assert_eq!(exp_dist_code as u32, dist_code as u32); } }*/ } pub fn RecomputeDistancePrefixes( cmds: &mut [Command], num_commands: usize, num_direct_distance_codes: u32, distance_postfix_bits: u32, dist: &BrotliDistanceParams, ) { if num_direct_distance_codes == 0u32 && (distance_postfix_bits == 0u32) { return; } for i in 0usize..num_commands { let cmd: &mut Command = &mut cmds[i]; if cmd.copy_len() != 0 && cmd.cmd_prefix_ >= 128 { PrefixEncodeCopyDistance( cmd.restore_distance_code(dist) as usize, num_direct_distance_codes as usize, distance_postfix_bits as (u64), &mut cmd.dist_prefix_, &mut cmd.dist_extra_, ); } } } impl Command { pub fn init( &mut self, dist: &BrotliDistanceParams, insertlen: usize, copylen: usize, copylen_code: usize, distance_code: usize, ) { self.insert_len_ = insertlen as u32; let copylen_code_delta = (copylen_code as i32 - copylen as i32) as i8; self.copy_len_ = (copylen as u32 | (u32::from(copylen_code_delta as u8) << 25)); PrefixEncodeCopyDistance( distance_code, dist.num_direct_distance_codes as usize, u64::from(dist.distance_postfix_bits), &mut self.dist_prefix_, &mut self.dist_extra_, ); GetLengthCode( insertlen, copylen_code, if (self.dist_prefix_ & 0x3ff) == 0 { 1 } else { 0 }, &mut self.cmd_prefix_, ); } pub fn new( dist: &BrotliDistanceParams, insertlen: usize, copylen: usize, copylen_code: usize, distance_code: usize, ) -> Self { let mut cmd = Command { insert_len_: insertlen as u32, copy_len_: (copylen | ((copylen_code ^ copylen) << 25)) as u32, dist_extra_: 0, cmd_prefix_: 0, dist_prefix_: 0, }; cmd.init(dist, insertlen, copylen, copylen_code, distance_code); cmd } } brotli-6.0.0/src/enc/compat.rs000075500000000000000000000245611046102023000143220ustar 00000000000000#![cfg_attr(feature = "simd", allow(unused))] use core::ops::{Add, AddAssign, BitAnd, Index, IndexMut, Mul, Shr, Sub}; #[derive(Default, Copy, Clone, Debug)] pub struct Compat16x16([i16; 16]); impl Compat16x16 { #[inline(always)] pub fn splat(a: i16) -> Compat16x16 { Compat16x16([a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a]) } #[inline(always)] pub fn to_int(&self) -> Self { *self } #[inline(always)] pub fn simd_gt(&self, rhs: Compat16x16) -> Compat16x16 { Self([ -((self[0] > rhs[0]) as i16), -((self[1] > rhs[1]) as i16), -((self[2] > rhs[2]) as i16), -((self[3] > rhs[3]) as i16), -((self[4] > rhs[4]) as i16), -((self[5] > rhs[5]) as i16), -((self[6] > rhs[6]) as i16), -((self[7] > rhs[7]) as i16), -((self[8] > rhs[8]) as i16), -((self[9] > rhs[9]) as i16), -((self[10] > rhs[10]) as i16), -((self[11] > rhs[11]) as i16), -((self[12] > rhs[12]) as i16), -((self[13] > rhs[13]) as i16), -((self[14] > rhs[14]) as i16), -((self[15] > rhs[15]) as i16), ]) } } macro_rules! op16 { ($a: expr, $b: expr, $op: expr) => { Compat16x16([ $op($a[0], $b[0]), $op($a[1], $b[1]), $op($a[2], $b[2]), $op($a[3], $b[3]), $op($a[4], $b[4]), $op($a[5], $b[5]), $op($a[6], $b[6]), $op($a[7], $b[7]), $op($a[8], $b[8]), $op($a[9], $b[9]), $op($a[10], $b[10]), $op($a[11], $b[11]), $op($a[12], $b[12]), $op($a[13], $b[13]), $op($a[14], $b[14]), $op($a[15], $b[15]), ]) }; } macro_rules! scalar_op16 { ($a: expr, $b: expr, $op: expr) => { Compat16x16([ $op($a[0], $b), $op($a[1], $b), $op($a[2], $b), $op($a[3], $b), $op($a[4], $b), $op($a[5], $b), $op($a[6], $b), $op($a[7], $b), $op($a[8], $b), $op($a[9], $b), $op($a[10], $b), $op($a[11], $b), $op($a[12], $b), $op($a[13], $b), $op($a[14], $b), $op($a[15], $b), ]) }; } #[inline(always)] fn wrapping_i16_add(a: i16, b: i16) -> i16 { a.wrapping_add(b) } #[inline(always)] fn wrapping_i16_sub(a: i16, b: i16) -> i16 { a.wrapping_sub(b) } #[inline(always)] fn i16_bitand(a: i16, b: i16) -> i16 { a & b } #[inline(always)] fn shift16(a: i16, b: Scalar) -> i16 where i64: From, { a >> i64::from(b) } impl Add for Compat16x16 { type Output = Compat16x16; #[inline(always)] fn add(self, other: Compat16x16) -> Compat16x16 { op16!(self.0, other.0, wrapping_i16_add) } } impl Sub for Compat16x16 { type Output = Compat16x16; #[inline(always)] fn sub(self, other: Compat16x16) -> Compat16x16 { op16!(self.0, other.0, wrapping_i16_sub) } } impl BitAnd for Compat16x16 { type Output = Compat16x16; #[inline(always)] fn bitand(self, other: Compat16x16) -> Compat16x16 { op16!(self.0, other.0, i16_bitand) } } impl From<[i16; 16]> for Compat16x16 { fn from(value: [i16; 16]) -> Self { Self(value) } } impl Index for Compat16x16 where I: core::slice::SliceIndex<[i16]>, { type Output = I::Output; fn index(&self, index: I) -> &Self::Output { &self.0[index] } } impl IndexMut for Compat16x16 where I: core::slice::SliceIndex<[i16]>, { fn index_mut(&mut self, index: I) -> &mut Self::Output { &mut self.0[index] } } impl Shr for Compat16x16 where i64: From, { type Output = Compat16x16; #[inline(always)] fn shr(self, other: Scalar) -> Compat16x16 { scalar_op16!(self.0, other.clone(), shift16) } } #[derive(Default, Copy, Clone, Debug)] pub struct Compat32x8([i32; 8]); impl Compat32x8 { #[inline(always)] pub fn splat(a: i32) -> Compat32x8 { Compat32x8([a, a, a, a, a, a, a, a]) } #[inline(always)] pub fn simd_gt(&self, rhs: Compat32x8) -> Compat32x8 { Self([ -((self[0] > rhs[0]) as i32), -((self[1] > rhs[1]) as i32), -((self[2] > rhs[2]) as i32), -((self[3] > rhs[3]) as i32), -((self[4] > rhs[4]) as i32), -((self[5] > rhs[5]) as i32), -((self[6] > rhs[6]) as i32), -((self[7] > rhs[7]) as i32), ]) } #[inline(always)] pub fn simd_ge(&self, rhs: Compat32x8) -> Compat32x8 { Self([ -((self[0] >= rhs[0]) as i32), -((self[1] >= rhs[1]) as i32), -((self[2] >= rhs[2]) as i32), -((self[3] >= rhs[3]) as i32), -((self[4] >= rhs[4]) as i32), -((self[5] >= rhs[5]) as i32), -((self[6] >= rhs[6]) as i32), -((self[7] >= rhs[7]) as i32), ]) } pub fn to_int(&self) -> Self { *self } } #[inline(always)] fn fmin(a: f32, b: f32) -> f32 { if a < b { a } else { b } } #[derive(Default, Copy, Clone, Debug)] pub struct CompatF8([f32; 8]); impl CompatF8 { #[inline(always)] pub fn splat(a: f32) -> CompatF8 { CompatF8([a, a, a, a, a, a, a, a]) } #[inline(always)] pub fn simd_ge(&self, rhs: CompatF8) -> Compat32x8 { Compat32x8([ -((self[0] >= rhs[0]) as i32), -((self[1] >= rhs[1]) as i32), -((self[2] >= rhs[2]) as i32), -((self[3] >= rhs[3]) as i32), -((self[4] >= rhs[4]) as i32), -((self[5] >= rhs[5]) as i32), -((self[6] >= rhs[6]) as i32), -((self[7] >= rhs[7]) as i32), ]) } #[inline(always)] pub fn simd_min(&self, rhs: CompatF8) -> CompatF8 { Self([ fmin(self[0], rhs[0]), fmin(self[1], rhs[1]), fmin(self[2], rhs[2]), fmin(self[3], rhs[3]), fmin(self[4], rhs[4]), fmin(self[5], rhs[5]), fmin(self[6], rhs[6]), fmin(self[7], rhs[7]), ]) } } impl Add for Compat32x8 { type Output = Compat32x8; #[inline(always)] fn add(self, other: Compat32x8) -> Compat32x8 { Compat32x8([ self.0[0].wrapping_add(other.0[0]), self.0[1].wrapping_add(other.0[1]), self.0[2].wrapping_add(other.0[2]), self.0[3].wrapping_add(other.0[3]), self.0[4].wrapping_add(other.0[4]), self.0[5].wrapping_add(other.0[5]), self.0[6].wrapping_add(other.0[6]), self.0[7].wrapping_add(other.0[7]), ]) } } impl BitAnd for Compat32x8 { type Output = Compat32x8; #[inline(always)] fn bitand(self, other: Compat32x8) -> Compat32x8 { Compat32x8([ self.0[0] & other.0[0], self.0[1] & other.0[1], self.0[2] & other.0[2], self.0[3] & other.0[3], self.0[4] & other.0[4], self.0[5] & other.0[5], self.0[6] & other.0[6], self.0[7] & other.0[7], ]) } } impl Mul for Compat32x8 { type Output = Compat32x8; #[inline(always)] fn mul(self, other: Compat32x8) -> Compat32x8 { Compat32x8([ self.0[0].wrapping_mul(other.0[0]), self.0[1].wrapping_mul(other.0[1]), self.0[2].wrapping_mul(other.0[2]), self.0[3].wrapping_mul(other.0[3]), self.0[4].wrapping_mul(other.0[4]), self.0[5].wrapping_mul(other.0[5]), self.0[6].wrapping_mul(other.0[6]), self.0[7].wrapping_mul(other.0[7]), ]) } } impl From<[i32; 8]> for Compat32x8 { fn from(value: [i32; 8]) -> Self { Self(value) } } impl Index for Compat32x8 where I: core::slice::SliceIndex<[i32]>, { type Output = I::Output; fn index(&self, index: I) -> &Self::Output { &self.0[index] } } impl IndexMut for Compat32x8 where I: core::slice::SliceIndex<[i32]>, { fn index_mut(&mut self, index: I) -> &mut Self::Output { &mut self.0[index] } } impl Add for CompatF8 { type Output = CompatF8; #[inline(always)] fn add(self, other: CompatF8) -> CompatF8 { CompatF8([ self.0[0] + other.0[0], self.0[1] + other.0[1], self.0[2] + other.0[2], self.0[3] + other.0[3], self.0[4] + other.0[4], self.0[5] + other.0[5], self.0[6] + other.0[6], self.0[7] + other.0[7], ]) } } impl Sub for CompatF8 { type Output = CompatF8; #[inline(always)] fn sub(self, other: CompatF8) -> CompatF8 { CompatF8([ self.0[0] - other.0[0], self.0[1] - other.0[1], self.0[2] - other.0[2], self.0[3] - other.0[3], self.0[4] - other.0[4], self.0[5] - other.0[5], self.0[6] - other.0[6], self.0[7] - other.0[7], ]) } } impl Mul for CompatF8 { type Output = CompatF8; #[inline(always)] fn mul(self, other: CompatF8) -> CompatF8 { CompatF8([ self.0[0] * other.0[0], self.0[1] * other.0[1], self.0[2] * other.0[2], self.0[3] * other.0[3], self.0[4] * other.0[4], self.0[5] * other.0[5], self.0[6] * other.0[6], self.0[7] * other.0[7], ]) } } impl AddAssign for CompatF8 { #[inline(always)] fn add_assign(&mut self, other: CompatF8) { self.0[0] += other.0[0]; self.0[1] += other.0[1]; self.0[2] += other.0[2]; self.0[3] += other.0[3]; self.0[4] += other.0[4]; self.0[5] += other.0[5]; self.0[6] += other.0[6]; self.0[7] += other.0[7]; } } impl From<[f32; 8]> for CompatF8 { fn from(value: [f32; 8]) -> Self { Self(value) } } impl Index for CompatF8 where I: core::slice::SliceIndex<[f32]>, { type Output = I::Output; fn index(&self, index: I) -> &Self::Output { &self.0[index] } } impl IndexMut for CompatF8 where I: core::slice::SliceIndex<[f32]>, { fn index_mut(&mut self, index: I) -> &mut Self::Output { &mut self.0[index] } } brotli-6.0.0/src/enc/compress_fragment.rs000075500000000000000000001253401046102023000165520ustar 00000000000000#![allow(dead_code)] use super::backward_references::kHashMul32; //use super::super::alloc::{SliceWrapper, SliceWrapperMut}; use super::brotli_bit_stream::{BrotliBuildAndStoreHuffmanTreeFast, BrotliStoreHuffmanTree}; //caution: lots of the functions look structurally the same as two_pass, // but have subtle index differences // examples: IsMatch checks p1[4] and p1[5] // the hoops that BuildAndStoreCommandPrefixCode goes through are subtly different in order // (eg memcpy x+24, y instead of +24, y+40 // pretty much assume compress_fragment_two_pass is a trap! except for BrotliStoreMetaBlockHeader use super::compress_fragment_two_pass::{memcpy, BrotliStoreMetaBlockHeader, BrotliWriteBits}; use super::entropy_encode::{ BrotliConvertBitDepthsToSymbols, BrotliCreateHuffmanTree, HuffmanTree, }; use super::static_dict::{ FindMatchLengthWithLimit, BROTLI_UNALIGNED_LOAD32, BROTLI_UNALIGNED_LOAD64, }; use super::util::{FastLog2, Log2FloorNonZero}; use core::cmp::min; //static kHashMul32: u32 = 0x1e35a7bdu32; static kCmdHistoSeed: [u32; 128] = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, ]; fn Hash(p: &[u8], shift: usize) -> u32 { let h: u64 = (BROTLI_UNALIGNED_LOAD64(p) << 24).wrapping_mul(kHashMul32 as (u64)); (h >> shift) as u32 } fn IsMatch(p1: &[u8], p2: &[u8]) -> bool { BROTLI_UNALIGNED_LOAD32(p1) == BROTLI_UNALIGNED_LOAD32(p2) && (p1[4] as i32 == p2[4] as i32) } fn BuildAndStoreLiteralPrefixCode>( mht: &mut AllocHT, input: &[u8], input_size: usize, depths: &mut [u8], bits: &mut [u16], storage_ix: &mut usize, storage: &mut [u8], ) -> usize { let mut histogram: [u32; 256] = [0; 256]; let mut histogram_total: usize; let mut i: usize; if input_size < (1i32 << 15) as usize { for i in 0usize..input_size { let _rhs = 1; let _lhs = &mut histogram[input[i] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } histogram_total = input_size; i = 0usize; while i < 256usize { { let adjust: u32 = (2u32).wrapping_mul(min(histogram[i], 11u32)); { let _rhs = adjust; let _lhs = &mut histogram[i]; *_lhs = (*_lhs).wrapping_add(_rhs); } histogram_total = histogram_total.wrapping_add(adjust as usize); } i = i.wrapping_add(1); } } else { static kSampleRate: usize = 29usize; i = 0usize; while i < input_size { { let _rhs = 1; let _lhs = &mut histogram[input[i] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } i = i.wrapping_add(kSampleRate); } histogram_total = input_size .wrapping_add(kSampleRate) .wrapping_sub(1) .wrapping_div(kSampleRate); i = 0usize; while i < 256usize { { let adjust: u32 = (1u32).wrapping_add((2u32).wrapping_mul(min(histogram[i], 11u32))); { let _rhs = adjust; let _lhs = &mut histogram[i]; *_lhs = (*_lhs).wrapping_add(_rhs); } histogram_total = histogram_total.wrapping_add(adjust as usize); } i = i.wrapping_add(1); } } BrotliBuildAndStoreHuffmanTreeFast( mht, &mut histogram[..], histogram_total, 8usize, depths, bits, storage_ix, storage, ); { let mut literal_ratio: usize = 0usize; for i in 0usize..256usize { if histogram[i] != 0 { literal_ratio = literal_ratio .wrapping_add(histogram[i].wrapping_mul(depths[i] as u32) as usize); } } literal_ratio .wrapping_mul(125) .wrapping_div(histogram_total) } } #[derive(PartialEq, Eq, Copy, Clone)] pub enum CodeBlockState { EMIT_REMAINDER, EMIT_COMMANDS, NEXT_BLOCK, } fn EmitInsertLen( insertlen: usize, depth: &[u8], bits: &[u16], histo: &mut [u32], storage_ix: &mut usize, storage: &mut [u8], ) { if insertlen < 6usize { let code: usize = insertlen.wrapping_add(40); BrotliWriteBits( depth[code] as usize, bits[code] as (u64), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[code]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else if insertlen < 130usize { let tail: usize = insertlen.wrapping_sub(2); let nbits: u32 = Log2FloorNonZero(tail as u64).wrapping_sub(1); let prefix: usize = tail >> nbits; let inscode: usize = ((nbits << 1) as usize) .wrapping_add(prefix) .wrapping_add(42); BrotliWriteBits( depth[(inscode as usize)] as usize, bits[(inscode as usize)] as (u64), storage_ix, storage, ); BrotliWriteBits( nbits as usize, (tail as u64).wrapping_sub((prefix as u64) << nbits), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[(inscode as usize)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else if insertlen < 2114usize { let tail: usize = insertlen.wrapping_sub(66); let nbits: u32 = Log2FloorNonZero(tail as u64); let code: usize = nbits.wrapping_add(50) as usize; BrotliWriteBits( depth[(code as usize)] as usize, bits[(code as usize)] as (u64), storage_ix, storage, ); BrotliWriteBits( nbits as usize, (tail as u64).wrapping_sub(1 << nbits), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[(code as usize)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else { BrotliWriteBits(depth[61] as usize, bits[61] as (u64), storage_ix, storage); BrotliWriteBits( 12usize, (insertlen as u64).wrapping_sub(2114), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[61]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } } fn ShouldUseUncompressedMode(delta: isize, insertlen: usize, literal_ratio: usize) -> bool { let compressed = delta as usize; if compressed.wrapping_mul(50) > insertlen { false } else if literal_ratio > 980 { true } else { false } } fn RewindBitPosition(new_storage_ix: usize, storage_ix: &mut usize, storage: &mut [u8]) { let bitpos: usize = new_storage_ix & 7usize; let mask: usize = (1u32 << bitpos).wrapping_sub(1) as usize; { let _rhs = mask as u8; let _lhs = &mut storage[(new_storage_ix >> 3)]; *_lhs = (*_lhs as i32 & _rhs as i32) as u8; } *storage_ix = new_storage_ix; } fn EmitUncompressedMetaBlock( begin: &[u8], len: usize, storage_ix_start: usize, storage_ix: &mut usize, storage: &mut [u8], ) { RewindBitPosition(storage_ix_start, storage_ix, storage); BrotliStoreMetaBlockHeader(len, 1i32, storage_ix, storage); *storage_ix = storage_ix.wrapping_add(7u32 as usize) & !7u32 as usize; memcpy(storage, (*storage_ix >> 3), begin, 0, len); *storage_ix = storage_ix.wrapping_add(len << 3); storage[(*storage_ix >> 3)] = 0u8; } fn EmitLongInsertLen( insertlen: usize, depth: &[u8], bits: &[u16], histo: &mut [u32], storage_ix: &mut usize, storage: &mut [u8], ) { if insertlen < 22594usize { BrotliWriteBits(depth[62] as usize, bits[62] as (u64), storage_ix, storage); BrotliWriteBits( 14usize, (insertlen as u64).wrapping_sub(6210), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[62]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else { BrotliWriteBits(depth[63] as usize, bits[63] as (u64), storage_ix, storage); BrotliWriteBits( 24usize, (insertlen as u64).wrapping_sub(22594), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[63]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } } fn EmitLiterals( input: &[u8], len: usize, depth: &[u8], bits: &[u16], storage_ix: &mut usize, storage: &mut [u8], ) { for j in 0usize..len { let lit: u8 = input[j]; BrotliWriteBits( depth[(lit as usize)] as usize, bits[(lit as usize)] as (u64), storage_ix, storage, ); } } fn EmitDistance( distance: usize, depth: &[u8], bits: &[u16], histo: &mut [u32], storage_ix: &mut usize, storage: &mut [u8], ) { let d: u64 = distance.wrapping_add(3) as u64; let nbits: u32 = Log2FloorNonZero(d).wrapping_sub(1); let prefix: u64 = d >> nbits & 1; let offset: u64 = (2u64).wrapping_add(prefix) << nbits; let distcode: u64 = ((2u32).wrapping_mul(nbits.wrapping_sub(1)) as (u64)) .wrapping_add(prefix) .wrapping_add(80); BrotliWriteBits( depth[(distcode as usize)] as usize, bits[(distcode as usize)] as (u64), storage_ix, storage, ); BrotliWriteBits(nbits as usize, d.wrapping_sub(offset), storage_ix, storage); { let _rhs = 1; let _lhs = &mut histo[(distcode as usize)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } fn EmitCopyLenLastDistance( copylen: usize, depth: &[u8], bits: &[u16], histo: &mut [u32], storage_ix: &mut usize, storage: &mut [u8], ) { if copylen < 12usize { BrotliWriteBits( depth[copylen.wrapping_sub(4)] as usize, bits[copylen.wrapping_sub(4)] as (u64), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[copylen.wrapping_sub(4)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else if copylen < 72usize { let tail: usize = copylen.wrapping_sub(8); let nbits: u32 = Log2FloorNonZero(tail as u64).wrapping_sub(1); let prefix: usize = tail >> nbits; let code: usize = ((nbits << 1) as usize).wrapping_add(prefix).wrapping_add(4); BrotliWriteBits( depth[(code as usize)] as usize, bits[(code as usize)] as (u64), storage_ix, storage, ); BrotliWriteBits( nbits as usize, tail.wrapping_sub(prefix << nbits) as u64, storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[(code as usize)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else if copylen < 136usize { let tail: usize = copylen.wrapping_sub(8); let code: usize = (tail >> 5).wrapping_add(30); BrotliWriteBits( depth[code] as usize, bits[code] as (u64), storage_ix, storage, ); BrotliWriteBits(5usize, tail as u64 & 31, storage_ix, storage); BrotliWriteBits(depth[64] as usize, bits[64] as (u64), storage_ix, storage); { let _rhs = 1; let _lhs = &mut histo[code]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } { let _rhs = 1; let _lhs = &mut histo[64]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else if copylen < 2120usize { let tail: usize = copylen.wrapping_sub(72); let nbits: u32 = Log2FloorNonZero(tail as u64); let code: usize = nbits.wrapping_add(28) as usize; BrotliWriteBits( depth[(code as usize)] as usize, bits[(code as usize)] as (u64), storage_ix, storage, ); BrotliWriteBits( nbits as usize, (tail as u64).wrapping_sub(1u64 << nbits), storage_ix, storage, ); BrotliWriteBits(depth[64] as usize, bits[64] as (u64), storage_ix, storage); { let _rhs = 1; let _lhs = &mut histo[(code as usize)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } { let _rhs = 1; let _lhs = &mut histo[64]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else { BrotliWriteBits(depth[39] as usize, bits[39] as (u64), storage_ix, storage); BrotliWriteBits( 24usize, copylen.wrapping_sub(2120) as u64, storage_ix, storage, ); BrotliWriteBits(depth[64] as usize, bits[64] as (u64), storage_ix, storage); { let _rhs = 1; let _lhs = &mut histo[39]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } { let _rhs = 1; let _lhs = &mut histo[64]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } } fn HashBytesAtOffset(v: u64, offset: i32, shift: usize) -> u32 { let h: u64 = (v >> (8i32 * offset) << 24).wrapping_mul(kHashMul32 as (u64)); (h >> shift) as u32 } fn EmitCopyLen( copylen: usize, depth: &[u8], bits: &[u16], histo: &mut [u32], storage_ix: &mut usize, storage: &mut [u8], ) { if copylen < 10usize { BrotliWriteBits( depth[copylen.wrapping_add(14)] as usize, bits[copylen.wrapping_add(14)] as (u64), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[copylen.wrapping_add(14)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else if copylen < 134usize { let tail: usize = copylen.wrapping_sub(6); let nbits: u32 = Log2FloorNonZero(tail as u64).wrapping_sub(1); let prefix: usize = tail >> nbits; let code: usize = ((nbits << 1) as usize) .wrapping_add(prefix) .wrapping_add(20); BrotliWriteBits( depth[(code as usize)] as usize, bits[(code as usize)] as (u64), storage_ix, storage, ); BrotliWriteBits( nbits as usize, (tail as u64).wrapping_sub((prefix as u64) << nbits), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[(code as usize)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else if copylen < 2118usize { let tail: usize = copylen.wrapping_sub(70); let nbits: u32 = Log2FloorNonZero(tail as u64); let code: usize = nbits.wrapping_add(28) as usize; BrotliWriteBits( depth[(code as usize)] as usize, bits[(code as usize)] as (u64), storage_ix, storage, ); BrotliWriteBits( nbits as usize, (tail as u64).wrapping_sub(1 << nbits), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[(code as usize)]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } else { BrotliWriteBits(depth[39] as usize, bits[39] as (u64), storage_ix, storage); BrotliWriteBits( 24usize, (copylen as u64).wrapping_sub(2118), storage_ix, storage, ); { let _rhs = 1; let _lhs = &mut histo[39]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } } fn ShouldMergeBlock(data: &[u8], len: usize, depths: &[u8]) -> bool { let mut histo: [usize; 256] = [0; 256]; static kSampleRate: usize = 43usize; let mut i: usize; i = 0usize; while i < len { { let _rhs = 1; let _lhs = &mut histo[data[i] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as usize); } i = i.wrapping_add(kSampleRate); } { let total: usize = len .wrapping_add(kSampleRate) .wrapping_sub(1) .wrapping_div(kSampleRate); let mut r: super::util::floatX = (FastLog2(total as u64) + 0.5 as super::util::floatX) * total as (super::util::floatX) + 200i32 as (super::util::floatX); for i in 0usize..256usize { r -= histo[i] as (super::util::floatX) * (depths[i] as (super::util::floatX) + FastLog2(histo[i] as u64)); } r >= 0.0 } } fn UpdateBits(mut n_bits: usize, mut bits: u32, mut pos: usize, array: &mut [u8]) { while n_bits > 0usize { let byte_pos: usize = pos >> 3; let n_unchanged_bits: usize = pos & 7usize; let n_changed_bits: usize = min(n_bits, (8usize).wrapping_sub(n_unchanged_bits)); let total_bits: usize = n_unchanged_bits.wrapping_add(n_changed_bits); let mask: u32 = !(1u32 << total_bits).wrapping_sub(1) | (1u32 << n_unchanged_bits).wrapping_sub(1); let unchanged_bits: u32 = array[byte_pos] as u32 & mask; let changed_bits: u32 = bits & (1u32 << n_changed_bits).wrapping_sub(1); array[byte_pos] = (changed_bits << n_unchanged_bits | unchanged_bits) as u8; n_bits = n_bits.wrapping_sub(n_changed_bits); bits >>= n_changed_bits; pos = pos.wrapping_add(n_changed_bits); } } fn BuildAndStoreCommandPrefixCode( histogram: &[u32], depth: &mut [u8], bits: &mut [u16], storage_ix: &mut usize, storage: &mut [u8], ) { let mut tree = [HuffmanTree::new(0, 0, 0); 129]; let mut cmd_depth: [u8; 704] = [0u8; 704]; let mut cmd_bits: [u16; 64] = [0; 64]; BrotliCreateHuffmanTree(histogram, 64usize, 15i32, &mut tree[..], depth); BrotliCreateHuffmanTree( &histogram[64..], 64usize, 14i32, &mut tree[..], &mut depth[64..], ); /* We have to jump through a few hoops here in order to compute the command bits because the symbols are in a different order than in the full alphabet. This looks complicated, but having the symbols in this order in the command bits saves a few branches in the Emit* functions. */ memcpy(&mut cmd_depth[..], 0, depth, 0, 24usize); memcpy(&mut cmd_depth[..], 24usize, depth, (40usize), 8usize); memcpy(&mut cmd_depth[..], 32usize, depth, (24usize), 8usize); memcpy(&mut cmd_depth[..], 40usize, depth, (48usize), 8usize); memcpy(&mut cmd_depth[..], 48usize, depth, (32usize), 8usize); memcpy(&mut cmd_depth[..], 56usize, depth, (56usize), 8usize); BrotliConvertBitDepthsToSymbols(&mut cmd_depth[..], 64usize, &mut cmd_bits[..]); memcpy(bits, 0, &cmd_bits[..], 0, 24usize); memcpy(bits, (24usize), &cmd_bits[..], 32usize, 8usize); memcpy(bits, (32usize), &cmd_bits[..], 48usize, 8usize); memcpy(bits, (40usize), &cmd_bits[..], 24usize, 8usize); memcpy(bits, (48usize), &cmd_bits[..], 40usize, 8usize); memcpy(bits, (56usize), &cmd_bits[..], 56usize, 8usize); BrotliConvertBitDepthsToSymbols(&mut depth[64..], 64usize, &mut bits[64..]); { for item in cmd_depth[..64].iter_mut() { *item = 0; } memcpy(&mut cmd_depth[..], 0, depth, 0, 8usize); memcpy(&mut cmd_depth[..], 64usize, depth, (8usize), 8usize); memcpy(&mut cmd_depth[..], 128usize, depth, (16usize), 8usize); memcpy(&mut cmd_depth[..], 192usize, depth, (24usize), 8usize); memcpy(&mut cmd_depth[..], 384usize, depth, (32usize), 8usize); for i in 0usize..8usize { cmd_depth[(128usize).wrapping_add((8usize).wrapping_mul(i))] = depth[i.wrapping_add(40)]; cmd_depth[(256usize).wrapping_add((8usize).wrapping_mul(i))] = depth[i.wrapping_add(48)]; cmd_depth[(448usize).wrapping_add((8usize).wrapping_mul(i))] = depth[i.wrapping_add(56)]; } BrotliStoreHuffmanTree( &mut cmd_depth[..], 704usize, &mut tree[..], storage_ix, storage, ); } BrotliStoreHuffmanTree( &mut depth[64..], 64usize, &mut tree[..], storage_ix, storage, ); } #[allow(unused_assignments)] fn BrotliCompressFragmentFastImpl>( m: &mut AllocHT, input_ptr: &[u8], mut input_size: usize, is_last: i32, table: &mut [i32], table_bits: usize, cmd_depth: &mut [u8], cmd_bits: &mut [u16], cmd_code_numbits: &mut usize, cmd_code: &mut [u8], storage_ix: &mut usize, storage: &mut [u8], ) { let mut cmd_histo = [0u32; 128]; let mut ip_end = 0usize; let mut next_emit = 0usize; let base_ip = 0usize; static kFirstBlockSize: usize = (3i32 << 15) as usize; static kMergeBlockSize: usize = (1i32 << 16) as usize; let kInputMarginBytes = 16usize; let kMinMatchLen = 5usize; let mut metablock_start = 0usize; let mut block_size = min(input_size, kFirstBlockSize); let mut total_block_size = block_size; let mut mlen_storage_ix = storage_ix.wrapping_add(3); let mut lit_depth = [0u8; 256]; let mut lit_bits = [0u16; 256]; let mut literal_ratio: usize; let mut input_index = 0usize; let mut last_distance: i32; let shift: usize = (64u32 as usize).wrapping_sub(table_bits); BrotliStoreMetaBlockHeader(block_size, 0i32, storage_ix, storage); BrotliWriteBits(13usize, 0, storage_ix, storage); literal_ratio = BuildAndStoreLiteralPrefixCode( m, &input_ptr[input_index..], block_size, &mut lit_depth[..], &mut lit_bits[..], storage_ix, storage, ); { let mut i = 0usize; while i.wrapping_add(7) < *cmd_code_numbits { BrotliWriteBits(8usize, cmd_code[i >> 3] as u64, storage_ix, storage); i = i.wrapping_add(8); } } BrotliWriteBits( *cmd_code_numbits & 7usize, cmd_code[*cmd_code_numbits >> 3] as u64, storage_ix, storage, ); let mut code_block_selection: CodeBlockState = CodeBlockState::EMIT_COMMANDS; 'continue_to_next_block: loop { let mut ip_index: usize; if code_block_selection == CodeBlockState::EMIT_COMMANDS { cmd_histo[..128].clone_from_slice(&kCmdHistoSeed[..]); ip_index = input_index; last_distance = -1i32; ip_end = input_index.wrapping_add(block_size); if block_size >= kInputMarginBytes { let len_limit: usize = min( block_size.wrapping_sub(kMinMatchLen), input_size.wrapping_sub(kInputMarginBytes), ); let ip_limit: usize = input_index.wrapping_add(len_limit); let mut next_hash = Hash( &input_ptr[{ ip_index = ip_index.wrapping_add(1); ip_index }..], shift, ); loop { let mut skip = 32u32; let mut next_ip = ip_index; let mut candidate = 0usize; loop { { 'break15: loop { { let hash = next_hash; let bytes_between_hash_lookups: u32 = skip >> 5; skip = skip.wrapping_add(1); ip_index = next_ip; next_ip = ip_index.wrapping_add(bytes_between_hash_lookups as usize); if next_ip > ip_limit { code_block_selection = CodeBlockState::EMIT_REMAINDER; break 'break15; } next_hash = Hash(&input_ptr[next_ip..], shift); candidate = ip_index.wrapping_sub(last_distance as usize); if IsMatch(&input_ptr[ip_index..], &input_ptr[candidate..]) && candidate < ip_index { table[hash as usize] = ip_index.wrapping_sub(base_ip) as i32; break 'break15; } candidate = base_ip.wrapping_add(table[hash as usize] as usize); table[hash as usize] = ip_index.wrapping_sub(base_ip) as i32; } if IsMatch(&input_ptr[ip_index..], &input_ptr[candidate..]) { break; } } } if !(ip_index.wrapping_sub(candidate) > (1usize << 18).wrapping_sub(16) as isize as usize && (code_block_selection as i32 == CodeBlockState::EMIT_COMMANDS as i32)) { break; } } if code_block_selection as i32 != CodeBlockState::EMIT_COMMANDS as i32 { break; } { let base: usize = ip_index; let matched = (5usize).wrapping_add(FindMatchLengthWithLimit( &input_ptr[candidate + 5..], &input_ptr[ip_index + 5..], ip_end.wrapping_sub(ip_index).wrapping_sub(5), )); let distance = base.wrapping_sub(candidate) as i32; let insert = base.wrapping_sub(next_emit); ip_index = ip_index.wrapping_add(matched); if insert < 6210 { EmitInsertLen( insert, cmd_depth, cmd_bits, &mut cmd_histo[..], storage_ix, storage, ); } else if ShouldUseUncompressedMode( (next_emit as isize) - (metablock_start as isize), insert, literal_ratio, ) { EmitUncompressedMetaBlock( &input_ptr[metablock_start..], base.wrapping_sub(metablock_start), mlen_storage_ix.wrapping_sub(3), storage_ix, storage, ); input_size = input_size.wrapping_sub(base.wrapping_sub(input_index)); input_index = base; next_emit = input_index; code_block_selection = CodeBlockState::NEXT_BLOCK; continue 'continue_to_next_block; } else { EmitLongInsertLen( insert, cmd_depth, cmd_bits, &mut cmd_histo[..], storage_ix, storage, ); } EmitLiterals( &input_ptr[next_emit..], insert, &mut lit_depth[..], &mut lit_bits[..], storage_ix, storage, ); if distance == last_distance { BrotliWriteBits( cmd_depth[64] as usize, cmd_bits[64] as u64, storage_ix, storage, ); { let _rhs = 1u32; let _lhs = &mut cmd_histo[64]; *_lhs = (*_lhs).wrapping_add(_rhs); } } else { EmitDistance( distance as usize, cmd_depth, cmd_bits, &mut cmd_histo[..], storage_ix, storage, ); last_distance = distance; } EmitCopyLenLastDistance( matched, cmd_depth, cmd_bits, &mut cmd_histo[..], storage_ix, storage, ); next_emit = ip_index; if ip_index >= ip_limit { code_block_selection = CodeBlockState::EMIT_REMAINDER; continue 'continue_to_next_block; } { assert!(ip_index >= 3); let input_bytes: u64 = BROTLI_UNALIGNED_LOAD64(&input_ptr[ip_index - 3..]); let mut prev_hash: u32 = HashBytesAtOffset(input_bytes, 0i32, shift); let cur_hash: u32 = HashBytesAtOffset(input_bytes, 3i32, shift); table[prev_hash as usize] = ip_index.wrapping_sub(base_ip).wrapping_sub(3) as i32; prev_hash = HashBytesAtOffset(input_bytes, 1i32, shift); table[prev_hash as usize] = ip_index.wrapping_sub(base_ip).wrapping_sub(2) as i32; prev_hash = HashBytesAtOffset(input_bytes, 2i32, shift); table[prev_hash as usize] = ip_index.wrapping_sub(base_ip).wrapping_sub(1) as i32; candidate = base_ip.wrapping_add(table[cur_hash as usize] as usize); table[cur_hash as usize] = ip_index.wrapping_sub(base_ip) as i32; } } while IsMatch(&input_ptr[ip_index..], &input_ptr[candidate..]) { let base: usize = ip_index; let matched: usize = (5usize).wrapping_add(FindMatchLengthWithLimit( &input_ptr[candidate + 5..], &input_ptr[ip_index + 5..], ip_end.wrapping_sub(ip_index).wrapping_sub(5), )); if ip_index.wrapping_sub(candidate) > (1usize << 18).wrapping_sub(16) { break; } ip_index = ip_index.wrapping_add(matched); last_distance = base.wrapping_sub(candidate) as i32; EmitCopyLen( matched, cmd_depth, cmd_bits, &mut cmd_histo[..], storage_ix, storage, ); EmitDistance( last_distance as usize, cmd_depth, cmd_bits, &mut cmd_histo[..], storage_ix, storage, ); next_emit = ip_index; if ip_index >= ip_limit { code_block_selection = CodeBlockState::EMIT_REMAINDER; continue 'continue_to_next_block; } { assert!(ip_index >= 3); let input_bytes: u64 = BROTLI_UNALIGNED_LOAD64(&input_ptr[ip_index - 3..]); let mut prev_hash: u32 = HashBytesAtOffset(input_bytes, 0i32, shift); let cur_hash: u32 = HashBytesAtOffset(input_bytes, 3i32, shift); table[prev_hash as usize] = ip_index.wrapping_sub(base_ip).wrapping_sub(3) as i32; prev_hash = HashBytesAtOffset(input_bytes, 1i32, shift); table[prev_hash as usize] = ip_index.wrapping_sub(base_ip).wrapping_sub(2) as i32; prev_hash = HashBytesAtOffset(input_bytes, 2i32, shift); table[prev_hash as usize] = ip_index.wrapping_sub(base_ip).wrapping_sub(1) as i32; candidate = base_ip.wrapping_add(table[cur_hash as usize] as usize); table[cur_hash as usize] = ip_index.wrapping_sub(base_ip) as i32; } } if code_block_selection as i32 == CodeBlockState::EMIT_REMAINDER as i32 { break; } if code_block_selection as i32 == CodeBlockState::EMIT_COMMANDS as i32 { next_hash = Hash( &input_ptr[{ ip_index = ip_index.wrapping_add(1); ip_index }..], shift, ); } } } code_block_selection = CodeBlockState::EMIT_REMAINDER; continue 'continue_to_next_block; } else if code_block_selection as i32 == CodeBlockState::EMIT_REMAINDER as i32 { input_index = input_index.wrapping_add(block_size); input_size = input_size.wrapping_sub(block_size); block_size = min(input_size, kMergeBlockSize); if input_size > 0 && (total_block_size.wrapping_add(block_size) <= (1i32 << 20) as usize) && ShouldMergeBlock(&input_ptr[input_index..], block_size, &mut lit_depth[..]) { total_block_size = total_block_size.wrapping_add(block_size); UpdateBits( 20usize, total_block_size.wrapping_sub(1) as u32, mlen_storage_ix, storage, ); code_block_selection = CodeBlockState::EMIT_COMMANDS; continue 'continue_to_next_block; } if next_emit < ip_end { let insert: usize = ip_end.wrapping_sub(next_emit); if insert < 6210 { EmitInsertLen( insert, cmd_depth, cmd_bits, &mut cmd_histo[..], storage_ix, storage, ); EmitLiterals( &input_ptr[next_emit..], insert, &mut lit_depth[..], &mut lit_bits[..], storage_ix, storage, ); } else if ShouldUseUncompressedMode( next_emit as isize - metablock_start as isize, insert, literal_ratio, ) { EmitUncompressedMetaBlock( &input_ptr[metablock_start..], ip_end.wrapping_sub(metablock_start), mlen_storage_ix.wrapping_sub(3), storage_ix, storage, ); } else { EmitLongInsertLen( insert, cmd_depth, cmd_bits, &mut cmd_histo[..], storage_ix, storage, ); EmitLiterals( &input_ptr[next_emit..], insert, &mut lit_depth[..], &mut lit_bits[..], storage_ix, storage, ); } } next_emit = ip_end; code_block_selection = CodeBlockState::NEXT_BLOCK; continue 'continue_to_next_block; } else if code_block_selection as i32 == CodeBlockState::NEXT_BLOCK as i32 { if input_size > 0 { metablock_start = input_index; block_size = min(input_size, kFirstBlockSize); total_block_size = block_size; mlen_storage_ix = storage_ix.wrapping_add(3); BrotliStoreMetaBlockHeader(block_size, 0i32, storage_ix, storage); BrotliWriteBits(13usize, 0, storage_ix, storage); literal_ratio = BuildAndStoreLiteralPrefixCode( m, &input_ptr[input_index..], block_size, &mut lit_depth[..], &mut lit_bits[..], storage_ix, storage, ); BuildAndStoreCommandPrefixCode( &mut cmd_histo[..], cmd_depth, cmd_bits, storage_ix, storage, ); code_block_selection = CodeBlockState::EMIT_COMMANDS; continue 'continue_to_next_block; } break; } } if is_last == 0 { cmd_code[0] = 0; *cmd_code_numbits = 0; BuildAndStoreCommandPrefixCode( &mut cmd_histo[..], cmd_depth, cmd_bits, cmd_code_numbits, cmd_code, ); } } macro_rules! compress_specialization { ($table_bits : expr, $fname: ident) => { fn $fname>( mht: &mut AllocHT, input: &[u8], input_size: usize, is_last: i32, table: &mut [i32], cmd_depth: &mut [u8], cmd_bits: &mut [u16], cmd_code_numbits: &mut usize, cmd_code: &mut [u8], storage_ix: &mut usize, storage: &mut [u8], ) { BrotliCompressFragmentFastImpl( mht, input, input_size, is_last, table, $table_bits, cmd_depth, cmd_bits, cmd_code_numbits, cmd_code, storage_ix, storage, ); } }; } compress_specialization!(9, BrotliCompressFragmentFastImpl9); compress_specialization!(11, BrotliCompressFragmentFastImpl11); compress_specialization!(13, BrotliCompressFragmentFastImpl13); compress_specialization!(15, BrotliCompressFragmentFastImpl15); pub fn BrotliCompressFragmentFast>( m: &mut AllocHT, input: &[u8], input_size: usize, is_last: i32, table: &mut [i32], table_size: usize, cmd_depth: &mut [u8], cmd_bits: &mut [u16], cmd_code_numbits: &mut usize, cmd_code: &mut [u8], storage_ix: &mut usize, storage: &mut [u8], ) { let initial_storage_ix: usize = *storage_ix; let table_bits: usize = Log2FloorNonZero(table_size as u64) as usize; if input_size == 0usize { BrotliWriteBits(1usize, 1, storage_ix, storage); BrotliWriteBits(1usize, 1, storage_ix, storage); *storage_ix = storage_ix.wrapping_add(7u32 as usize) & !7u32 as usize; return; } if table_bits == 9usize { BrotliCompressFragmentFastImpl9( m, input, input_size, is_last, table, cmd_depth, cmd_bits, cmd_code_numbits, cmd_code, storage_ix, storage, ); } if table_bits == 11usize { BrotliCompressFragmentFastImpl11( m, input, input_size, is_last, table, cmd_depth, cmd_bits, cmd_code_numbits, cmd_code, storage_ix, storage, ); } if table_bits == 13usize { BrotliCompressFragmentFastImpl13( m, input, input_size, is_last, table, cmd_depth, cmd_bits, cmd_code_numbits, cmd_code, storage_ix, storage, ); } if table_bits == 15usize { BrotliCompressFragmentFastImpl15( m, input, input_size, is_last, table, cmd_depth, cmd_bits, cmd_code_numbits, cmd_code, storage_ix, storage, ); } if storage_ix.wrapping_sub(initial_storage_ix) > (31usize).wrapping_add(input_size << 3) { EmitUncompressedMetaBlock(input, input_size, initial_storage_ix, storage_ix, storage); } if is_last != 0 { BrotliWriteBits(1usize, 1, storage_ix, storage); BrotliWriteBits(1usize, 1, storage_ix, storage); *storage_ix = storage_ix.wrapping_add(7u32 as usize) & !7u32 as usize; } } brotli-6.0.0/src/enc/compress_fragment_two_pass.rs000075500000000000000000001041131046102023000204640ustar 00000000000000#![allow(dead_code)] use super::backward_references::kHashMul32; use super::bit_cost::BitsEntropy; use super::brotli_bit_stream::{BrotliBuildAndStoreHuffmanTreeFast, BrotliStoreHuffmanTree}; use super::entropy_encode::{ BrotliConvertBitDepthsToSymbols, BrotliCreateHuffmanTree, HuffmanTree, }; use super::static_dict::{ FindMatchLengthWithLimit, BROTLI_UNALIGNED_LOAD32, BROTLI_UNALIGNED_LOAD64, BROTLI_UNALIGNED_STORE64, }; use super::util::Log2FloorNonZero; use core::cmp::min; static kCompressFragmentTwoPassBlockSize: usize = (1i32 << 17) as usize; // returns number of commands inserted fn EmitInsertLen(insertlen: u32, commands: &mut &mut [u32]) -> usize { if insertlen < 6u32 { (*commands)[0] = insertlen; } else if insertlen < 130u32 { let tail: u32 = insertlen.wrapping_sub(2); let nbits: u32 = Log2FloorNonZero(tail as (u64)).wrapping_sub(1); let prefix: u32 = tail >> nbits; let inscode: u32 = (nbits << 1).wrapping_add(prefix).wrapping_add(2); let extra: u32 = tail.wrapping_sub(prefix << nbits); (*commands)[0] = inscode | extra << 8; } else if insertlen < 2114u32 { let tail: u32 = insertlen.wrapping_sub(66); let nbits: u32 = Log2FloorNonZero(tail as (u64)); let code: u32 = nbits.wrapping_add(10); let extra: u32 = tail.wrapping_sub(1u32 << nbits); (*commands)[0] = code | extra << 8; } else if insertlen < 6210u32 { let extra: u32 = insertlen.wrapping_sub(2114); (*commands)[0] = 21u32 | extra << 8; } else if insertlen < 22594u32 { let extra: u32 = insertlen.wrapping_sub(6210); (*commands)[0] = 22u32 | extra << 8; } else { let extra: u32 = insertlen.wrapping_sub(22594); (*commands)[0] = 23u32 | extra << 8; } let remainder = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder[1..]); 1 } fn EmitDistance(distance: u32, commands: &mut &mut [u32]) -> usize { let d: u32 = distance.wrapping_add(3); let nbits: u32 = Log2FloorNonZero(d as (u64)).wrapping_sub(1); let prefix: u32 = d >> nbits & 1u32; let offset: u32 = (2u32).wrapping_add(prefix) << nbits; let distcode: u32 = (2u32) .wrapping_mul(nbits.wrapping_sub(1)) .wrapping_add(prefix) .wrapping_add(80); let extra: u32 = d.wrapping_sub(offset); (*commands)[0] = distcode | extra << 8; let remainder = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder[1..]); 1 } fn EmitCopyLenLastDistance(copylen: usize, commands: &mut &mut [u32]) -> usize { if copylen < 12usize { (*commands)[0] = copylen.wrapping_add(20) as u32; let remainder = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder[1..]); 1 } else if copylen < 72usize { let tail: usize = copylen.wrapping_sub(8); let nbits: usize = Log2FloorNonZero(tail as u64).wrapping_sub(1) as usize; let prefix: usize = tail >> nbits; let code: usize = (nbits << 1).wrapping_add(prefix).wrapping_add(28); let extra: usize = tail.wrapping_sub(prefix << nbits); (*commands)[0] = (code | extra << 8) as u32; let remainder = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder[1..]); 1 } else if copylen < 136usize { let tail: usize = copylen.wrapping_sub(8); let code: usize = (tail >> 5).wrapping_add(54); let extra: usize = tail & 31usize; (*commands)[0] = (code | extra << 8) as u32; let remainder = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder[1..]); (*commands)[0] = 64u32; let remainder2 = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder2[1..]); 2 } else if copylen < 2120usize { let tail: usize = copylen.wrapping_sub(72); let nbits: usize = Log2FloorNonZero(tail as u64) as usize; let code: usize = nbits.wrapping_add(52); let extra: usize = tail.wrapping_sub(1usize << nbits); (*commands)[0] = (code | extra << 8) as u32; let remainder = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder[1..]); (*commands)[0] = 64u32; let remainder2 = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder2[1..]); 2 } else { let extra: usize = copylen.wrapping_sub(2120); (*commands)[0] = (63usize | extra << 8) as u32; let remainder = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder[1..]); (*commands)[0] = 64u32; let remainder2 = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder2[1..]); 2 } } fn HashBytesAtOffset(v: u64, offset: i32, shift: usize, length: usize) -> u32 { let h: u64 = (v >> (8i32 * offset) << ((8 - length) * 8)).wrapping_mul(kHashMul32 as (u64)); (h >> shift) as u32 } fn EmitCopyLen(copylen: usize, commands: &mut &mut [u32]) -> usize { if copylen < 10usize { (*commands)[0] = copylen.wrapping_add(38) as u32; } else if copylen < 134usize { let tail: usize = copylen.wrapping_sub(6); let nbits: usize = Log2FloorNonZero(tail as u64).wrapping_sub(1) as usize; let prefix: usize = tail >> nbits; let code: usize = (nbits << 1).wrapping_add(prefix).wrapping_add(44); let extra: usize = tail.wrapping_sub(prefix << nbits); (*commands)[0] = (code | extra << 8) as u32; } else if copylen < 2118usize { let tail: usize = copylen.wrapping_sub(70); let nbits: usize = Log2FloorNonZero(tail as u64) as usize; let code: usize = nbits.wrapping_add(52); let extra: usize = tail.wrapping_sub(1usize << nbits); (*commands)[0] = (code | extra << 8) as u32; } else { let extra: usize = copylen.wrapping_sub(2118); (*commands)[0] = (63usize | extra << 8) as u32; } let remainder = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder[1..]); 1 } fn Hash(p: &[u8], shift: usize, length: usize) -> u32 { let h: u64 = (BROTLI_UNALIGNED_LOAD64(p) << ((8 - length) * 8)).wrapping_mul(kHashMul32 as (u64)); (h >> shift) as u32 } fn IsMatch(p1: &[u8], p2: &[u8], length: usize) -> bool { BROTLI_UNALIGNED_LOAD32(p1) == BROTLI_UNALIGNED_LOAD32(p2) && (length == 4 || (p1[4] == p2[4] && p1[5] == p2[5])) } #[allow(unused_assignments)] fn CreateCommands( input_index: usize, block_size: usize, input_size: usize, base_ip: &[u8], table: &mut [i32], table_bits: usize, min_match: usize, literals: &mut &mut [u8], num_literals: &mut usize, commands: &mut &mut [u32], num_commands: &mut usize, ) { let mut ip_index: usize = input_index; let shift: usize = (64u32 as usize).wrapping_sub(table_bits); let ip_end: usize = input_index.wrapping_add(block_size); let mut next_emit: usize = input_index; let mut last_distance: i32 = -1i32; let kInputMarginBytes: usize = 16usize; if block_size >= kInputMarginBytes { let len_limit: usize = min( block_size.wrapping_sub(min_match), input_size.wrapping_sub(kInputMarginBytes), ); let ip_limit: usize = input_index.wrapping_add(len_limit); let mut next_hash: u32; let mut goto_emit_remainder: i32 = 0i32; next_hash = Hash( &base_ip[{ ip_index = ip_index.wrapping_add(1); ip_index }..], shift, min_match, ); while goto_emit_remainder == 0 { let mut skip: u32 = 32u32; let mut next_ip: usize = ip_index; let mut candidate: usize = 0; loop { { 'break3: loop { { let hash: u32 = next_hash; let bytes_between_hash_lookups: u32 = skip >> 5; skip = skip.wrapping_add(1); ip_index = next_ip; next_ip = ip_index.wrapping_add(bytes_between_hash_lookups as usize); if next_ip > ip_limit { goto_emit_remainder = 1i32; { break 'break3; } } next_hash = Hash(&base_ip[next_ip..], shift, min_match); candidate = ip_index.wrapping_sub(last_distance as usize); if IsMatch(&base_ip[ip_index..], &base_ip[candidate..], min_match) && candidate < ip_index { table[(hash as usize)] = ip_index.wrapping_sub(0) as i32; { break 'break3; } } candidate = table[(hash as usize)] as usize; table[(hash as usize)] = ip_index.wrapping_sub(0) as i32; } if IsMatch(&base_ip[ip_index..], &base_ip[candidate..], min_match) { break; } } } if !(ip_index.wrapping_sub(candidate) > (1usize << 18).wrapping_sub(16) as isize as usize && (goto_emit_remainder == 0)) { break; } } if goto_emit_remainder != 0 { break; } { let base: usize = ip_index; let matched: usize = min_match.wrapping_add(FindMatchLengthWithLimit( &base_ip[(candidate + min_match)..], &base_ip[(ip_index + min_match)..], ip_end.wrapping_sub(ip_index).wrapping_sub(min_match), )); let distance: i32 = base.wrapping_sub(candidate) as i32; let insert: i32 = base.wrapping_sub(next_emit) as i32; ip_index = ip_index.wrapping_add(matched); *num_commands += EmitInsertLen(insert as u32, commands); (*literals)[..(insert as usize)] .clone_from_slice(&base_ip[next_emit..(next_emit + insert as usize)]); *num_literals += insert as usize; let new_literals = core::mem::take(literals); let _ = core::mem::replace(literals, &mut new_literals[(insert as usize)..]); if distance == last_distance { (*commands)[0] = 64u32; let remainder = core::mem::take(commands); let _ = core::mem::replace(commands, &mut remainder[1..]); *num_commands += 1; } else { *num_commands += EmitDistance(distance as u32, commands); last_distance = distance; } *num_commands += EmitCopyLenLastDistance(matched, commands); next_emit = ip_index; if ip_index >= ip_limit { goto_emit_remainder = 1i32; { break; } } { let mut input_bytes: u64; let mut prev_hash: u32; let cur_hash: u32; if min_match == 4 { input_bytes = BROTLI_UNALIGNED_LOAD64(&base_ip[(ip_index - 3)..]); cur_hash = HashBytesAtOffset(input_bytes, 3i32, shift, min_match); prev_hash = HashBytesAtOffset(input_bytes, 0i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(3) as i32; prev_hash = HashBytesAtOffset(input_bytes, 1i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(2) as i32; prev_hash = HashBytesAtOffset(input_bytes, 0i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(1) as i32; } else { assert!(ip_index >= 5); // could this be off the end FIXME input_bytes = BROTLI_UNALIGNED_LOAD64(&base_ip[(ip_index - 5)..]); prev_hash = HashBytesAtOffset(input_bytes, 0i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(5) as i32; prev_hash = HashBytesAtOffset(input_bytes, 1i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(4) as i32; prev_hash = HashBytesAtOffset(input_bytes, 2i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(3) as i32; assert!(ip_index >= 2); input_bytes = BROTLI_UNALIGNED_LOAD64(&base_ip[(ip_index - 2)..]); cur_hash = HashBytesAtOffset(input_bytes, 2i32, shift, min_match); prev_hash = HashBytesAtOffset(input_bytes, 0i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(2) as i32; prev_hash = HashBytesAtOffset(input_bytes, 1i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(1) as i32; } candidate = table[(cur_hash as usize)] as usize; table[(cur_hash as usize)] = ip_index as i32; } } while ip_index.wrapping_sub(candidate) <= (1usize << 18).wrapping_sub(16) as isize as usize && IsMatch(&base_ip[ip_index..], &base_ip[candidate..], min_match) { let base_index: usize = ip_index; let matched: usize = min_match.wrapping_add(FindMatchLengthWithLimit( &base_ip[(candidate + min_match)..], &base_ip[(ip_index + min_match)..], ip_end.wrapping_sub(ip_index).wrapping_sub(min_match), )); ip_index = ip_index.wrapping_add(matched); last_distance = base_index.wrapping_sub(candidate) as i32; *num_commands += EmitCopyLen(matched, commands); *num_commands += EmitDistance(last_distance as u32, commands); next_emit = ip_index; if ip_index >= ip_limit { goto_emit_remainder = 1i32; { break; } } { assert!(ip_index >= 5); let mut input_bytes: u64; let cur_hash: u32; let mut prev_hash: u32; if min_match == 4 { input_bytes = BROTLI_UNALIGNED_LOAD64(&base_ip[(ip_index - 3)..]); cur_hash = HashBytesAtOffset(input_bytes, 3i32, shift, min_match); prev_hash = HashBytesAtOffset(input_bytes, 0i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(3) as i32; prev_hash = HashBytesAtOffset(input_bytes, 1i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(2) as i32; prev_hash = HashBytesAtOffset(input_bytes, 2i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(1) as i32; } else { input_bytes = BROTLI_UNALIGNED_LOAD64(&base_ip[(ip_index - 5)..]); prev_hash = HashBytesAtOffset(input_bytes, 0i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(5) as i32; prev_hash = HashBytesAtOffset(input_bytes, 1i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(4) as i32; prev_hash = HashBytesAtOffset(input_bytes, 2i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(3) as i32; assert!(ip_index >= 2); input_bytes = BROTLI_UNALIGNED_LOAD64(&base_ip[(ip_index - 2)..]); cur_hash = HashBytesAtOffset(input_bytes, 2i32, shift, min_match); prev_hash = HashBytesAtOffset(input_bytes, 0i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(2) as i32; prev_hash = HashBytesAtOffset(input_bytes, 1i32, shift, min_match); table[(prev_hash as usize)] = ip_index.wrapping_sub(1) as i32; } candidate = table[(cur_hash as usize)] as usize; table[(cur_hash as usize)] = ip_index as i32; } } if goto_emit_remainder == 0 { next_hash = Hash( &base_ip[{ ip_index = ip_index.wrapping_add(1); ip_index }..], shift, min_match, ); } } } if next_emit < ip_end { let insert: u32 = ip_end.wrapping_sub(next_emit) as u32; *num_commands += EmitInsertLen(insert, commands); literals[..insert as usize] .clone_from_slice(&base_ip[next_emit..(next_emit + insert as usize)]); let mut xliterals = core::mem::take(literals); *literals = &mut core::mem::take(&mut xliterals)[(insert as usize)..]; *num_literals += insert as usize; } } fn ShouldCompress(input: &[u8], input_size: usize, num_literals: usize) -> bool { let corpus_size: super::util::floatX = input_size as (super::util::floatX); if num_literals as (super::util::floatX) < 0.98 as super::util::floatX * corpus_size { true } else { let mut literal_histo: [u32; 256] = [0; 256]; let max_total_bit_cost: super::util::floatX = corpus_size * 8i32 as (super::util::floatX) * 0.98 as super::util::floatX / 43i32 as (super::util::floatX); let mut i: usize; i = 0usize; while i < input_size { { let _rhs = 1; let _lhs = &mut literal_histo[input[i] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } i = i.wrapping_add(43); } BitsEntropy(&mut literal_histo[..], 256) < max_total_bit_cost } } pub fn BrotliWriteBits(n_bits: usize, bits: u64, pos: &mut usize, array: &mut [u8]) { let p = &mut array[(*pos >> 3)..]; let mut v: u64 = p[0] as (u64); v |= bits << (*pos & 7); BROTLI_UNALIGNED_STORE64(p, v); *pos = pos.wrapping_add(n_bits); } pub fn BrotliStoreMetaBlockHeader( len: usize, is_uncompressed: i32, storage_ix: &mut usize, storage: &mut [u8], ) { let mut nibbles: u64 = 6; BrotliWriteBits(1, 0, storage_ix, storage); if len <= (1u32 << 16) as usize { nibbles = 4; } else if len <= (1u32 << 20) as usize { nibbles = 5; } BrotliWriteBits(2, nibbles.wrapping_sub(4), storage_ix, storage); BrotliWriteBits( nibbles.wrapping_mul(4) as usize, len.wrapping_sub(1) as u64, storage_ix, storage, ); BrotliWriteBits(1usize, is_uncompressed as (u64), storage_ix, storage); } pub fn memcpy( dst: &mut [T], dst_offset: usize, src: &[T], src_offset: usize, size_to_copy: usize, ) { dst[dst_offset..(dst_offset + size_to_copy)] .clone_from_slice(&src[src_offset..(src_offset + size_to_copy)]); } fn BuildAndStoreCommandPrefixCode( histogram: &[u32], depth: &mut [u8], bits: &mut [u16], storage_ix: &mut usize, storage: &mut [u8], ) { let mut tree = [HuffmanTree::new(0, 0, 0); 129]; let mut cmd_depth: [u8; 704] = [0; 704]; let mut cmd_bits: [u16; 64] = [0; 64]; BrotliCreateHuffmanTree(histogram, 64usize, 15i32, &mut tree[..], depth); BrotliCreateHuffmanTree( &histogram[64..], 64usize, 14i32, &mut tree[..], &mut depth[64..], ); /* We have to jump through a few hoops here in order to compute the command bits because the symbols are in a different order than in the full alphabet. This looks complicated, but having the symbols in this order in the command bits saves a few branches in the Emit* functions. */ memcpy(&mut cmd_depth[..], 0, depth, 24, 24); memcpy(&mut cmd_depth[..], 24, depth, 0, 8); memcpy(&mut cmd_depth[..], 32usize, depth, (48usize), 8usize); memcpy(&mut cmd_depth[..], 40usize, depth, (8usize), 8usize); memcpy(&mut cmd_depth[..], 48usize, depth, (56usize), 8usize); memcpy(&mut cmd_depth[..], 56usize, depth, (16usize), 8usize); BrotliConvertBitDepthsToSymbols(&mut cmd_depth[..], 64usize, &mut cmd_bits[..]); memcpy(bits, 0, &cmd_bits[..], 24usize, 16usize); memcpy(bits, (8usize), &cmd_bits[..], 40usize, 8usize); memcpy(bits, (16usize), &cmd_bits[..], 56usize, 8usize); memcpy(bits, (24usize), &cmd_bits[..], 0, 48usize); memcpy(bits, (48usize), &cmd_bits[..], 32usize, 8usize); memcpy(bits, (56usize), &cmd_bits[..], 48usize, 8usize); BrotliConvertBitDepthsToSymbols(&mut depth[64..], 64usize, &mut bits[64..]); { for item in cmd_depth[..64].iter_mut() { *item = 0; } //memset(&mut cmd_depth[..], 0i32, 64usize); memcpy(&mut cmd_depth[..], 0, depth, (24usize), 8usize); memcpy(&mut cmd_depth[..], 64usize, depth, (32usize), 8usize); memcpy(&mut cmd_depth[..], 128usize, depth, (40usize), 8usize); memcpy(&mut cmd_depth[..], 192usize, depth, (48usize), 8usize); memcpy(&mut cmd_depth[..], 384usize, depth, (56usize), 8usize); for i in 0usize..8usize { cmd_depth[(128usize).wrapping_add((8usize).wrapping_mul(i))] = depth[i]; cmd_depth[(256usize).wrapping_add((8usize).wrapping_mul(i))] = depth[i.wrapping_add(8)]; cmd_depth[(448usize).wrapping_add((8usize).wrapping_mul(i))] = depth[i.wrapping_add(16)]; } BrotliStoreHuffmanTree( &mut cmd_depth[..], 704usize, &mut tree[..], storage_ix, storage, ); } BrotliStoreHuffmanTree( &mut depth[64..], 64usize, &mut tree[..], storage_ix, storage, ); } fn StoreCommands>( mht: &mut AllocHT, mut literals: &[u8], num_literals: usize, commands: &[u32], num_commands: usize, storage_ix: &mut usize, storage: &mut [u8], ) { static kNumExtraBits: [u32; 128] = [ 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 12, 14, 24, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, ]; static kInsertOffset: [u32; 24] = [ 0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 18, 26, 34, 50, 66, 98, 130, 194, 322, 578, 1090, 2114, 6210, 22594, ]; let mut lit_depths: [u8; 256] = [0; 256]; let mut lit_bits: [u16; 256] = [0; 256]; // maybe return this instead let mut lit_histo: [u32; 256] = [0; 256]; // maybe return this instead of init let mut cmd_depths: [u8; 128] = [0; 128]; let mut cmd_bits: [u16; 128] = [0; 128]; let mut cmd_histo: [u32; 128] = [0; 128]; let mut i: usize; for i in 0usize..num_literals { let _rhs = 1; let _lhs = &mut lit_histo[literals[i] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } BrotliBuildAndStoreHuffmanTreeFast( mht, &lit_histo[..], num_literals, 8usize, &mut lit_depths[..], &mut lit_bits[..], storage_ix, storage, ); i = 0usize; while i < num_commands { { let code: u32 = commands[i] & 0xffu32; { let _rhs = 1; let _lhs = &mut cmd_histo[code as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } i = i.wrapping_add(1); } { let _rhs = 1i32; let _lhs = &mut cmd_histo[1]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } { let _rhs = 1i32; let _lhs = &mut cmd_histo[2]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } { let _rhs = 1i32; let _lhs = &mut cmd_histo[64]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } { let _rhs = 1i32; let _lhs = &mut cmd_histo[84]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } BuildAndStoreCommandPrefixCode( &mut cmd_histo[..], &mut cmd_depths[..], &mut cmd_bits[..], storage_ix, storage, ); for i in 0usize..num_commands { let cmd: u32 = commands[i]; let code: u32 = cmd & 0xffu32; let extra: u32 = cmd >> 8; BrotliWriteBits( cmd_depths[code as usize] as usize, cmd_bits[code as usize] as (u64), storage_ix, storage, ); BrotliWriteBits( kNumExtraBits[code as usize] as usize, extra as (u64), storage_ix, storage, ); if code < 24u32 { let insert: u32 = kInsertOffset[code as usize].wrapping_add(extra); for literal in literals[..(insert as usize)].iter() { let lit: u8 = *literal; BrotliWriteBits( lit_depths[lit as usize] as usize, lit_bits[lit as usize] as (u64), storage_ix, storage, ); } literals = &literals[insert as usize..]; } } } fn EmitUncompressedMetaBlock( input: &[u8], input_size: usize, storage_ix: &mut usize, storage: &mut [u8], ) { BrotliStoreMetaBlockHeader(input_size, 1i32, storage_ix, storage); *storage_ix = storage_ix.wrapping_add(7u32 as usize) & !7u32 as usize; memcpy(storage, (*storage_ix >> 3), input, 0, input_size); *storage_ix = storage_ix.wrapping_add(input_size << 3); storage[(*storage_ix >> 3)] = 0u8; } #[allow(unused_variables)] #[inline(always)] fn BrotliCompressFragmentTwoPassImpl>( m: &mut AllocHT, base_ip: &[u8], mut input_size: usize, is_last: i32, command_buf: &mut [u32], literal_buf: &mut [u8], table: &mut [i32], table_bits: usize, min_match: usize, storage_ix: &mut usize, storage: &mut [u8], ) { let mut input_index: usize = 0usize; while input_size > 0usize { let block_size: usize = min(input_size, kCompressFragmentTwoPassBlockSize); let mut num_literals: usize = 0; let mut num_commands: usize = 0; { let mut literals = &mut literal_buf[..]; let mut commands = &mut command_buf[..]; CreateCommands( input_index, block_size, input_size, base_ip, table, table_bits, min_match, &mut literals, &mut num_literals, &mut commands, &mut num_commands, ); } if ShouldCompress(&base_ip[input_index..], block_size, num_literals) { BrotliStoreMetaBlockHeader(block_size, 0i32, storage_ix, storage); BrotliWriteBits(13usize, 0, storage_ix, storage); StoreCommands( m, literal_buf, num_literals, command_buf, num_commands, storage_ix, storage, ); } else { EmitUncompressedMetaBlock(&base_ip[input_index..], block_size, storage_ix, storage); } input_index = input_index.wrapping_add(block_size); input_size = input_size.wrapping_sub(block_size); } } macro_rules! compress_specialization { ($table_bits : expr, $fname: ident) => { fn $fname>( mht: &mut AllocHT, input: &[u8], input_size: usize, is_last: i32, command_buf: &mut [u32], literal_buf: &mut [u8], table: &mut [i32], storage_ix: &mut usize, storage: &mut [u8], ) { let min_match = if $table_bits < 15 { 4 } else { 6 }; BrotliCompressFragmentTwoPassImpl( mht, input, input_size, is_last, command_buf, literal_buf, table, $table_bits, min_match, storage_ix, storage, ); } }; } compress_specialization!(8, BrotliCompressFragmentTwoPassImpl8); compress_specialization!(9, BrotliCompressFragmentTwoPassImpl9); compress_specialization!(10, BrotliCompressFragmentTwoPassImpl10); compress_specialization!(11, BrotliCompressFragmentTwoPassImpl11); compress_specialization!(12, BrotliCompressFragmentTwoPassImpl12); compress_specialization!(13, BrotliCompressFragmentTwoPassImpl13); compress_specialization!(14, BrotliCompressFragmentTwoPassImpl14); compress_specialization!(15, BrotliCompressFragmentTwoPassImpl15); compress_specialization!(16, BrotliCompressFragmentTwoPassImpl16); compress_specialization!(17, BrotliCompressFragmentTwoPassImpl17); fn RewindBitPosition(new_storage_ix: usize, storage_ix: &mut usize, storage: &mut [u8]) { let bitpos: usize = new_storage_ix & 7usize; let mask: usize = (1u32 << bitpos).wrapping_sub(1) as usize; { let _rhs = mask as u8; let _lhs = &mut storage[(new_storage_ix >> 3)]; *_lhs = (*_lhs as i32 & _rhs as i32) as u8; } *storage_ix = new_storage_ix; } pub fn BrotliCompressFragmentTwoPass>( m: &mut AllocHT, input: &[u8], input_size: usize, is_last: i32, command_buf: &mut [u32], literal_buf: &mut [u8], table: &mut [i32], table_size: usize, storage_ix: &mut usize, storage: &mut [u8], ) { let initial_storage_ix: usize = *storage_ix; let table_bits: usize = Log2FloorNonZero(table_size as u64) as usize; if table_bits == 8usize { BrotliCompressFragmentTwoPassImpl8( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if table_bits == 9usize { BrotliCompressFragmentTwoPassImpl9( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if table_bits == 10usize { BrotliCompressFragmentTwoPassImpl10( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if table_bits == 11usize { BrotliCompressFragmentTwoPassImpl11( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if table_bits == 12usize { BrotliCompressFragmentTwoPassImpl12( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if table_bits == 13usize { BrotliCompressFragmentTwoPassImpl13( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if table_bits == 14usize { BrotliCompressFragmentTwoPassImpl14( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if table_bits == 15usize { BrotliCompressFragmentTwoPassImpl15( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if table_bits == 16usize { BrotliCompressFragmentTwoPassImpl16( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if table_bits == 17usize { BrotliCompressFragmentTwoPassImpl17( m, input, input_size, is_last, command_buf, literal_buf, table, storage_ix, storage, ); } if storage_ix.wrapping_sub(initial_storage_ix) > (31usize).wrapping_add(input_size << 3) { RewindBitPosition(initial_storage_ix, storage_ix, storage); EmitUncompressedMetaBlock(input, input_size, storage_ix, storage); } if is_last != 0 { BrotliWriteBits(1, 1, storage_ix, storage); BrotliWriteBits(1, 1, storage_ix, storage); *storage_ix = storage_ix.wrapping_add(7u32 as usize) & !7u32 as usize; } } brotli-6.0.0/src/enc/constants.rs000075500000000000000000001152741046102023000150550ustar 00000000000000#![allow(dead_code)] pub const BROTLI_NUM_BLOCK_LEN_SYMBOLS: usize = 26; pub static kInsBase: [u32; 24] = [ 0, 1, 2, 3, 4, 5, 6, 8, 10, 14, 18, 26, 34, 50, 66, 98, 130, 194, 322, 578, 1090, 2114, 6210, 22594, ]; pub static kInsExtra: [u32; 24] = [ 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 12, 14, 24, ]; pub static kCopyBase: [u32; 24] = [ 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 18, 22, 30, 38, 54, 70, 102, 134, 198, 326, 582, 1094, 2118, ]; pub static kCopyExtra: [u32; 24] = [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10, 24, ]; /* Common context lookup table for all context modes. */ static kContextLookup: [u8; 2048] = [ /* CONTEXT_LSB6, last byte. */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, /* CONTEXT_LSB6, second last byte, */ 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, 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, /* CONTEXT_MSB6, last byte. */ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, /* CONTEXT_MSB6, second last byte, */ 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, 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, /* CONTEXT_UTF8, last byte. */ /* ASCII range. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12, 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12, 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0, /* UTF8 continuation byte range. */ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, /* UTF8 lead byte range. */ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, /* CONTEXT_UTF8 second last byte. */ /* ASCII range. */ 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, /* UTF8 continuation byte range. */ 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, /* UTF8 lead byte range. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */ 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, /* CONTEXT_SIGNED, second last byte. */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, ]; pub const BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS: usize = 544; pub const BROTLI_NUM_LITERAL_SYMBOLS: usize = 256; pub const BROTLI_NUM_COMMAND_SYMBOLS: usize = 704; pub const BROTLI_WINDOW_GAP: usize = 16; pub const BROTLI_MAX_NPOSTFIX: usize = 3; pub const BROTLI_MAX_NDIRECT: usize = 120; #[inline(always)] pub fn BROTLI_CONTEXT_LUT(mode: super::histogram::ContextType) -> &'static [u8] { &kContextLookup[((mode as usize) << 9)..] } pub fn BROTLI_CONTEXT(P1: u8, P2: u8, LUT: &[u8]) -> u8 { (LUT)[P1 as usize] | ((LUT)[256 + P2 as usize]) } pub static kZeroRepsBits: [usize; 704] = [ 0x0, 0x0, 0x0, 0x7, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, 0x770, 0xb87, 0x1387, 0x1b87, 0x2387, 0x2b87, 0x3387, 0x3b87, 0x397, 0xb97, 0x1397, 0x1b97, 0x2397, 0x2b97, 0x3397, 0x3b97, 0x3a7, 0xba7, 0x13a7, 0x1ba7, 0x23a7, 0x2ba7, 0x33a7, 0x3ba7, 0x3b7, 0xbb7, 0x13b7, 0x1bb7, 0x23b7, 0x2bb7, 0x33b7, 0x3bb7, 0x3c7, 0xbc7, 0x13c7, 0x1bc7, 0x23c7, 0x2bc7, 0x33c7, 0x3bc7, 0x3d7, 0xbd7, 0x13d7, 0x1bd7, 0x23d7, 0x2bd7, 0x33d7, 0x3bd7, 0x3e7, 0xbe7, 0x13e7, 0x1be7, 0x23e7, 0x2be7, 0x33e7, 0x3be7, 0x3f7, 0xbf7, 0x13f7, 0x1bf7, 0x23f7, 0x2bf7, 0x33f7, 0x3bf7, 0x1c387, 0x5c387, 0x9c387, 0xdc387, 0x11c387, 0x15c387, 0x19c387, 0x1dc387, 0x1cb87, 0x5cb87, 0x9cb87, 0xdcb87, 0x11cb87, 0x15cb87, 0x19cb87, 0x1dcb87, 0x1d387, 0x5d387, 0x9d387, 0xdd387, 0x11d387, 0x15d387, 0x19d387, 0x1dd387, 0x1db87, 0x5db87, 0x9db87, 0xddb87, 0x11db87, 0x15db87, 0x19db87, 0x1ddb87, 0x1e387, 0x5e387, 0x9e387, 0xde387, 0x11e387, 0x15e387, 0x19e387, 0x1de387, 0x1eb87, 0x5eb87, 0x9eb87, 0xdeb87, 0x11eb87, 0x15eb87, 0x19eb87, 0x1deb87, 0x1f387, 0x5f387, 0x9f387, 0xdf387, 0x11f387, 0x15f387, 0x19f387, 0x1df387, 0x1fb87, 0x5fb87, 0x9fb87, 0xdfb87, 0x11fb87, 0x15fb87, 0x19fb87, 0x1dfb87, 0x1c397, 0x5c397, 0x9c397, 0xdc397, 0x11c397, 0x15c397, 0x19c397, 0x1dc397, 0x1cb97, 0x5cb97, 0x9cb97, 0xdcb97, 0x11cb97, 0x15cb97, 0x19cb97, 0x1dcb97, 0x1d397, 0x5d397, 0x9d397, 0xdd397, 0x11d397, 0x15d397, 0x19d397, 0x1dd397, 0x1db97, 0x5db97, 0x9db97, 0xddb97, 0x11db97, 0x15db97, 0x19db97, 0x1ddb97, 0x1e397, 0x5e397, 0x9e397, 0xde397, 0x11e397, 0x15e397, 0x19e397, 0x1de397, 0x1eb97, 0x5eb97, 0x9eb97, 0xdeb97, 0x11eb97, 0x15eb97, 0x19eb97, 0x1deb97, 0x1f397, 0x5f397, 0x9f397, 0xdf397, 0x11f397, 0x15f397, 0x19f397, 0x1df397, 0x1fb97, 0x5fb97, 0x9fb97, 0xdfb97, 0x11fb97, 0x15fb97, 0x19fb97, 0x1dfb97, 0x1c3a7, 0x5c3a7, 0x9c3a7, 0xdc3a7, 0x11c3a7, 0x15c3a7, 0x19c3a7, 0x1dc3a7, 0x1cba7, 0x5cba7, 0x9cba7, 0xdcba7, 0x11cba7, 0x15cba7, 0x19cba7, 0x1dcba7, 0x1d3a7, 0x5d3a7, 0x9d3a7, 0xdd3a7, 0x11d3a7, 0x15d3a7, 0x19d3a7, 0x1dd3a7, 0x1dba7, 0x5dba7, 0x9dba7, 0xddba7, 0x11dba7, 0x15dba7, 0x19dba7, 0x1ddba7, 0x1e3a7, 0x5e3a7, 0x9e3a7, 0xde3a7, 0x11e3a7, 0x15e3a7, 0x19e3a7, 0x1de3a7, 0x1eba7, 0x5eba7, 0x9eba7, 0xdeba7, 0x11eba7, 0x15eba7, 0x19eba7, 0x1deba7, 0x1f3a7, 0x5f3a7, 0x9f3a7, 0xdf3a7, 0x11f3a7, 0x15f3a7, 0x19f3a7, 0x1df3a7, 0x1fba7, 0x5fba7, 0x9fba7, 0xdfba7, 0x11fba7, 0x15fba7, 0x19fba7, 0x1dfba7, 0x1c3b7, 0x5c3b7, 0x9c3b7, 0xdc3b7, 0x11c3b7, 0x15c3b7, 0x19c3b7, 0x1dc3b7, 0x1cbb7, 0x5cbb7, 0x9cbb7, 0xdcbb7, 0x11cbb7, 0x15cbb7, 0x19cbb7, 0x1dcbb7, 0x1d3b7, 0x5d3b7, 0x9d3b7, 0xdd3b7, 0x11d3b7, 0x15d3b7, 0x19d3b7, 0x1dd3b7, 0x1dbb7, 0x5dbb7, 0x9dbb7, 0xddbb7, 0x11dbb7, 0x15dbb7, 0x19dbb7, 0x1ddbb7, 0x1e3b7, 0x5e3b7, 0x9e3b7, 0xde3b7, 0x11e3b7, 0x15e3b7, 0x19e3b7, 0x1de3b7, 0x1ebb7, 0x5ebb7, 0x9ebb7, 0xdebb7, 0x11ebb7, 0x15ebb7, 0x19ebb7, 0x1debb7, 0x1f3b7, 0x5f3b7, 0x9f3b7, 0xdf3b7, 0x11f3b7, 0x15f3b7, 0x19f3b7, 0x1df3b7, 0x1fbb7, 0x5fbb7, 0x9fbb7, 0xdfbb7, 0x11fbb7, 0x15fbb7, 0x19fbb7, 0x1dfbb7, 0x1c3c7, 0x5c3c7, 0x9c3c7, 0xdc3c7, 0x11c3c7, 0x15c3c7, 0x19c3c7, 0x1dc3c7, 0x1cbc7, 0x5cbc7, 0x9cbc7, 0xdcbc7, 0x11cbc7, 0x15cbc7, 0x19cbc7, 0x1dcbc7, 0x1d3c7, 0x5d3c7, 0x9d3c7, 0xdd3c7, 0x11d3c7, 0x15d3c7, 0x19d3c7, 0x1dd3c7, 0x1dbc7, 0x5dbc7, 0x9dbc7, 0xddbc7, 0x11dbc7, 0x15dbc7, 0x19dbc7, 0x1ddbc7, 0x1e3c7, 0x5e3c7, 0x9e3c7, 0xde3c7, 0x11e3c7, 0x15e3c7, 0x19e3c7, 0x1de3c7, 0x1ebc7, 0x5ebc7, 0x9ebc7, 0xdebc7, 0x11ebc7, 0x15ebc7, 0x19ebc7, 0x1debc7, 0x1f3c7, 0x5f3c7, 0x9f3c7, 0xdf3c7, 0x11f3c7, 0x15f3c7, 0x19f3c7, 0x1df3c7, 0x1fbc7, 0x5fbc7, 0x9fbc7, 0xdfbc7, 0x11fbc7, 0x15fbc7, 0x19fbc7, 0x1dfbc7, 0x1c3d7, 0x5c3d7, 0x9c3d7, 0xdc3d7, 0x11c3d7, 0x15c3d7, 0x19c3d7, 0x1dc3d7, 0x1cbd7, 0x5cbd7, 0x9cbd7, 0xdcbd7, 0x11cbd7, 0x15cbd7, 0x19cbd7, 0x1dcbd7, 0x1d3d7, 0x5d3d7, 0x9d3d7, 0xdd3d7, 0x11d3d7, 0x15d3d7, 0x19d3d7, 0x1dd3d7, 0x1dbd7, 0x5dbd7, 0x9dbd7, 0xddbd7, 0x11dbd7, 0x15dbd7, 0x19dbd7, 0x1ddbd7, 0x1e3d7, 0x5e3d7, 0x9e3d7, 0xde3d7, 0x11e3d7, 0x15e3d7, 0x19e3d7, 0x1de3d7, 0x1ebd7, 0x5ebd7, 0x9ebd7, 0xdebd7, 0x11ebd7, 0x15ebd7, 0x19ebd7, 0x1debd7, 0x1f3d7, 0x5f3d7, 0x9f3d7, 0xdf3d7, 0x11f3d7, 0x15f3d7, 0x19f3d7, 0x1df3d7, 0x1fbd7, 0x5fbd7, 0x9fbd7, 0xdfbd7, 0x11fbd7, 0x15fbd7, 0x19fbd7, 0x1dfbd7, 0x1c3e7, 0x5c3e7, 0x9c3e7, 0xdc3e7, 0x11c3e7, 0x15c3e7, 0x19c3e7, 0x1dc3e7, 0x1cbe7, 0x5cbe7, 0x9cbe7, 0xdcbe7, 0x11cbe7, 0x15cbe7, 0x19cbe7, 0x1dcbe7, 0x1d3e7, 0x5d3e7, 0x9d3e7, 0xdd3e7, 0x11d3e7, 0x15d3e7, 0x19d3e7, 0x1dd3e7, 0x1dbe7, 0x5dbe7, 0x9dbe7, 0xddbe7, 0x11dbe7, 0x15dbe7, 0x19dbe7, 0x1ddbe7, 0x1e3e7, 0x5e3e7, 0x9e3e7, 0xde3e7, 0x11e3e7, 0x15e3e7, 0x19e3e7, 0x1de3e7, 0x1ebe7, 0x5ebe7, 0x9ebe7, 0xdebe7, 0x11ebe7, 0x15ebe7, 0x19ebe7, 0x1debe7, 0x1f3e7, 0x5f3e7, 0x9f3e7, 0xdf3e7, 0x11f3e7, 0x15f3e7, 0x19f3e7, 0x1df3e7, 0x1fbe7, 0x5fbe7, 0x9fbe7, 0xdfbe7, 0x11fbe7, 0x15fbe7, 0x19fbe7, 0x1dfbe7, 0x1c3f7, 0x5c3f7, 0x9c3f7, 0xdc3f7, 0x11c3f7, 0x15c3f7, 0x19c3f7, 0x1dc3f7, 0x1cbf7, 0x5cbf7, 0x9cbf7, 0xdcbf7, 0x11cbf7, 0x15cbf7, 0x19cbf7, 0x1dcbf7, 0x1d3f7, 0x5d3f7, 0x9d3f7, 0xdd3f7, 0x11d3f7, 0x15d3f7, 0x19d3f7, 0x1dd3f7, 0x1dbf7, 0x5dbf7, 0x9dbf7, 0xddbf7, 0x11dbf7, 0x15dbf7, 0x19dbf7, 0x1ddbf7, 0x1e3f7, 0x5e3f7, 0x9e3f7, 0xde3f7, 0x11e3f7, 0x15e3f7, 0x19e3f7, 0x1de3f7, 0x1ebf7, 0x5ebf7, 0x9ebf7, 0xdebf7, 0x11ebf7, 0x15ebf7, 0x19ebf7, 0x1debf7, 0x1f3f7, 0x5f3f7, 0x9f3f7, 0xdf3f7, 0x11f3f7, 0x15f3f7, 0x19f3f7, 0x1df3f7, 0x1fbf7, 0x5fbf7, 0x9fbf7, 0xdfbf7, 0x11fbf7, 0x15fbf7, 0x19fbf7, 0x1dfbf7, 0xe1c387, 0x2e1c387, 0x4e1c387, 0x6e1c387, 0x8e1c387, 0xae1c387, 0xce1c387, 0xee1c387, 0xe5c387, 0x2e5c387, 0x4e5c387, 0x6e5c387, 0x8e5c387, 0xae5c387, 0xce5c387, 0xee5c387, 0xe9c387, 0x2e9c387, 0x4e9c387, 0x6e9c387, 0x8e9c387, 0xae9c387, 0xce9c387, 0xee9c387, 0xedc387, 0x2edc387, 0x4edc387, 0x6edc387, 0x8edc387, 0xaedc387, 0xcedc387, 0xeedc387, 0xf1c387, 0x2f1c387, 0x4f1c387, 0x6f1c387, 0x8f1c387, 0xaf1c387, 0xcf1c387, 0xef1c387, 0xf5c387, 0x2f5c387, 0x4f5c387, 0x6f5c387, 0x8f5c387, 0xaf5c387, 0xcf5c387, 0xef5c387, 0xf9c387, 0x2f9c387, 0x4f9c387, 0x6f9c387, 0x8f9c387, 0xaf9c387, 0xcf9c387, 0xef9c387, 0xfdc387, 0x2fdc387, 0x4fdc387, 0x6fdc387, 0x8fdc387, 0xafdc387, 0xcfdc387, 0xefdc387, 0xe1cb87, 0x2e1cb87, 0x4e1cb87, 0x6e1cb87, 0x8e1cb87, 0xae1cb87, 0xce1cb87, 0xee1cb87, 0xe5cb87, 0x2e5cb87, 0x4e5cb87, 0x6e5cb87, 0x8e5cb87, 0xae5cb87, 0xce5cb87, 0xee5cb87, 0xe9cb87, 0x2e9cb87, 0x4e9cb87, 0x6e9cb87, 0x8e9cb87, 0xae9cb87, 0xce9cb87, 0xee9cb87, 0xedcb87, 0x2edcb87, 0x4edcb87, 0x6edcb87, 0x8edcb87, 0xaedcb87, 0xcedcb87, 0xeedcb87, 0xf1cb87, 0x2f1cb87, 0x4f1cb87, 0x6f1cb87, 0x8f1cb87, 0xaf1cb87, 0xcf1cb87, 0xef1cb87, 0xf5cb87, 0x2f5cb87, 0x4f5cb87, 0x6f5cb87, 0x8f5cb87, 0xaf5cb87, 0xcf5cb87, 0xef5cb87, 0xf9cb87, 0x2f9cb87, 0x4f9cb87, 0x6f9cb87, 0x8f9cb87, ]; pub static kZeroRepsDepth: [u32; 704] = [ 0, 4, 8, 7, 7, 7, 7, 7, 7, 7, 7, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, ]; pub static kUTF8ContextLookup: [u8; 512] = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12, 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12, 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 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, 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, 2, 2, ]; pub static kSigned3BitContextLookup: [u8; 256] = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, ]; pub static kBrotliMinWindowBits: i32 = 10i32; pub static kBrotliMaxWindowBits: i32 = 24i32; pub static kCodeLengthDepth: [u8; 18] = [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 0, 4, 4]; pub static kStaticDistanceCodeDepth: [u8; 64] = [ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, ]; pub static kCodeLengthBits: [u32; 18] = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 15, 31, 0, 11, 7]; pub static kNonZeroRepsBits: [usize; 704] = [ 0xb, 0x1b, 0x2b, 0x3b, 0x2cb, 0x6cb, 0xacb, 0xecb, 0x2db, 0x6db, 0xadb, 0xedb, 0x2eb, 0x6eb, 0xaeb, 0xeeb, 0x2fb, 0x6fb, 0xafb, 0xefb, 0xb2cb, 0x1b2cb, 0x2b2cb, 0x3b2cb, 0xb6cb, 0x1b6cb, 0x2b6cb, 0x3b6cb, 0xbacb, 0x1bacb, 0x2bacb, 0x3bacb, 0xbecb, 0x1becb, 0x2becb, 0x3becb, 0xb2db, 0x1b2db, 0x2b2db, 0x3b2db, 0xb6db, 0x1b6db, 0x2b6db, 0x3b6db, 0xbadb, 0x1badb, 0x2badb, 0x3badb, 0xbedb, 0x1bedb, 0x2bedb, 0x3bedb, 0xb2eb, 0x1b2eb, 0x2b2eb, 0x3b2eb, 0xb6eb, 0x1b6eb, 0x2b6eb, 0x3b6eb, 0xbaeb, 0x1baeb, 0x2baeb, 0x3baeb, 0xbeeb, 0x1beeb, 0x2beeb, 0x3beeb, 0xb2fb, 0x1b2fb, 0x2b2fb, 0x3b2fb, 0xb6fb, 0x1b6fb, 0x2b6fb, 0x3b6fb, 0xbafb, 0x1bafb, 0x2bafb, 0x3bafb, 0xbefb, 0x1befb, 0x2befb, 0x3befb, 0x2cb2cb, 0x6cb2cb, 0xacb2cb, 0xecb2cb, 0x2db2cb, 0x6db2cb, 0xadb2cb, 0xedb2cb, 0x2eb2cb, 0x6eb2cb, 0xaeb2cb, 0xeeb2cb, 0x2fb2cb, 0x6fb2cb, 0xafb2cb, 0xefb2cb, 0x2cb6cb, 0x6cb6cb, 0xacb6cb, 0xecb6cb, 0x2db6cb, 0x6db6cb, 0xadb6cb, 0xedb6cb, 0x2eb6cb, 0x6eb6cb, 0xaeb6cb, 0xeeb6cb, 0x2fb6cb, 0x6fb6cb, 0xafb6cb, 0xefb6cb, 0x2cbacb, 0x6cbacb, 0xacbacb, 0xecbacb, 0x2dbacb, 0x6dbacb, 0xadbacb, 0xedbacb, 0x2ebacb, 0x6ebacb, 0xaebacb, 0xeebacb, 0x2fbacb, 0x6fbacb, 0xafbacb, 0xefbacb, 0x2cbecb, 0x6cbecb, 0xacbecb, 0xecbecb, 0x2dbecb, 0x6dbecb, 0xadbecb, 0xedbecb, 0x2ebecb, 0x6ebecb, 0xaebecb, 0xeebecb, 0x2fbecb, 0x6fbecb, 0xafbecb, 0xefbecb, 0x2cb2db, 0x6cb2db, 0xacb2db, 0xecb2db, 0x2db2db, 0x6db2db, 0xadb2db, 0xedb2db, 0x2eb2db, 0x6eb2db, 0xaeb2db, 0xeeb2db, 0x2fb2db, 0x6fb2db, 0xafb2db, 0xefb2db, 0x2cb6db, 0x6cb6db, 0xacb6db, 0xecb6db, 0x2db6db, 0x6db6db, 0xadb6db, 0xedb6db, 0x2eb6db, 0x6eb6db, 0xaeb6db, 0xeeb6db, 0x2fb6db, 0x6fb6db, 0xafb6db, 0xefb6db, 0x2cbadb, 0x6cbadb, 0xacbadb, 0xecbadb, 0x2dbadb, 0x6dbadb, 0xadbadb, 0xedbadb, 0x2ebadb, 0x6ebadb, 0xaebadb, 0xeebadb, 0x2fbadb, 0x6fbadb, 0xafbadb, 0xefbadb, 0x2cbedb, 0x6cbedb, 0xacbedb, 0xecbedb, 0x2dbedb, 0x6dbedb, 0xadbedb, 0xedbedb, 0x2ebedb, 0x6ebedb, 0xaebedb, 0xeebedb, 0x2fbedb, 0x6fbedb, 0xafbedb, 0xefbedb, 0x2cb2eb, 0x6cb2eb, 0xacb2eb, 0xecb2eb, 0x2db2eb, 0x6db2eb, 0xadb2eb, 0xedb2eb, 0x2eb2eb, 0x6eb2eb, 0xaeb2eb, 0xeeb2eb, 0x2fb2eb, 0x6fb2eb, 0xafb2eb, 0xefb2eb, 0x2cb6eb, 0x6cb6eb, 0xacb6eb, 0xecb6eb, 0x2db6eb, 0x6db6eb, 0xadb6eb, 0xedb6eb, 0x2eb6eb, 0x6eb6eb, 0xaeb6eb, 0xeeb6eb, 0x2fb6eb, 0x6fb6eb, 0xafb6eb, 0xefb6eb, 0x2cbaeb, 0x6cbaeb, 0xacbaeb, 0xecbaeb, 0x2dbaeb, 0x6dbaeb, 0xadbaeb, 0xedbaeb, 0x2ebaeb, 0x6ebaeb, 0xaebaeb, 0xeebaeb, 0x2fbaeb, 0x6fbaeb, 0xafbaeb, 0xefbaeb, 0x2cbeeb, 0x6cbeeb, 0xacbeeb, 0xecbeeb, 0x2dbeeb, 0x6dbeeb, 0xadbeeb, 0xedbeeb, 0x2ebeeb, 0x6ebeeb, 0xaebeeb, 0xeebeeb, 0x2fbeeb, 0x6fbeeb, 0xafbeeb, 0xefbeeb, 0x2cb2fb, 0x6cb2fb, 0xacb2fb, 0xecb2fb, 0x2db2fb, 0x6db2fb, 0xadb2fb, 0xedb2fb, 0x2eb2fb, 0x6eb2fb, 0xaeb2fb, 0xeeb2fb, 0x2fb2fb, 0x6fb2fb, 0xafb2fb, 0xefb2fb, 0x2cb6fb, 0x6cb6fb, 0xacb6fb, 0xecb6fb, 0x2db6fb, 0x6db6fb, 0xadb6fb, 0xedb6fb, 0x2eb6fb, 0x6eb6fb, 0xaeb6fb, 0xeeb6fb, 0x2fb6fb, 0x6fb6fb, 0xafb6fb, 0xefb6fb, 0x2cbafb, 0x6cbafb, 0xacbafb, 0xecbafb, 0x2dbafb, 0x6dbafb, 0xadbafb, 0xedbafb, 0x2ebafb, 0x6ebafb, 0xaebafb, 0xeebafb, 0x2fbafb, 0x6fbafb, 0xafbafb, 0xefbafb, 0x2cbefb, 0x6cbefb, 0xacbefb, 0xecbefb, 0x2dbefb, 0x6dbefb, 0xadbefb, 0xedbefb, 0x2ebefb, 0x6ebefb, 0xaebefb, 0xeebefb, 0x2fbefb, 0x6fbefb, 0xafbefb, 0xefbefb, 0xb2cb2cb, 0x1b2cb2cb, 0x2b2cb2cb, 0x3b2cb2cb, 0xb6cb2cb, 0x1b6cb2cb, 0x2b6cb2cb, 0x3b6cb2cb, 0xbacb2cb, 0x1bacb2cb, 0x2bacb2cb, 0x3bacb2cb, 0xbecb2cb, 0x1becb2cb, 0x2becb2cb, 0x3becb2cb, 0xb2db2cb, 0x1b2db2cb, 0x2b2db2cb, 0x3b2db2cb, 0xb6db2cb, 0x1b6db2cb, 0x2b6db2cb, 0x3b6db2cb, 0xbadb2cb, 0x1badb2cb, 0x2badb2cb, 0x3badb2cb, 0xbedb2cb, 0x1bedb2cb, 0x2bedb2cb, 0x3bedb2cb, 0xb2eb2cb, 0x1b2eb2cb, 0x2b2eb2cb, 0x3b2eb2cb, 0xb6eb2cb, 0x1b6eb2cb, 0x2b6eb2cb, 0x3b6eb2cb, 0xbaeb2cb, 0x1baeb2cb, 0x2baeb2cb, 0x3baeb2cb, 0xbeeb2cb, 0x1beeb2cb, 0x2beeb2cb, 0x3beeb2cb, 0xb2fb2cb, 0x1b2fb2cb, 0x2b2fb2cb, 0x3b2fb2cb, 0xb6fb2cb, 0x1b6fb2cb, 0x2b6fb2cb, 0x3b6fb2cb, 0xbafb2cb, 0x1bafb2cb, 0x2bafb2cb, 0x3bafb2cb, 0xbefb2cb, 0x1befb2cb, 0x2befb2cb, 0x3befb2cb, 0xb2cb6cb, 0x1b2cb6cb, 0x2b2cb6cb, 0x3b2cb6cb, 0xb6cb6cb, 0x1b6cb6cb, 0x2b6cb6cb, 0x3b6cb6cb, 0xbacb6cb, 0x1bacb6cb, 0x2bacb6cb, 0x3bacb6cb, 0xbecb6cb, 0x1becb6cb, 0x2becb6cb, 0x3becb6cb, 0xb2db6cb, 0x1b2db6cb, 0x2b2db6cb, 0x3b2db6cb, 0xb6db6cb, 0x1b6db6cb, 0x2b6db6cb, 0x3b6db6cb, 0xbadb6cb, 0x1badb6cb, 0x2badb6cb, 0x3badb6cb, 0xbedb6cb, 0x1bedb6cb, 0x2bedb6cb, 0x3bedb6cb, 0xb2eb6cb, 0x1b2eb6cb, 0x2b2eb6cb, 0x3b2eb6cb, 0xb6eb6cb, 0x1b6eb6cb, 0x2b6eb6cb, 0x3b6eb6cb, 0xbaeb6cb, 0x1baeb6cb, 0x2baeb6cb, 0x3baeb6cb, 0xbeeb6cb, 0x1beeb6cb, 0x2beeb6cb, 0x3beeb6cb, 0xb2fb6cb, 0x1b2fb6cb, 0x2b2fb6cb, 0x3b2fb6cb, 0xb6fb6cb, 0x1b6fb6cb, 0x2b6fb6cb, 0x3b6fb6cb, 0xbafb6cb, 0x1bafb6cb, 0x2bafb6cb, 0x3bafb6cb, 0xbefb6cb, 0x1befb6cb, 0x2befb6cb, 0x3befb6cb, 0xb2cbacb, 0x1b2cbacb, 0x2b2cbacb, 0x3b2cbacb, 0xb6cbacb, 0x1b6cbacb, 0x2b6cbacb, 0x3b6cbacb, 0xbacbacb, 0x1bacbacb, 0x2bacbacb, 0x3bacbacb, 0xbecbacb, 0x1becbacb, 0x2becbacb, 0x3becbacb, 0xb2dbacb, 0x1b2dbacb, 0x2b2dbacb, 0x3b2dbacb, 0xb6dbacb, 0x1b6dbacb, 0x2b6dbacb, 0x3b6dbacb, 0xbadbacb, 0x1badbacb, 0x2badbacb, 0x3badbacb, 0xbedbacb, 0x1bedbacb, 0x2bedbacb, 0x3bedbacb, 0xb2ebacb, 0x1b2ebacb, 0x2b2ebacb, 0x3b2ebacb, 0xb6ebacb, 0x1b6ebacb, 0x2b6ebacb, 0x3b6ebacb, 0xbaebacb, 0x1baebacb, 0x2baebacb, 0x3baebacb, 0xbeebacb, 0x1beebacb, 0x2beebacb, 0x3beebacb, 0xb2fbacb, 0x1b2fbacb, 0x2b2fbacb, 0x3b2fbacb, 0xb6fbacb, 0x1b6fbacb, 0x2b6fbacb, 0x3b6fbacb, 0xbafbacb, 0x1bafbacb, 0x2bafbacb, 0x3bafbacb, 0xbefbacb, 0x1befbacb, 0x2befbacb, 0x3befbacb, 0xb2cbecb, 0x1b2cbecb, 0x2b2cbecb, 0x3b2cbecb, 0xb6cbecb, 0x1b6cbecb, 0x2b6cbecb, 0x3b6cbecb, 0xbacbecb, 0x1bacbecb, 0x2bacbecb, 0x3bacbecb, 0xbecbecb, 0x1becbecb, 0x2becbecb, 0x3becbecb, 0xb2dbecb, 0x1b2dbecb, 0x2b2dbecb, 0x3b2dbecb, 0xb6dbecb, 0x1b6dbecb, 0x2b6dbecb, 0x3b6dbecb, 0xbadbecb, 0x1badbecb, 0x2badbecb, 0x3badbecb, 0xbedbecb, 0x1bedbecb, 0x2bedbecb, 0x3bedbecb, 0xb2ebecb, 0x1b2ebecb, 0x2b2ebecb, 0x3b2ebecb, 0xb6ebecb, 0x1b6ebecb, 0x2b6ebecb, 0x3b6ebecb, 0xbaebecb, 0x1baebecb, 0x2baebecb, 0x3baebecb, 0xbeebecb, 0x1beebecb, 0x2beebecb, 0x3beebecb, 0xb2fbecb, 0x1b2fbecb, 0x2b2fbecb, 0x3b2fbecb, 0xb6fbecb, 0x1b6fbecb, 0x2b6fbecb, 0x3b6fbecb, 0xbafbecb, 0x1bafbecb, 0x2bafbecb, 0x3bafbecb, 0xbefbecb, 0x1befbecb, 0x2befbecb, 0x3befbecb, 0xb2cb2db, 0x1b2cb2db, 0x2b2cb2db, 0x3b2cb2db, 0xb6cb2db, 0x1b6cb2db, 0x2b6cb2db, 0x3b6cb2db, 0xbacb2db, 0x1bacb2db, 0x2bacb2db, 0x3bacb2db, 0xbecb2db, 0x1becb2db, 0x2becb2db, 0x3becb2db, 0xb2db2db, 0x1b2db2db, 0x2b2db2db, 0x3b2db2db, 0xb6db2db, 0x1b6db2db, 0x2b6db2db, 0x3b6db2db, 0xbadb2db, 0x1badb2db, 0x2badb2db, 0x3badb2db, 0xbedb2db, 0x1bedb2db, 0x2bedb2db, 0x3bedb2db, 0xb2eb2db, 0x1b2eb2db, 0x2b2eb2db, 0x3b2eb2db, 0xb6eb2db, 0x1b6eb2db, 0x2b6eb2db, 0x3b6eb2db, 0xbaeb2db, 0x1baeb2db, 0x2baeb2db, 0x3baeb2db, 0xbeeb2db, 0x1beeb2db, 0x2beeb2db, 0x3beeb2db, 0xb2fb2db, 0x1b2fb2db, 0x2b2fb2db, 0x3b2fb2db, 0xb6fb2db, 0x1b6fb2db, 0x2b6fb2db, 0x3b6fb2db, 0xbafb2db, 0x1bafb2db, 0x2bafb2db, 0x3bafb2db, 0xbefb2db, 0x1befb2db, 0x2befb2db, 0x3befb2db, 0xb2cb6db, 0x1b2cb6db, 0x2b2cb6db, 0x3b2cb6db, 0xb6cb6db, 0x1b6cb6db, 0x2b6cb6db, 0x3b6cb6db, 0xbacb6db, 0x1bacb6db, 0x2bacb6db, 0x3bacb6db, 0xbecb6db, 0x1becb6db, 0x2becb6db, 0x3becb6db, 0xb2db6db, 0x1b2db6db, 0x2b2db6db, 0x3b2db6db, 0xb6db6db, 0x1b6db6db, 0x2b6db6db, 0x3b6db6db, 0xbadb6db, 0x1badb6db, 0x2badb6db, 0x3badb6db, 0xbedb6db, 0x1bedb6db, 0x2bedb6db, 0x3bedb6db, 0xb2eb6db, 0x1b2eb6db, 0x2b2eb6db, 0x3b2eb6db, 0xb6eb6db, 0x1b6eb6db, 0x2b6eb6db, 0x3b6eb6db, 0xbaeb6db, 0x1baeb6db, 0x2baeb6db, 0x3baeb6db, ]; pub static kNonZeroRepsDepth: [u32; 704] = [ 6, 6, 6, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, ]; pub static kStaticCommandCodeDepth: [u8; 704] = [ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, ]; pub static kStaticDistanceCodeBits: [u16; 64] = [ 0, 32, 16, 48, 8, 40, 24, 56, 4, 36, 20, 52, 12, 44, 28, 60, 2, 34, 18, 50, 10, 42, 26, 58, 6, 38, 22, 54, 14, 46, 30, 62, 1, 33, 17, 49, 9, 41, 25, 57, 5, 37, 21, 53, 13, 45, 29, 61, 3, 35, 19, 51, 11, 43, 27, 59, 7, 39, 23, 55, 15, 47, 31, 63, ]; pub static kStaticCommandCodeBits: [u16; 704] = [ 0, 256, 128, 384, 64, 320, 192, 448, 32, 288, 160, 416, 96, 352, 224, 480, 16, 272, 144, 400, 80, 336, 208, 464, 48, 304, 176, 432, 112, 368, 240, 496, 8, 264, 136, 392, 72, 328, 200, 456, 40, 296, 168, 424, 104, 360, 232, 488, 24, 280, 152, 408, 88, 344, 216, 472, 56, 312, 184, 440, 120, 376, 248, 504, 4, 260, 132, 388, 68, 324, 196, 452, 36, 292, 164, 420, 100, 356, 228, 484, 20, 276, 148, 404, 84, 340, 212, 468, 52, 308, 180, 436, 116, 372, 244, 500, 12, 268, 140, 396, 76, 332, 204, 460, 44, 300, 172, 428, 108, 364, 236, 492, 28, 284, 156, 412, 92, 348, 220, 476, 60, 316, 188, 444, 124, 380, 252, 508, 2, 258, 130, 386, 66, 322, 194, 450, 34, 290, 162, 418, 98, 354, 226, 482, 18, 274, 146, 402, 82, 338, 210, 466, 50, 306, 178, 434, 114, 370, 242, 498, 10, 266, 138, 394, 74, 330, 202, 458, 42, 298, 170, 426, 106, 362, 234, 490, 26, 282, 154, 410, 90, 346, 218, 474, 58, 314, 186, 442, 122, 378, 250, 506, 6, 262, 134, 390, 70, 326, 198, 454, 38, 294, 166, 422, 102, 358, 230, 486, 22, 278, 150, 406, 86, 342, 214, 470, 54, 310, 182, 438, 118, 374, 246, 502, 14, 270, 142, 398, 78, 334, 206, 462, 46, 302, 174, 430, 110, 366, 238, 494, 30, 286, 158, 414, 94, 350, 222, 478, 62, 318, 190, 446, 126, 382, 254, 510, 1, 257, 129, 385, 65, 321, 193, 449, 33, 289, 161, 417, 97, 353, 225, 481, 17, 273, 145, 401, 81, 337, 209, 465, 49, 305, 177, 433, 113, 369, 241, 497, 9, 265, 137, 393, 73, 329, 201, 457, 41, 297, 169, 425, 105, 361, 233, 489, 25, 281, 153, 409, 89, 345, 217, 473, 57, 313, 185, 441, 121, 377, 249, 505, 5, 261, 133, 389, 69, 325, 197, 453, 37, 293, 165, 421, 101, 357, 229, 485, 21, 277, 149, 405, 85, 341, 213, 469, 53, 309, 181, 437, 117, 373, 245, 501, 13, 269, 141, 397, 77, 333, 205, 461, 45, 301, 173, 429, 109, 365, 237, 493, 29, 285, 157, 413, 93, 349, 221, 477, 61, 317, 189, 445, 125, 381, 253, 509, 3, 259, 131, 387, 67, 323, 195, 451, 35, 291, 163, 419, 99, 355, 227, 483, 19, 275, 147, 403, 83, 339, 211, 467, 51, 307, 179, 435, 115, 371, 243, 499, 11, 267, 139, 395, 75, 331, 203, 459, 43, 299, 171, 427, 107, 363, 235, 491, 27, 283, 155, 411, 91, 347, 219, 475, 59, 315, 187, 443, 123, 379, 251, 507, 7, 1031, 519, 1543, 263, 1287, 775, 1799, 135, 1159, 647, 1671, 391, 1415, 903, 1927, 71, 1095, 583, 1607, 327, 1351, 839, 1863, 199, 1223, 711, 1735, 455, 1479, 967, 1991, 39, 1063, 551, 1575, 295, 1319, 807, 1831, 167, 1191, 679, 1703, 423, 1447, 935, 1959, 103, 1127, 615, 1639, 359, 1383, 871, 1895, 231, 1255, 743, 1767, 487, 1511, 999, 2023, 23, 1047, 535, 1559, 279, 1303, 791, 1815, 151, 1175, 663, 1687, 407, 1431, 919, 1943, 87, 1111, 599, 1623, 343, 1367, 855, 1879, 215, 1239, 727, 1751, 471, 1495, 983, 2007, 55, 1079, 567, 1591, 311, 1335, 823, 1847, 183, 1207, 695, 1719, 439, 1463, 951, 1975, 119, 1143, 631, 1655, 375, 1399, 887, 1911, 247, 1271, 759, 1783, 503, 1527, 1015, 2039, 15, 1039, 527, 1551, 271, 1295, 783, 1807, 143, 1167, 655, 1679, 399, 1423, 911, 1935, 79, 1103, 591, 1615, 335, 1359, 847, 1871, 207, 1231, 719, 1743, 463, 1487, 975, 1999, 47, 1071, 559, 1583, 303, 1327, 815, 1839, 175, 1199, 687, 1711, 431, 1455, 943, 1967, 111, 1135, 623, 1647, 367, 1391, 879, 1903, 239, 1263, 751, 1775, 495, 1519, 1007, 2031, 31, 1055, 543, 1567, 287, 1311, 799, 1823, 159, 1183, 671, 1695, 415, 1439, 927, 1951, 95, 1119, 607, 1631, 351, 1375, 863, 1887, 223, 1247, 735, 1759, 479, 1503, 991, 2015, 63, 1087, 575, 1599, 319, 1343, 831, 1855, 191, 1215, 703, 1727, 447, 1471, 959, 1983, 127, 1151, 639, 1663, 383, 1407, 895, 1919, 255, 1279, 767, 1791, 511, 1535, 1023, 2047, ]; brotli-6.0.0/src/enc/context_map_entropy.rs000064400000000000000000000464651046102023000171440ustar 00000000000000use super::super::alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use super::find_stride; use super::input_pair::{InputPair, InputReference, InputReferenceMut}; use super::interface; pub use super::ir_interpret::{push_base, Context, IRInterpreter}; use super::util::{floatX, FastLog2u16}; use super::weights::{Weights, BLEND_FIXED_POINT_PRECISION}; const DEFAULT_CM_SPEED_INDEX: usize = 8; const NUM_SPEEDS_TO_TRY: usize = 16; const SPEEDS_TO_SEARCH: [u16; NUM_SPEEDS_TO_TRY] = [ 0, 1, 1, 1, 2, 4, 8, 16, 16, 32, 64, 128, 128, 512, 1664, 1664, ]; const MAXES_TO_SEARCH: [u16; NUM_SPEEDS_TO_TRY] = [ 32, 32, 128, 16384, 1024, 1024, 8192, 48, 8192, 4096, 16384, 256, 16384, 16384, 16384, 16384, ]; const NIBBLE_PRIOR_SIZE: usize = 16 * NUM_SPEEDS_TO_TRY; // the high nibble, followed by the low nibbles const CONTEXT_MAP_PRIOR_SIZE: usize = 256 * NIBBLE_PRIOR_SIZE * 17; const STRIDE_PRIOR_SIZE: usize = 256 * 256 * NIBBLE_PRIOR_SIZE * 2; #[derive(Clone, Copy, Debug)] pub struct SpeedAndMax(pub u16, pub u16); pub fn speed_to_tuple(inp: [SpeedAndMax; 2]) -> [(u16, u16); 2] { [(inp[0].0, inp[0].1), (inp[1].0, inp[1].1)] } fn get_stride_cdf_low( data: &mut [u16], stride_prior: u8, cm_prior: usize, high_nibble: u8, ) -> &mut [u16] { let index: usize = 1 + 2 * (cm_prior | ((stride_prior as usize & 0xf) << 8) | ((high_nibble as usize) << 12)); data.split_at_mut((NUM_SPEEDS_TO_TRY * index) << 4) .1 .split_at_mut(16 * NUM_SPEEDS_TO_TRY) .0 } fn get_stride_cdf_high(data: &mut [u16], stride_prior: u8, cm_prior: usize) -> &mut [u16] { let index: usize = 2 * (cm_prior | ((stride_prior as usize) << 8)); data.split_at_mut((NUM_SPEEDS_TO_TRY * index) << 4) .1 .split_at_mut(16 * NUM_SPEEDS_TO_TRY) .0 } fn get_cm_cdf_low(data: &mut [u16], cm_prior: usize, high_nibble: u8) -> &mut [u16] { let index: usize = (high_nibble as usize + 1) + 17 * cm_prior; data.split_at_mut((NUM_SPEEDS_TO_TRY * index) << 4) .1 .split_at_mut(16 * NUM_SPEEDS_TO_TRY) .0 } fn get_cm_cdf_high(data: &mut [u16], cm_prior: usize) -> &mut [u16] { let index: usize = 17 * cm_prior; data.split_at_mut((NUM_SPEEDS_TO_TRY * index) << 4) .1 .split_at_mut(16 * NUM_SPEEDS_TO_TRY) .0 } fn init_cdfs(cdfs: &mut [u16]) { assert_eq!(cdfs.len() % (16 * NUM_SPEEDS_TO_TRY), 0); let mut total_index = 0usize; let len = cdfs.len(); loop { for cdf_index in 0..16 { let vec = cdfs .split_at_mut(total_index) .1 .split_at_mut(NUM_SPEEDS_TO_TRY) .0; for item in vec { *item = 4 + 4 * cdf_index as u16; } total_index += NUM_SPEEDS_TO_TRY; } if total_index == len { break; } } } fn compute_combined_cost( singleton_cost: &mut [floatX; NUM_SPEEDS_TO_TRY], cdfs: &[u16], mixing_cdf: [u16; 16], nibble_u8: u8, _weights: &mut [Weights; NUM_SPEEDS_TO_TRY], ) { assert_eq!(cdfs.len(), 16 * NUM_SPEEDS_TO_TRY); let nibble = nibble_u8 as usize & 0xf; let mut stride_pdf = [0u16; NUM_SPEEDS_TO_TRY]; stride_pdf.clone_from_slice( cdfs.split_at(NUM_SPEEDS_TO_TRY * nibble) .1 .split_at(NUM_SPEEDS_TO_TRY) .0, ); let mut cm_pdf: u16 = mixing_cdf[nibble]; if nibble_u8 != 0 { let mut tmp = [0u16; NUM_SPEEDS_TO_TRY]; tmp.clone_from_slice( cdfs.split_at(NUM_SPEEDS_TO_TRY * (nibble - 1)) .1 .split_at(NUM_SPEEDS_TO_TRY) .0, ); for i in 0..NUM_SPEEDS_TO_TRY { stride_pdf[i] -= tmp[i]; } cm_pdf -= mixing_cdf[nibble - 1] } let mut stride_max = [0u16; NUM_SPEEDS_TO_TRY]; stride_max.clone_from_slice(cdfs.split_at(NUM_SPEEDS_TO_TRY * 15).1); let cm_max = mixing_cdf[15]; for i in 0..NUM_SPEEDS_TO_TRY { if stride_pdf[i] == 0 { assert_ne!(stride_pdf[i], 0); } if stride_max[i] == 0 { assert_ne!(stride_max[i], 0); } let w = (1 << (BLEND_FIXED_POINT_PRECISION - 2)); // a quarter of weight to stride let combined_pdf = w * u32::from(stride_pdf[i]) + ((1 << BLEND_FIXED_POINT_PRECISION) - w) * u32::from(cm_pdf); let combined_max = w * u32::from(stride_max[i]) + ((1 << BLEND_FIXED_POINT_PRECISION) - w) * u32::from(cm_max); let del = FastLog2u16((combined_pdf >> BLEND_FIXED_POINT_PRECISION) as u16) - FastLog2u16((combined_max >> BLEND_FIXED_POINT_PRECISION) as u16); singleton_cost[i] -= del; } } fn compute_cost(singleton_cost: &mut [floatX; NUM_SPEEDS_TO_TRY], cdfs: &[u16], nibble_u8: u8) { assert_eq!(cdfs.len(), 16 * NUM_SPEEDS_TO_TRY); let nibble = nibble_u8 as usize & 0xf; let mut pdf = [0u16; NUM_SPEEDS_TO_TRY]; pdf.clone_from_slice( cdfs.split_at(NUM_SPEEDS_TO_TRY * nibble) .1 .split_at(NUM_SPEEDS_TO_TRY) .0, ); if nibble_u8 != 0 { let mut tmp = [0u16; NUM_SPEEDS_TO_TRY]; tmp.clone_from_slice( cdfs.split_at(NUM_SPEEDS_TO_TRY * (nibble - 1)) .1 .split_at(NUM_SPEEDS_TO_TRY) .0, ); for i in 0..NUM_SPEEDS_TO_TRY { pdf[i] -= tmp[i]; } } let mut max = [0u16; NUM_SPEEDS_TO_TRY]; max.clone_from_slice(cdfs.split_at(NUM_SPEEDS_TO_TRY * 15).1); for i in 0..NUM_SPEEDS_TO_TRY { if pdf[i] == 0 { assert_ne!(pdf[i], 0); } if max[i] == 0 { assert_ne!(max[i], 0); } let del = FastLog2u16(pdf[i]) - FastLog2u16(max[i]); singleton_cost[i] -= del; } } fn update_cdf(cdfs: &mut [u16], nibble_u8: u8) { assert_eq!(cdfs.len(), 16 * NUM_SPEEDS_TO_TRY); let mut overall_index = nibble_u8 as usize * NUM_SPEEDS_TO_TRY; for _nibble in (nibble_u8 as usize & 0xf)..16 { for speed_index in 0..NUM_SPEEDS_TO_TRY { cdfs[overall_index + speed_index] += SPEEDS_TO_SEARCH[speed_index]; } overall_index += NUM_SPEEDS_TO_TRY; } overall_index = 0; for nibble in 0..16 { for speed_index in 0..NUM_SPEEDS_TO_TRY { if nibble == 0 { assert_ne!(cdfs[overall_index + speed_index], 0); } else { assert_ne!( cdfs[overall_index + speed_index] - cdfs[overall_index + speed_index - NUM_SPEEDS_TO_TRY], 0 ); } } overall_index += NUM_SPEEDS_TO_TRY; } for max_index in 0..NUM_SPEEDS_TO_TRY { if cdfs[15 * NUM_SPEEDS_TO_TRY + max_index] >= MAXES_TO_SEARCH[max_index] { const CDF_BIAS: [u16; 16] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; for nibble_index in 0..16 { let tmp = &mut cdfs[nibble_index * NUM_SPEEDS_TO_TRY + max_index]; *tmp = (tmp.wrapping_add(CDF_BIAS[nibble_index])) .wrapping_sub(tmp.wrapping_add(CDF_BIAS[nibble_index]) >> 2); } } } overall_index = 0; for nibble in 0..16 { for speed_index in 0..NUM_SPEEDS_TO_TRY { if nibble == 0 { assert_ne!(cdfs[overall_index + speed_index], 0); } else { assert_ne!( cdfs[overall_index + speed_index] - cdfs[overall_index + speed_index - NUM_SPEEDS_TO_TRY], 0 ); } } overall_index += NUM_SPEEDS_TO_TRY; } } fn extract_single_cdf(cdf_bundle: &[u16], index: usize) -> [u16; 16] { assert_eq!(cdf_bundle.len(), 16 * NUM_SPEEDS_TO_TRY); assert!(index < NUM_SPEEDS_TO_TRY); #[allow(clippy::identity_op)] [ cdf_bundle[index + 0 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 1 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 2 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 3 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 4 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 5 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 6 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 7 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 8 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 9 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 10 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 11 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 12 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 13 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 14 * NUM_SPEEDS_TO_TRY], cdf_bundle[index + 15 * NUM_SPEEDS_TO_TRY], ] } fn min_cost_index_for_speed(cost: &[floatX]) -> usize { assert_eq!(cost.len(), NUM_SPEEDS_TO_TRY); let mut min_cost = cost[0]; let mut best_choice = 0; for i in 1..NUM_SPEEDS_TO_TRY { if cost[i] < min_cost { best_choice = i; min_cost = cost[i]; } } best_choice } fn min_cost_speed_max(cost: &[floatX]) -> SpeedAndMax { let best_choice = min_cost_index_for_speed(cost); SpeedAndMax(SPEEDS_TO_SEARCH[best_choice], MAXES_TO_SEARCH[best_choice]) } fn min_cost_value(cost: &[floatX]) -> floatX { let best_choice = min_cost_index_for_speed(cost); cost[best_choice] } const SINGLETON_COMBINED_STRATEGY: usize = 2; const SINGLETON_STRIDE_STRATEGY: usize = 1; const SINGLETON_CM_STRATEGY: usize = 0; pub struct ContextMapEntropy< 'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator, > { input: InputPair<'a>, context_map: interface::PredictionModeContextMap>, block_type: u8, cur_stride: u8, local_byte_offset: usize, weight: [[Weights; NUM_SPEEDS_TO_TRY]; 2], cm_priors: >::AllocatedMemory, stride_priors: >::AllocatedMemory, _stride_pyramid_leaves: [u8; find_stride::NUM_LEAF_NODES], singleton_costs: [[[floatX; NUM_SPEEDS_TO_TRY]; 2]; 3], } impl<'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator> ContextMapEntropy<'a, Alloc> { pub fn new( m16: &mut Alloc, input: InputPair<'a>, stride: [u8; find_stride::NUM_LEAF_NODES], prediction_mode: interface::PredictionModeContextMap>, cdf_detection_quality: u8, ) -> Self { let cdf_detect = cdf_detection_quality != 0; let mut ret = ContextMapEntropy:: { input, context_map: prediction_mode, block_type: 0, cur_stride: 1, local_byte_offset: 0, cm_priors: if cdf_detect { >::alloc_cell(m16, CONTEXT_MAP_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, stride_priors: if cdf_detect { >::alloc_cell(m16, STRIDE_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, _stride_pyramid_leaves: stride, weight: [ [Weights::new(); NUM_SPEEDS_TO_TRY], [Weights::new(); NUM_SPEEDS_TO_TRY], ], singleton_costs: [[[0.0 as floatX; NUM_SPEEDS_TO_TRY]; 2]; 3], }; if cdf_detect { init_cdfs(ret.cm_priors.slice_mut()); init_cdfs(ret.stride_priors.slice_mut()); } ret } pub fn take_prediction_mode( &mut self, ) -> interface::PredictionModeContextMap> { core::mem::replace( &mut self.context_map, interface::PredictionModeContextMap::> { literal_context_map: InputReferenceMut::default(), predmode_speed_and_distance_context_map: InputReferenceMut::default(), }, ) } pub fn prediction_mode_mut( &mut self, ) -> &mut interface::PredictionModeContextMap> { &mut self.context_map } pub fn best_singleton_speeds( &self, cm: bool, combined: bool, ) -> ([SpeedAndMax; 2], [floatX; 2]) { let cost_type_index = if combined { 2usize } else if cm { 0usize } else { 1 }; let mut ret_cost = [ self.singleton_costs[cost_type_index][0][0], self.singleton_costs[cost_type_index][1][0], ]; let mut best_indexes = [0, 0]; for speed_index in 1..NUM_SPEEDS_TO_TRY { for highness in 0..2 { let cur_cost = self.singleton_costs[cost_type_index][highness][speed_index]; if cur_cost < ret_cost[highness] { best_indexes[highness] = speed_index; ret_cost[highness] = cur_cost; } } } let ret_speed = [ SpeedAndMax( SPEEDS_TO_SEARCH[best_indexes[0]], MAXES_TO_SEARCH[best_indexes[0]], ), SpeedAndMax( SPEEDS_TO_SEARCH[best_indexes[1]], MAXES_TO_SEARCH[best_indexes[1]], ), ]; (ret_speed, ret_cost) } pub fn best_speeds( &mut self, // mut due to helpers cm: bool, combined: bool, ) -> [SpeedAndMax; 2] { let mut ret = [SpeedAndMax(SPEEDS_TO_SEARCH[0], MAXES_TO_SEARCH[0]); 2]; let cost_type_index = if combined { 2usize } else if cm { 0usize } else { 1 }; for high in 0..2 { /*eprintln!("TRIAL {} {}", cm, combined); for i in 0..NUM_SPEEDS_TO_TRY { eprintln!("{},{} costs {:?}", SPEEDS_TO_SEARCH[i], MAXES_TO_SEARCH[i], self.singleton_costs[cost_type_index][high][i]); }*/ ret[high] = min_cost_speed_max(&self.singleton_costs[cost_type_index][high][..]); } ret } pub fn best_speeds_costs( &mut self, // mut due to helpers cm: bool, combined: bool, ) -> [floatX; 2] { let cost_type_index = if combined { 2usize } else if cm { 0usize } else { 1 }; let mut ret = [0.0 as floatX; 2]; for high in 0..2 { ret[high] = min_cost_value(&self.singleton_costs[cost_type_index][high][..]); } ret } pub fn free(&mut self, alloc: &mut Alloc) { >::free_cell(alloc, core::mem::take(&mut self.cm_priors)); >::free_cell(alloc, core::mem::take(&mut self.stride_priors)); } fn update_cost_base( &mut self, stride_prior: u8, _selected_bits: u8, cm_prior: usize, literal: u8, ) { let upper_nibble = (literal >> 4); let lower_nibble = literal & 0xf; let provisional_cm_high_cdf: [u16; 16]; let provisional_cm_low_cdf: [u16; 16]; { let cm_cdf_high = get_cm_cdf_high(self.cm_priors.slice_mut(), cm_prior); compute_cost( &mut self.singleton_costs[SINGLETON_CM_STRATEGY][1], cm_cdf_high, upper_nibble, ); // choose a fairly reasonable cm speed rather than a selected one let best_cm_index = DEFAULT_CM_SPEED_INDEX; // = min_cost_index_for_speed(&self.singleton_costs[SINGLETON_CM_STRATEGY][1]); provisional_cm_high_cdf = extract_single_cdf(cm_cdf_high, best_cm_index); } { let cm_cdf_low = get_cm_cdf_low(self.cm_priors.slice_mut(), cm_prior, upper_nibble); compute_cost( &mut self.singleton_costs[SINGLETON_CM_STRATEGY][0], cm_cdf_low, lower_nibble, ); // choose a fairly reasonable cm speed rather than a selected one let best_cm_index = DEFAULT_CM_SPEED_INDEX; //min_cost_index_for_speed(&self.singleton_costs[SINGLETON_CM_STRATEGY][0]); provisional_cm_low_cdf = extract_single_cdf(cm_cdf_low, best_cm_index); } { let stride_cdf_high = get_stride_cdf_high(self.stride_priors.slice_mut(), stride_prior, cm_prior); compute_combined_cost( &mut self.singleton_costs[SINGLETON_COMBINED_STRATEGY][1], stride_cdf_high, provisional_cm_high_cdf, upper_nibble, &mut self.weight[1], ); compute_cost( &mut self.singleton_costs[SINGLETON_STRIDE_STRATEGY][1], stride_cdf_high, upper_nibble, ); update_cdf(stride_cdf_high, upper_nibble); } { let stride_cdf_low = get_stride_cdf_low( self.stride_priors.slice_mut(), stride_prior, cm_prior, upper_nibble, ); compute_combined_cost( &mut self.singleton_costs[SINGLETON_COMBINED_STRATEGY][0], stride_cdf_low, provisional_cm_low_cdf, lower_nibble, &mut self.weight[0], ); compute_cost( &mut self.singleton_costs[SINGLETON_STRIDE_STRATEGY][0], stride_cdf_low, lower_nibble, ); update_cdf(stride_cdf_low, lower_nibble); } { let cm_cdf_high = get_cm_cdf_high(self.cm_priors.slice_mut(), cm_prior); update_cdf(cm_cdf_high, upper_nibble); } { let cm_cdf_low = get_cm_cdf_low(self.cm_priors.slice_mut(), cm_prior, upper_nibble); update_cdf(cm_cdf_low, lower_nibble); } } } impl<'a, 'b, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator> interface::CommandProcessor<'b> for ContextMapEntropy<'a, Alloc> { fn push(&mut self, val: interface::Command>) { push_base(self, val) } } impl<'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator> IRInterpreter for ContextMapEntropy<'a, Alloc> { fn inc_local_byte_offset(&mut self, inc: usize) { self.local_byte_offset += inc; } fn local_byte_offset(&self) -> usize { self.local_byte_offset } fn update_block_type(&mut self, new_type: u8, stride: u8) { self.block_type = new_type; self.cur_stride = stride; } fn block_type(&self) -> u8 { self.block_type } fn literal_data_at_offset(&self, index: usize) -> u8 { self.input[index] } fn literal_context_map(&self) -> &[u8] { self.context_map.literal_context_map.slice() } fn prediction_mode(&self) -> ::interface::LiteralPredictionModeNibble { self.context_map.literal_prediction_mode() } fn update_cost( &mut self, stride_prior: [u8; 8], stride_prior_offset: usize, selected_bits: u8, cm_prior: usize, literal: u8, ) { let stride = self.cur_stride as usize; self.update_cost_base( stride_prior[stride_prior_offset.wrapping_sub(stride) & 7], selected_bits, cm_prior, literal, ) } } brotli-6.0.0/src/enc/dictionary_hash.rs000075500000000000000000003644721046102023000162170ustar 00000000000000#![allow(dead_code)] pub static kStaticDictionaryHash: [u16; 32768] = [ 32072, 0, 0, 0, 0, 0, 0, 0, 0, 21860, 0, 0, 0, 0, 0, 0, 0, 40486, 0, 0, 0, 0, 0, 45798, 0, 0, 0, 0, 0, 0, 1292, 0, 0, 0, 0, 4964, 278, 23717, 0, 19972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2126, 16102, 0, 0, 0, 14437, 0, 0, 0, 0, 0, 0, 0, 26727, 2253, 0, 0, 17252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3622, 0, 0, 0, 0, 22984, 0, 0, 0, 0, 0, 0, 16647, 0, 34247, 0, 0, 0, 0, 0, 48486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2511, 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, 19532, 0, 0, 24004, 0, 0, 0, 9828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30853, 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, 31974, 0, 0, 0, 0, 0, 0, 0, 0, 20650, 2404, 0, 20773, 1677, 9031, 0, 6404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6761, 7206, 0, 0, 21992, 22983, 0, 0, 3529, 0, 1864, 0, 0, 0, 0, 0, 0, 11046, 0, 0, 9641, 0, 0, 0, 6507, 0, 0, 36934, 21576, 62375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8294, 0, 0, 0, 0, 0, 0, 0, 40807, 0, 0, 0, 39398, 8136, 0, 0, 0, 0, 0, 0, 0, 8875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7941, 0, 0, 25609, 0, 0, 0, 936, 3716, 3213, 15687, 0, 0, 0, 0, 0, 52519, 0, 17381, 0, 0, 0, 0, 1320, 5797, 0, 21029, 0, 0, 6472, 807, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13545, 0, 0, 0, 3624, 0, 0, 0, 29674, 30820, 0, 31237, 0, 6596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22278, 0, 37446, 0, 0, 0, 0, 7240, 423, 0, 24612, 21705, 17636, 0, 0, 0, 0, 0, 0, 1833, 0, 0, 0, 328, 6021, 0, 0, 0, 19974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62119, 4178, 0, 0, 0, 0, 12100, 8617, 0, 0, 16900, 0, 36678, 0, 0, 0, 35366, 0, 51718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20998, 0, 62086, 0, 0, 0, 0, 0, 5542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14629, 10952, 25927, 0, 0, 0, 0, 19849, 0, 0, 0, 0, 0, 0, 0, 30952, 3046, 14314, 12998, 0, 0, 0, 15268, 0, 40582, 30216, 62118, 0, 0, 0, 20132, 0, 0, 0, 0, 0, 12005, 0, 0, 0, 52358, 0, 0, 0, 0, 24778, 0, 44, 33095, 0, 0, 0, 0, 0, 26372, 0, 0, 0, 0, 0, 3781, 0, 0, 17928, 9479, 0, 0, 0, 0, 0, 0, 0, 0, 32297, 28613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47174, 11723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2536, 55143, 0, 0, 6410, 0, 0, 0, 0, 0, 0, 0, 0, 56294, 11914, 0, 529, 0, 30184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8261, 0, 0, 28808, 58854, 22633, 965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64135, 0, 0, 331, 3684, 0, 1605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16650, 37, 0, 23622, 3144, 15429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22443, 69, 0, 0, 0, 0, 0, 0, 0, 0, 17832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11113, 0, 0, 0, 0, 18309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26630, 0, 0, 25512, 25895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16901, 0, 0, 0, 27558, 0, 0, 9418, 0, 0, 0, 3508, 0, 0, 0, 0, 0, 0, 0, 0, 37990, 9289, 8517, 0, 0, 0, 0, 1578, 1604, 23944, 0, 0, 14916, 12781, 0, 0, 0, 0, 0, 0, 0, 12105, 0, 16617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21348, 11240, 28870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5772, 0, 0, 27812, 0, 0, 0, 0, 0, 0, 0, 8324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16748, 1157, 0, 0, 18794, 16324, 25898, 935, 8333, 0, 0, 0, 0, 0, 0, 0, 0, 18246, 0, 18086, 0, 46854, 0, 0, 0, 0, 0, 0, 339, 0, 0, 25188, 12780, 12166, 6409, 0, 0, 0, 0, 16516, 0, 27012, 28395, 0, 0, 0, 0, 0, 0, 0, 1420, 0, 0, 0, 9768, 52967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25163, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64998, 0, 0, 0, 0, 0, 21893, 0, 0, 0, 0, 0, 47366, 0, 0, 0, 870, 0, 0, 0, 12646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26020, 16360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1809, 0, 0, 0, 6601, 15878, 0, 0, 0, 0, 0, 29092, 0, 28516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21988, 0, 0, 0, 42950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5133, 1318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54982, 24904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51526, 0, 0, 0, 0, 0, 3685, 0, 0, 0, 0, 10062, 9412, 0, 0, 0, 31460, 5708, 6181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27144, 57478, 0, 0, 0, 0, 0, 0, 7084, 0, 21993, 53126, 0, 0, 0, 0, 8397, 0, 0, 5733, 0, 0, 0, 0, 0, 2116, 0, 24742, 0, 11271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1133, 0, 4873, 0, 0, 38310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17932, 0, 0, 18053, 0, 0, 0, 25510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17798, 0, 26214, 0, 0, 0, 0, 0, 0, 0, 0, 23016, 17415, 20392, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3239, 0, 46119, 0, 0, 0, 28580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41478, 0, 0, 31016, 55334, 10056, 1924, 0, 0, 0, 0, 0, 36614, 0, 36711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13994, 59303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26501, 0, 5639, 0, 0, 0, 0, 0, 0, 13897, 1253, 0, 0, 0, 0, 0, 5095, 0, 0, 0, 28869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8646, 0, 0, 0, 0, 25641, 17796, 0, 0, 0, 0, 0, 0, 0, 13316, 620, 6309, 11819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 904, 1095, 0, 24229, 0, 0, 28744, 49703, 0, 23077, 0, 0, 0, 0, 32392, 0, 0, 0, 0, 35271, 0, 28740, 5866, 0, 0, 0, 0, 0, 0, 0, 4361, 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, 7917, 8869, 0, 0, 0, 13924, 0, 0, 0, 0, 0, 41958, 0, 0, 0, 0, 0, 0, 6766, 13989, 0, 0, 0, 903, 0, 0, 24010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64390, 0, 22468, 0, 25861, 0, 0, 0, 0, 23656, 5317, 0, 0, 0, 0, 0, 0, 23017, 5445, 16009, 0, 0, 0, 0, 0, 0, 0, 0, 48006, 10473, 0, 0, 14404, 0, 0, 0, 42183, 0, 0, 0, 51270, 0, 0, 10602, 24132, 0, 0, 0, 0, 0, 43782, 0, 0, 17834, 0, 0, 0, 25576, 27205, 0, 0, 0, 0, 0, 0, 0, 0, 29066, 0, 0, 0, 0, 0, 626, 1988, 14700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44710, 0, 0, 0, 0, 3848, 7623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42374, 0, 0, 0, 0, 0, 0, 0, 0, 19272, 6436, 0, 0, 5256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39783, 0, 0, 0, 0, 30984, 0, 0, 0, 0, 0, 0, 28230, 0, 0, 0, 29028, 10538, 3205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5636, 840, 295, 0, 0, 8488, 8198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4074, 19526, 0, 0, 0, 0, 31144, 64038, 0, 0, 0, 0, 0, 0, 16716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17706, 0, 0, 0, 0, 0, 0, 50630, 0, 50503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25446, 0, 0, 0, 13831, 0, 0, 0, 0, 0, 0, 2696, 4039, 0, 0, 0, 0, 25288, 0, 12076, 2054, 0, 48934, 0, 0, 0, 0, 16969, 59431, 17259, 35335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31275, 0, 0, 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 776, 839, 0, 0, 29386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5864, 12134, 0, 0, 0, 0, 0, 0, 0, 25349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24678, 0, 0, 0, 63335, 0, 28836, 8142, 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, 4494, 0, 0, 0, 0, 0, 14088, 1188, 0, 16260, 0, 0, 0, 16421, 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, 276, 0, 0, 17060, 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, 24076, 29445, 0, 33543, 0, 4901, 0, 0, 12522, 0, 0, 62471, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4046, 0, 0, 0, 0, 20486, 0, 15460, 2217, 51719, 0, 0, 0, 0, 0, 23495, 0, 0, 0, 0, 0, 0, 15370, 0, 15849, 0, 15113, 0, 0, 0, 0, 0, 0, 0, 0, 27972, 7337, 0, 0, 0, 0, 30342, 0, 0, 0, 0, 0, 0, 0, 0, 32299, 23940, 0, 17766, 0, 0, 0, 0, 0, 0, 6184, 0, 20904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31492, 0, 0, 0, 5509, 0, 0, 0, 0, 0, 0, 0, 0, 2669, 50182, 0, 0, 12299, 0, 0, 0, 0, 0, 0, 0, 5257, 28167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11750, 3890, 0, 0, 26500, 0, 0, 0, 0, 0, 0, 0, 49318, 0, 0, 0, 0, 0, 0, 0, 10981, 0, 0, 0, 0, 0, 0, 0, 0, 17961, 1831, 0, 0, 0, 0, 0, 0, 0, 29638, 0, 0, 0, 0, 26473, 0, 6216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28683, 39975, 0, 0, 0, 0, 0, 51654, 0, 0, 0, 27527, 0, 0, 0, 0, 0, 0, 0, 0, 30859, 3268, 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, 28772, 0, 18212, 0, 0, 0, 0, 25448, 65446, 0, 0, 0, 0, 0, 0, 3337, 1670, 0, 0, 0, 0, 0, 19332, 0, 0, 0, 0, 24936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1043, 0, 0, 0, 0, 15814, 0, 21670, 0, 0, 0, 0, 0, 0, 0, 16263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32454, 0, 30630, 0, 0, 20170, 9926, 0, 0, 0, 18247, 0, 0, 14376, 0, 2056, 17191, 0, 0, 0, 0, 0, 0, 0, 7812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22474, 52806, 1588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10825, 0, 0, 0, 0, 40934, 0, 0, 0, 0, 0, 0, 0, 28677, 0, 0, 5714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25865, 22246, 0, 0, 0, 0, 17256, 35751, 0, 0, 0, 0, 0, 0, 0, 0, 8236, 0, 32108, 0, 0, 0, 43, 14342, 0, 16517, 0, 0, 30732, 0, 4012, 133, 0, 40583, 971, 23942, 0, 0, 27275, 0, 0, 0, 204, 0, 0, 27140, 7564, 44327, 27592, 57958, 0, 0, 0, 0, 22344, 25701, 0, 0, 0, 0, 0, 0, 0, 19524, 31755, 0, 0, 28102, 0, 59111, 0, 0, 0, 0, 0, 0, 0, 12261, 0, 44934, 0, 0, 0, 0, 31560, 0, 11114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18953, 18311, 0, 45159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22411, 23943, 0, 0, 0, 0, 0, 0, 11690, 0, 0, 4069, 0, 0, 2668, 6342, 0, 0, 0, 0, 0, 0, 27658, 1766, 0, 0, 0, 0, 23240, 56070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34119, 0, 24453, 0, 0, 0, 0, 21867, 0, 17610, 9894, 0, 0, 27976, 38790, 0, 0, 0, 43654, 0, 31559, 12202, 23142, 0, 0, 0, 50343, 0, 0, 0, 0, 0, 32806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49895, 0, 0, 0, 0, 15786, 4263, 0, 0, 0, 0, 4746, 3814, 0, 0, 0, 0, 0, 0, 17192, 453, 17323, 0, 20328, 4036, 0, 0, 0, 15844, 0, 0, 0, 0, 27561, 31940, 32296, 0, 0, 0, 0, 0, 0, 0, 11499, 11782, 0, 0, 0, 0, 9738, 50471, 0, 0, 0, 0, 0, 35430, 0, 0, 0, 0, 0, 29734, 0, 0, 0, 36551, 0, 0, 0, 0, 9257, 5606, 0, 13829, 0, 7015, 0, 0, 0, 0, 0, 25127, 0, 0, 19051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2572, 0, 0, 0, 0, 0, 0, 29797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42342, 0, 0, 0, 0, 9293, 0, 17896, 56038, 4077, 0, 0, 0, 29899, 37351, 0, 30823, 0, 8326, 0, 0, 0, 18342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18569, 54054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37254, 0, 0, 31433, 61510, 0, 2022, 0, 0, 0, 0, 0, 25381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2149, 25289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12516, 14185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36486, 0, 0, 0, 0, 10889, 9607, 0, 28711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28490, 0, 0, 0, 0, 26181, 10283, 1701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14980, 0, 7783, 0, 27846, 0, 0, 0, 56486, 3892, 0, 0, 0, 5770, 16583, 0, 26309, 13422, 20292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28742, 0, 0, 0, 0, 14536, 1158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42438, 0, 3332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17353, 1447, 0, 0, 8427, 48518, 1359, 0, 0, 0, 0, 0, 14986, 0, 32168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9230, 2791, 0, 0, 0, 0, 0, 0, 0, 0, 16073, 31623, 4269, 0, 0, 0, 0, 0, 0, 4519, 0, 0, 27912, 58950, 0, 0, 0, 0, 0, 0, 0, 0, 8361, 19812, 0, 0, 0, 0, 6056, 7877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21701, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9128, 1125, 0, 16548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17292, 6854, 21352, 0, 2380, 0, 0, 4007, 0, 0, 0, 0, 0, 24357, 4202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42823, 3022, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14373, 0, 20677, 3304, 2759, 20522, 64903, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27814, 2802, 8870, 3758, 1255, 0, 0, 0, 0, 0, 0, 0, 0, 30027, 9510, 0, 0, 0, 0, 17864, 14855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51462, 0, 0, 0, 0, 0, 0, 0, 45734, 0, 0, 23467, 32327, 0, 0, 10826, 52999, 0, 0, 0, 33222, 31336, 64326, 0, 0, 0, 0, 0, 0, 0, 32166, 0, 0, 3891, 0, 0, 0, 7017, 645, 0, 0, 0, 0, 0, 0, 27915, 46087, 0, 0, 0, 21863, 0, 34246, 0, 0, 16715, 0, 0, 0, 0, 14052, 21416, 0, 0, 0, 0, 0, 0, 0, 0, 39846, 0, 0, 0, 0, 0, 38982, 0, 0, 17512, 7460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15428, 0, 0, 0, 0, 0, 0, 0, 28356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19911, 0, 20007, 0, 0, 0, 10855, 943, 0, 0, 10821, 0, 0, 0, 0, 4170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65415, 0, 0, 0, 0, 0, 0, 0, 0, 9865, 24646, 0, 0, 0, 0, 0, 40519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22091, 23655, 0, 0, 0, 0, 0, 0, 0, 31686, 0, 0, 0, 58599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24421, 0, 28100, 0, 0, 0, 31268, 0, 3204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14822, 0, 0, 0, 0, 19947, 10182, 0, 0, 9480, 14821, 4398, 0, 0, 14532, 0, 0, 0, 48871, 1873, 0, 0, 0, 0, 0, 0, 0, 589, 1541, 0, 0, 0, 0, 0, 23333, 0, 0, 0, 14149, 0, 0, 0, 0, 1296, 14374, 0, 27300, 0, 0, 0, 0, 0, 0, 7276, 0, 0, 0, 0, 0, 0, 47718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5164, 1765, 0, 14405, 0, 37574, 1994, 0, 6636, 0, 0, 0, 0, 0, 0, 0, 0, 27815, 0, 0, 0, 0, 2568, 6820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11336, 26247, 0, 0, 23912, 0, 0, 0, 30536, 0, 0, 34342, 0, 17799, 0, 0, 0, 22149, 0, 6118, 0, 25732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26600, 5190, 0, 0, 1142, 0, 0, 0, 0, 0, 0, 0, 0, 39527, 0, 0, 0, 0, 0, 39494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3085, 0, 0, 0, 0, 0, 0, 0, 4786, 0, 0, 0, 28873, 6532, 0, 0, 26664, 0, 9193, 11719, 0, 0, 0, 0, 0, 0, 31752, 64646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25094, 0, 0, 18153, 20167, 0, 0, 0, 17254, 0, 0, 878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31592, 0, 0, 8167, 24362, 6212, 0, 34758, 0, 0, 0, 0, 0, 0, 32520, 0, 0, 44679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17989, 8681, 29222, 0, 0, 0, 0, 0, 0, 0, 0, 10251, 4902, 1452, 15207, 0, 0, 0, 0, 0, 0, 0, 22822, 0, 10469, 0, 0, 0, 0, 0, 0, 19337, 17670, 107, 11494, 0, 0, 0, 0, 27305, 2565, 0, 0, 0, 0, 0, 0, 0, 64518, 200, 28389, 0, 0, 0, 0, 31208, 0, 30762, 0, 0, 0, 0, 0, 29321, 60518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3209, 3237, 12490, 22663, 0, 0, 0, 18789, 31464, 16391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20646, 0, 0, 0, 27238, 0, 0, 0, 0, 0, 15940, 4488, 6951, 0, 0, 0, 46342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20584, 3367, 0, 25350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55943, 0, 0, 0, 0, 0, 24133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2929, 0, 0, 50086, 0, 2918, 25356, 30052, 115, 11846, 0, 0, 0, 0, 3056, 0, 0, 0, 0, 17639, 239, 19815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21479, 0, 0, 0, 0, 0, 28420, 11786, 4772, 0, 0, 3368, 36295, 0, 31463, 0, 0, 14665, 996, 0, 20582, 0, 0, 0, 9988, 0, 23685, 0, 0, 0, 52551, 0, 0, 0, 0, 0, 0, 0, 7556, 0, 0, 0, 0, 0, 0, 0, 1895, 2186, 0, 0, 0, 0, 0, 27755, 25447, 0, 0, 0, 0, 31052, 63270, 0, 0, 0, 0, 0, 0, 0, 36742, 0, 24804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21290, 2276, 0, 0, 0, 0, 26475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15332, 0, 0, 0, 0, 0, 0, 0, 0, 3176, 19431, 0, 0, 0, 0, 0, 0, 0, 62726, 0, 0, 0, 25380, 0, 0, 27883, 1316, 0, 0, 7724, 3015, 0, 0, 0, 0, 6697, 0, 0, 47910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3141, 0, 0, 0, 14820, 0, 0, 0, 0, 9326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31493, 0, 0, 0, 0, 0, 6566, 0, 0, 0, 0, 0, 0, 6569, 1348, 0, 25638, 0, 0, 0, 0, 0, 20324, 0, 0, 17067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11876, 0, 41030, 0, 0, 0, 26405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11431, 28137, 14950, 0, 10151, 0, 0, 0, 0, 0, 0, 0, 29574, 0, 0, 0, 0, 27176, 57446, 0, 0, 0, 0, 28650, 57574, 1387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58247, 0, 0, 0, 0, 0, 0, 0, 16805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3526, 0, 15781, 0, 5572, 13352, 0, 0, 0, 0, 0, 18665, 23463, 0, 0, 0, 0, 0, 0, 15405, 6885, 0, 0, 0, 0, 15272, 0, 0, 0, 0, 0, 0, 0, 0, 9861, 0, 0, 0, 0, 0, 0, 0, 0, 9512, 4037, 0, 0, 11563, 49639, 0, 0, 0, 0, 0, 0, 27880, 57830, 0, 0, 0, 0, 0, 41831, 0, 21924, 0, 0, 0, 0, 0, 0, 0, 25509, 0, 27462, 0, 18085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13898, 8068, 26441, 0, 0, 0, 0, 0, 0, 25316, 0, 0, 0, 0, 16298, 7397, 5706, 19239, 0, 0, 0, 0, 0, 0, 0, 0, 1392, 50919, 0, 0, 0, 0, 0, 53863, 0, 0, 0, 0, 1451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17801, 15813, 0, 12740, 0, 0, 0, 32967, 0, 0, 0, 0, 0, 0, 5389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31143, 0, 20548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51686, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12109, 19015, 0, 34983, 0, 21732, 3600, 0, 0, 0, 0, 47750, 17288, 43975, 22857, 47559, 0, 0, 0, 0, 26408, 48358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30470, 0, 0, 23560, 4581, 0, 22404, 0, 49286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49831, 0, 0, 0, 27525, 31691, 7, 0, 0, 25835, 0, 0, 0, 0, 0, 4201, 16485, 0, 20676, 0, 0, 0, 0, 3753, 23303, 16264, 3878, 0, 0, 0, 0, 0, 0, 11434, 0, 0, 0, 0, 0, 0, 7589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57095, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22820, 11146, 49158, 0, 23623, 0, 0, 0, 0, 0, 0, 0, 13893, 0, 0, 0, 0, 0, 0, 11722, 60071, 1258, 0, 0, 0, 0, 0, 0, 18564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27945, 0, 0, 0, 0, 5479, 0, 20006, 17608, 3431, 10988, 30180, 0, 0, 0, 0, 0, 0, 0, 24581, 14, 0, 0, 0, 0, 0, 0, 25572, 0, 0, 0, 28612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8710, 0, 14116, 0, 0, 116, 292, 0, 0, 0, 37831, 0, 43078, 0, 0, 0, 0, 0, 0, 0, 0, 21832, 0, 0, 32134, 783, 0, 0, 30982, 0, 0, 0, 68, 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, 5932, 0, 0, 0, 18505, 15175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3630, 16965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17797, 0, 0, 0, 0, 0, 0, 520, 42150, 0, 0, 3122, 0, 0, 0, 22506, 0, 0, 0, 0, 0, 0, 0, 0, 28550, 0, 0, 0, 50278, 0, 0, 13641, 5958, 0, 35238, 0, 0, 0, 0, 0, 0, 0, 0, 29993, 18724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20619, 9319, 0, 0, 0, 0, 23977, 0, 5193, 0, 0, 12196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20105, 677, 0, 0, 0, 0, 0, 0, 0, 0, 29419, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20266, 0, 0, 0, 0, 10631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47655, 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, 26628, 12744, 0, 20648, 0, 0, 0, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 25604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63782, 0, 0, 0, 0, 24616, 0, 0, 0, 21291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45638, 0, 0, 0, 0, 1931, 0, 0, 0, 20521, 59975, 0, 20614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56231, 0, 0, 0, 0, 0, 29991, 0, 52871, 0, 20934, 0, 0, 0, 0, 0, 0, 0, 16871, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7237, 0, 0, 0, 0, 0, 47558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10406, 0, 0, 0, 0, 0, 0, 0, 43046, 0, 0, 2930, 0, 12936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31141, 0, 0, 0, 0, 0, 0, 0, 37639, 0, 17572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31240, 0, 0, 0, 0, 0, 688, 0, 0, 0, 0, 0, 1648, 0, 0, 0, 0, 10055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6345, 199, 0, 34982, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56839, 0, 0, 0, 0, 0, 48902, 0, 13412, 0, 0, 0, 0, 0, 0, 0, 0, 2441, 4420, 0, 0, 0, 0, 20428, 933, 0, 0, 0, 0, 0, 0, 0, 45383, 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, 54726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17036, 741, 0, 0, 0, 0, 0, 0, 0, 27589, 0, 0, 30282, 18950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25993, 0, 0, 0, 2443, 0, 0, 31622, 0, 14150, 0, 0, 0, 28679, 0, 0, 0, 0, 0, 0, 15464, 0, 0, 0, 0, 54694, 0, 0, 0, 0, 0, 0, 3827, 0, 0, 0, 3756, 0, 9897, 0, 0, 0, 0, 0, 19082, 31239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27625, 0, 0, 0, 784, 4647, 32652, 0, 0, 63494, 0, 0, 0, 0, 0, 0, 0, 21062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3404, 58470, 0, 32325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18634, 2789, 0, 0, 0, 0, 0, 0, 0, 8548, 0, 0, 0, 22501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15881, 0, 0, 0, 0, 35879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7978, 17956, 0, 0, 0, 0, 0, 0, 0, 24324, 0, 0, 4937, 0, 0, 0, 8168, 0, 13420, 10340, 0, 0, 0, 0, 0, 11780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16712, 0, 0, 0, 0, 0, 0, 0, 17640, 17991, 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, 2953, 0, 0, 0, 0, 0, 0, 0, 9100, 16806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30667, 0, 0, 19013, 0, 0, 0, 0, 0, 0, 205, 15334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1969, 0, 0, 0, 0, 0, 0, 0, 26248, 52518, 0, 49798, 0, 0, 0, 0, 0, 0, 0, 9668, 0, 0, 0, 0, 0, 4742, 0, 0, 21641, 0, 0, 0, 0, 0, 0, 53574, 0, 0, 0, 0, 0, 0, 5707, 0, 0, 0, 0, 0, 0, 0, 3018, 12454, 0, 0, 0, 0, 2920, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23910, 0, 0, 0, 0, 0, 0, 0, 55879, 0, 0, 0, 0, 0, 775, 0, 43270, 5066, 48967, 0, 0, 22986, 4165, 8971, 44838, 0, 0, 0, 0, 0, 62279, 272, 0, 0, 0, 0, 51430, 0, 0, 0, 0, 0, 0, 28234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13349, 0, 0, 0, 51111, 20265, 13861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 585, 7494, 0, 0, 0, 0, 0, 0, 0, 0, 21768, 62407, 0, 0, 0, 0, 7979, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38918, 0, 56742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16296, 5767, 0, 0, 0, 0, 0, 0, 0, 32068, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29796, 0, 0, 0, 0, 0, 0, 0, 0, 23916, 30183, 0, 58791, 0, 0, 0, 0, 0, 0, 0, 20518, 0, 0, 0, 0, 8969, 0, 0, 0, 183, 0, 0, 0, 0, 0, 2314, 17445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23748, 0, 0, 8139, 4839, 27914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29478, 0, 0, 16552, 26663, 0, 53767, 0, 0, 13960, 8039, 18696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 782, 16005, 0, 0, 0, 0, 0, 0, 0, 0, 6258, 56806, 16456, 12455, 0, 0, 0, 0, 0, 0, 0, 23780, 0, 0, 0, 0, 0, 0, 9355, 0, 0, 0, 7273, 41063, 24780, 57766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3820, 2597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29225, 61126, 0, 0, 0, 58439, 15691, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37190, 22408, 967, 0, 0, 0, 23078, 26858, 0, 0, 0, 19753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5416, 13702, 0, 0, 0, 0, 0, 52742, 20394, 38567, 0, 0, 0, 51079, 0, 0, 136, 8516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8936, 5031, 12520, 19334, 0, 0, 22827, 30247, 28074, 31140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27497, 18148, 20104, 59079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24389, 0, 0, 6125, 0, 0, 0, 0, 9541, 0, 0, 24553, 29095, 0, 0, 0, 0, 0, 0, 0, 25444, 0, 0, 9643, 0, 0, 63047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39558, 0, 0, 0, 0, 0, 0, 20620, 11815, 499, 0, 5128, 2278, 0, 0, 0, 0, 0, 46310, 0, 0, 0, 0, 0, 0, 0, 0, 23530, 40166, 2440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26922, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26758, 0, 0, 0, 0, 0, 51911, 0, 0, 23532, 0, 0, 0, 0, 51238, 25737, 44486, 12622, 0, 0, 0, 0, 0, 0, 3078, 0, 9253, 0, 0, 1128, 22023, 0, 0, 0, 21350, 0, 16420, 0, 0, 0, 0, 0, 0, 0, 65094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22532, 0, 48774, 0, 34503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9797, 0, 0, 0, 0, 0, 0, 0, 13797, 0, 38279, 0, 0, 1738, 0, 489, 46343, 0, 45382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29030, 0, 0, 0, 0, 0, 0, 6220, 56550, 0, 0, 0, 0, 0, 26885, 0, 28806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45958, 0, 0, 0, 0, 20553, 49927, 0, 0, 0, 0, 0, 0, 3019, 12358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26571, 13319, 0, 0, 653, 23399, 0, 0, 0, 0, 0, 0, 0, 0, 22316, 0, 0, 21188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27556, 0, 0, 0, 0, 0, 0, 0, 27878, 21483, 27653, 0, 29701, 237, 0, 10632, 0, 0, 0, 0, 33766, 0, 0, 0, 0, 0, 0, 31563, 0, 0, 0, 0, 0, 1416, 2439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9611, 0, 0, 0, 0, 0, 0, 0, 5611, 16581, 26601, 35462, 0, 0, 0, 26756, 0, 59271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26984, 57734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7882, 0, 0, 0, 19528, 6469, 0, 0, 1161, 0, 0, 0, 7688, 20935, 425, 0, 0, 0, 0, 0, 0, 0, 0, 12519, 0, 12902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2411, 0, 11725, 26086, 0, 0, 20201, 0, 0, 0, 0, 0, 0, 0, 0, 11045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30471, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21541, 1141, 21190, 0, 9188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 4842, 0, 13672, 0, 0, 12230, 0, 0, 0, 10532, 0, 0, 8937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28996, 0, 0, 11720, 26982, 0, 46182, 0, 43911, 31754, 0, 1160, 3940, 0, 20772, 0, 0, 0, 0, 0, 24549, 0, 32582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31845, 0, 0, 0, 0, 0, 0, 0, 2310, 11788, 0, 0, 43047, 0, 0, 0, 18853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63622, 0, 0, 7048, 17318, 0, 0, 0, 21957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1039, 6279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46470, 0, 0, 24, 19719, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21353, 3846, 0, 0, 0, 0, 0, 0, 0, 36679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11268, 0, 0, 0, 0, 0, 9382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29926, 0, 33606, 0, 4708, 2828, 0, 0, 29543, 0, 0, 0, 0, 0, 29893, 0, 0, 0, 0, 0, 0, 0, 0, 3663, 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, 10920, 7111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37094, 0, 0, 0, 27110, 0, 0, 0, 0, 0, 0, 21865, 0, 27753, 30214, 0, 0, 0, 0, 0, 57895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12648, 5446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19784, 17124, 0, 52007, 0, 0, 0, 0, 0, 0, 0, 0, 758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24900, 0, 0, 0, 0, 0, 1476, 0, 65031, 0, 0, 1205, 46663, 0, 30023, 11625, 1094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10058, 0, 0, 0, 0, 0, 0, 28455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14788, 0, 0, 0, 0, 16808, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15944, 23207, 0, 0, 0, 0, 247, 0, 0, 0, 0, 24743, 0, 0, 0, 5252, 0, 0, 0, 0, 0, 0, 0, 0, 29961, 18660, 21099, 46791, 0, 7045, 0, 0, 0, 0, 25707, 0, 0, 17412, 3828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5803, 5637, 0, 38151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 853, 0, 0, 0, 0, 0, 0, 30215, 0, 0, 0, 0, 0, 0, 0, 8741, 0, 0, 0, 0, 0, 27366, 0, 0, 0, 0, 171, 4070, 0, 0, 0, 0, 0, 0, 0, 0, 24073, 7366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2184, 5189, 0, 20932, 1545, 4996, 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, 7684, 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, 6313, 0, 0, 0, 0, 0, 0, 0, 30826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21640, 63303, 0, 0, 3275, 31111, 0, 0, 0, 0, 0, 0, 0, 11556, 0, 14756, 0, 0, 0, 15108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23914, 28966, 0, 0, 0, 4965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10216, 5223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27142, 0, 0, 1173, 20198, 0, 0, 0, 0, 0, 56614, 0, 0, 0, 0, 0, 4612, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17769, 7910, 0, 0, 31880, 0, 0, 6055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16840, 23879, 0, 0, 11051, 0, 0, 0, 32552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20842, 13701, 0, 0, 0, 37191, 7373, 10471, 17482, 25348, 0, 0, 0, 38502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21509, 6058, 0, 0, 0, 0, 0, 0, 3173, 0, 0, 0, 9543, 0, 0, 0, 0, 0, 0, 17768, 12708, 0, 0, 0, 0, 0, 37030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12748, 48743, 0, 11718, 0, 0, 25194, 0, 0, 0, 9033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5028, 0, 30118, 0, 0, 0, 0, 0, 42759, 0, 0, 3720, 0, 0, 0, 0, 0, 0, 25190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5450, 5125, 0, 58086, 0, 0, 0, 0, 0, 27716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22052, 0, 0, 0, 0, 26249, 0, 15947, 3460, 0, 0, 0, 35814, 0, 0, 0, 7813, 19500, 32167, 0, 18597, 0, 0, 0, 0, 0, 28644, 0, 0, 0, 60743, 0, 0, 0, 0, 0, 29636, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17220, 15885, 9414, 9642, 0, 0, 0, 593, 0, 0, 24228, 0, 0, 0, 0, 0, 40422, 0, 26244, 0, 23109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64902, 0, 0, 0, 0, 3979, 60007, 0, 0, 0, 28199, 0, 0, 0, 43142, 0, 0, 0, 0, 0, 0, 0, 29158, 0, 30532, 0, 0, 0, 0, 13256, 0, 0, 0, 0, 16549, 0, 0, 0, 0, 0, 26116, 0, 0, 0, 0, 0, 0, 0, 0, 22825, 0, 0, 0, 0, 0, 0, 0, 1065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18985, 4805, 0, 0, 0, 0, 0, 17702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3468, 0, 0, 0, 0, 13447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56871, 0, 0, 1776, 15780, 0, 0, 2603, 0, 10280, 31366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11592, 3591, 0, 2372, 0, 0, 0, 0, 0, 0, 0, 20004, 0, 0, 0, 0, 0, 0, 12072, 518, 0, 0, 1960, 8999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7178, 32999, 0, 0, 0, 0, 0, 0, 1641, 0, 0, 0, 0, 0, 0, 0, 6764, 9893, 490, 4005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25258, 5541, 0, 14053, 306, 20743, 0, 0, 9422, 0, 0, 0, 0, 0, 0, 0, 11977, 260, 0, 35175, 0, 0, 0, 0, 0, 0, 0, 18405, 0, 0, 0, 16582, 0, 0, 0, 22470, 0, 0, 0, 0, 0, 0, 2792, 0, 0, 0, 14026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14858, 3909, 0, 0, 0, 57671, 0, 0, 0, 0, 0, 0, 15979, 0, 0, 0, 2794, 15239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26884, 9070, 0, 0, 0, 0, 51846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19499, 37127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19205, 10350, 11910, 0, 0, 0, 0, 15083, 23108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15274, 41735, 0, 56774, 0, 0, 2825, 0, 14025, 389, 0, 0, 0, 0, 0, 0, 0, 0, 21482, 31910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20456, 710, 0, 0, 25032, 21797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32427, 21252, 0, 30150, 0, 43174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11403, 0, 0, 1029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6892, 9252, 0, 63206, 3496, 14406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22568, 0, 0, 21253, 0, 0, 0, 0, 0, 0, 0, 39623, 0, 0, 10189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30729, 59910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7660, 24871, 0, 838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12013, 13252, 0, 551, 0, 0, 0, 43207, 0, 30567, 0, 0, 0, 0, 0, 0, 0, 0, 28394, 30724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22665, 22725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29414, 0, 0, 0, 0, 16074, 8966, 245, 1445, 0, 0, 0, 0, 24872, 0, 0, 0, 0, 13124, 0, 35527, 0, 0, 0, 0, 0, 0, 13259, 10917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25191, 0, 0, 0, 13956, 0, 0, 0, 0, 0, 0, 0, 54631, 19625, 12070, 3083, 0, 0, 0, 0, 14436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21766, 0, 15463, 29322, 0, 0, 0, 0, 0, 0, 29990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23653, 0, 0, 0, 0, 0, 0, 0, 0, 2643, 0, 0, 21223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4114, 0, 0, 0, 0, 0, 0, 0, 0, 34790, 0, 0, 0, 0, 0, 0, 0, 16103, 0, 0, 0, 0, 0, 0, 297, 3620, 3338, 10372, 0, 14727, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29924, 22473, 13895, 15529, 32455, 30378, 13540, 0, 28807, 0, 0, 0, 0, 0, 0, 0, 64582, 18380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38598, 0, 0, 0, 0, 0, 0, 0, 0, 1236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32710, 0, 0, 0, 0, 4590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16744, 0, 0, 0, 0, 0, 0, 20005, 0, 0, 13608, 1191, 0, 0, 0, 62183, 0, 0, 0, 0, 0, 24484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5380, 0, 0, 32328, 0, 0, 63814, 0, 0, 0, 2919, 0, 0, 0, 0, 17034, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7690, 486, 0, 0, 0, 39270, 0, 49094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20967, 17993, 12647, 0, 0, 0, 16036, 32616, 0, 0, 0, 0, 16294, 8555, 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, 35174, 0, 0, 0, 0, 0, 0, 30346, 0, 0, 0, 0, 0, 0, 0, 14797, 3652, 0, 0, 8268, 12934, 0, 54950, 0, 0, 0, 0, 2632, 33959, 0, 23175, 0, 0, 0, 0, 0, 36262, 0, 0, 0, 0, 0, 0, 32684, 26918, 0, 32676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15625, 11943, 1206, 0, 0, 0, 0, 18052, 0, 0, 0, 0, 0, 16422, 0, 0, 0, 26404, 0, 0, 28777, 0, 0, 24902, 0, 0, 408, 45351, 0, 35719, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3658, 17446, 0, 165, 0, 0, 0, 0, 0, 0, 0, 6151, 0, 0, 24424, 0, 0, 0, 0, 0, 0, 0, 24170, 24293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11847, 0, 39591, 0, 0, 0, 0, 0, 0, 9549, 2788, 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, 1010, 0, 0, 0, 0, 0, 0, 26055, 31724, 0, 24233, 1828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17284, 0, 0, 0, 0, 19464, 0, 0, 0, 0, 0, 0, 0, 0, 32452, 0, 0, 0, 28871, 0, 0, 0, 0, 17704, 53383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17892, 1938, 0, 0, 0, 0, 0, 16362, 0, 0, 21605, 0, 0, 5003, 0, 0, 0, 0, 0, 0, 22693, 0, 22342, 0, 0, 0, 55846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22853, 0, 0, 0, 0, 0, 0, 0, 0, 6600, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40711, 0, 0, 0, 0, 0, 33894, 0, 0, 0, 0, 0, 0, 13000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30308, 0, 0, 0, 0, 0, 0, 5386, 0, 0, 0, 0, 0, 0, 27844, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17740, 0, 0, 0, 0, 25093, 29064, 0, 0, 0, 0, 0, 0, 0, 12680, 11462, 0, 0, 0, 0, 0, 0, 0, 0, 84, 7303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27044, 457, 0, 22924, 58246, 19016, 0, 2606, 45703, 0, 5157, 0, 25028, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2065, 0, 0, 0, 0, 0, 31946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33382, 0, 47878, 0, 0, 0, 0, 0, 0, 0, 0, 25004, 0, 0, 0, 0, 0, 0, 0, 26153, 35654, 0, 58055, 30668, 0, 0, 0, 0, 25988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7560, 20583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1733, 0, 0, 0, 8196, 0, 0, 11241, 0, 30572, 60326, 0, 15013, 0, 0, 0, 40646, 0, 23812, 0, 10022, 0, 0, 0, 0, 0, 0, 0, 0, 12874, 31015, 0, 0, 0, 0, 0, 0, 1608, 0, 0, 0, 0, 18308, 0, 0, 0, 0, 27114, 0, 0, 0, 0, 0, 0, 0, 7944, 1382, 0, 11813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24517, 0, 11621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21702, 0, 0, 13100, 8262, 2644, 7973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1033, 12581, 0, 25221, 0, 0, 0, 40998, 16301, 62983, 0, 0, 0, 0, 1263, 9318, 0, 0, 0, 18854, 0, 0, 1741, 33895, 0, 0, 0, 0, 0, 0, 26377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32165, 0, 51143, 0, 0, 0, 0, 0, 29412, 0, 0, 0, 0, 0, 0, 0, 0, 1674, 4230, 0, 0, 0, 0, 0, 10502, 0, 0, 0, 0, 5545, 0, 0, 0, 0, 0, 2099, 45158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14157, 0, 26955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27050, 6726, 0, 0, 0, 0, 0, 0, 0, 0, 28554, 0, 0, 7142, 0, 0, 0, 0, 16936, 0, 0, 0, 25833, 0, 4399, 6980, 0, 46214, 0, 0, 0, 0, 0, 10630, 21164, 0, 0, 0, 0, 0, 0, 0, 2446, 48551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13381, 0, 0, 0, 0, 0, 0, 0, 0, 15400, 12135, 0, 0, 0, 0, 0, 4774, 586, 0, 0, 0, 0, 0, 0, 0, 0, 23751, 9736, 4548, 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, 25577, 29607, 6250, 1637, 0, 0, 0, 0, 22024, 0, 0, 0, 0, 22308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37414, 24044, 0, 0, 0, 14474, 29735, 0, 7077, 0, 45990, 0, 0, 0, 0, 30568, 40039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6150, 0, 4228, 0, 0, 0, 0, 0, 27687, 0, 0, 0, 0, 0, 0, 0, 24548, 21513, 1350, 0, 0, 0, 33607, 0, 0, 0, 0, 0, 0, 0, 0, 11784, 1414, 0, 0, 0, 0, 0, 0, 0, 18244, 940, 0, 0, 0, 0, 0, 0, 7270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16709, 0, 0, 0, 0, 0, 0, 0, 48935, 0, 0, 0, 0, 0, 0, 23660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53350, 0, 0, 0, 0, 0, 0, 4236, 16358, 0, 4422, 6665, 32644, 0, 0, 744, 18084, 0, 11014, 0, 0, 0, 0, 0, 29508, 0, 0, 0, 0, 0, 0, 0, 7686, 0, 0, 13289, 5478, 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, 12872, 0, 0, 24134, 1005, 22916, 0, 31429, 23400, 0, 0, 0, 0, 0, 0, 0, 28424, 0, 0, 0, 25706, 27109, 0, 0, 26345, 0, 0, 0, 0, 0, 0, 25126, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 17032, 0, 0, 21799, 0, 0, 10060, 0, 12296, 21892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20777, 14311, 0, 58182, 32232, 0, 10282, 0, 2121, 11527, 0, 0, 0, 12325, 0, 0, 0, 0, 0, 0, 0, 28804, 2344, 8133, 0, 0, 0, 0, 21864, 62695, 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, 2771, 0, 0, 23204, 0, 0, 0, 0, 0, 6278, 0, 0, 0, 0, 0, 26597, 0, 0, 0, 0, 23144, 0, 0, 0, 0, 0, 31816, 20070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24456, 2118, 0, 0, 0, 0, 6570, 1156, 0, 0, 0, 0, 0, 0, 0, 30406, 0, 0, 0, 28388, 3572, 0, 0, 26599, 12426, 5286, 0, 0, 0, 0, 0, 4967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24970, 24167, 0, 0, 0, 0, 28745, 4678, 0, 0, 0, 0, 0, 0, 0, 1444, 236, 0, 0, 0, 0, 0, 0, 0, 0, 19428, 0, 0, 0, 0, 0, 0, 2092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2827, 0, 0, 0, 0, 0, 19881, 19204, 0, 11749, 0, 0, 0, 0, 0, 0, 0, 17958, 0, 17894, 0, 18726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9190, 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, 21510, 5033, 0, 0, 0, 0, 22855, 0, 0, 0, 0, 0, 14598, 0, 29605, 0, 0, 0, 0, 0, 0, 0, 0, 617, 0, 0, 0, 0, 47142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2225, 14823, 0, 0, 2637, 6182, 78, 15078, 0, 0, 0, 0, 20264, 0, 0, 0, 0, 0, 0, 36743, 4140, 44551, 17352, 25703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14024, 0, 0, 0, 0, 0, 0, 28004, 0, 0, 0, 0, 0, 7588, 0, 0, 0, 0, 0, 0, 0, 2087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18028, 0, 0, 0, 300, 14212, 0, 0, 1386, 40327, 0, 0, 0, 0, 0, 0, 31082, 0, 0, 22374, 0, 0, 0, 0, 0, 35718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26532, 7756, 0, 0, 18982, 0, 0, 0, 0, 0, 0, 0, 0, 6440, 1159, 7180, 0, 0, 0, 0, 0, 0, 45766, 0, 57798, 0, 16740, 0, 0, 6802, 60454, 0, 0, 0, 26470, 0, 0, 0, 0, 0, 65382, 4362, 7750, 0, 0, 0, 0, 0, 0, 9096, 4743, 334, 0, 0, 0, 0, 0, 0, 39974, 0, 0, 0, 25828, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3027, 0, 0, 0, 15816, 0, 0, 0, 0, 0, 0, 0, 0, 48327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16168, 41799, 0, 0, 24458, 8581, 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, 12292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54503, 0, 0, 0, 0, 5097, 30852, 18664, 0, 0, 0, 0, 0, 0, 16484, 0, 0, 27337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35942, 0, 0, 0, 0, 0, 0, 0, 4356, 0, 0, 0, 0, 0, 57030, 0, 0, 1417, 41191, 0, 0, 0, 0, 0, 23429, 0, 0, 0, 0, 10024, 21735, 0, 0, 10126, 0, 0, 0, 0, 19046, 0, 0, 0, 0, 0, 0, 24105, 4710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4394, 0, 0, 0, 0, 13253, 0, 56391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55974, 0, 0, 0, 52070, 0, 15620, 0, 0, 0, 0, 0, 2660, 0, 0, 0, 0, 21644, 0, 0, 52455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8902, 0, 0, 0, 0, 0, 0, 3116, 0, 464, 34726, 0, 0, 0, 0, 0, 0, 25003, 12423, 0, 27172, 1896, 7335, 0, 0, 0, 0, 0, 35686, 0, 0, 0, 0, 3472, 0, 0, 0, 0, 22406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21124, 23594, 33127, 0, 0, 0, 0, 0, 0, 16684, 22087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55814, 0, 0, 0, 0, 0, 0, 4109, 23460, 0, 0, 8874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29960, 63398, 1302, 0, 0, 0, 0, 0, 0, 0, 0, 24806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9799, 0, 0, 0, 0, 0, 0, 0, 31333, 0, 0, 0, 0, 0, 19557, 0, 0, 0, 0, 0, 5701, 0, 0, 0, 63014, 0, 0, 0, 0, 0, 0, 0, 21254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12484, 0, 0, 0, 48326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15783, 0, 0, 1202, 0, 0, 0, 0, 23174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3086, 49191, 0, 0, 5387, 15141, 0, 0, 0, 3365, 0, 0, 0, 0, 20076, 14021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 376, 40198, 0, 0, 0, 52039, 0, 24932, 0, 0, 0, 0, 808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9860, 0, 0, 0, 0, 0, 23719, 0, 21476, 0, 0, 0, 0, 20776, 4807, 0, 0, 3177, 16678, 0, 0, 110, 10853, 0, 0, 0, 17382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7500, 4966, 0, 0, 0, 0, 0, 0, 0, 52102, 0, 24516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26535, 0, 0, 0, 46247, 0, 0, 0, 15557, 0, 0, 0, 0, 76, 52327, 0, 0, 0, 0, 17866, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46758, 0, 0, 0, 0, 0, 19173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44038, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2985, 0, 0, 0, 0, 0, 0, 14310, 0, 0, 2125, 45831, 0, 0, 0, 0, 0, 0, 9838, 0, 13227, 19492, 0, 0, 0, 29764, 0, 0, 0, 0, 686, 30053, 0, 0, 0, 0, 0, 30789, 139, 20837, 0, 0, 0, 0, 502, 18533, 0, 0, 0, 0, 0, 19111, 0, 0, 0, 0, 0, 31396, 0, 0, 0, 17444, 0, 0, 0, 0, 0, 0, 0, 49862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25610, 550, 0, 0, 561, 0, 29034, 0, 0, 0, 3528, 0, 0, 0, 1715, 14661, 18, 63463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29578, 59014, 0, 39430, 0, 0, 0, 0, 2250, 16612, 0, 31780, 0, 0, 0, 0, 0, 0, 462, 16967, 0, 29029, 0, 0, 0, 0, 0, 23462, 0, 0, 0, 0, 0, 0, 0, 0, 1768, 0, 6025, 16998, 1804, 0, 0, 54182, 0, 0, 0, 0, 0, 0, 0, 0, 14124, 0, 6154, 29702, 0, 0, 0, 0, 0, 7716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48807, 0, 8292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16389, 5933, 0, 14857, 51303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35623, 9097, 23047, 0, 0, 23112, 0, 0, 0, 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, 151, 9254, 1390, 0, 0, 0, 0, 0, 0, 54215, 0, 0, 0, 0, 6187, 0, 0, 0, 0, 13095, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9866, 0, 0, 59622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25286, 0, 0, 23848, 32069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9255, 2187, 15270, 437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22212, 1865, 17543, 0, 0, 0, 0, 0, 0, 21996, 0, 0, 0, 0, 55975, 0, 0, 0, 0, 0, 0, 0, 0, 32138, 21156, 0, 0, 0, 0, 0, 0, 14249, 0, 0, 0, 2388, 0, 0, 0, 0, 6823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26694, 0, 0, 6059, 53511, 0, 0, 0, 0, 0, 0, 0, 49542, 6159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1036, 24036, 0, 2501, 0, 0, 0, 0, 0, 0, 17419, 51271, 3377, 15142, 0, 0, 0, 0, 0, 0, 5007, 62374, 0, 56935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24422, 0, 0, 0, 0, 0, 0, 0, 0, 942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28263, 0, 0, 0, 0, 0, 0, 0, 15622, 0, 19749, 0, 0, 1611, 0, 22219, 48583, 25129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 32518, 0, 0, 0, 18469, 0, 0, 0, 0, 0, 0, 5896, 29927, 3657, 23046, 0, 0, 3214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 3048, 455, 0, 31012, 0, 0, 0, 0, 0, 0, 0, 23270, 0, 32677, 0, 0, 0, 0, 0, 38086, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25541, 0, 18788, 0, 0, 22248, 1351, 0, 61734, 4524, 30629, 0, 14887, 242, 29063, 0, 0, 14408, 4741, 0, 0, 0, 37318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8106, 0, 32107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1481, 0, 0, 28132, 0, 25798, 0, 59783, 0, 0, 0, 0, 0, 59078, 0, 0, 0, 23366, 0, 0, 0, 0, 0, 0, 0, 30887, 0, 0, 0, 0, 16200, 0, 0, 0, 335, 0, 0, 0, 714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30730, 9478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18790, 0, 0, 0, 0, 663, 0, 0, 0, 1034, 31431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30120, 0, 0, 0, 0, 13925, 0, 0, 0, 0, 0, 0, 2280, 13414, 0, 0, 0, 0, 0, 0, 22028, 23687, 3017, 11047, 0, 0, 21738, 18630, 0, 0, 0, 0, 0, 0, 0, 30246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17257, 0, 21896, 63783, 0, 0, 0, 21094, 0, 18662, 0, 25700, 0, 22533, 0, 0, 0, 0, 0, 6341, 5800, 11111, 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, 15399, 12970, 6501, 0, 0, 3179, 26438, 0, 0, 0, 0, 0, 0, 0, 15750, 0, 13062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 21284, 11177, 4391, 0, 0, 0, 0, 19595, 40647, 0, 0, 0, 0, 0, 11877, 0, 0, 0, 26439, 0, 0, 0, 0, 695, 49126, 27467, 11972, 0, 0, 0, 0, 0, 0, 9961, 0, 0, 0, 31722, 62982, 0, 0, 0, 0, 15817, 52710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24614, 0, 0, 0, 0, 0, 20550, 0, 0, 5034, 3942, 0, 0, 0, 45927, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2548, 0, 0, 0, 0, 0, 0, 45606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3405, 12582, 15563, 54087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24202, 5893, 0, 0, 0, 44230, 0, 0, 0, 5605, 0, 47782, 0, 32230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7014, 0, 0, 0, 0, 16488, 3175, 0, 27237, 0, 0, 0, 0, 0, 40902, 0, 0, 0, 0, 0, 0, 0, 32004, 31434, 0, 24392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29130, 58214, 0, 0, 0, 0, 0, 0, 29002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37926, 0, 0, 0, 0, 0, 0, 0, 0, 1290, 0, 0, 0, 4713, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1803, 966, 0, 17700, 0, 0, 654, 19109, 0, 51655, 0, 0, 0, 0, 0, 10470, 1584, 0, 0, 0, 0, 0, 0, 0, 2506, 0, 0, 25159, 4303, 0, 0, 0, 395, 15879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1352, 6535, 0, 19652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4722, 7909, 0, 0, 0, 0, 30152, 0, 0, 64742, 0, 0, 0, 0, 0, 0, 2153, 9125, 0, 0, 279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41894, 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, 1328, 17030, 0, 0, 0, 0, 0, 0, 0, 54151, 0, 0, 0, 0, 1775, 54535, 0, 0, 0, 0, 31624, 0, 0, 0, 7150, 0, 0, 0, 0, 0, 0, 0, 1840, 35943, 0, 0, 0, 0, 0, 56455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64486, 0, 0, 0, 51174, 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, 4134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 16134, 19883, 39943, 10281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14125, 2407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26921, 0, 0, 0, 0, 0, 22188, 0, 20810, 10053, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28170, 0, 15208, 0, 0, 32517, 5736, 19271, 3562, 10534, 0, 0, 0, 59655, 0, 0, 0, 0, 27084, 60422, 0, 0, 24969, 0, 0, 0, 2636, 0, 0, 0, 0, 26277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30596, 3594, 0, 0, 0, 8362, 14565, 0, 0, 0, 0, 0, 0, 10793, 12326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5906, 59686, 0, 0, 23081, 517, 0, 15556, 0, 0, 0, 8486, 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, 19877, 0, 0, 0, 0, 0, 0, 0, 0, 7497, 0, 0, 26085, 0, 0, 23784, 63591, 6568, 6310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10054, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7018, 14470, 18858, 0, 5641, 10660, 0, 0, 0, 0, 0, 0, 0, 35526, 1515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27656, 0, 0, 9606, 0, 39590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53926, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 4327, 12649, 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, 20199, 0, 0, 0, 0, 0, 0, 26730, 0, 0, 0, 19400, 14695, 0, 31334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19589, 0, 0, 0, 0, 0, 0, 0, 0, 5064, 11908, 0, 27333, 0, 0, 0, 0, 0, 0, 0, 47751, 0, 0, 0, 26662, 0, 0, 0, 0, 0, 0, 0, 55655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6245, 0, 0, 0, 0, 0, 0, 0, 0, 23368, 63911, 0, 0, 0, 0, 0, 0, 0, 0, 1974, 0, 0, 0, 0, 0, 0, 0, 8520, 24037, 0, 0, 0, 0, 0, 0, 0, 26279, 0, 0, 0, 22886, 0, 0, 0, 27782, 0, 30694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33703, 0, 0, 0, 30405, 0, 34598, 0, 51047, 0, 0, 0, 0, 1908, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1511, 21897, 0, 0, 0, 0, 0, 0, 51398, 0, 24870, 0, 32647, 0, 0, 0, 35015, 0, 0, 0, 0, 0, 0, 0, 11204, 0, 0, 0, 0, 0, 0, 7758, 57991, 0, 0, 0, 30949, 0, 0, 22, 15140, 9162, 0, 0, 0, 0, 0, 0, 25540, 20136, 7108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16427, 10789, 9805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4680, 0, 0, 52679, 0, 0, 0, 0, 0, 14884, 0, 0, 0, 16804, 0, 0, 0, 0, 0, 0, 9578, 5287, 0, 0, 0, 0, 0, 0, 0, 34054, 0, 0, 0, 0, 0, 19076, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7627, 55719, 0, 39463, 14446, 58374, 0, 0, 0, 0, 23465, 15845, 0, 0, 0, 0, 0, 38534, 0, 0, 0, 17893, 10922, 0, 7176, 678, 0, 0, 0, 0, 0, 0, 0, 0, 3113, 46279, 0, 0, 0, 0, 0, 0, 0, 23334, 0, 0, 18088, 23268, 0, 62342, 0, 0, 0, 16613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38182, 0, 0, 0, 0, 0, 0, 25292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10344, 71, 6446, 0, 0, 1893, 0, 0, 1106, 0, 28680, 30756, 0, 41126, 0, 0, 1492, 0, 15341, 0, 0, 0, 0, 17575, 0, 21220, 0, 0, 0, 0, 0, 25060, 2088, 21828, 0, 0, 0, 0, 0, 358, 0, 0, 0, 0, 0, 16708, 0, 0, 0, 1668, 0, 0, 0, 0, 0, 12260, 0, 0, 0, 0, 0, 0, 0, 0, 4078, 0, 0, 0, 0, 0, 12713, 6215, 0, 0, 20329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3732, 0, 1646, 0, 0, 27460, 0, 34406, 17128, 14341, 0, 0, 0, 0, 0, 19527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8551, 21546, 10212, 3020, 2951, 0, 17638, 0, 0, 6985, 44999, 2218, 8197, 0, 0, 30472, 63366, 0, 26660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1265, 0, 0, 0, 0, 0, 0, 0, 2610, 0, 0, 0, 11278, 20295, 0, 0, 0, 0, 0, 19780, 0, 0, 0, 0, 0, 0, 2353, 10852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5421, 24292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34407, 0, 0, 0, 0, 0, 0, 15432, 20774, 0, 0, 0, 0, 0, 0, 0, 0, 12360, 10757, 0, 0, 0, 33126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29573, 0, 2343, 0, 0, 0, 0, 0, 63079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43015, 0, 16038, 0, 0, 0, 0, 0, 0, 0, 0, 1480, 25573, 0, 0, 0, 0, 0, 0, 0, 8839, 0, 0, 0, 0, 0, 0, 0, 24645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5063, 0, 0, 0, 0, 0, 45830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 823, 0, 0, 64039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15300, 0, 0, 0, 0, 0, 0, 2924, 46759, 6760, 19268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34182, 0, 0, 3977, 18149, 0, 0, 0, 32199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23524, 25994, 0, 0, 10343, 0, 0, 0, 9733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16741, 0, 0, 4626, 23367, 0, 0, 31400, 0, 0, 3557, 0, 0, 4234, 0, 0, 0, 0, 0, 0, 28486, 0, 0, 0, 0, 0, 14213, 0, 57191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 65318, 29832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29989, 0, 31846, 0, 0, 8170, 0, 0, 4421, 27626, 30884, 0, 0, 20204, 0, 0, 0, 0, 44614, 534, 20868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28710, 0, 10277, 0, 0, 0, 0, 0, 29511, 0, 19813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27020, 0, 0, 0, 0, 0, 0, 53094, 0, 35207, 0, 0, 0, 37542, 0, 61766, 8584, 8037, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12488, 22757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19973, 0, 0, 0, 63943, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36006, 0, 0, 0, 19012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8580, 0, 0, 0, 0, 0, 0, 0, 18021, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1254, 0, 0, 0, 42630, 0, 0, 0, 0, 0, 0, 0, 16262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2124, 25479, 0, 0, 0, 0, 16873, 0, 0, 0, 0, 3142, 0, 0, 18443, 0, 0, 0, 0, 0, 3917, 0, 8841, 1190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9284, 0, 0, 24394, 41351, 0, 0, 0, 42087, 0, 62566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6728, 4199, 0, 0, 0, 0, 25515, 0, 1231, 0, 374, 15623, 0, 29956, 0, 14118, 0, 0, 0, 0, 0, 19047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20900, 0, 16743, 0, 0, 0, 28902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13838, 0, 0, 10052, 0, 0, 0, 0, 7432, 43783, 17097, 0, 0, 0, 0, 0, 873, 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8459, 23559, 0, 53030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35750, 0, 4071, 0, 0, 0, 38662, 0, 41414, 0, 0, 0, 0, 11656, 0, 0, 0, 0, 0, 4011, 42695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25353, 0, 0, 0, 0, 0, 0, 0, 27177, 22372, 0, 0, 0, 0, 0, 30980, 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, 46278, 3976, 12711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4072, 11078, 0, 0, 16553, 2405, 0, 0, 0, 0, 0, 0, 0, 0, 2670, 0, 0, 0, 0, 0, 0, 32998, 0, 0, 0, 0, 0, 0, 0, 47046, 0, 30533, 0, 0, 11050, 9734, 13129, 0, 0, 0, 0, 23494, 0, 0, 0, 0, 0, 58310, 0, 0, 0, 57543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 454, 0, 0, 0, 0, 0, 0, 5163, 59687, 2220, 0, 0, 0, 0, 0, 0, 29510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17316, 0, 20069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27174, 0, 0, 0, 0, 0, 0, 0, 22949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19208, 0, 0, 0, 0, 0, 0, 20933, 0, 0, 6026, 8742, 0, 0, 0, 17380, 0, 13127, 2797, 0, 0, 30116, 0, 0, 5963, 8004, 0, 57126, 0, 0, 0, 0, 0, 42854, 14792, 30759, 0, 24964, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16933, 0, 0, 0, 0, 0, 0, 15176, 40839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 30341, 0, 0, 0, 0, 21036, 24102, 0, 0, 0, 0, 30123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22597, 31531, 26789, 0, 59559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9352, 29863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24551, 0, 0, 0, 0, 0, 0, 0, 20516, 0, 0, 0, 39462, 3665, 0, 28265, 0, 8778, 64262, 0, 57414, 9132, 0, 0, 18276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26344, 30725, 524, 19751, 0, 13796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18155, 0, 12841, 0, 74, 24998, 13579, 1061, 0, 64199, 0, 0, 8776, 0, 0, 60231, 0, 25412, 0, 0, 0, 59143, 0, 0, 0, 0, 0, 0, 14344, 1510, 0, 0, 0, 38374, 0, 0, 0, 0, 0, 0, 0, 0, 13353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9446, 0, 0, 0, 0, 0, 0, 0, 32613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19844, 0, 0, 0, 0, 14859, 0, 0, 0, 0, 6662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14154, 0, 29770, 0, 0, 0, 0, 0, 16520, 2182, 0, 0, 0, 0, 0, 36102, 3340, 0, 0, 0, 0, 0, 0, 0, 0, 25189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15720, 0, 0, 0, 0, 0, 0, 22758, 0, 0, 304, 0, 3243, 14117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5130, 12679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21733, 10441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36103, 0, 0, 0, 0, 0, 23590, 0, 57479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10824, 18372, 0, 0, 0, 0, 0, 35078, 15722, 12967, 0, 0, 0, 0, 0, 34599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53639, 0, 38630, 0, 0, 0, 0, 0, 0, 31017, 11333, 0, 0, 0, 0, 19144, 0, 9513, 0, 0, 0, 0, 0, 0, 0, 0, 56711, 24042, 0, 1197, 0, 0, 58502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8230, 6121, 18628, 0, 0, 0, 0, 0, 0, 25290, 0, 0, 0, 0, 0, 1514, 0, 0, 0, 0, 0, 0, 0, 14378, 9798, 32363, 0, 0, 0, 0, 0, 9577, 0, 0, 0, 0, 0, 0, 26788, 0, 0, 0, 0, 0, 0, 330, 10533, 0, 0, 0, 0, 0, 42246, 0, 0, 0, 0, 0, 0, 5074, 21028, 0, 38119, 0, 0, 0, 0, 0, 0, 248, 0, 31176, 62054, 0, 53287, 0, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9224, 2117, 0, 0, 0, 0, 15818, 5607, 0, 52582, 0, 0, 0, 0, 0, 0, 0, 0, 18248, 24005, 23018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 427, 0, 0, 39910, 0, 0, 7080, 11399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22220, 57894, 0, 0, 0, 0, 0, 0, 0, 13156, 0, 1413, 1007, 0, 0, 0, 0, 21415, 0, 21543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41702, 22538, 9573, 0, 0, 0, 8806, 0, 0, 6920, 56359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42215, 0, 0, 13708, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16453, 0, 0, 0, 0, 0, 0, 1582, 1764, 3282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11653, 0, 0, 0, 0, 12139, 0, 29482, 31076, 1673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40262, 0, 0, 0, 33862, 0, 0, 0, 0, 0, 20996, 0, 0, 0, 0, 0, 4615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43943, 333, 19367, 0, 0, 0, 0, 0, 0, 0, 26821, 0, 32389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4936, 11687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10885, 0, 0, 0, 0, 0, 25926, 0, 0, 0, 0, 0, 0, 15851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8360, 0, 17130, 7942, 0, 11460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18150, 14248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22310, 0, 0, 0, 42758, 0, 0, 0, 0, 0, 0, 0, 0, 29354, 5574, 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, 31109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9156, 0, 0, 1801, 14023, 0, 0, 0, 0, 0, 62406, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31018, 65510, 0, 0, 0, 0, 0, 0, 0, 26182, 0, 0, 0, 0, 0, 0, 0, 27717, 0, 0, 0, 0, 0, 0, 0, 46950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31108, 0, 11366, 0, 0, 0, 3717, 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, 8552, 6054, 3339, 0, 0, 0, 0, 51622, 0, 0, 0, 0, 0, 0, 0, 3718, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28358, 0, 2756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1462, 0, 0, 27622, 0, 0, 0, 0, 0, 0, 0, 62502, 14410, 56743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36550, 0, 38054, 0, 0, 0, 21221, 0, 0, 0, 0, 0, 0, 0, 27077, 0, 0, 16906, 0, 12587, 12101, 0, 0, 0, 0, 0, 0, 10414, 28775, 21769, 60167, 0, 56646, 0, 0, 0, 0, 0, 20740, 0, 0, 0, 0, 0, 0, 5931, 5351, 0, 65478, 0, 0, 0, 0, 0, 0, 7977, 52647, 0, 4868, 0, 0, 0, 55463, 0, 0, 0, 0, 0, 32197, 0, 0, 0, 0, 0, 13445, 0, 0, 0, 26631, 0, 0, 0, 0, 0, 11237, 0, 0, 0, 0, 209, 1285, 0, 0, 1928, 0, 0, 0, 0, 43334, 23849, 23172, 0, 0, 0, 0, 0, 0, 0, 0, 24712, 62439, 8811, 3463, 20457, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16008, 56263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60358, 22761, 6565, 0, 0, 30888, 27686, 0, 0, 0, 17093, 0, 0, 0, 0, 22121, 0, 0, 0, 7593, 14182, 0, 28103, 0, 0, 0, 0, 0, 45126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31844, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18500, 0, 0, 0, 0, 28202, 0, 0, 0, 0, 0, 0, 0, 0, 26308, 0, 29541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29572, 0, 0, 0, 21285, 0, 0, 0, 0, 0, 60839, 0, 0, 0, 0, 0, 30407, 15949, 2981, 0, 0, 0, 46439, 0, 0, 0, 0, 0, 23911, 26505, 25222, 12811, 5895, 0, 6343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31815, 0, 0, 0, 0, 0, 0, 0, 0, 19688, 10245, 0, 0, 0, 31301, 26985, 28964, 0, 0, 0, 0, 0, 0, 0, 0, 27208, 31172, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16292, 0, 0, 0, 0, 0, 8743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6438, 0, 0, 0, 33319, 0, 0, 0, 33286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22181, 7499, 24774, 0, 10756, 0, 44775, 724, 0, 25768, 25669, 24873, 5349, 25257, 0, 0, 54566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 439, 357, 0, 0, 6536, 8452, 0, 0, 1802, 0, 0, 61350, 0, 15045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22885, 0, 0, 32073, 0, 0, 0, 9546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27748, 0, 0, 23176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24583, 0, 0, 0, 0, 0, 34118, 0, 0, 0, 0, 2158, 0, 5586, 30340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24452, 0, 0, 0, 0, 2409, 4390, 0, 24196, 0, 0, 0, 0, 0, 0, 32264, 26948, 20587, 0, 0, 0, 2155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4328, 26276, 0, 0, 0, 0, 0, 0, 0, 0, 23564, 0, 12458, 11367, 0, 0, 25162, 0, 0, 0, 0, 0, 0, 65414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32966, 0, 0, 0, 34662, 0, 0, 0, 0, 0, 39238, 0, 0, 0, 0, 11400, 10214, 266, 12452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15173, 0, 0, 0, 13668, 0, 13222, 0, 23364, 0, 0, 0, 0, 0, 11941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25575, 0, 0, 0, 57383, 0, 0, 0, 10308, 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, 2865, 9287, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21508, 22380, 59526, 0, 0, 0, 23589, 0, 0, 0, 51590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4645, 3980, 28295, 0, 0, 0, 0, 0, 12388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21734, 0, 17607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41767, 0, 0, 0, 0, 0, 0, 0, 18436, 0, 0, 0, 0, 0, 0, 0, 21958, 0, 19430, 0, 0, 1204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3240, 55239, 0, 0, 0, 0, 0, 30660, 0, 0, 0, 28901, 0, 0, 0, 0, 4716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11754, 0, 0, 0, 0, 22086, 0, 22564, 8749, 0, 0, 28391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2886, 0, 0, 0, 0, 0, 0, 0, 29062, 0, 0, 0, 0, 0, 0, 0, 40358, 0, 0, 15916, 39526, 0, 13735, 0, 0, 0, 0, 28938, 0, 407, 4006, 0, 0, 0, 26916, 0, 0, 0, 0, 0, 27526, 30280, 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, 24586, 0, 24649, 5126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8684, 0, 0, 0, 0, 0, 0, 0, 23019, 0, 22377, 18599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27593, 9735, 0, 20196, 0, 0, 0, 0, 28168, 48423, 0, 0, 0, 0, 0, 31399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13892, 0, 0, 0, 0, 0, 17606, 0, 0, 15242, 29767, 26378, 17701, 0, 0, 14472, 0, 4840, 0, 0, 0, 0, 0, 0, 24708, 0, 9349, 4330, 0, 0, 0, 0, 0, 0, 0, 16137, 0, 0, 34854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25063, 0, 0, 0, 0, 0, 0, 6603, 12583, 0, 0, 0, 0, 0, 0, 0, 0, 7433, 29188, 0, 0, 0, 0, 0, 31270, 0, 0, 22920, 3143, 0, 0, 0, 0, 0, 23461, 0, 0, 0, 0, 0, 0, 0, 0, 618, 0, 0, 0, 0, 21381, 0, 11524, 0, 0, 0, 0, 0, 0, 21004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 23239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2313, 0, 0, 40614, 0, 0, 14825, 0, 0, 0, 0, 0, 0, 46535, 0, 41190, 7853, 0, 31656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3433, 5255, 0, 0, 0, 0, 0, 0, 0, 33958, 0, 0, 0, 0, 72, 15493, 0, 0, 0, 0, 0, 0, 0, 36070, 0, 0, 0, 0, 0, 0, 0, 14724, 0, 0, 0, 0, 0, 29828, 0, 0, 0, 0, 0, 0, 0, 18822, 20008, 0, 0, 0, 0, 2438, 2952, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24420, 0, 19908, 0, 0, 0, 8101, 0, 17479, 0, 0, 3530, 0, 8202, 29319, 0, 0, 1132, 6789, 0, 0, 23881, 0, 0, 0, 4810, 0, 0, 46918, 0, 0, 0, 41574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39334, 0, 0, 0, 26117, 0, 0, 0, 0, 0, 0, 5100, 0, 0, 0, 0, 0, 23496, 27813, 4045, 54918, 0, 0, 0, 0, 0, 0, 6473, 7428, 0, 0, 0, 0, 6792, 0, 0, 0, 0, 0, 3560, 32103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54790, 0, 0, 6926, 0, 0, 0, 0, 16518, 0, 0, 0, 0, 0, 20806, 0, 0, 0, 0, 1841, 3174, 0, 0, 0, 0, 9612, 18374, 0, 0, 0, 0, 32744, 0, 0, 9671, 0, 59879, 0, 23300, 8073, 0, 0, 14758, 0, 0, 0, 10342, 0, 0, 0, 0, 0, 0, 24808, 14759, 0, 0, 0, 0, 0, 0, 5515, 0, 0, 14852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2354, 23271, 0, 32740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18472, 0, 0, 0, 0, 0, 0, 0, 0, 33190, 0, 0, 0, 0, 0, 0, 0, 0, 8972, 21669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25574, 0, 0, 0, 0, 5096, 0, 14283, 55367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12644, 0, 0, 0, 0, 4651, 0, 0, 0, 0, 0, 0, 0, 661, 0, 0, 13638, 19466, 0, 0, 0, 0, 0, 31273, 0, 8010, 0, 0, 0, 0, 0, 3211, 0, 0, 0, 0, 63430, 0, 0, 0, 0, 0, 15237, 0, 0, 0, 0, 0, 0, 19018, 2437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14312, 0, 0, 0, 0, 16836, 0, 0, 471, 35975, 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, 6023, 0, 0, 0, 0, 0, 0, 0, 0, 11593, 9639, 0, 0, 0, 55783, 0, 5700, 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, 27908, 0, 26598, 0, 0, 6667, 6470, 0, 0, 0, 0, 0, 0, 0, 62534, 0, 0, 0, 0, 16522, 27911, 0, 0, 10025, 7172, 0, 0, 779, 0, 360, 17477, 0, 0, 0, 61991, 7752, 7717, 1494, 0, 0, 0, 26569, 40742, 0, 0, 0, 0, 0, 0, 0, 26406, 10474, 32196, 0, 0, 0, 0, 0, 50567, 16521, 11716, 0, 0, 0, 0, 0, 55558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61926, 0, 26436, 0, 0, 0, 0, 4459, 10598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9223, 0, 29318, 0, 0, 0, 0, 0, 60423, 0, 0, 0, 0, 0, 0, 0, 47078, 0, 50246, 0, 12612, 0, 0, 0, 0, 0, 0, 0, 61799, 0, 55015, 0, 21060, 7309, 0, 0, 0, 0, 0, 11976, 0, 0, 0, 0, 23527, 0, 0, 0, 0, 0, 0, 10347, 15942, 0, 34023, 0, 0, 0, 0, 4969, 0, 0, 0, 0, 0, 0, 0, 0, 28997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36454, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3466, 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, 19716, 28872, 0, 0, 0, 0, 0, 22152, 0, 0, 0, 0, 0, 0, 26342, 0, 0, 0, 9764, 0, 0, 0, 0, 0, 0, 0, 21798, 0, 0, 0, 0, 13, 6853, 32136, 0, 0, 0, 0, 0, 0, 0, 750, 0, 0, 54502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46183, 0, 0, 625, 22854, 0, 0, 0, 0, 2061, 23588, 0, 0, 11049, 56262, 0, 0, 18538, 1509, 0, 0, 17258, 4453, 0, 0, 0, 0, 12429, 0, 0, 0, 0, 8102, 0, 0, 0, 0, 0, 0, 8074, 0, 23852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16136, 3428, 0, 27876, 0, 0, 0, 7332, 0, 0, 0, 0, 0, 28900, 0, 0, 2284, 0, 0, 17573, 201, 1508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31365, 27688, 22565, 0, 0, 0, 5159, 0, 0, 0, 0, 4584, 42599, 0, 0, 0, 44422, 1068, 23173, 0, 0, 0, 613, 0, 0, 0, 12645, 0, 0, 0, 0, 0, 27076, 6732, 0, 0, 0, 3913, 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, 22244, 29992, 15911, 0, 0, 0, 0, 0, 22982, 0, 0, 0, 0, 0, 0, 0, 50598, 0, 0, 0, 0, 0, 0, 5161, 1574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19108, 0, 0, 0, 35014, 0, 0, 0, 25956, 29067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47079, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1356, 61927, 0, 0, 0, 64455, 2122, 64231, 0, 0, 18763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 907, 34471, 0, 0, 0, 39078, 0, 0, 1995, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 822, 0, 15978, 44423, 0, 0, 3112, 325, 0, 0, 0, 0, 0, 15397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1193, 4294, 4968, 15559, 0, 46150, 0, 0, 0, 0, 0, 18917, 0, 0, 0, 0, 0, 0, 9928, 37543, 0, 0, 0, 0, 13097, 36999, 0, 0, 0, 15430, 0, 0, 8424, 29639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40487, 0, 13284, 0, 11141, 0, 0, 0, 32388, 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, 5298, 57702, 0, 0, 0, 0, 0, 0, 0, 13060, 0, 0, 0, 0, 0, 0, 8233, 42278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36422, 0, 0, 0, 7972, 0, 0, 0, 18437, 0, 0, 0, 0, 7406, 0, 0, 0, 9225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13865, 47591, 18220, 53703, 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, 2796, 0, 0, 0, 0, 0, 24940, 17223, 0, 0, 0, 13221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15848, 0, 0, 0, 0, 0, 6122, 1735, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16968, 18151, 0, 0, 0, 0, 0, 47494, 0, 0, 0, 0, 0, 0, 26089, 19494, 0, 0, 0, 0, 0, 15494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28809, 0, 0, 0, 0, 42727, 0, 55174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35302, 0, 48135, 20972, 33094, 0, 0, 0, 0, 0, 9765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39559, 0, 0, 13736, 6950, 0, 0, 0, 0, 23658, 8903, 0, 0, 0, 0, 0, 0, 0, 22662, 0, 0, 0, 0, 0, 58886, 7468, 0, 0, 0, 0, 0, 0, 0, 0, 64550, 0, 0, 0, 0, 0, 47622, 0, 0, 0, 50886, 0, 0, 0, 0, 0, 57606, 912, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1449, 0, 1169, 0, 718, 46151, 12104, 0, 0, 0, 0, 0, 0, 48230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1259, 0, 0, 33734, 23208, 62567, 0, 65158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28684, 59878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25769, 0, 0, 0, 0, 65479, 0, 0, 0, 0, 555, 22789, 0, 19748, 1769, 10246, 8680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14250, 0, 5899, 3303, 0, 0, 0, 0, 0, 0, 0, 0, 21097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10795, 0, 0, 0, 16204, 0, 0, 0, 0, 0, 26986, 2469, 0, 14660, 0, 0, 0, 0, 0, 45447, 12234, 3494, 4555, 10566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2801, 0, 0, 0, 15755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39654, 0, 0, 0, 0, 0, 0, 6763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33574, 0, 10279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63527, 0, 0, 3912, 0, 0, 7492, 0, 0, 0, 35142, 0, 0, 0, 0, 0, 0, 17576, 8103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16713, 4198, 0, 0, 4782, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16228, 0, 0, 0, 0, 25961, 20166, 0, 0, 0, 10980, 0, 0, 0, 0, 0, 14340, 18922, 14567, 0, 44199, 0, 0, 0, 0, 0, 0, 0, 18406, 0, 0, 0, 0, 0, 37606, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20902, 0, 0, 0, 56358, 0, 38342, 0, 0, 0, 0, 9514, 36071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21700, 0, 0, 5266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1134, 0, 1453, 0, 0, 0, 0, 0, 3882, 0, 0, 0, 0, 0, 0, 0, 0, 4004, 0, 0, 0, 51910, 0, 0, 0, 0, 0, 23076, 4648, 0, 0, 0, 31051, 25351, 0, 0, 0, 22884, 0, 0, 0, 0, 0, 63975, 0, 0, 2376, 16997, 0, 0, 2096, 0, 0, 0, 3373, 7046, 0, 0, 0, 0, 0, 0, 0, 30726, 0, 0, 0, 0, 20, 0, 13707, 614, 0, 0, 12840, 3079, 0, 0, 0, 0, 0, 51046, 3729, 0, 32680, 0, 0, 0, 0, 0, 24008, 62759, 0, 0, 4745, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2414, 0, 0, 44262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24937, 0, 0, 0, 0, 0, 0, 0, 0, 19140, 0, 13575, 0, 0, 0, 0, 0, 0, 0, 39110, 0, 0, 0, 28036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4261, 0, 0, 0, 0, 5992, 0, 264, 0, 0, 0, 0, 0, 0, 0, 13739, 0, 21928, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4232, 15110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30022, 0, 0, 27977, 0, 0, 0, 0, 0, 24776, 0, 0, 0, 0, 0, 2962, 0, 0, 0, 0, 0, 0, 26564, 22441, 0, 0, 0, 0, 0, 13640, 11205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19305, 1894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14119, 5224, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25796, 0, 0, 0, 0, 0, 0, 7470, 0, 0, 0, 0, 63815, 0, 55654, 0, 0, 12584, 0, 1524, 33223, 0, 0, 0, 9895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11624, 0, 0, 0, 5614, 0, 0, 0, 0, 0, 0, 0, 21320, 0, 0, 53607, 0, 51206, 0, 0, 0, 25863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8964, 1740, 0, 0, 0, 0, 0, 0, 0, 0, 13476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7975, 0, 0, 3306, 8134, 0, 8389, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21477, 31112, 31652, 0, 0, 0, 0, 0, 0, 0, 28452, 0, 0, 0, 44231, 0, 0, 0, 0, 0, 0, 0, 24805, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12428, 6471, 0, 0, 0, 0, 525, 17926, 0, 0, 0, 26919, 0, 0, 18120, 0, 0, 0, 30024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29189, 0, 0, 0, 43559, 0, 0, 0, 0, 0, 0, 19787, 7557, 0, 59334, 0, 0, 10184, 6085, 0, 44039, 0, 0, 0, 0, 0, 0, 0, 11175, 0, 0, 0, 0, 30440, 63110, 0, 0, 0, 0, 0, 0, 11017, 0, 0, 0, 0, 0, 0, 0, 0, 27204, 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, 29126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 622, 0, 5226, 2727, 0, 15588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4650, 0, 2675, 0, 0, 32420, 0, 0, 0, 61511, 0, 0, 5419, 17829, 2123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38183, 2640, 0, 11274, 14533, 1842, 0, 0, 42663, 12681, 3430, 0, 11845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6533, 0, 0, 0, 0, 0, 54598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12616, 38535, 0, 0, 0, 0, 0, 32229, 0, 0, 0, 54279, 0, 48614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31401, 0, 0, 0, 0, 34310, 0, 0, 0, 22788, 0, 52134, 0, 0, 0, 0, 0, 0, 0, 23302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40678, 0, 0, 0, 51463, 535, 0, 0, 0, 0, 15525, 0, 0, 0, 0, 0, 0, 4904, 869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63718, 0, 0, 0, 0, 0, 0, 0, 0, 1678, 0, 692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26216, 0, 0, 0, 0, 0, 29355, 0, 0, 0, 0, 25095, 0, 0, 0, 0, 4335, 0, 0, 0, 0, 0, 14538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27273, 55014, 0, 0, 0, 0, 0, 27271, 0, 0, 0, 0, 0, 30468, 0, 0, 0, 0, 18186, 0, 0, 0, 0, 0, 14345, 0, 0, 0, 2152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58438, 21034, 0, 23339, 21318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21412, 0, 0, 0, 0, 0, 0, 0, 12869, 0, 0, 4875, 0, 0, 0, 0, 29191, 0, 0, 0, 0, 0, 0, 1640, 10247, 0, 14244, 0, 0, 0, 0, 9867, 0, 0, 0, 0, 0, 12363, 0, 0, 7653, 0, 0, 4168, 2663, 0, 4580, 0, 11143, 0, 0, 0, 0, 0, 0, 0, 30662, 0, 0, 0, 0, 0, 6724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 6821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29958, 0, 3461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28324, 18795, 7013, 12746, 11655, 0, 37287, 0, 0, 10953, 7718, 9705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8137, 17988, 0, 25156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41415, 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, 15784, 6918, 0, 0, 0, 0, 7019, 10919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4171, 55495, 4940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22440, 19333, 0, 0, 28136, 0, 6249, 21317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53414, 0, 0, 0, 57318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39303, 0, 0, 0, 0, 0, 19940, 0, 0, 0, 0, 0, 0, 0, 25543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2698, 3911, 0, 0, 0, 26790, 0, 0, 0, 0, 0, 0, 32424, 0, 0, 18470, 0, 0, 0, 14726, 29834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 4197, 0, 0, 0, 19366, 0, 0, 0, 39878, 0, 0, 0, 0, 2185, 8901, 5288, 9829, 25000, 0, 0, 0, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35622, 0, 0, 23048, 62503, 6506, 0, 0, 0, 0, 0, 0, 0, 13609, 10438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7723, 42119, 0, 0, 0, 0, 0, 13317, 0, 0, 0, 41606, 0, 27111, 0, 0, 21194, 11461, 0, 0, 0, 0, 26856, 58342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20940, 48710, 0, 0, 0, 0, 0, 0, 5227, 0, 0, 0, 0, 0, 10061, 31300, 0, 0, 0, 19236, 0, 0, 0, 0, 0, 30277, 13896, 0, 0, 0, 12876, 13159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 428, 46951, 13134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15462, 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, 21668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2249, 0, 0, 0, 0, 44967, 0, 0, 0, 0, 0, 0, 3465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24868, 0, 0, 0, 0, 0, 23909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2190, 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, 16164, 0, 10437, 0, 0, 5263, 20102, 20938, 0, 0, 0, 1192, 1030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21385, 4870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18596, 0, 0, 0, 0, 1422, 4038, 2858, 0, 0, 0, 0, 0, 0, 0, 0, 48998, 0, 0, 0, 0, 0, 0, 0, 0, 6508, 37350, 0, 0, 0, 0, 0, 0, 0, 0, 17001, 39431, 0, 0, 0, 0, 0, 30182, 0, 21445, 7403, 28164, 0, 51750, 0, 0, 0, 62631, 0, 0, 0, 0, 0, 0, 0, 31206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13477, 0, 0, 456, 26693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14890, 0, 0, 0, 0, 0, 26697, 22022, 13225, 27364, 0, 0, 0, 18884, 0, 0, 0, 0, 0, 0, 0, 0, 3659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1448, 5413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6340, 0, 0, 18091, 18725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22118, 0, 0, 0, 18981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29223, 3724, 0, 0, 0, 0, 43526, 0, 0, 0, 25668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21545, 9862, 0, 22692, 32201, 60646, 0, 7300, 0, 0, 0, 58887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50342, 0, 65255, 4360, 17286, 0, 0, 0, 0, 0, 0, 0, 28708, 0, 0, 30025, 60102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47014, 0, 31973, 0, 9572, 0, 0, 0, 0, 0, 0, 0, 18501, 0, 0, 0, 0, 0, 14597, 0, 0, 0, 53735, 5228, 22183, 0, 0, 0, 0, 0, 0, 1554, 24164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10827, 0, 0, 0, 0, 34918, 0, 0, 0, 0, 22252, 0, 0, 46855, 0, 0, 0, 0, 0, 31207, 0, 0, 10733, 0, 0, 63334, 0, 0, 0, 0, 8616, 50119, 20169, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58087, 20298, 5, 0, 0, 30920, 0, 0, 0, 0, 0, 0, 0, 296, 13190, 0, 30663, 0, 0, 18536, 12228, 0, 6788, 0, 0, 0, 0, 30890, 21796, 0, 0, 526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20965, 0, 0, 0, 0, 2161, 0, 0, 0, 0, 0, 0, 24038, 0, 0, 0, 0, 13544, 7398, 0, 0, 32522, 9605, 0, 0, 0, 0, 3208, 7590, 0, 0, 0, 43846, 0, 0, 0, 38663, 0, 0, 0, 0, 0, 39014, 4142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6373, 0, 0, 13676, 0, 0, 0, 0, 30374, 21288, 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, 22791, 0, 0, 0, 0, 0, 37958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9452, 9990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4841, 0, 0, 0, 0, 18820, 152, 0, 0, 0, 0, 0, 13260, 3334, 0, 0, 24234, 8422, 0, 17957, 0, 0, 0, 10244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7204, 0, 0, 0, 0, 1201, 26151, 0, 31173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64838, 4203, 7525, 521, 0, 18888, 37031, 0, 0, 0, 0, 0, 0, 0, 0, 7082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4490, 12487, 0, 0, 0, 0, 0, 0, 0, 36615, 0, 0, 0, 14854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6539, 13029, 9704, 38983, 0, 0, 0, 0, 168, 10405, 0, 0, 0, 0, 394, 25607, 0, 57063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16141, 19878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29446, 0, 12036, 0, 0, 0, 0, 0, 6982, 18572, 0, 24584, 14535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 21642, 0, 0, 0, 0, 0, 0, 5254, 0, 0, 0, 0, 0, 0, 0, 0, 1622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3853, 9126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7241, 10982, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 950, 0, 0, 57990, 0, 0, 277, 0, 0, 0, 694, 36007, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42470, 0, 0, 0, 0, 18409, 51142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28646, 0, 0, 0, 30693, 0, 0, 0, 0, 0, 56295, 5544, 0, 0, 0, 0, 8518, 8366, 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, 45670, 0, 0, 9608, 33062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18694, 0, 0, 0, 0, 1672, 23493, 0, 0, 6955, 7655, 0, 36134, 0, 0, 0, 0, 0, 0, 0, 0, 23432, 647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13382, 0, 0, 0, 19621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20228, 0, 0, 2728, 31495, 0, 0, 0, 0, 29096, 22213, 235, 35495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5348, 0, 0, 0, 0, 8968, 1989, 0, 0, 1066, 0, 0, 11492, 5965, 31367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18727, 0, 0, 0, 6757, 0, 0, 10765, 4646, 0, 36166, 0, 27943, 0, 0, 26888, 8420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4975, 0, 0, 0, 14762, 3111, 0, 0, 0, 0, 0, 43399, 0, 0, 0, 0, 0, 0, 0, 18980, 0, 0, 0, 0, 0, 44550, 0, 0, 0, 0, 4051, 0, 0, 0, 0, 37734, 0, 0, 0, 0, 0, 5188, 0, 0, 0, 0, 0, 24486, 0, 5989, 0, 41159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20326, 0, 0, 747, 6884, 0, 0, 0, 41798, 0, 0, 3117, 22919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21032, 0, 0, 0, 0, 0, 0, 0, 0, 9574, 0, 0, 0, 0, 0, 0, 4302, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21068, 34630, 0, 0, 0, 0, 0, 64071, 0, 0, 0, 0, 0, 0, 26667, 7943, 0, 0, 0, 0, 0, 52934, 0, 0, 17002, 0, 0, 0, 0, 0, 0, 20294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27301, 18347, 7974, 0, 0, 0, 0, 0, 0, 0, 0, 16874, 0, 0, 0, 0, 45414, 0, 0, 0, 0, 0, 0, 648, 1575, 0, 0, 0, 31749, 0, 0, 0, 23301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15912, 50535, 0, 0, 0, 0, 1993, 8582, 0, 0, 0, 0, 0, 0, 0, 38438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15850, 6183, 0, 0, 0, 0, 3402, 0, 0, 27494, 0, 0, 749, 0, 0, 0, 0, 0, 0, 0, 26025, 29606, 0, 0, 7144, 19622, 30504, 0, 0, 0, 0, 0, 0, 0, 0, 21316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21444, 0, 0, 1289, 6919, 0, 0, 0, 0, 0, 0, 8299, 0, 0, 0, 14090, 35655, 0, 0, 0, 0, 0, 0, 0, 0, 2377, 15206, 0, 0, 6028, 4452, 0, 25508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50310, 0, 0, 0, 0, 1269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51014, 0, 0, 0, 0, 0, 0, 0, 9286, 0, 7429, 0, 0, 28393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16680, 452, 0, 0, 0, 0, 0, 23718, 0, 0, 0, 31750, 0, 0, 0, 0, 0, 0, 0, 0, 3568, 0, 0, 13604, 0, 0, 0, 0, 0, 25255, 0, 0, 0, 50982, 0, 56582, 0, 0, 7467, 0, 0, 0, 0, 30181, 0, 0, 0, 0, 0, 0, 0, 30564, 7208, 7845, 0, 0, 0, 0, 0, 0, 7726, 0, 0, 0, 0, 62182, 0, 0, 0, 41094, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22695, 0, 0, 0, 0, 0, 0, 17736, 0, 0, 0, 0, 0, 0, 0, 0, 50054, 0, 0, 0, 14180, 0, 0, 0, 0, 0, 0, 8974, 0, 0, 0, 0, 0, 0, 0, 0, 23332, 0, 0, 0, 11140, 0, 0, 0, 0, 0, 0, 0, 24262, 27145, 9540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26537, 45510, 6062, 3879, 0, 0, 20233, 25991, 0, 0, 17803, 0, 0, 0, 0, 0, 13962, 5508, 16971, 27013, 7437, 31494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4714, 0, 0, 0, 0, 0, 0, 0, 0, 17189, 0, 0, 0, 0, 0, 27492, 0, 0, 26953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47430, 19596, 12549, 0, 0, 0, 8390, 1006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24100, 17577, 4, 0, 0, 0, 0, 0, 22277, 0, 0, 0, 0, 0, 0, 0, 26692, 0, 0, 0, 0, 0, 24676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29477, 0, 0, 0, 21573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9864, 14214, 0, 0, 0, 0, 0, 0, 25771, 5766, 0, 0, 8909, 8679, 0, 0, 6861, 16166, 0, 38887, 0, 0, 0, 0, 0, 0, 12392, 8678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52646, 1354, 2950, 0, 14692, 0, 0, 10572, 49830, 0, 0, 0, 0, 0, 0, 0, 0, 3626, 582, 0, 0, 0, 55750, 0, 0, 0, 30885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5830, 0, 0, 2090, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31142, 0, 0, 0, 0, 0, 10503, 0, 0, 18825, 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, 57158, 0, 0, 30792, 63526, 0, 0, 0, 9863, 16267, 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, 18824, 0, 0, 0, 0, 0, 0, 19653, 25388, 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, 9292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25480, 23015, 0, 0, 10440, 6725, 0, 0, 0, 22436, 24265, 15109, 0, 0, 0, 62311, 8906, 34534, 0, 0, 0, 0, 0, 0, 15913, 1319, 0, 0, 20296, 1477, 30760, 0, 25928, 16772, 0, 0, 1069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17029, 0, 31909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41542, 0, 21478, 0, 0, 0, 9796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22187, 58343, 0, 0, 0, 24295, 0, 0, 0, 0, 0, 61831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2833, 5829, 0, 0, 0, 62855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16676, 0, 0, 0, 0, 0, 0, 13577, 27431, 0, 0, 0, 0, 21480, 10501, 0, 16932, 0, 0, 0, 0, 0, 22918, 0, 48294, 2574, 2150, 0, 0, 0, 0, 1897, 4518, 0, 0, 0, 0, 0, 0, 25064, 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, 47942, 0, 0, 0, 0, 10990, 13767, 25705, 37863, 21672, 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, 43430, 1712, 0, 0, 0, 0, 18886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10535, 0, 0, 0, 0, 0, 0, 0, 15012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14734, 0, 0, 55782, 0, 0, 30824, 10886, 0, 0, 0, 0, 0, 51302, 0, 0, 8012, 0, 0, 0, 0, 0, 20680, 6981, 0, 57415, 11, 0, 0, 18277, 0, 14564, 0, 0, 0, 32390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19113, 5158, 0, 11172, 0, 16774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10315, 13830, 0, 0, 0, 0, 0, 0, 10410, 7141, 0, 0, 0, 0, 0, 18116, 0, 0, 0, 44615, 15403, 13958, 0, 1540, 14632, 19525, 24201, 19781, 0, 0, 0, 24165, 0, 38951, 0, 0, 0, 0, 0, 6308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17416, 15749, 3438, 13255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32228, 0, 0, 0, 0, 176, 0, 0, 50566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58982, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5284, 0, 0, 0, 0, 0, 0, 25897, 28326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15945, 0, 0, 0, 9804, 293, 0, 0, 0, 0, 0, 0, 0, 13988, 23082, 4677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5670, 0, 0, 0, 0, 0, 0, 0, 44070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6405, 0, 30692, 0, 0, 0, 61702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45926, 0, 15398, 0, 0, 0, 0, 0, 0, 4554, 2692, 0, 0, 0, 0, 0, 32485, 0, 0, 0, 10084, 0, 0, 0, 0, 0, 0, 24297, 0, 0, 0, 0, 0, 0, 0, 0, 22790, 0, 0, 0, 55110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7112, 0, 31530, 45255, 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, 40743, 17226, 22599, 0, 0, 0, 0, 0, 0, 0, 0, 3695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56999, 0, 0, 0, 0, 0, 13799, 3114, 21287, 1353, 7591, 0, 0, 0, 8455, 0, 0, 6824, 0, 0, 0, 0, 0, 0, 0, 14569, 0, 0, 0, 29000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19979, 0, 18376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11332, 0, 0, 0, 49863, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2191, 7527, 23148, 58022, 0, 0, 0, 30631, 0, 26565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 15877, 0, 0, 0, 0, 0, 0, 0, 17510, 7657, 2821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41927, 0, 0, 0, 0, 0, 0, 0, 0, 2569, 34439, 0, 0, 3790, 0, 0, 0, 15339, 8775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15908, 0, 0, 21419, 8359, 0, 0, 0, 0, 424, 0, 0, 0, 0, 0, 0, 25318, 8008, 20551, 0, 0, 0, 45735, 30058, 30372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31432, 10567, 0, 0, 0, 0, 17450, 0, 0, 0, 0, 0, 0, 30310, 0, 38022, 0, 0, 0, 0, 0, 28932, 0, 0, 0, 0, 0, 43910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22180, 12075, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22247, 0, 0, 22826, 12359, 0, 0, 0, 0, 4105, 50407, 0, 0, 0, 0, 0, 0, 13581, 28583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28936, 0, 0, 0, 0, 0, 17673, 10310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 905, 57862, 1580, 0, 0, 0, 0, 58630, 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, 13479, 0, 0, 14153, 13286, 0, 0, 9259, 0, 0, 0, 0, 0, 6606, 3524, 0, 0, 0, 0, 0, 6567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 631, 49255, 0, 0, 0, 0, 0, 42886, 0, 38215, 0, 0, 0, 0, 0, 0, 0, 0, 17580, 0, 0, 0, 0, 0, 0, 0, 0, 55046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10213, 0, 0, 0, 0, 3604, 37767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28715, 4229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1226, 26820, 0, 0, 0, 12133, 6984, 261, 21130, 32548, 0, 0, 0, 0, 0, 0, 3565, 12390, 20713, 28071, 0, 0, 1706, 25287, 0, 0, 0, 0, 0, 0, 0, 0, 14670, 0, 0, 0, 0, 0, 0, 30534, 0, 0, 0, 12615, 0, 43750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28228, 0, 0, 0, 0, 0, 0, 0, 45095, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1224, 3975, 10954, 6375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23180, 20100, 0, 0, 0, 0, 25736, 8519, 0, 0, 0, 0, 0, 6663, 0, 2534, 0, 0, 0, 0, 0, 0, 0, 0, 23720, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19398, 0, 47814, 26281, 49702, 0, 0, 4332, 12965, 0, 0, 5704, 3206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15396, 0, 0, 0, 44102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25317, 1064, 39271, 27433, 0, 14952, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14308, 0, 0, 0, 0, 0, 0, 2763, 4100, 0, 0, 0, 0, 0, 0, 18792, 0, 0, 0, 22154, 32583, 0, 6244, 0, 0, 0, 0, 0, 0, 0, 49478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21894, 0, 0, 11048, 0, 0, 0, 0, 0, 0, 11685, 0, 53862, 0, 0, 15114, 0, 13870, 0, 0, 0, 0, 0, 0, 0, 919, 0, 0, 0, 31916, 0, 22570, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7333, 0, 0, 0, 0, 3272, 0, 0, 0, 0, 27718, 32712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1782, 0, 3688, 0, 0, 0, 0, 29862, 0, 0, 0, 0, 0, 0, 0, 22469, 0, 0, 0, 0, 0, 0, 0, 55302, 850, 15492, 0, 0, 0, 5927, 19786, 13350, 0, 25702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20260, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15335, 8394, 0, 0, 0, 0, 0, 0, 26566, 0, 0, 0, 0, 843, 2245, 0, 0, 0, 0, 0, 0, 0, 0, 6959, 0, 20488, 1638, 0, 0, 11533, 50759, 0, 0, 0, 0, 0, 20871, 0, 0, 0, 0, 0, 24519, 0, 0, 0, 0, 9544, 23591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20969, 7109, 29001, 0, 0, 32422, 31720, 64294, 0, 0, 0, 0, 16106, 0, 0, 0, 6930, 4933, 0, 0, 0, 22917, 0, 27015, 0, 0, 0, 0, 19880, 8070, 0, 0, 0, 0, 23945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3310, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18439, 0, 0, 0, 20742, 0, 0, 0, 10597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20236, 0, 0, 0, 16584, 3429, 0, 0, 0, 0, 0, 0, 0, 0, 27241, 0, 0, 0, 0, 16132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 28261, 0, 0, 0, 0, 0, 0, 0, 29509, 0, 0, 0, 0, 0, 0, 0, 0, 2921, 31781, 0, 0, 0, 0, 0, 0, 6408, 4196, 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11689, 45863, 0, 0, 0, 0, 906, 3301, 0, 0, 25544, 32421, 0, 0, 0, 0, 0, 0, 0, 0, 1260, 61607, 0, 27302, 0, 0, 8682, 16614, 0, 0, 0, 0, 10830, 0, 0, 9604, 15049, 13413, 0, 0, 0, 0, 0, 0, 26761, 0, 0, 0, 0, 0, 0, 61990, 0, 0, 0, 0, 0, 12580, 0, 0, 11432, 0, 0, 0, 0, 0, 22507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12389, 0, 0, 0, 0, 0, 0, 2408, 22661, 14507, 43239, 0, 9700, 0, 0, 24714, 0, 0, 0, 0, 0, 0, 0, 0, 23972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34086, 0, 0, 22955, 7238, 0, 0, 0, 0, 0, 28485, 13806, 20038, 0, 0, 0, 0, 22602, 0, 0, 0, 1645, 22340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26502, 0, 0, 554, 0, 0, 0, 0, 61735, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 883, 27879, 15948, 0, 3242, 57382, 0, 0, 0, 0, 0, 0, 13930, 0, 0, 0, 0, 0, 30922, 0, 4137, 52615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31911, 16072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26340, 0, 61671, 0, 0, 0, 0, 3145, 56199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 5131, 33479, 0, 15751, 0, 0, 0, 0, 0, 0, 4136, 1446, 0, 0, 0, 0, 0, 0, 11304, 17863, 0, 0, 0, 0, 0, 25125, 0, 0, 0, 36646, 6057, 0, 0, 0, 855, 11301, 0, 0, 0, 0, 0, 64774, 0, 0, 0, 19397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1040, 27367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64358, 0, 0, 178, 132, 0, 0, 14763, 24455, 0, 0, 0, 46374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46246, 0, 0, 0, 37382, 0, 0, 0, 7462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8166, 0, 0, 6921, 0, 0, 0, 9163, 0, 0, 0, 119, 0, 0, 0, 23146, 17156, 0, 0, 0, 0, 0, 9127, 0, 0, 0, 17927, 0, 0, 0, 0, 0, 22084, 0, 0, 0, 0, 0, 39879, 0, 0, 2035, 0, 1067, 0, 0, 0, 0, 0, 16652, 59591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20171, 0, 0, 0, 0, 17733, 0, 0, 0, 0, 0, 32037, 0, 0, 0, 0, 0, 14277, 0, 0, 0, 0, 0, 0, 0, 42022, 0, 0, 26793, 20358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8907, 0, 0, 0, 0, 0, 0, 0, 0, 27780, 0, 0, 0, 0, 32330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39399, 0, 9732, 0, 16199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 854, 0, 2984, 45063, 25418, 26980, 22539, 0, 9133, 3653, 15528, 28743, 4649, 0, 616, 65127, 0, 0, 0, 61863, 0, 0, 0, 0, 0, 0, 0, 55303, 0, 0, 0, 0, 0, 0, 0, 0, 23880, 0, 0, 0, 0, 0, 0, 0, 31848, 62854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49606, 0, 27974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32580, 0, 0, 0, 26052, 4043, 0, 0, 40454, 0, 0, 26056, 30565, 0, 0, 0, 0, 0, 0, 0, 31398, 0, 0, 0, 0, 0, 0, 0, 0, 29288, 1797, 0, 0, 3220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20427, 0, 0, 0, 0, 23621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35591, 0, 0, 6862, 0, 0, 0, 4265, 0, 6285, 5383, 0, 0, 0, 0, 0, 36870, 0, 39847, 0, 0, 17224, 5414, 27882, 58118, 0, 0, 13224, 4262, 0, 0, 0, 31302, 0, 0, 1388, 2982, 11881, 0, 0, 0, 0, 0, 0, 16837, 809, 0, 24140, 10724, 0, 0, 0, 0, 5835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1256, 19237, 0, 0, 0, 0, 0, 0, 0, 5796, 11848, 0, 0, 52870, 11464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5645, 9158, 0, 25223, 0, 0, 0, 0, 0, 39142, 24968, 8135, 32104, 28678, 0, 0, 0, 46311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23820, 0, 0, 0, 0, 0, 4050, 0, 1323, 25220, 0, 0, 0, 20133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9381, 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, 13444, 1198, 60806, 0, 0, 0, 0, 17356, 50247, 30632, 0, 0, 0, 0, 0, 0, 0, 11944, 999, 0, 0, 0, 0, 4010, 10404, 0, 0, 0, 0, 0, 0, 10346, 0, 0, 49510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38919, 0, 0, 0, 0, 0, 0, 6351, 60966, 20137, 487, 0, 0, 0, 0, 0, 0, 655, 2406, 17387, 43303, 0, 0, 0, 17063, 0, 0, 213, 0, 0, 0, 0, 0, 0, 17221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10820, 0, 0, 0, 0, 369, 6, 0, 0, 9098, 21093, 0, 31653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27143, 0, 0, 16234, 0, 0, 0, 0, 0, 0, 0, 0, 6020, 31723, 28293, 0, 0, 0, 0, 1936, 30695, 0, 0, 0, 0, 0, 52902, 0, 0, 29512, 10791, 0, 20420, 0, 0, 16010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24328, 0, 0, 0, 0, 0, 0, 40870, 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, 24648, 0, 0, 0, 0, 0, 0, 0, 7786, 2852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44678, 0, 17925, 0, 0, 105, 53062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18762, 0, 0, 40679, 0, 0, 0, 16165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62310, 1322, 14247, 0, 0, 0, 0, 0, 0, 0, 0, 1832, 6052, 0, 0, 11882, 0, 0, 0, 0, 17668, 0, 28262, 0, 29542, 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, 28007, 0, 0, 0, 57223, 1585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21162, 0, 0, 62247, 0, 0, 0, 0, 0, 25414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36326, 0, 0, 0, 23845, 0, 0, 0, 0, 0, 0, 0, 2693, 0, 0, 0, 0, 0, 0, 0, 13125, 0, 31236, 0, 0, 0, 0, 0, 22502, 0, 0, 0, 0, 0, 0, 5994, 10309, 0, 0, 0, 7269, 0, 0, 0, 0, 17929, 0, 1011, 44647, 0, 0, 0, 0, 0, 14919, 0, 0, 0, 0, 20586, 5350, 0, 0, 0, 45702, 0, 13189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35782, 17992, 0, 0, 0, 0, 0, 8203, 0, 0, 0, 0, 0, 0, 56678, 0, 0, 0, 0, 0, 38087, 4233, 0, 2127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10148, 0, 0, 0, 2021, 0, 0, 0, 0, 0, 0, 0, 47206, 0, 0, 0, 0, 0, 0, 0, 9220, 0, 0, 0, 0, 19465, 0, 0, 0, 0, 0, 0, 0, 0, 39206, 0, 38055, 0, 0, 0, 0, 0, 0, 0, 46982, 0, 0, 0, 0, 0, 22054, 3850, 0, 0, 0, 0, 0, 0, 0, 55, 0, 10542, 0, 0, 0, 0, 7239, 0, 0, 0, 0, 0, 59367, 0, 0, 14761, 0, 0, 0, 0, 43079, 0, 0, 0, 0, 0, 2726, 0, 0, 9582, 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, 37478, 0, 0, 0, 31364, 0, 0, 0, 0, 0, 0, 0, 0, 20393, 8933, 0, 0, 0, 0, 0, 9380, 0, 0, 0, 0, 16905, 549, 0, 0, 0, 0, 182, 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, 1558, 0, 0, 0, 0, 0, 0, 0, 19242, 0, 0, 0, 0, 0, 0, 24933, 0, 6276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42310, 23595, 24068, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13191, 6158, 2567, 0, 0, 268, 47047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27940, 0, 0, 0, 0, 0, 26726, 0, 0, 0, 0, 8200, 1222, 31562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2922, 8231, 8904, 29157, 0, 0, 0, 0, 0, 0, 0, 0, 23976, 4836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31658, 0, 0, 31685, 0, 0, 2889, 6213, 0, 0, 0, 0, 0, 13605, 0, 0, 0, 0, 0, 24772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20684, 26468, 24075, 0, 0, 0, 21193, 0, 715, 679, 0, 0, 0, 0, 0, 0, 3050, 7654, 0, 0, 0, 13798, 0, 0, 0, 0, 15, 27973, 0, 0, 8491, 2086, 0, 0, 0, 43206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60391, 0, 0, 0, 0, 0, 0, 0, 25892, 0, 22276, 0, 34374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20165, 0, 0, 25672, 0, 0, 0, 1811, 24839, 0, 31044, 0, 0, 25513, 0, 0, 0, 0, 0, 12810, 0, 0, 62438, 0, 0, 1325, 0, 364, 3782, 0, 0, 0, 0, 0, 0, 0, 0, 8042, 19687, 0, 0, 0, 33415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11844, 0, 0, 0, 0, 3341, 1543, 6698, 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, 29766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41158, 0, 24294, 0, 3844, 12329, 0, 0, 0, 13738, 0, 0, 0, 0, 0, 0, 0, 0, 26245, 0, 0, 0, 0, 0, 0, 6378, 0, 343, 4838, 0, 0, 0, 24358, 11688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1489, 34759, 0, 0, 0, 0, 363, 51974, 1878, 11013, 0, 0, 32265, 59782, 0, 0, 0, 28421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29257, 61222, 0, 30661, 0, 28327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27108, 8843, 0, 9673, 2084, 0, 0, 0, 16327, 0, 48455, 0, 0, 0, 0, 0, 0, 4876, 9316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9035, 18852, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4164, 0, 0, 14827, 1349, 0, 0, 0, 0, 0, 11909, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21765, 0, 0, 0, 0, 0, 0, 0, 0, 31272, 63910, 0, 0, 0, 25924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44487, 0, 0, 0, 20612, 0, 0, 27754, 31428, 0, 0, 0, 0, 0, 0, 0, 17287, 0, 3943, 0, 0, 0, 63302, 0, 0, 0, 0, 25256, 19942, 0, 55142, 0, 39046, 0, 0, 0, 0, 0, 0, 0, 15367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28422, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9576, 63847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25226, 5734, 0, 0, 0, 0, 0, 0, 13801, 4997, 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, 43942, 1270, 2566, 6284, 0, 0, 16230, 0, 0, 0, 20678, 0, 0, 0, 0, 0, 38855, 0, 0, 0, 0, 29643, 0, 0, 0, 41, 3655, 0, 0, 0, 0, 0, 14276, 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, 15686, 0, 0, 0, 15718, 0, 50694, 0, 0, 16232, 8007, 0, 0, 0, 5060, 329, 11591, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13065, 7302, 27530, 15366, 0, 24934, 0, 0, 0, 17828, 0, 0, 4552, 6311, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47686, 368, 12103, 10122, 33830, 0, 0, 599, 18534, 9579, 49479, 0, 5668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13157, 0, 0, 0, 0, 23274, 14055, 0, 0, 0, 0, 0, 48903, 0, 0, 0, 0, 0, 0, 1871, 0, 15434, 0, 0, 0, 16174, 62470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7749, 0, 0, 0, 0, 0, 0, 0, 30501, 0, 0, 0, 0, 25675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9285, 0, 0, 25323, 1669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3588, 0, 0, 0, 0, 0, 32902, 0, 0, 4426, 0, 0, 0, 0, 57959, 0, 0, 0, 0, 0, 0, 29898, 58278, 0, 0, 0, 0, 11880, 1220, 0, 0, 0, 41479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42566, 0, 0, 0, 0, 0, 0, 0, 40167, 9484, 3493, 0, 0, 0, 0, 0, 21126, 0, 0, 0, 0, 8649, 18918, 0, 0, 0, 0, 0, 0, 0, 34886, 2601, 0, 0, 0, 0, 12518, 0, 0, 0, 0, 7976, 10311, 0, 0, 0, 0, 0, 0, 0, 45190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16842, 20229, 0, 0, 0, 0, 0, 0, 7528, 4614, 0, 0, 0, 0, 0, 30086, 0, 0, 0, 1671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9896, 6277, 0, 0, 0, 0, 0, 61191, 0, 41287, 0, 21956, 0, 0, 20010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13195, 0, 0, 0, 0, 1381, 0, 0, 0, 0, 365, 30951, 24268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27944, 359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28487, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 56775, 12586, 8421, 0, 0, 0, 0, 0, 0, 26185, 14599, 0, 0, 8040, 5702, 12585, 3109, 0, 0, 0, 0, 0, 21574, 5388, 0, 0, 0, 0, 0, 0, 0, 5106, 52454, 0, 0, 0, 0, 0, 0, 0, 0, 1907, 29895, 0, 6116, 0, 0, 0, 0, 11081, 5285, 0, 28069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4104, 0, 0, 0, 0, 0, 0, 41511, 0, 0, 0, 0, 0, 0, 5262, 0, 0, 0, 503, 4231, 7720, 34343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7304, 10374, 1718, 0, 0, 29127, 0, 0, 0, 0, 0, 0, 0, 0, 23497, 22567, 6952, 2340, 0, 0, 0, 0, 0, 0, 0, 0, 20360, 12453, 0, 45094, 0, 0, 0, 0, 0, 28582, 0, 0, 0, 0, 680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23084, 0, 0, 0, 30696, 0, 0, 0, 0, 45862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5580, 6053, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 712, 70, 0, 0, 26091, 11335, 0, 0, 0, 0, 13612, 0, 13160, 1926, 435, 51559, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47302, 19083, 0, 0, 12742, 0, 1607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6155, 37095, 0, 0, 0, 0, 0, 18948, 7146, 0, 0, 0, 0, 0, 0, 0, 7848, 2055, 0, 0, 0, 0, 8910, 0, 19336, 0, 0, 48070, 8490, 0, 0, 0, 0, 0, 0, 0, 9932, 56423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43398, 0, 0, 0, 0, 0, 0, 0, 0, 16173, 0, 0, 0, 0, 0, 0, 0, 32011, 0, 0, 30918, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18889, 0, 0, 0, 0, 8965, 0, 0, 0, 44358, 0, 0, 0, 8997, 0, 34055, 0, 0, 0, 0, 0, 29350, 0, 0, 501, 17767, 0, 0, 32457, 60262, 0, 0, 0, 30886, 0, 0, 3757, 1063, 0, 0, 0, 25637, 0, 0, 0, 0, 0, 28068, 0, 26374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11684, 0, 0, 0, 0, 0, 0, 24779, 229, 0, 13766, 0, 0, 7402, 11525, 0, 0, 0, 0, 0, 0, 0, 0, 26313, 23686, 0, 0, 29736, 47527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27268, 0, 0, 0, 0, 553, 0, 0, 0, 0, 0, 0, 32038, 0, 0, 0, 0, 1135, 26596, 0, 0, 12300, 14631, 0, 0, 0, 43238, 0, 871, 0, 0, 31496, 0, 8457, 17669, 0, 12836, 0, 0, 0, 22726, 0, 38758, 0, 0, 375, 6564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 18535, 0, 22948, 0, 0, 32360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15652, 0, 0, 0, 32774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15145, 0, 0, 0, 21100, 27654, 0, 0, 0, 0, 0, 0, 4874, 26215, 0, 1639, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4169, 0, 0, 0, 0, 0, 7336, 0, 0, 0, 0, 21572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24644, 1675, 2533, 0, 0, 0, 53318, 0, 13094, 0, 0, 0, 0, 0, 0, 0, 6246, 0, 22020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28453, 5576, 5124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27910, 0, 29382, 18216, 8583, 0, 0, 0, 39174, 0, 43558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11973, 0, 0, 0, 0, 0, 23397, 0, 0, 0, 0, 6091, 0, 0, 0, 0, 0, 0, 0, 6474, 16197, 14217, 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, 26728, 0, 567, 48839, 0, 0, 0, 0, 0, 15271, 0, 0, 31818, 43974, 2450, 0, 0, 0, 0, 0, 0, 0, 11368, 9191, 0, 44454, 0, 0, 0, 0, 0, 0, 14568, 12293, 0, 0, 0, 8453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 902, 0, 0, 0, 27236, 5612, 11495, 0, 0, 0, 0, 0, 0, 0, 0, 9194, 23684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26217, 44870, 0, 0, 0, 0, 0, 0, 5581, 7173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20968, 18340, 0, 0, 0, 0, 0, 0, 0, 0, 4107, 11239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48806, 0, 0, 0, 32292, 0, 0, 0, 0, 0, 0, 0, 10884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27562, 0, 5643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3089, 31525, 0, 19684, 0, 0, 0, 0, 0, 0, 0, 61415, 0, 0, 0, 0, 0, 36198, 0, 0, 0, 0, 0, 0, 0, 7908, 0, 0, 0, 0, 872, 743, 0, 0, 0, 0, 0, 0, 0, 0, 1229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32484, 0, 0, 0, 0, 0, 34822, 0, 0, 0, 0, 0, 50726, 0, 0, 0, 0, 7274, 0, 0, 0, 15304, 11526, 0, 0, 0, 3047, 0, 0, 0, 0, 0, 0, 22376, 0, 0, 0, 846, 0, 0, 0, 0, 35815, 0, 0, 0, 23652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23721, 2148, 0, 0, 0, 0, 0, 0, 14856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1358, 0, 3082, 0, 0, 0, 848, 10949, 0, 0, 0, 0, 0, 0, 6504, 0, 0, 14372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8201, 9958, 0, 0, 0, 0, 0, 0, 24266, 0, 0, 0, 0, 0, 0, 0, 0, 26469, 0, 0, 0, 0, 18604, 2053, 0, 33511, 0, 0, 0, 0, 0, 9222, 0, 0, 0, 0, 0, 44006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41895, 0, 0, 0, 0, 0, 0, 0, 0, 12044, 390, 0, 0, 0, 0, 0, 4935, 0, 48646, 0, 56102, 3052, 16070, 0, 0, 0, 0, 0, 0, 0, 8612, 9320, 38311, 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, 500, 0, 0, 0, 0, 42918, 0, 32550, 0, 0, 0, 0, 0, 0, 0, 0, 27434, 57926, 17064, 0, 0, 46502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26760, 6756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 624, 0, 5000, 0, 0, 0, 0, 32293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26246, 0, 0, 0, 0, 0, 0, 0, 0, 23, 7301, 0, 0, 0, 36199, 0, 40838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27178, 57350, 0, 0, 12457, 9317, 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, 16810, 0, 0, 0, 14510, 0, 0, 0, 0, 21319, 0, 0, 0, 13508, 17, 11365, 0, 0, 0, 0, 5291, 0, 8329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27685, 0, 0, 0, 0, 0, 0, 0, 52006, 0, 0, 0, 7493, 0, 44263, 0, 0, 0, 0, 0, 0, 0, 0, 9800, 0, 0, 0, 25676, 61478, 0, 0, 0, 0, 0, 0, 5773, 0, 0, 0, 0, 41991, 26057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22629, 0, 0, 0, 47783, 362, 1959, 23468, 0, 0, 0, 10921, 0, 0, 0, 3150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32456, 0, 0, 0, 0, 0, 0, 0, 4559, 3270, 0, 0, 983, 0, 0, 26343, 0, 33446, 0, 0, 0, 61767, 0, 48390, 0, 0, 0, 0, 0, 0, 0, 2790, 0, 39782, 7849, 0, 0, 0, 0, 0, 0, 0, 1544, 2183, 0, 0, 0, 0, 0, 0, 0, 0, 4040, 2471, 20009, 30020, 0, 0, 11242, 0, 0, 0, 5578, 53382, 0, 22631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12901, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 9030, 0, 0, 0, 0, 0, 0, 265, 1412, 0, 0, 11626, 3687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17449, 24359, 0, 0, 26729, 40134, 0, 0, 0, 0, 29768, 61958, 0, 0, 0, 0, 0, 0, 0, 0, 20908, 0, 0, 0, 0, 0, 11016, 0, 0, 47462, 21547, 5926, 0, 0, 14728, 2983, 24104, 15301, 0, 0, 0, 0, 0, 32645, 0, 0, 0, 0, 0, 0, 0, 3300, 0, 0, 0, 15972, 0, 0, 0, 0, 0, 0, 6634, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3076, 0, 30983, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 12775, 0, 0, 0, 0, 7177, 18022, 0, 0, 0, 0, 0, 22534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27560, 0, 0, 0, 0, 30278, 10668, 23877, 0, 0, 0, 0, 0, 0, 0, 29124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48454, 0, 0, 0, 0, 6442, 0, 16330, 22951, 0, 0, 16904, 0, 0, 0, 0, 644, 0, 0, 0, 40038, 0, 0, 0, 37222, 0, 0, 0, 9830, 0, 0, 0, 0, 0, 34919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13733, 0, 0, 0, 28196, 0, 0, 0, 0, 0, 19876, 0, 0, 0, 0, 0, 0, 0, 23558, 0, 11142, 0, 27781, 0, 0, 0, 0, 13864, 0, 0, 0, 24682, 47847, 0, 0, 0, 0, 6890, 0, 0, 0, 0, 0, 3981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1772, 0, 0, 0, 0, 0, 0, 0, 3603, 1991, 0, 27396, 8652, 0, 18312, 0, 0, 0, 0, 30054, 0, 0, 0, 0, 0, 0, 0, 11270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20708, 0, 0, 0, 0, 338, 0, 0, 0, 0, 0, 0, 0, 7050, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14862, 0, 0, 3492, 0, 0, 0, 55878, 0, 0, 0, 16486, 0, 0, 0, 18119, 0, 0, 0, 0, 0, 0, 2154, 1284, 0, 0, 23113, 31751, 0, 0, 29547, 0, 0, 0, 0, 0, 0, 36647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7913, 0, 0, 0, 0, 20644, 0, 0, 10508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43622, 0, 0, 0, 0, 0, 40966, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 246, 901, 11529, 5191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24454, 0, 0, 26665, 27590, 0, 27397, 0, 0, 0, 0, 0, 0, 23562, 2949, 0, 0, 30344, 62214, 0, 47334, 2026, 18885, 0, 0, 0, 48678, 0, 0, 0, 22694, 0, 0, 1972, 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, 15465, 0, 0, 0, 0, 38822, 0, 0, 0, 0, 945, 32708, 0, 54791, 0, 14918, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23396, 0, 0, 0, 0, 0, 0, 5486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7722, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30856, 64166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35206, 0, 0, 0, 30535, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62663, 0, 0, 1096, 17574, 31820, 0, 0, 14375, 4402, 27207, 0, 0, 21448, 4676, 0, 0, 0, 0, 16585, 5094, 0, 0, 0, 0, 0, 0, 0, 0, 4845, 0, 0, 32870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31466, 0, 0, 0, 0, 31783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4522, 16039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7464, 4773, 0, 0, 0, 0, 0, 0, 0, 0, 18636, 0, 0, 0, 25640, 0, 0, 0, 0, 0, 0, 2244, 0, 0, 11818, 0, 1168, 0, 0, 0, 0, 0, 0, 0, 6540, 23079, 13770, 7719, 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, 58150, 528, 34502, 32682, 0, 0, 12997, 0, 0, 0, 0, 0, 2214, 0, 0, 0, 0, 0, 58567, 0, 0, 0, 26375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32005, 22952, 59047, 0, 13543, 0, 0, 0, 0, 0, 0, 0, 0, 16328, 0, 0, 33542, 0, 0, 0, 19782, 0, 0, 0, 16644, 0, 0, 0, 0, 31688, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10276, 0, 0, 0, 0, 0, 0, 0, 36327, 0, 0, 29480, 0, 0, 0, 777, 12709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27398, 0, 0, 0, 4455, 9037, 31397, 0, 9221, 0, 0, 0, 60487, 20840, 1796, 0, 0, 0, 0, 0, 0, 0, 0, 8364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19752, 44902, 0, 38566, 0, 0, 18027, 0, 0, 0, 0, 0, 0, 0, 0, 10662, 0, 0, 0, 0, 0, 11812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19910, 0, 0, 0, 45030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19978, 5127, 0, 11620, 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, 19817, 0, 5579, 9350, 0, 0, 21002, 19718, 0, 0, 0, 21926, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20711, 0, 0, 0, 20197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40550, 0, 0, 0, 57510, 0, 0, 0, 53895, 0, 0, 15017, 0, 17000, 39367, 2347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8588, 0, 0, 0, 0, 0, 3273, 17862, 3498, 2085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19048, 0, 0, 0, 0, 0, 11978, 58631, 0, 0, 0, 0, 0, 0, 523, 0, 12969, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28197, 0, 47846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 687, 14917, 748, 8229, 0, 0, 0, 0, 0, 0, 2476, 12935, 0, 0, 0, 0, 0, 0, 22792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27528, 59142, 0, 0, 20876, 20134, 0, 0, 0, 0, 440, 12068, 0, 58951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48038, 0, 0, 0, 60999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15716, 7498, 5476, 0, 0, 0, 0, 20202, 37959, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29801, 0, 5451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13573, 0, 0, 22856, 0, 0, 0, 0, 21927, 0, 0, 0, 0, 0, 0, 9130, 0, 0, 0, 0, 0, 0, 13732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2282, 583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3726, 26503, 0, 0, 0, 0, 0, 0, 9258, 0, 0, 0, 0, 0, 0, 0, 0, 21604, 0, 0, 0, 45574, 0, 0, 0, 0, 0, 20710, 0, 0, 0, 42694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163, 6694, 0, 0, 0, 0, 0, 0, 0, 10948, 0, 0, 0, 29700, 0, 0, 0, 0, 0, 58823, 3796, 27399, 20939, 10180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 29287, 28649, 14534, 0, 0, 16428, 45607, 0, 0, 0, 0, 0, 0, 25322, 0, 4908, 0, 0, 0, 0, 0, 0, 25476, 29097, 14246, 11053, 0, 0, 0, 0, 0, 0, 0, 0, 18502, 0, 0, 0, 44390, 0, 0, 0, 17765, 0, 0, 0, 0, 0, 0, 24520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28166, 0, 0, 0, 0, 0, 48198, 0, 0, 31467, 0, 24585, 0, 0, 0, 0, 18692, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7236, 968, 13637, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14791, 0, 0, 0, 12324, 0, 12741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11108, 0, 0, 0, 0, 4009, 40295, 20616, 4357, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15015, 0, 0, 0, 0, 0, 43751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23974, 0, 0, 0, 0, 17480, 20647, 0, 0, 0, 0, 0, 0, 8876, 0, 0, 40806, 0, 0, 0, 0, 0, 0, 0, 14502, 17160, 17764, 0, 0, 31594, 35431, 0, 0, 2890, 0, 0, 0, 0, 0, 0, 0, 0, 27524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8228, 0, 56583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2662, 0, 26724, 0, 0, 0, 0, 0, 0, 0, 64198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3049, 54983, 0, 0, 0, 0, 0, 0, 0, 837, 0, 17604, 0, 0, 0, 0, 0, 28838, 0, 0, 0, 0, 0, 0, 26312, 0, 0, 3910, 0, 0, 0, 25830, 0, 0, 0, 0, 0, 8391, 0, 19845, 19240, 1092, 0, 0, 5449, 0, 0, 0, 0, 17188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10629, 0, 0, 6671, 61094, 5832, 8358, 0, 0, 0, 55078, 0, 0, 0, 0, 0, 29860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51494, 0, 28647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25989, 0, 0, 30153, 61318, 0, 0, 0, 0, 0, 0, 0, 24903, 0, 0, 0, 4388, 0, 42054, 0, 0, 0, 0, 0, 0, 0, 53158, 0, 0, 0, 0, 0, 0, 0, 50918, 0, 0, 0, 0, 0, 0, 26251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5929, 2853, 0, 37126, 7372, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2027, 934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55686, 0, 0, 5672, 5447, 0, 62758, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2923, 0, 556, 1415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8645, 0, 9477, 0, 0, 0, 0, 0, 0, 0, 48742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24235, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16970, 18823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25158, 0, 0, 0, 0, 0, 18567, 20072, 2823, 14313, 1830, 0, 0, 0, 0, 0, 0, 0, 0, 27048, 23526, 0, 0, 0, 0, 0, 997, 492, 0, 14730, 16677, 396, 13574, 0, 0, 0, 41671, 0, 0, 0, 0, 0, 0, 0, 19045, 0, 0, 0, 421, 17545, 3110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47111, 14475, 56551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3697, 0, 0, 0, 0, 0, 0, 49382, 0, 35559, 0, 0, 0, 0, 40, 0, 11496, 15621, 0, 8550, 0, 0, 0, 63462, 0, 0, 0, 0, 0, 0, 0, 36966, 0, 50406, 0, 46022, 1001, 0, 0, 12069, 3249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15241, 0, 0, 0, 0, 0, 0, 0, 0, 64743, 0, 0, 0, 0, 0, 58759, 0, 0, 0, 0, 1136, 26981, 0, 0, 0, 0, 0, 0, 0, 17732, 0, 0, 0, 17157, 20011, 6629, 0, 43879, 0, 0, 0, 13572, 25128, 10759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 875, 24007, 0, 0, 0, 0, 7628, 0, 0, 0, 0, 0, 12268, 0, 0, 0, 0, 0, 0, 0, 0, 19300, 23210, 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15236, 0, 0, 0, 0, 0, 49670, 0, 0, 0, 0, 0, 0, 0, 21764, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45799, 0, 0, 436, 3589, 0, 0, 11402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62822, 0, 0, 0, 39814, 588, 0, 0, 0, 0, 0, 0, 27750, 0, 0, 0, 0, 0, 0, 1609, 22660, 2346, 18951, 0, 16068, 0, 0, 0, 0, 0, 0, 5162, 11110, 0, 0, 0, 0, 15048, 1060, 0, 7879, 18280, 326, 0, 14886, 19656, 0, 7594, 0, 0, 0, 0, 0, 781, 581, 0, 16198, 0, 0, 0, 0, 0, 0, 1078, 9892, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4489, 0, 0, 0, 0, 33798, 0, 0, 0, 54534, 0, 0, 0, 0, 0, 0, 0, 33158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42086, 13834, 2757, 8456, 16773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3434, 0, 0, 0, 0, 0, 3946, 29668, 0, 0, 30634, 36775, 0, 0, 0, 0, 0, 24901, 0, 16069, 6280, 0, 0, 0, 0, 41990, 0, 0, 0, 0, 0, 0, 0, 27365, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1450, 44807, 0, 0, 0, 32100, 0, 0, 0, 0, 0, 35110, 0, 0, 0, 0, 0, 0, 0, 0, 17448, 19591, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1739, 0, 0, 0, 0, 5511, 0, 0, 0, 32934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18180, 0, 0, 0, 23428, 19754, 0, 0, 31174, 3021, 31655, 23464, 0, 0, 0, 0, 0, 0, 57255, 0, 0, 21292, 64487, 0, 0, 0, 0, 0, 0, 25802, 9189, 0, 0, 0, 0, 0, 49254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5837, 50023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15495, 0, 0, 0, 0, 0, 51942, 0, 0, 0, 0, 0, 0, 0, 0, 28104, 58662, 0, 50214, 0, 0, 0, 0, 0, 0, 0, 0, 2988, 0, 22888, 31812, 0, 0, 0, 0, 0, 2020, 0, 18916, 0, 0, 0, 0, 0, 0, 0, 23973, 0, 0, 0, 0, 17516, 11717, 0, 0, 0, 55911, 0, 0, 0, 0, 0, 0, 0, 2855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46822, 0, 24710, 28586, 0, 0, 0, 1556, 0, 0, 30117, 0, 0, 22090, 57127, 3403, 14087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1041, 0, 10633, 6916, 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, 27269, 0, 0, 13322, 18055, 0, 29380, 0, 56454, 0, 0, 120, 0, 0, 8773, 0, 0, 0, 0, 16040, 0, 0, 0, 0, 0, 0, 0, 27242, 23781, 0, 1572, 0, 28134, 0, 0, 1512, 0, 0, 0, 0, 0, 0, 27684, 0, 38470, 0, 0, 0, 0, 0, 0, 1513, 8709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46566, 0, 0, 0, 0, 28521, 61159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13028, 0, 5863, 0, 0, 15693, 0, 0, 0, 0, 0, 0, 0, 1131, 23398, 0, 0, 0, 0, 0, 0, 0, 26212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18404, 0, 0, 0, 0, 1457, 26183, 0, 0, 2475, 7110, 0, 0, 0, 0, 27180, 60166, 0, 0, 0, 20262, 0, 41862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28229, 0, 0, 0, 29254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27690, 0, 0, 13636, 12776, 1862, 0, 0, 0, 0, 0, 0, 17225, 3271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4457, 18117, 0, 2023, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 3654, 0, 0, 0, 0, 0, 0, 0, 0, 18440, 0, 0, 0, 0, 0, 0, 0, 0, 29861, 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, 22150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24074, 0, 0, 0, 0, 0, 0, 0, 0, 12004, 0, 32358, 0, 0, 3081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10792, 1799, 21322, 0, 7880, 12613, 0, 0, 0, 0, 0, 0, 0, 0, 13993, 0, 0, 0, 16202, 0, 0, 0, 0, 32102, 0, 37223, 0, 10500, 0, 0, 0, 0, 0, 0, 0, 0, 32008, 0, 0, 0, 0, 0, 23816, 3236, 0, 0, 0, 0, 0, 23237, 0, 0, 5642, 0, 4684, 294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26852, 0, 0, 0, 0, 0, 0, 7148, 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, 7890, 61798, 939, 0, 0, 56679, 0, 0, 0, 0, 0, 27078, 202, 5029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28005, 0, 0, 15273, 24741, 5676, 20452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55910, 0, 0, 0, 0, 5069, 27942, 0, 21092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21384, 28260, 0, 2502, 20108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46726, 0, 30790, 0, 0, 0, 0, 0, 14725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1099, 6372, 0, 0, 0, 12422, 15182, 0, 8683, 0, 10665, 19462, 0, 0, 0, 0, 0, 0, 1590, 0, 31628, 0, 22632, 19750, 0, 0, 0, 0, 0, 0, 0, 24198, 0, 0, 0, 0, 0, 50662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11015, 0, 0, 0, 0, 0, 0, 0, 0, 16490, 54695, 0, 0, 0, 0, 0, 0, 0, 0, 12937, 0, 0, 0, 0, 16004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2181, 6923, 0, 0, 0, 0, 0, 0, 0, 15624, 11302, 0, 0, 5673, 7559, 0, 0, 14668, 15684, 0, 0, 0, 0, 0, 0, 24204, 48134, 0, 24230, 0, 55527, 0, 0, 3464, 19141, 0, 0, 0, 0, ]; brotli-6.0.0/src/enc/encode.rs000075500000000000000000003414351046102023000142760ustar 00000000000000#![allow(dead_code)] use super::backward_references::{ AdvHashSpecialization, AdvHasher, AnyHasher, BasicHasher, BrotliCreateBackwardReferences, BrotliEncoderMode, BrotliEncoderParams, BrotliHasherParams, H2Sub, H3Sub, H4Sub, H54Sub, H5Sub, H6Sub, HQ5Sub, HQ7Sub, HowPrepared, StoreLookaheadThenStore, Struct1, UnionHasher, H9, H9_BLOCK_BITS, H9_BLOCK_SIZE, H9_BUCKET_BITS, H9_NUM_LAST_DISTANCES_TO_CHECK, }; use super::bit_cost::{BitsEntropy, ShannonEntropy}; #[allow(unused_imports)] use super::block_split::BlockSplit; #[allow(unused_imports)] use super::brotli_bit_stream::{ BrotliBuildAndStoreHuffmanTreeFast, BrotliStoreHuffmanTree, BrotliStoreMetaBlock, BrotliStoreMetaBlockFast, BrotliStoreMetaBlockTrivial, BrotliStoreUncompressedMetaBlock, BrotliWriteEmptyLastMetaBlock, BrotliWriteMetadataMetaBlock, JumpToByteBoundary, MetaBlockSplit, RecoderState, }; use super::combined_alloc::BrotliAlloc; use super::constants::{ BROTLI_CONTEXT, BROTLI_CONTEXT_LUT, BROTLI_MAX_NDIRECT, BROTLI_MAX_NPOSTFIX, BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS, BROTLI_WINDOW_GAP, }; use super::hash_to_binary_tree::InitializeH10; use super::interface; pub use super::parameters::BrotliEncoderParameter; use alloc::Allocator; use super::super::alloc::{SliceWrapper, SliceWrapperMut}; use super::command::{BrotliDistanceParams, Command, GetLengthCode}; use super::compress_fragment::BrotliCompressFragmentFast; use super::compress_fragment_two_pass::{BrotliCompressFragmentTwoPass, BrotliWriteBits}; #[allow(unused_imports)] use super::entropy_encode::{ BrotliConvertBitDepthsToSymbols, BrotliCreateHuffmanTree, HuffmanTree, }; use super::histogram::{ ContextType, CostAccessors, HistogramCommand, HistogramDistance, HistogramLiteral, }; use super::metablock::{ BrotliBuildMetaBlock, BrotliBuildMetaBlockGreedy, BrotliInitDistanceParams, BrotliOptimizeHistograms, }; use super::static_dict::{kNumDistanceCacheEntries, BrotliGetDictionary}; use super::utf8_util::BrotliIsMostlyUTF8; use super::util::Log2FloorNonZero; use core::cmp::{max, min}; use enc::input_pair::InputReferenceMut; //fn BrotliCreateHqZopfliBackwardReferences(m: &mut [MemoryManager], // dictionary: &[BrotliDictionary], // num_bytes: usize, // position: usize, // ringbuffer: &[u8], // ringbuffer_mask: usize, // params: &[BrotliEncoderParams], // hasher: &mut [u8], // dist_cache: &mut [i32], // last_insert_len: &mut [usize], // commands: &mut [Command], // num_commands: &mut [usize], // num_literals: &mut [usize]); //fn BrotliCreateZopfliBackwardReferences(m: &mut [MemoryManager], // dictionary: &[BrotliDictionary], // num_bytes: usize, // position: usize, // ringbuffer: &[u8], // ringbuffer_mask: usize, // params: &[BrotliEncoderParams], // hasher: &mut [u8], // dist_cache: &mut [i32], // last_insert_len: &mut [usize], // commands: &mut [Command], // num_commands: &mut [usize], // num_literals: &mut [usize]); //fn BrotliInitBlockSplit(xself: &mut BlockSplit); //fn BrotliInitMemoryManager(m: &mut [MemoryManager], // alloc_func: fn(&mut [::std::os::raw::c_void], usize) // -> *mut ::std::os::raw::c_void, // free_func: fn(*mut ::std::os::raw::c_void, // *mut ::std::os::raw::c_void), // opaque: *mut ::std::os::raw::c_void); //fn BrotliInitZopfliNodes(array: &mut [ZopfliNode], length: usize); //fn BrotliWipeOutMemoryManager(m: &mut [MemoryManager]); static kCompressFragmentTwoPassBlockSize: usize = (1i32 << 17) as usize; static kMinUTF8Ratio: super::util::floatX = 0.75 as super::util::floatX; pub struct RingBuffer> { pub size_: u32, pub mask_: u32, pub tail_size_: u32, pub total_size_: u32, pub cur_size_: u32, pub pos_: u32, pub data_mo: AllocU8::AllocatedMemory, pub buffer_index: usize, } #[derive(PartialEq, Eq, Copy, Clone)] #[repr(i32)] pub enum BrotliEncoderStreamState { BROTLI_STREAM_PROCESSING = 0, BROTLI_STREAM_FLUSH_REQUESTED = 1, BROTLI_STREAM_FINISHED = 2, BROTLI_STREAM_METADATA_HEAD = 3, BROTLI_STREAM_METADATA_BODY = 4, } #[derive(Clone, Copy, Debug)] enum NextOut { DynamicStorage(u32), TinyBuf(u32), None, } fn GetNextOutInternal<'a>( next_out: &NextOut, storage: &'a mut [u8], tiny_buf: &'a mut [u8; 16], ) -> &'a mut [u8] { match next_out { &NextOut::DynamicStorage(offset) => &mut storage[offset as usize..], &NextOut::TinyBuf(offset) => &mut tiny_buf[offset as usize..], &NextOut::None => &mut [], } } macro_rules! GetNextOut { ($s : expr) => { GetNextOutInternal(&$s.next_out_, $s.storage_.slice_mut(), &mut $s.tiny_buf_) }; } fn NextOutIncrement(next_out: &NextOut, inc: i32) -> NextOut { match next_out { &NextOut::DynamicStorage(offset) => NextOut::DynamicStorage((offset as i32 + inc) as u32), &NextOut::TinyBuf(offset) => NextOut::TinyBuf((offset as i32 + inc) as u32), &NextOut::None => NextOut::None, } } fn IsNextOutNull(next_out: &NextOut) -> bool { match next_out { &NextOut::DynamicStorage(_) => false, &NextOut::TinyBuf(_) => false, &NextOut::None => true, } } #[derive(Clone, Copy, Debug)] pub enum IsFirst { NothingWritten, HeaderWritten, FirstCatableByteWritten, BothCatableBytesWritten, } pub struct BrotliEncoderStateStruct { pub params: BrotliEncoderParams, pub m8: Alloc, pub hasher_: UnionHasher, pub input_pos_: u64, pub ringbuffer_: RingBuffer, pub cmd_alloc_size_: usize, pub commands_: >::AllocatedMemory, // not sure about this one pub num_commands_: usize, pub num_literals_: usize, pub last_insert_len_: usize, pub last_flush_pos_: u64, pub last_processed_pos_: u64, pub dist_cache_: [i32; 16], pub saved_dist_cache_: [i32; kNumDistanceCacheEntries], pub last_bytes_: u16, pub last_bytes_bits_: u8, pub prev_byte_: u8, pub prev_byte2_: u8, pub storage_size_: usize, pub storage_: >::AllocatedMemory, pub small_table_: [i32; 1024], pub large_table_: >::AllocatedMemory, // pub large_table_size_: usize, // <-- get this by doing large_table_.len() pub cmd_depths_: [u8; 128], pub cmd_bits_: [u16; 128], pub cmd_code_: [u8; 512], pub cmd_code_numbits_: usize, pub command_buf_: >::AllocatedMemory, pub literal_buf_: >::AllocatedMemory, next_out_: NextOut, pub available_out_: usize, pub total_out_: u64, pub tiny_buf_: [u8; 16], pub remaining_metadata_bytes_: u32, pub stream_state_: BrotliEncoderStreamState, pub is_last_block_emitted_: bool, pub is_initialized_: bool, pub is_first_mb: IsFirst, pub literal_scratch_space: ::i32vec, pub command_scratch_space: ::i32vec, pub distance_scratch_space: ::i32vec, pub recoder_state: RecoderState, custom_dictionary: bool, } pub fn set_parameter( params: &mut BrotliEncoderParams, p: BrotliEncoderParameter, value: u32, ) -> bool { use crate::enc::parameters::BrotliEncoderParameter::*; match p { BROTLI_PARAM_MODE => { params.mode = match value { 0 => BrotliEncoderMode::BROTLI_MODE_GENERIC, 1 => BrotliEncoderMode::BROTLI_MODE_TEXT, 2 => BrotliEncoderMode::BROTLI_MODE_FONT, 3 => BrotliEncoderMode::BROTLI_FORCE_LSB_PRIOR, 4 => BrotliEncoderMode::BROTLI_FORCE_MSB_PRIOR, 5 => BrotliEncoderMode::BROTLI_FORCE_UTF8_PRIOR, 6 => BrotliEncoderMode::BROTLI_FORCE_SIGNED_PRIOR, _ => BrotliEncoderMode::BROTLI_MODE_GENERIC, }; } BROTLI_PARAM_QUALITY => params.quality = value as i32, BROTLI_PARAM_STRIDE_DETECTION_QUALITY => params.stride_detection_quality = value as u8, BROTLI_PARAM_HIGH_ENTROPY_DETECTION_QUALITY => { params.high_entropy_detection_quality = value as u8 } BROTLI_PARAM_CDF_ADAPTATION_DETECTION => params.cdf_adaptation_detection = value as u8, BROTLI_PARAM_Q9_5 => params.q9_5 = (value != 0), BROTLI_PARAM_PRIOR_BITMASK_DETECTION => params.prior_bitmask_detection = value as u8, BROTLI_PARAM_SPEED => { params.literal_adaptation[1].0 = value as u16; if params.literal_adaptation[0] == (0, 0) { params.literal_adaptation[0].0 = value as u16; } } BROTLI_PARAM_SPEED_MAX => { params.literal_adaptation[1].1 = value as u16; if params.literal_adaptation[0].1 == 0 { params.literal_adaptation[0].1 = value as u16; } } BROTLI_PARAM_CM_SPEED => { params.literal_adaptation[3].0 = value as u16; if params.literal_adaptation[2] == (0, 0) { params.literal_adaptation[2].0 = value as u16; } } BROTLI_PARAM_CM_SPEED_MAX => { params.literal_adaptation[3].1 = value as u16; if params.literal_adaptation[2].1 == 0 { params.literal_adaptation[2].1 = value as u16; } } BROTLI_PARAM_SPEED_LOW => params.literal_adaptation[0].0 = value as u16, BROTLI_PARAM_SPEED_LOW_MAX => params.literal_adaptation[0].1 = value as u16, BROTLI_PARAM_CM_SPEED_LOW => params.literal_adaptation[2].0 = value as u16, BROTLI_PARAM_CM_SPEED_LOW_MAX => params.literal_adaptation[2].1 = value as u16, BROTLI_PARAM_LITERAL_BYTE_SCORE => params.hasher.literal_byte_score = value as i32, BROTLI_METABLOCK_CALLBACK => params.log_meta_block = value != 0, BROTLI_PARAM_LGWIN => params.lgwin = value as i32, BROTLI_PARAM_LGBLOCK => params.lgblock = value as i32, BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING => { if value != 0 && value != 1 { return false; } params.disable_literal_context_modeling = if value != 0 { 1 } else { 0 }; } BROTLI_PARAM_SIZE_HINT => params.size_hint = value as usize, BROTLI_PARAM_LARGE_WINDOW => params.large_window = value != 0, BROTLI_PARAM_AVOID_DISTANCE_PREFIX_SEARCH => { params.avoid_distance_prefix_search = value != 0 } BROTLI_PARAM_CATABLE => { params.catable = value != 0; if !params.appendable { params.appendable = value != 0; } params.use_dictionary = (value == 0); } BROTLI_PARAM_APPENDABLE => params.appendable = value != 0, BROTLI_PARAM_MAGIC_NUMBER => params.magic_number = value != 0, BROTLI_PARAM_FAVOR_EFFICIENCY => params.favor_cpu_efficiency = value != 0, _ => return false, } true } impl BrotliEncoderStateStruct { pub fn set_parameter(&mut self, p: BrotliEncoderParameter, value: u32) -> bool { if self.is_initialized_ { false } else { set_parameter(&mut self.params, p, value) } } } /* "Large Window Brotli" */ pub const BROTLI_LARGE_MAX_DISTANCE_BITS: u32 = 62; pub const BROTLI_LARGE_MIN_WBITS: u32 = 10; pub const BROTLI_LARGE_MAX_WBITS: u32 = 30; pub const BROTLI_MAX_DISTANCE_BITS: u32 = 24; pub const BROTLI_MAX_WINDOW_BITS: usize = BROTLI_MAX_DISTANCE_BITS as usize; pub const BROTLI_MAX_DISTANCE: usize = 0x03ff_fffc; pub const BROTLI_MAX_ALLOWED_DISTANCE: usize = 0x07ff_fffc; pub const BROTLI_NUM_DISTANCE_SHORT_CODES: u32 = 16; pub fn BROTLI_DISTANCE_ALPHABET_SIZE(NPOSTFIX: u32, NDIRECT: u32, MAXNBITS: u32) -> u32 { BROTLI_NUM_DISTANCE_SHORT_CODES + (NDIRECT) + ((MAXNBITS) << ((NPOSTFIX) + 1)) } //#define BROTLI_NUM_DISTANCE_SYMBOLS \ // BROTLI_DISTANCE_ALPHABET_SIZE( \ // BROTLI_MAX_NDIRECT, BROTLI_MAX_NPOSTFIX, BROTLI_LARGE_MAX_DISTANCE_BITS) pub const BROTLI_NUM_DISTANCE_SYMBOLS: usize = 1128; pub fn BrotliEncoderInitParams() -> BrotliEncoderParams { BrotliEncoderParams { dist: BrotliDistanceParams { distance_postfix_bits: 0, num_direct_distance_codes: 0, alphabet_size: BROTLI_DISTANCE_ALPHABET_SIZE(0, 0, BROTLI_MAX_DISTANCE_BITS), max_distance: BROTLI_MAX_DISTANCE, }, mode: BrotliEncoderMode::BROTLI_MODE_GENERIC, log_meta_block: false, large_window: false, avoid_distance_prefix_search: false, quality: 11, q9_5: false, lgwin: 22i32, lgblock: 0i32, size_hint: 0usize, disable_literal_context_modeling: 0i32, stride_detection_quality: 0, high_entropy_detection_quality: 0, cdf_adaptation_detection: 0, prior_bitmask_detection: 0, literal_adaptation: [(0, 0); 4], catable: false, use_dictionary: true, appendable: false, magic_number: false, favor_cpu_efficiency: false, hasher: BrotliHasherParams { type_: 6, block_bits: 9 - 1, bucket_bits: 15, hash_len: 5, num_last_distances_to_check: 16, literal_byte_score: 0, }, } } impl BrotliEncoderStateStruct { fn extend_last_command(&mut self, bytes: &mut u32, wrapped_last_processed_pos: &mut u32) { let last_command = &mut self.commands_.slice_mut()[self.num_commands_ - 1]; let mask = self.ringbuffer_.mask_; let max_backward_distance: u64 = (1u64 << self.params.lgwin) - BROTLI_WINDOW_GAP as u64; let last_copy_len = u64::from(last_command.copy_len_) & 0x01ff_ffff; let last_processed_pos: u64 = self.last_processed_pos_ - last_copy_len; let max_distance: u64 = if last_processed_pos < max_backward_distance { last_processed_pos } else { max_backward_distance }; let cmd_dist: u64 = self.dist_cache_[0] as u64; let distance_code: u32 = last_command.restore_distance_code(&self.params.dist); if (distance_code < BROTLI_NUM_DISTANCE_SHORT_CODES || distance_code as u64 - (BROTLI_NUM_DISTANCE_SHORT_CODES - 1) as u64 == cmd_dist) { if (cmd_dist <= max_distance) { while (*bytes != 0 && self.ringbuffer_.data_mo.slice()[self.ringbuffer_.buffer_index + (*wrapped_last_processed_pos as usize & mask as usize)] == self.ringbuffer_.data_mo.slice()[self.ringbuffer_.buffer_index + (((*wrapped_last_processed_pos as usize) .wrapping_sub(cmd_dist as usize)) & mask as usize)]) { last_command.copy_len_ += 1; (*bytes) -= 1; (*wrapped_last_processed_pos) += 1; } } /* The copy length is at most the metablock size, and thus expressible. */ GetLengthCode( last_command.insert_len_ as usize, ((last_command.copy_len_ & 0x01ff_ffff) as i32 + (last_command.copy_len_ >> 25) as i32) as usize, ((last_command.dist_prefix_ & 0x03ff) == 0) as i32, &mut last_command.cmd_prefix_, ); } } } fn RingBufferInit>() -> RingBuffer { RingBuffer { size_: 0, mask_: 0, // 0xff?? tail_size_: 0, total_size_: 0, cur_size_: 0, pos_: 0, data_mo: AllocU8::AllocatedMemory::default(), buffer_index: 0usize, } } impl BrotliEncoderStateStruct { pub fn new(m8: Alloc) -> Self { let cache: [i32; 16] = [4, 11, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; Self { params: BrotliEncoderInitParams(), input_pos_: 0, num_commands_: 0, num_literals_: 0, last_insert_len_: 0, last_flush_pos_: 0, last_processed_pos_: 0, prev_byte_: 0, prev_byte2_: 0, storage_size_: 0, storage_: >::AllocatedMemory::default(), hasher_: UnionHasher::::default(), large_table_: >::AllocatedMemory::default(), // large_table_size_: 0, cmd_code_numbits_: 0, command_buf_: >::AllocatedMemory::default(), literal_buf_: >::AllocatedMemory::default(), next_out_: NextOut::None, available_out_: 0, total_out_: 0, is_first_mb: IsFirst::NothingWritten, stream_state_: BrotliEncoderStreamState::BROTLI_STREAM_PROCESSING, is_last_block_emitted_: false, is_initialized_: false, ringbuffer_: RingBufferInit(), commands_: >::AllocatedMemory::default(), cmd_alloc_size_: 0, dist_cache_: cache, saved_dist_cache_: [cache[0], cache[1], cache[2], cache[3]], cmd_bits_: [0; 128], cmd_depths_: [0; 128], last_bytes_: 0, last_bytes_bits_: 0, cmd_code_: [0; 512], m8, remaining_metadata_bytes_: 0, small_table_: [0; 1024], tiny_buf_: [0; 16], literal_scratch_space: HistogramLiteral::make_nnz_storage(), command_scratch_space: HistogramCommand::make_nnz_storage(), distance_scratch_space: HistogramDistance::make_nnz_storage(), recoder_state: RecoderState::new(), custom_dictionary: false, } } } fn RingBufferFree>(m: &mut AllocU8, rb: &mut RingBuffer) { m.free_cell(core::mem::take(&mut rb.data_mo)); } fn DestroyHasher + alloc::Allocator>( m16: &mut Alloc, handle: &mut UnionHasher, ) { handle.free(m16); } /* fn DestroyHasher, AllocU32:alloc::Allocator>( m16: &mut AllocU16, m32:&mut AllocU32, handle: &mut UnionHasher){ match handle { &mut UnionHasher::H2(ref mut hasher) => { m32.free_cell(core::mem::replace(&mut hasher.buckets_.buckets_, >::AllocatedMemory::default())); } &mut UnionHasher::H3(ref mut hasher) => { m32.free_cell(core::mem::replace(&mut hasher.buckets_.buckets_, >::AllocatedMemory::default())); } &mut UnionHasher::H4(ref mut hasher) => { m32.free_cell(core::mem::replace(&mut hasher.buckets_.buckets_, >::AllocatedMemory::default())); } &mut UnionHasher::H54(ref mut hasher) => { m32.free_cell(core::mem::replace(&mut hasher.buckets_.buckets_, >::AllocatedMemory::default())); } &mut UnionHasher::H5(ref mut hasher) => { m16.free_cell(core::mem::replace(&mut hasher.num, AllocU16::AllocatedMemory::default())); m32.free_cell(core::mem::replace(&mut hasher.buckets, >::AllocatedMemory::default())); } &mut UnionHasher::H6(ref mut hasher) => { m16.free_cell(core::mem::replace(&mut hasher.num, AllocU16::AllocatedMemory::default())); m32.free_cell(core::mem::replace(&mut hasher.buckets, >::AllocatedMemory::default())); } &mut UnionHasher::H9(ref mut hasher) => { m16.free_cell(core::mem::replace(&mut hasher.num_, AllocU16::AllocatedMemory::default())); m32.free_cell(core::mem::replace(&mut hasher.buckets_, >::AllocatedMemory::default())); } _ => {} } *handle = UnionHasher::::default(); } */ impl BrotliEncoderStateStruct { fn cleanup(&mut self) { >::free_cell(&mut self.m8, core::mem::take(&mut self.storage_)); >::free_cell( &mut self.m8, core::mem::take(&mut self.commands_), ); RingBufferFree(&mut self.m8, &mut self.ringbuffer_); DestroyHasher(&mut self.m8, &mut self.hasher_); >::free_cell(&mut self.m8, core::mem::take(&mut self.large_table_)); >::free_cell(&mut self.m8, core::mem::take(&mut self.command_buf_)); >::free_cell(&mut self.m8, core::mem::take(&mut self.literal_buf_)); } } // TODO: use drop trait instead // impl Drop for BrotliEncoderStateStruct { // fn drop(&mut self) { // self.cleanup() // } // } pub fn BrotliEncoderDestroyInstance(s: &mut BrotliEncoderStateStruct) { s.cleanup() } #[cfg(not(feature = "disallow_large_window_size"))] fn check_large_window_ok() -> bool { true } #[cfg(feature = "disallow_large_window_size")] fn check_large_window_ok() -> bool { false } pub fn SanitizeParams(params: &mut BrotliEncoderParams) { params.quality = min(11i32, max(0i32, params.quality)); if params.lgwin < 10i32 { params.lgwin = 10i32; } else if params.lgwin > 24i32 { if params.large_window && check_large_window_ok() { if params.lgwin > 30i32 { params.lgwin = 30i32; } } else { params.lgwin = 24i32; } } if params.catable { params.appendable = true; } } fn ComputeLgBlock(params: &BrotliEncoderParams) -> i32 { let mut lgblock: i32 = params.lgblock; if params.quality == 0i32 || params.quality == 1i32 { lgblock = params.lgwin; } else if params.quality < 4i32 { lgblock = 14i32; } else if lgblock == 0i32 { lgblock = 16i32; if params.quality >= 9i32 && (params.lgwin > lgblock) { lgblock = min(18i32, params.lgwin); } } else { lgblock = min(24i32, max(16i32, lgblock)); } lgblock } fn ComputeRbBits(params: &BrotliEncoderParams) -> i32 { 1i32 + max(params.lgwin, params.lgblock) } fn RingBufferSetup>( params: &BrotliEncoderParams, rb: &mut RingBuffer, ) { let window_bits: i32 = ComputeRbBits(params); let tail_bits: i32 = params.lgblock; rb.size_ = 1u32 << window_bits; rb.mask_ = (1u32 << window_bits).wrapping_sub(1); rb.tail_size_ = 1u32 << tail_bits; rb.total_size_ = rb.size_.wrapping_add(rb.tail_size_); } fn EncodeWindowBits( lgwin: i32, large_window: bool, last_bytes: &mut u16, last_bytes_bits: &mut u8, ) { if large_window { *last_bytes = (((lgwin & 0x3F) << 8) | 0x11) as u16; *last_bytes_bits = 14; } else if lgwin == 16i32 { *last_bytes = 0u16; *last_bytes_bits = 1u8; } else if lgwin == 17i32 { *last_bytes = 1u16; *last_bytes_bits = 7u8; } else if lgwin > 17i32 { *last_bytes = ((lgwin - 17i32) << 1 | 1i32) as u16; *last_bytes_bits = 4u8; } else { *last_bytes = ((lgwin - 8i32) << 4 | 1i32) as u16; *last_bytes_bits = 7u8; } } fn InitCommandPrefixCodes( cmd_depths: &mut [u8], cmd_bits: &mut [u16], cmd_code: &mut [u8], cmd_code_numbits: &mut usize, ) { static kDefaultCommandDepths: [u8; 128] = [ 0, 4, 4, 5, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 0, 0, 0, 4, 4, 4, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 10, 10, 10, 10, 10, 10, 0, 4, 4, 5, 5, 5, 6, 6, 7, 8, 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, ]; static kDefaultCommandBits: [u16; 128] = [ 0, 0, 8, 9, 3, 35, 7, 71, 39, 103, 23, 47, 175, 111, 239, 31, 0, 0, 0, 4, 12, 2, 10, 6, 13, 29, 11, 43, 27, 59, 87, 55, 15, 79, 319, 831, 191, 703, 447, 959, 0, 14, 1, 25, 5, 21, 19, 51, 119, 159, 95, 223, 479, 991, 63, 575, 127, 639, 383, 895, 255, 767, 511, 1023, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 59, 7, 39, 23, 55, 30, 1, 17, 9, 25, 5, 0, 8, 4, 12, 2, 10, 6, 21, 13, 29, 3, 19, 11, 15, 47, 31, 95, 63, 127, 255, 767, 2815, 1791, 3839, 511, 2559, 1535, 3583, 1023, 3071, 2047, 4095, 0, 0, 0, 0, ]; static kDefaultCommandCode: [u8; 57] = [ 0xff, 0x77, 0xd5, 0xbf, 0xe7, 0xde, 0xea, 0x9e, 0x51, 0x5d, 0xde, 0xc6, 0x70, 0x57, 0xbc, 0x58, 0x58, 0x58, 0xd8, 0xd8, 0x58, 0xd5, 0xcb, 0x8c, 0xea, 0xe0, 0xc3, 0x87, 0x1f, 0x83, 0xc1, 0x60, 0x1c, 0x67, 0xb2, 0xaa, 0x6, 0x83, 0xc1, 0x60, 0x30, 0x18, 0xcc, 0xa1, 0xce, 0x88, 0x54, 0x94, 0x46, 0xe1, 0xb0, 0xd0, 0x4e, 0xb2, 0xf7, 0x4, 0x0, ]; static kDefaultCommandCodeNumBits: usize = 448usize; cmd_depths[..].clone_from_slice(&kDefaultCommandDepths[..]); cmd_bits[..].clone_from_slice(&kDefaultCommandBits[..]); cmd_code[..kDefaultCommandCode.len()].clone_from_slice(&kDefaultCommandCode[..]); *cmd_code_numbits = kDefaultCommandCodeNumBits; } impl BrotliEncoderStateStruct { fn ensure_initialized(&mut self) -> bool { if self.is_initialized_ { return true; } SanitizeParams(&mut self.params); self.params.lgblock = ComputeLgBlock(&mut self.params); ChooseDistanceParams(&mut self.params); self.remaining_metadata_bytes_ = !(0u32); RingBufferSetup(&mut self.params, &mut self.ringbuffer_); { let mut lgwin: i32 = self.params.lgwin; if self.params.quality == 0i32 || self.params.quality == 1i32 { lgwin = max(lgwin, 18i32); } EncodeWindowBits( lgwin, self.params.large_window, &mut self.last_bytes_, &mut self.last_bytes_bits_, ); } if self.params.quality == 0i32 { InitCommandPrefixCodes( &mut self.cmd_depths_[..], &mut self.cmd_bits_[..], &mut self.cmd_code_[..], &mut self.cmd_code_numbits_, ); } if self.params.catable { // if we want to properly concatenate, then we need to ignore any distances // this value 0x7ffffff0 was chosen to be larger than max_distance + gap // but small enough so that +/-3 will not overflow (due to distance modifications) for item in self.dist_cache_.iter_mut() { *item = 0x7ffffff0; } for item in self.saved_dist_cache_.iter_mut() { *item = 0x7ffffff0; } } self.is_initialized_ = true; true } } fn RingBufferInitBuffer>( m: &mut AllocU8, buflen: u32, rb: &mut RingBuffer, ) { static kSlackForEightByteHashingEverywhere: usize = 7usize; let mut new_data = m.alloc_cell( ((2u32).wrapping_add(buflen) as usize).wrapping_add(kSlackForEightByteHashingEverywhere), ); if !rb.data_mo.slice().is_empty() { let lim: usize = ((2u32).wrapping_add(rb.cur_size_) as usize) .wrapping_add(kSlackForEightByteHashingEverywhere); new_data.slice_mut()[..lim].clone_from_slice(&rb.data_mo.slice()[..lim]); m.free_cell(core::mem::take(&mut rb.data_mo)); } let _ = core::mem::replace(&mut rb.data_mo, new_data); rb.cur_size_ = buflen; rb.buffer_index = 2usize; rb.data_mo.slice_mut()[(rb.buffer_index.wrapping_sub(2))] = 0; rb.data_mo.slice_mut()[(rb.buffer_index.wrapping_sub(1))] = 0; for i in 0usize..kSlackForEightByteHashingEverywhere { rb.data_mo.slice_mut()[rb .buffer_index .wrapping_add(rb.cur_size_ as usize) .wrapping_add(i)] = 0; } } fn RingBufferWriteTail>( bytes: &[u8], n: usize, rb: &mut RingBuffer, ) { let masked_pos: usize = (rb.pos_ & rb.mask_) as usize; if masked_pos < rb.tail_size_ as usize { let p: usize = (rb.size_ as usize).wrapping_add(masked_pos); let begin = rb.buffer_index.wrapping_add(p); let lim = min(n, (rb.tail_size_ as usize).wrapping_sub(masked_pos)); rb.data_mo.slice_mut()[begin..(begin + lim)].clone_from_slice(&bytes[..lim]); } } fn RingBufferWrite>( m: &mut AllocU8, bytes: &[u8], n: usize, rb: &mut RingBuffer, ) { if rb.pos_ == 0u32 && (n < rb.tail_size_ as usize) { rb.pos_ = n as u32; RingBufferInitBuffer(m, rb.pos_, rb); rb.data_mo.slice_mut()[rb.buffer_index..(rb.buffer_index + n)] .clone_from_slice(&bytes[..n]); return; } if rb.cur_size_ < rb.total_size_ { RingBufferInitBuffer(m, rb.total_size_, rb); if !(0i32 == 0) { return; } rb.data_mo.slice_mut()[rb .buffer_index .wrapping_add(rb.size_ as usize) .wrapping_sub(2)] = 0u8; rb.data_mo.slice_mut()[rb .buffer_index .wrapping_add(rb.size_ as usize) .wrapping_sub(1)] = 0u8; } { let masked_pos: usize = (rb.pos_ & rb.mask_) as usize; RingBufferWriteTail(bytes, n, rb); if masked_pos.wrapping_add(n) <= rb.size_ as usize { // a single write fits let start = rb.buffer_index.wrapping_add(masked_pos); rb.data_mo.slice_mut()[start..(start + n)].clone_from_slice(&bytes[..n]); } else { { let start = rb.buffer_index.wrapping_add(masked_pos); let mid = min(n, (rb.total_size_ as usize).wrapping_sub(masked_pos)); rb.data_mo.slice_mut()[start..(start + mid)].clone_from_slice(&bytes[..mid]); } let xstart = rb.buffer_index.wrapping_add(0); let size = n.wrapping_sub((rb.size_ as usize).wrapping_sub(masked_pos)); let bytes_start = (rb.size_ as usize).wrapping_sub(masked_pos); rb.data_mo.slice_mut()[xstart..(xstart + size)] .clone_from_slice(&bytes[bytes_start..(bytes_start + size)]); } } let data_2 = rb.data_mo.slice()[rb .buffer_index .wrapping_add(rb.size_ as usize) .wrapping_sub(2)]; rb.data_mo.slice_mut()[rb.buffer_index.wrapping_sub(2)] = data_2; let data_1 = rb.data_mo.slice()[rb .buffer_index .wrapping_add(rb.size_ as usize) .wrapping_sub(1)]; rb.data_mo.slice_mut()[rb.buffer_index.wrapping_sub(1)] = data_1; rb.pos_ = rb.pos_.wrapping_add(n as u32); if rb.pos_ > 1u32 << 30 { rb.pos_ = rb.pos_ & (1u32 << 30).wrapping_sub(1) | 1u32 << 30; } } impl BrotliEncoderStateStruct { pub fn copy_input_to_ring_buffer(&mut self, input_size: usize, input_buffer: &[u8]) { if !self.ensure_initialized() { return; } RingBufferWrite( &mut self.m8, input_buffer, input_size, &mut self.ringbuffer_, ); self.input_pos_ = self.input_pos_.wrapping_add(input_size as u64); if (self.ringbuffer_).pos_ <= (self.ringbuffer_).mask_ { let start = (self.ringbuffer_) .buffer_index .wrapping_add((self.ringbuffer_).pos_ as usize); for item in (self.ringbuffer_).data_mo.slice_mut()[start..(start + 7)].iter_mut() { *item = 0; } } } } fn ChooseHasher(params: &mut BrotliEncoderParams) { let hparams = &mut params.hasher; if params.quality >= 10 && !params.q9_5 { hparams.type_ = 10; } else if params.quality == 10 { // we are using quality 10 as a proxy for "9.5" hparams.type_ = 9; hparams.num_last_distances_to_check = H9_NUM_LAST_DISTANCES_TO_CHECK as i32; hparams.block_bits = H9_BLOCK_BITS as i32; hparams.bucket_bits = H9_BUCKET_BITS as i32; hparams.hash_len = 4; } else if params.quality == 9 { hparams.type_ = 9; hparams.num_last_distances_to_check = H9_NUM_LAST_DISTANCES_TO_CHECK as i32; hparams.block_bits = H9_BLOCK_BITS as i32; hparams.bucket_bits = H9_BUCKET_BITS as i32; hparams.hash_len = 4; } else if params.quality == 4 && (params.size_hint >= (1i32 << 20) as usize) { hparams.type_ = 54i32; } else if params.quality < 5 { hparams.type_ = params.quality; } else if params.lgwin <= 16 { hparams.type_ = if params.quality < 7 { 40i32 } else if params.quality < 9 { 41i32 } else { 42i32 }; } else if ((params.q9_5 && params.size_hint > (1 << 20)) || params.size_hint > (1 << 22)) && (params.lgwin >= 19i32) { hparams.type_ = 6i32; hparams.block_bits = min(params.quality - 1, 9); hparams.bucket_bits = 15i32; hparams.hash_len = 5i32; hparams.num_last_distances_to_check = if params.quality < 7 { 4i32 } else if params.quality < 9 { 10i32 } else { 16i32 }; } else { hparams.type_ = 5i32; hparams.block_bits = min(params.quality - 1, 9); hparams.bucket_bits = if params.quality < 7 && params.size_hint <= (1 << 20) { 14i32 } else { 15i32 }; hparams.num_last_distances_to_check = if params.quality < 7 { 4i32 } else if params.quality < 9 { 10i32 } else { 16i32 }; } } fn InitializeH2>( m32: &mut AllocU32, params: &BrotliEncoderParams, ) -> BasicHasher> { BasicHasher { GetHasherCommon: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, buckets_: H2Sub { buckets_: m32.alloc_cell(65537 + 8), }, h9_opts: super::backward_references::H9Opts::new(¶ms.hasher), } } fn InitializeH3>( m32: &mut AllocU32, params: &BrotliEncoderParams, ) -> BasicHasher> { BasicHasher { GetHasherCommon: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, buckets_: H3Sub { buckets_: m32.alloc_cell(65538 + 8), }, h9_opts: super::backward_references::H9Opts::new(¶ms.hasher), } } fn InitializeH4>( m32: &mut AllocU32, params: &BrotliEncoderParams, ) -> BasicHasher> { BasicHasher { GetHasherCommon: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, buckets_: H4Sub { buckets_: m32.alloc_cell(131072 + 8), }, h9_opts: super::backward_references::H9Opts::new(¶ms.hasher), } } fn InitializeH54>( m32: &mut AllocU32, params: &BrotliEncoderParams, ) -> BasicHasher> { BasicHasher { GetHasherCommon: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, buckets_: H54Sub { buckets_: m32.alloc_cell(1048580 + 8), }, h9_opts: super::backward_references::H9Opts::new(¶ms.hasher), } } fn InitializeH9 + alloc::Allocator>( m16: &mut Alloc, params: &BrotliEncoderParams, ) -> H9 { H9 { dict_search_stats_: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, num_: >::alloc_cell(m16, 1 << H9_BUCKET_BITS), buckets_: >::alloc_cell(m16, H9_BLOCK_SIZE << H9_BUCKET_BITS), h9_opts: super::backward_references::H9Opts::new(¶ms.hasher), } } fn InitializeH5 + alloc::Allocator>( m16: &mut Alloc, params: &BrotliEncoderParams, ) -> UnionHasher { let block_size = 1u64 << params.hasher.block_bits; let bucket_size = 1u64 << params.hasher.bucket_bits; let buckets: >::AllocatedMemory = >::alloc_cell(m16, (bucket_size * block_size) as usize); let num: >::AllocatedMemory = >::alloc_cell(m16, bucket_size as usize); if params.hasher.block_bits == (HQ5Sub {}).block_bits() && (1 << params.hasher.bucket_bits) == (HQ5Sub {}).bucket_size() { return UnionHasher::H5q5(AdvHasher { buckets, h9_opts: super::backward_references::H9Opts::new(¶ms.hasher), num, GetHasherCommon: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: HQ5Sub {}, }); } if params.hasher.block_bits == (HQ7Sub {}).block_bits() && (1 << params.hasher.bucket_bits) == (HQ7Sub {}).bucket_size() { return UnionHasher::H5q7(AdvHasher { buckets, h9_opts: super::backward_references::H9Opts::new(¶ms.hasher), num, GetHasherCommon: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: HQ7Sub {}, }); } UnionHasher::H5(AdvHasher { buckets, h9_opts: super::backward_references::H9Opts::new(¶ms.hasher), num, GetHasherCommon: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: H5Sub { hash_shift_: 32i32 - params.hasher.bucket_bits, bucket_size_: bucket_size as u32, block_bits_: params.hasher.block_bits, block_mask_: block_size.wrapping_sub(1) as u32, }, }) } fn InitializeH6 + alloc::Allocator>( m16: &mut Alloc, params: &BrotliEncoderParams, ) -> UnionHasher { let block_size = 1u64 << params.hasher.block_bits; let bucket_size = 1u64 << params.hasher.bucket_bits; let buckets: >::AllocatedMemory = >::alloc_cell(m16, (bucket_size * block_size) as usize); let num: >::AllocatedMemory = >::alloc_cell(m16, bucket_size as usize); UnionHasher::H6(AdvHasher { buckets, num, h9_opts: super::backward_references::H9Opts::new(¶ms.hasher), GetHasherCommon: Struct1 { params: params.hasher, is_prepared_: 1, dict_num_lookups: 0, dict_num_matches: 0, }, specialization: H6Sub { bucket_size_: 1u32 << params.hasher.bucket_bits, block_bits_: params.hasher.block_bits, block_mask_: block_size.wrapping_sub(1) as u32, hash_mask: 0xffffffffffffffffu64 >> (64i32 - 8i32 * params.hasher.hash_len), hash_shift_: 64i32 - params.hasher.bucket_bits, }, }) } fn BrotliMakeHasher + alloc::Allocator>( m: &mut Alloc, params: &BrotliEncoderParams, ) -> UnionHasher { let hasher_type: i32 = params.hasher.type_; if hasher_type == 2i32 { return UnionHasher::H2(InitializeH2(m, params)); } if hasher_type == 3i32 { return UnionHasher::H3(InitializeH3(m, params)); } if hasher_type == 4i32 { return UnionHasher::H4(InitializeH4(m, params)); } if hasher_type == 5i32 { return InitializeH5(m, params); } if hasher_type == 6i32 { return InitializeH6(m, params); } if hasher_type == 9i32 { return UnionHasher::H9(InitializeH9(m, params)); } /* if hasher_type == 40i32 { return InitializeH40(params); } if hasher_type == 41i32 { return InitializeH41(params); } if hasher_type == 42i32 { return InitializeH42(params); } */ if hasher_type == 54i32 { return UnionHasher::H54(InitializeH54(m, params)); } if hasher_type == 10i32 { return UnionHasher::H10(InitializeH10(m, false, params, 0)); } // since we don't support all of these, fall back to something sane InitializeH6(m, params) // return UnionHasher::Uninit; } fn HasherReset + alloc::Allocator>(t: &mut UnionHasher) { match t { &mut UnionHasher::Uninit => {} _ => (t.GetHasherCommon()).is_prepared_ = 0i32, }; } fn GetHasherCommon + alloc::Allocator>( t: &mut UnionHasher, ) -> &mut Struct1 { t.GetHasherCommon() } pub fn HasherSetup + alloc::Allocator>( m16: &mut Alloc, handle: &mut UnionHasher, params: &mut BrotliEncoderParams, data: &[u8], position: usize, input_size: usize, is_last: i32, ) { let one_shot: i32 = (position == 0usize && (is_last != 0)) as i32; let is_uninit = match (handle) { &mut UnionHasher::Uninit => true, _ => false, }; if is_uninit { //let alloc_size: usize; ChooseHasher(&mut (*params)); //alloc_size = HasherSize(params, one_shot, input_size); //xself = BrotliAllocate(m, alloc_size.wrapping_mul(::core::mem::size_of::())) *handle = BrotliMakeHasher(m16, params); handle.GetHasherCommon().params = params.hasher; HasherReset(handle); // this sets everything to zero, unlike in C handle.GetHasherCommon().is_prepared_ = 1; } else { match handle.Prepare(one_shot != 0, input_size, data) { HowPrepared::ALREADY_PREPARED => {} HowPrepared::NEWLY_PREPARED => { if position == 0usize { let common = handle.GetHasherCommon(); common.dict_num_lookups = 0usize; common.dict_num_matches = 0usize; } } } } } fn HasherPrependCustomDictionary + alloc::Allocator>( m: &mut Alloc, handle: &mut UnionHasher, params: &mut BrotliEncoderParams, size: usize, dict: &[u8], ) { HasherSetup(m, handle, params, dict, 0usize, size, 0i32); match handle { &mut UnionHasher::H2(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::H3(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::H4(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::H5(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::H5q7(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::H5q5(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::H6(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::H9(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::H54(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::H10(ref mut hasher) => StoreLookaheadThenStore(hasher, size, dict), &mut UnionHasher::Uninit => panic!("Uninitialized"), } } impl BrotliEncoderStateStruct { pub fn set_custom_dictionary(&mut self, size: usize, dict: &[u8]) { self.set_custom_dictionary_with_optional_precomputed_hasher(size, dict, UnionHasher::Uninit) } pub fn set_custom_dictionary_with_optional_precomputed_hasher( &mut self, size: usize, mut dict: &[u8], opt_hasher: UnionHasher, ) { let has_optional_hasher = if let UnionHasher::Uninit = opt_hasher { false } else { true }; let max_dict_size: usize = (1usize << self.params.lgwin).wrapping_sub(16); self.hasher_ = opt_hasher; let mut dict_size: usize = size; if !self.ensure_initialized() { return; } if dict_size == 0 || self.params.quality == 0 || self.params.quality == 1 || size <= 1 { self.params.catable = true; // don't risk a too-short dictionary self.params.appendable = true; // don't risk a too-short dictionary return; } self.custom_dictionary = true; if size > max_dict_size { dict = &dict[size.wrapping_sub(max_dict_size)..]; dict_size = max_dict_size; } self.copy_input_to_ring_buffer(dict_size, dict); self.last_flush_pos_ = dict_size as u64; self.last_processed_pos_ = dict_size as u64; if dict_size > 0 { self.prev_byte_ = dict[dict_size.wrapping_sub(1)]; } if dict_size > 1 { self.prev_byte2_ = dict[dict_size.wrapping_sub(2)]; } let m16 = &mut self.m8; if cfg!(debug_assertions) || !has_optional_hasher { let mut orig_hasher = UnionHasher::Uninit; if has_optional_hasher { orig_hasher = core::mem::replace(&mut self.hasher_, UnionHasher::Uninit); } HasherPrependCustomDictionary( m16, &mut self.hasher_, &mut self.params, dict_size, dict, ); if has_optional_hasher { debug_assert!(orig_hasher == self.hasher_); DestroyHasher(m16, &mut orig_hasher); } } } } pub fn BrotliEncoderMaxCompressedSizeMulti(input_size: usize, num_threads: usize) -> usize { BrotliEncoderMaxCompressedSize(input_size) + num_threads * 8 } pub fn BrotliEncoderMaxCompressedSize(input_size: usize) -> usize { let magic_size = 16usize; let num_large_blocks: usize = input_size >> 14; let tail: usize = input_size.wrapping_sub(num_large_blocks << 24); let tail_overhead: usize = (if tail > (1i32 << 20) as usize { 4i32 } else { 3i32 }) as usize; let overhead: usize = (2usize) .wrapping_add((4usize).wrapping_mul(num_large_blocks)) .wrapping_add(tail_overhead) .wrapping_add(1); let result: usize = input_size.wrapping_add(overhead); if input_size == 0usize { return 1 + magic_size; } if result < input_size { 0usize } else { result + magic_size } } fn InitOrStitchToPreviousBlock + alloc::Allocator>( m: &mut Alloc, handle: &mut UnionHasher, data: &[u8], mask: usize, params: &mut BrotliEncoderParams, position: usize, input_size: usize, is_last: bool, ) { HasherSetup( m, handle, params, data, position, input_size, is_last as i32, ); handle.StitchToPreviousBlock(input_size, position, data, mask); } fn ShouldCompress( data: &[u8], mask: usize, last_flush_pos: u64, bytes: usize, num_literals: usize, num_commands: usize, ) -> i32 { if num_commands < (bytes >> 8).wrapping_add(2) && num_literals as (super::util::floatX) > 0.99 as super::util::floatX * bytes as (super::util::floatX) { let mut literal_histo = [0u32; 256]; static kSampleRate: u32 = 13u32; static kMinEntropy: super::util::floatX = 7.92 as super::util::floatX; let bit_cost_threshold: super::util::floatX = bytes as (super::util::floatX) * kMinEntropy / kSampleRate as (super::util::floatX); let t: usize = bytes .wrapping_add(kSampleRate as usize) .wrapping_sub(1) .wrapping_div(kSampleRate as usize); let mut pos: u32 = last_flush_pos as u32; let mut i: usize; i = 0usize; while i < t { { { let _rhs = 1; let _lhs = &mut literal_histo[data[(pos as usize & mask)] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } pos = pos.wrapping_add(kSampleRate); } i = i.wrapping_add(1); } if BitsEntropy(&literal_histo[..], 256usize) > bit_cost_threshold { return 0i32; } } 1i32 } /* Chooses the literal context mode for a metablock */ fn ChooseContextMode( params: &BrotliEncoderParams, data: &[u8], pos: usize, mask: usize, length: usize, ) -> ContextType { /* We only do the computation for the option of something else than CONTEXT_UTF8 for the highest qualities */ match params.mode { BrotliEncoderMode::BROTLI_FORCE_LSB_PRIOR => return ContextType::CONTEXT_LSB6, BrotliEncoderMode::BROTLI_FORCE_MSB_PRIOR => return ContextType::CONTEXT_MSB6, BrotliEncoderMode::BROTLI_FORCE_UTF8_PRIOR => return ContextType::CONTEXT_UTF8, BrotliEncoderMode::BROTLI_FORCE_SIGNED_PRIOR => return ContextType::CONTEXT_SIGNED, _ => {} } if (params.quality >= 10 && BrotliIsMostlyUTF8(data, pos, mask, length, kMinUTF8Ratio) == 0) { return ContextType::CONTEXT_SIGNED; } ContextType::CONTEXT_UTF8 } #[derive(PartialEq, Eq, Copy, Clone)] pub enum BrotliEncoderOperation { BROTLI_OPERATION_PROCESS = 0, BROTLI_OPERATION_FLUSH = 1, BROTLI_OPERATION_FINISH = 2, BROTLI_OPERATION_EMIT_METADATA = 3, } fn MakeUncompressedStream(input: &[u8], input_size: usize, output: &mut [u8]) -> usize { let mut size: usize = input_size; let mut result: usize = 0usize; let mut offset: usize = 0usize; if input_size == 0usize { output[0] = 6u8; return 1; } output[result] = 0x21u8; result = result.wrapping_add(1); output[result] = 0x3u8; result = result.wrapping_add(1); while size > 0usize { let mut nibbles: u32 = 0u32; let chunk_size: u32 = if size > (1u32 << 24) as usize { 1u32 << 24 } else { size as u32 }; if chunk_size > 1u32 << 16 { nibbles = if chunk_size > 1u32 << 20 { 2i32 } else { 1i32 } as u32; } let bits: u32 = nibbles << 1 | chunk_size.wrapping_sub(1) << 3 | 1u32 << (19u32).wrapping_add((4u32).wrapping_mul(nibbles)); output[result] = bits as u8; result = result.wrapping_add(1); output[result] = (bits >> 8) as u8; result = result.wrapping_add(1); output[result] = (bits >> 16) as u8; result = result.wrapping_add(1); if nibbles == 2u32 { output[result] = (bits >> 24) as u8; result = result.wrapping_add(1); } output[result..(result + chunk_size as usize)] .clone_from_slice(&input[offset..(offset + chunk_size as usize)]); result = result.wrapping_add(chunk_size as usize); offset = offset.wrapping_add(chunk_size as usize); size = size.wrapping_sub(chunk_size as usize); } output[result] = 3u8; result = result.wrapping_add(1); result } pub fn BrotliEncoderCompress< Alloc: BrotliAlloc, MetablockCallback: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], interface::InputPair, &mut Alloc, ), >( empty_m8: Alloc, m8: &mut Alloc, quality: i32, lgwin: i32, mode: BrotliEncoderMode, input_size: usize, input_buffer: &[u8], encoded_size: &mut usize, encoded_buffer: &mut [u8], metablock_callback: &mut MetablockCallback, ) -> i32 { let out_size: usize = *encoded_size; let input_start = input_buffer; let output_start = encoded_buffer; let max_out_size: usize = BrotliEncoderMaxCompressedSize(input_size); if out_size == 0usize { return 0i32; } if input_size == 0usize { *encoded_size = 1; output_start[0] = 6; return 1i32; } let mut is_fallback: i32 = 0i32; if quality == 10i32 { panic!("Unimplemented: need to set 9.5 here"); } if is_fallback == 0 { let mut s_orig = BrotliEncoderStateStruct::new(core::mem::replace(m8, empty_m8)); let mut result: bool; { let s = &mut s_orig; let mut available_in: usize = input_size; let next_in_array: &[u8] = input_buffer; let mut next_in_offset: usize = 0; let mut available_out: usize = *encoded_size; let next_out_array: &mut [u8] = output_start; let mut next_out_offset: usize = 0; let mut total_out = Some(0); s.set_parameter(BrotliEncoderParameter::BROTLI_PARAM_QUALITY, quality as u32); s.set_parameter(BrotliEncoderParameter::BROTLI_PARAM_LGWIN, lgwin as u32); s.set_parameter(BrotliEncoderParameter::BROTLI_PARAM_MODE, mode as u32); s.set_parameter( BrotliEncoderParameter::BROTLI_PARAM_SIZE_HINT, input_size as u32, ); if lgwin > BROTLI_MAX_WINDOW_BITS as i32 { s.set_parameter(BrotliEncoderParameter::BROTLI_PARAM_LARGE_WINDOW, 1); } result = s.compress_stream( BrotliEncoderOperation::BROTLI_OPERATION_FINISH, &mut available_in, next_in_array, &mut next_in_offset, &mut available_out, next_out_array, &mut next_out_offset, &mut total_out, metablock_callback, ); if !s.is_finished() { result = false; } *encoded_size = total_out.unwrap(); BrotliEncoderDestroyInstance(s); } let _ = core::mem::replace(m8, s_orig.m8); if !result || max_out_size != 0 && (*encoded_size > max_out_size) { is_fallback = 1i32; } else { return 1i32; } } assert_ne!(is_fallback, 0); *encoded_size = 0usize; if max_out_size == 0 { return 0i32; } if out_size >= max_out_size { *encoded_size = MakeUncompressedStream(input_start, input_size, output_start); return 1i32; } 0i32 } impl BrotliEncoderStateStruct { fn inject_byte_padding_block(&mut self) { let mut seal: u32 = self.last_bytes_ as u32; let mut seal_bits: usize = self.last_bytes_bits_ as usize; let destination: &mut [u8]; self.last_bytes_ = 0; self.last_bytes_bits_ = 0; seal |= 0x6u32 << seal_bits; seal_bits = seal_bits.wrapping_add(6); if !IsNextOutNull(&self.next_out_) { destination = &mut GetNextOut!(*self)[self.available_out_..]; } else { destination = &mut self.tiny_buf_[..]; self.next_out_ = NextOut::TinyBuf(0); } destination[0] = seal as u8; if seal_bits > 8usize { destination[1] = (seal >> 8) as u8; } if seal_bits > 16usize { destination[2] = (seal >> 16) as u8; } self.available_out_ = self .available_out_ .wrapping_add(seal_bits.wrapping_add(7) >> 3); } fn inject_flush_or_push_output( &mut self, available_out: &mut usize, next_out_array: &mut [u8], next_out_offset: &mut usize, total_out: &mut Option, ) -> i32 { if self.stream_state_ as i32 == BrotliEncoderStreamState::BROTLI_STREAM_FLUSH_REQUESTED as i32 && (self.last_bytes_bits_ as i32 != 0i32) { self.inject_byte_padding_block(); return 1i32; } if self.available_out_ != 0usize && (*available_out != 0usize) { let copy_output_size: usize = min(self.available_out_, *available_out); (*next_out_array)[(*next_out_offset)..(*next_out_offset + copy_output_size)] .clone_from_slice(&GetNextOut!(self)[..copy_output_size]); //memcpy(*next_out, s.next_out_, copy_output_size); *next_out_offset = next_out_offset.wrapping_add(copy_output_size); *available_out = available_out.wrapping_sub(copy_output_size); self.next_out_ = NextOutIncrement(&self.next_out_, (copy_output_size as i32)); self.available_out_ = self.available_out_.wrapping_sub(copy_output_size); self.total_out_ = self.total_out_.wrapping_add(copy_output_size as u64); if let &mut Some(ref mut total_out_inner) = total_out { *total_out_inner = self.total_out_ as usize; } return 1i32; } 0i32 } fn unprocessed_input_size(&self) -> u64 { self.input_pos_.wrapping_sub(self.last_processed_pos_) } fn update_size_hint(&mut self, available_in: usize) { if self.params.size_hint == 0usize { let delta: u64 = self.unprocessed_input_size(); let tail: u64 = available_in as u64; let limit: u32 = 1u32 << 30; let total: u32; if delta >= u64::from(limit) || tail >= u64::from(limit) || delta.wrapping_add(tail) >= u64::from(limit) { total = limit; } else { total = delta.wrapping_add(tail) as u32; } self.params.size_hint = total as usize; } } } fn WrapPosition(position: u64) -> u32 { let mut result: u32 = position as u32; let gb: u64 = position >> 30; if gb > 2 { result = result & (1u32 << 30).wrapping_sub(1) | ((gb.wrapping_sub(1) & 1) as u32).wrapping_add(1) << 30; } result } impl BrotliEncoderStateStruct { fn get_brotli_storage(&mut self, size: usize) { if self.storage_size_ < size { >::free_cell(&mut self.m8, core::mem::take(&mut self.storage_)); self.storage_ = >::alloc_cell(&mut self.m8, size); self.storage_size_ = size; } } } fn MaxHashTableSize(quality: i32) -> usize { (if quality == 0i32 { 1i32 << 15 } else { 1i32 << 17 }) as usize } fn HashTableSize(max_table_size: usize, input_size: usize) -> usize { let mut htsize: usize = 256usize; while htsize < max_table_size && (htsize < input_size) { htsize <<= 1i32; } htsize } macro_rules! GetHashTable { ($s : expr, $quality: expr, $input_size : expr, $table_size : expr) => { GetHashTableInternal( &mut $s.m8, &mut $s.small_table_, &mut $s.large_table_, $quality, $input_size, $table_size, ) }; } fn GetHashTableInternal<'a, AllocI32: alloc::Allocator>( mi32: &mut AllocI32, small_table_: &'a mut [i32; 1024], large_table_: &'a mut AllocI32::AllocatedMemory, quality: i32, input_size: usize, table_size: &mut usize, ) -> &'a mut [i32] { let max_table_size: usize = MaxHashTableSize(quality); let mut htsize: usize = HashTableSize(max_table_size, input_size); let table: &mut [i32]; if quality == 0i32 && htsize & 0xaaaaausize == 0usize { htsize <<= 1i32; } if htsize <= small_table_.len() { table = &mut small_table_[..]; } else { if htsize > large_table_.slice().len() { //s.large_table_size_ = htsize; { mi32.free_cell(core::mem::take(large_table_)); } *large_table_ = mi32.alloc_cell(htsize); } table = large_table_.slice_mut(); } *table_size = htsize; for item in table[..htsize].iter_mut() { *item = 0; } table // FIXME: probably need a macro to do this without borrowing the whole EncoderStateStruct } impl BrotliEncoderStateStruct { fn update_last_processed_pos(&mut self) -> bool { let wrapped_last_processed_pos: u32 = WrapPosition(self.last_processed_pos_); let wrapped_input_pos: u32 = WrapPosition(self.input_pos_); self.last_processed_pos_ = self.input_pos_; wrapped_input_pos < wrapped_last_processed_pos } } fn MaxMetablockSize(params: &BrotliEncoderParams) -> usize { 1 << min(ComputeRbBits(params), 24) } fn ChooseContextMap( quality: i32, bigram_histo: &mut [u32], num_literal_contexts: &mut usize, literal_context_map: &mut &[u32], ) { static kStaticContextMapContinuation: [u32; 64] = [ 1, 1, 2, 2, 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, ]; static kStaticContextMapSimpleUTF8: [u32; 64] = [ 0, 0, 1, 1, 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, ]; let mut monogram_histo = [0u32; 3]; let mut two_prefix_histo = [0u32; 6]; let mut i: usize; let mut dummy: usize = 0; let mut entropy: [super::util::floatX; 4] = [0.0 as super::util::floatX; 4]; i = 0usize; while i < 9usize { { { let _rhs = bigram_histo[i]; let _lhs = &mut monogram_histo[i.wrapping_rem(3)]; *_lhs = (*_lhs).wrapping_add(_rhs); } { let _rhs = bigram_histo[i]; let _lhs = &mut two_prefix_histo[i.wrapping_rem(6)]; *_lhs = (*_lhs).wrapping_add(_rhs); } } i = i.wrapping_add(1); } entropy[1] = ShannonEntropy(&monogram_histo[..], 3usize, &mut dummy); entropy[2] = ShannonEntropy(&two_prefix_histo[..], 3usize, &mut dummy) + ShannonEntropy(&two_prefix_histo[3..], 3usize, &mut dummy); entropy[3] = 0i32 as (super::util::floatX); for i in 0usize..3usize { entropy[3] += ShannonEntropy( &bigram_histo[(3usize).wrapping_mul(i)..], 3usize, &mut dummy, ); } let total: usize = monogram_histo[0] .wrapping_add(monogram_histo[1]) .wrapping_add(monogram_histo[2]) as usize; entropy[0] = 1.0 as super::util::floatX / total as (super::util::floatX); entropy[1] *= entropy[0]; entropy[2] *= entropy[0]; entropy[3] *= entropy[0]; if quality < 7i32 { entropy[3] = entropy[1] * 10i32 as (super::util::floatX); } if entropy[1] - entropy[2] < 0.2 as super::util::floatX && (entropy[1] - entropy[3] < 0.2 as super::util::floatX) { *num_literal_contexts = 1; } else if entropy[2] - entropy[3] < 0.02 as super::util::floatX { *num_literal_contexts = 2usize; *literal_context_map = &kStaticContextMapSimpleUTF8[..]; } else { *num_literal_contexts = 3usize; *literal_context_map = &kStaticContextMapContinuation[..]; } } static kStaticContextMapComplexUTF8: [u32; 64] = [ 11, 11, 12, 12, /* 0 special */ 0, 0, 0, 0, /* 4 lf */ 1, 1, 9, 9, /* 8 space */ 2, 2, 2, 2, /* !, first after space/lf and after something else. */ 1, 1, 1, 1, /* " */ 8, 3, 3, 3, /* % */ 1, 1, 1, 1, /* ({[ */ 2, 2, 2, 2, /* }]) */ 8, 4, 4, 4, /* :; */ 8, 7, 4, 4, /* . */ 8, 0, 0, 0, /* > */ 3, 3, 3, 3, /* [0..9] */ 5, 5, 10, 5, /* [A-Z] */ 5, 5, 10, 5, 6, 6, 6, 6, /* [a-z] */ 6, 6, 6, 6, ]; /* Decide if we want to use a more complex static context map containing 13 context values, based on the entropy reduction of histograms over the first 5 bits of literals. */ fn ShouldUseComplexStaticContextMap( input: &[u8], mut start_pos: usize, length: usize, mask: usize, quality: i32, size_hint: usize, num_literal_contexts: &mut usize, literal_context_map: &mut &[u32], ) -> bool { let _ = quality; //BROTLI_UNUSED(quality); /* Try the more complex static context map only for long data. */ if (size_hint < (1 << 20)) { false } else { let end_pos = start_pos + length; /* To make entropy calculations faster and to fit on the stack, we collect histograms over the 5 most significant bits of literals. One histogram without context and 13 additional histograms for each context value. */ let mut combined_histo: [u32; 32] = [0; 32]; let mut context_histo: [[u32; 32]; 13] = [[0; 32]; 13]; let mut total = 0u32; let mut entropy = [0.0 as super::util::floatX; 3]; let mut dummy = 0usize; let utf8_lut = BROTLI_CONTEXT_LUT(ContextType::CONTEXT_UTF8); while start_pos + 64 <= end_pos { let stride_end_pos = start_pos + 64; let mut prev2 = input[start_pos & mask]; let mut prev1 = input[(start_pos + 1) & mask]; /* To make the analysis of the data faster we only examine 64 byte long strides at every 4kB intervals. */ for pos in start_pos + 2..stride_end_pos { let literal = input[pos & mask]; let context = kStaticContextMapComplexUTF8 [BROTLI_CONTEXT(prev1, prev2, utf8_lut) as usize] as u8; total += 1; combined_histo[(literal >> 3) as usize] += 1; context_histo[context as usize][(literal >> 3) as usize] += 1; prev2 = prev1; prev1 = literal; } start_pos += 4096; } entropy[1] = ShannonEntropy(&combined_histo[..], 32, &mut dummy); entropy[2] = 0.0 as super::util::floatX; for i in 0..13 { assert!(i < 13); entropy[2] += ShannonEntropy(&context_histo[i][..], 32, &mut dummy); } entropy[0] = (1.0 as super::util::floatX) / (total as super::util::floatX); entropy[1] *= entropy[0]; entropy[2] *= entropy[0]; /* The triggering heuristics below were tuned by compressing the individual files of the silesia corpus. If we skip this kind of context modeling for not very well compressible input (i.e. entropy using context modeling is 60% of maximal entropy) or if expected savings by symbol are less than 0.2 bits, then in every case when it triggers, the final compression ratio is improved. Note however that this heuristics might be too strict for some cases and could be tuned further. */ if (entropy[2] > 3.0 || entropy[1] - entropy[2] < 0.2) { false } else { *num_literal_contexts = 13; *literal_context_map = &kStaticContextMapComplexUTF8; true } } } fn DecideOverLiteralContextModeling( input: &[u8], mut start_pos: usize, length: usize, mask: usize, quality: i32, size_hint: usize, num_literal_contexts: &mut usize, literal_context_map: &mut &[u32], ) { if quality < 5i32 || length < 64usize { } else if ShouldUseComplexStaticContextMap( input, start_pos, length, mask, quality, size_hint, num_literal_contexts, literal_context_map, ) { } else { let end_pos: usize = start_pos.wrapping_add(length); let mut bigram_prefix_histo = [0u32; 9]; while start_pos.wrapping_add(64) <= end_pos { { static lut: [i32; 4] = [0, 0, 1, 2]; let stride_end_pos: usize = start_pos.wrapping_add(64); let mut prev: i32 = lut[(input[(start_pos & mask)] as i32 >> 6) as usize] * 3i32; let mut pos: usize; pos = start_pos.wrapping_add(1); while pos < stride_end_pos { { let literal: u8 = input[(pos & mask)]; { let _rhs = 1; let cur_ind = (prev + lut[(literal as i32 >> 6) as usize]); let _lhs = &mut bigram_prefix_histo[cur_ind as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } prev = lut[(literal as i32 >> 6) as usize] * 3i32; } pos = pos.wrapping_add(1); } } start_pos = start_pos.wrapping_add(4096); } ChooseContextMap( quality, &mut bigram_prefix_histo[..], num_literal_contexts, literal_context_map, ); } } fn WriteMetaBlockInternal( alloc: &mut Alloc, data: &[u8], mask: usize, last_flush_pos: u64, bytes: usize, mut is_last: bool, literal_context_mode: ContextType, params: &BrotliEncoderParams, lit_scratch_space: &mut ::i32vec, cmd_scratch_space: &mut ::i32vec, dst_scratch_space: &mut ::i32vec, prev_byte: u8, prev_byte2: u8, num_literals: usize, num_commands: usize, commands: &mut [Command], saved_dist_cache: &[i32; kNumDistanceCacheEntries], dist_cache: &mut [i32; 16], recoder_state: &mut RecoderState, storage_ix: &mut usize, storage: &mut [u8], cb: &mut Cb, ) where Cb: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], interface::InputPair, &mut Alloc, ), { let actual_is_last = is_last; if params.appendable { is_last = false; } else { assert!(!params.catable); // Sanitize Params senforces this constraint } let wrapped_last_flush_pos: u32 = WrapPosition(last_flush_pos); let literal_context_lut = BROTLI_CONTEXT_LUT(literal_context_mode); let mut block_params = params.clone(); if bytes == 0usize { BrotliWriteBits(2usize, 3, storage_ix, storage); *storage_ix = storage_ix.wrapping_add(7u32 as usize) & !7u32 as usize; return; } if ShouldCompress( data, mask, last_flush_pos, bytes, num_literals, num_commands, ) == 0 { dist_cache[..4].clone_from_slice(&saved_dist_cache[..4]); BrotliStoreUncompressedMetaBlock( alloc, is_last as i32, data, wrapped_last_flush_pos as usize, mask, params, bytes, recoder_state, storage_ix, storage, false, cb, ); if actual_is_last != is_last { BrotliWriteEmptyLastMetaBlock(storage_ix, storage) } return; } let saved_byte_location = (*storage_ix) >> 3; let last_bytes: u16 = ((storage[saved_byte_location + 1] as u16) << 8) | storage[saved_byte_location] as u16; let last_bytes_bits: u8 = *storage_ix as u8; /*if params.dist.num_direct_distance_codes != 0 || params.dist.distance_postfix_bits != 0 { RecomputeDistancePrefixes(commands, num_commands, params.dist.num_direct_distance_codes, params.dist.distance_postfix_bits); }*/ // why was this removed?? if params.quality <= 2i32 { BrotliStoreMetaBlockFast( alloc, data, wrapped_last_flush_pos as usize, bytes, mask, is_last as i32, params, saved_dist_cache, commands, num_commands, recoder_state, storage_ix, storage, cb, ); } else if params.quality < 4i32 { BrotliStoreMetaBlockTrivial( alloc, data, wrapped_last_flush_pos as usize, bytes, mask, is_last as i32, params, saved_dist_cache, commands, num_commands, recoder_state, storage_ix, storage, cb, ); } else { //let mut literal_context_mode: ContextType = ContextType::CONTEXT_UTF8; let mut mb = MetaBlockSplit::::new(); if params.quality < 10i32 { let mut num_literal_contexts: usize = 1; let mut literal_context_map: &[u32] = &[]; if params.disable_literal_context_modeling == 0 { DecideOverLiteralContextModeling( data, wrapped_last_flush_pos as usize, bytes, mask, params.quality, params.size_hint, &mut num_literal_contexts, &mut literal_context_map, ); } BrotliBuildMetaBlockGreedy( alloc, data, wrapped_last_flush_pos as usize, mask, prev_byte, prev_byte2, literal_context_mode, literal_context_lut, num_literal_contexts, literal_context_map, commands, num_commands, &mut mb, ); } else { BrotliBuildMetaBlock( alloc, data, wrapped_last_flush_pos as usize, mask, &mut block_params, prev_byte, prev_byte2, commands, num_commands, literal_context_mode, lit_scratch_space, cmd_scratch_space, dst_scratch_space, &mut mb, ); } if params.quality >= 4i32 { let mut num_effective_dist_codes = block_params.dist.alphabet_size; if num_effective_dist_codes > BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS as u32 { num_effective_dist_codes = BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS as u32; } BrotliOptimizeHistograms(num_effective_dist_codes as usize, &mut mb); } BrotliStoreMetaBlock( alloc, data, wrapped_last_flush_pos as usize, bytes, mask, prev_byte, prev_byte2, is_last as i32, &block_params, literal_context_mode, saved_dist_cache, commands, num_commands, &mut mb, recoder_state, storage_ix, storage, cb, ); mb.destroy(alloc); } if bytes + 4 + saved_byte_location < (*storage_ix >> 3) { dist_cache[..4].clone_from_slice(&saved_dist_cache[..4]); //memcpy(dist_cache, // saved_dist_cache, // (4usize).wrapping_mul(::core::mem::size_of::())); storage[saved_byte_location] = last_bytes as u8; storage[saved_byte_location + 1] = (last_bytes >> 8) as u8; *storage_ix = last_bytes_bits as usize; BrotliStoreUncompressedMetaBlock( alloc, is_last as i32, data, wrapped_last_flush_pos as usize, mask, params, bytes, recoder_state, storage_ix, storage, true, cb, ); } if actual_is_last != is_last { BrotliWriteEmptyLastMetaBlock(storage_ix, storage) } } fn ChooseDistanceParams(params: &mut BrotliEncoderParams) { let mut num_direct_distance_codes = 0u32; let mut distance_postfix_bits = 0u32; if params.quality >= 4 { if params.mode == BrotliEncoderMode::BROTLI_MODE_FONT { distance_postfix_bits = 1; num_direct_distance_codes = 12; } else { distance_postfix_bits = params.dist.distance_postfix_bits; num_direct_distance_codes = params.dist.num_direct_distance_codes; } let ndirect_msb = (num_direct_distance_codes >> distance_postfix_bits) & 0x0f; if distance_postfix_bits > BROTLI_MAX_NPOSTFIX as u32 || num_direct_distance_codes > BROTLI_MAX_NDIRECT as u32 || (ndirect_msb << distance_postfix_bits) != num_direct_distance_codes { distance_postfix_bits = 0; num_direct_distance_codes = 0; } } BrotliInitDistanceParams(params, distance_postfix_bits, num_direct_distance_codes); /*( if (params.large_window) { max_distance = BROTLI_MAX_ALLOWED_DISTANCE; if (num_direct_distance_codes != 0 || distance_postfix_bits != 0) { max_distance = (3 << 29) - 4; } alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE( num_direct_distance_codes, distance_postfix_bits, BROTLI_LARGE_MAX_DISTANCE_BITS); } else { alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE( num_direct_distance_codes, distance_postfix_bits, BROTLI_MAX_DISTANCE_BITS); } params.dist.num_direct_distance_codes = num_direct_distance_codes; params.dist.distance_postfix_bits = distance_postfix_bits; params.dist.alphabet_size = alphabet_size; params.dist.max_distance = max_distance;*/ } impl BrotliEncoderStateStruct { fn encode_data( &mut self, is_last: bool, force_flush: bool, out_size: &mut usize, callback: &mut MetablockCallback, // mut output: &'a mut &'a mut [u8] ) -> bool where MetablockCallback: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], interface::InputPair, &mut Alloc, ), { let mut delta: u64 = self.unprocessed_input_size(); let mut bytes: u32 = delta as u32; let mask = self.ringbuffer_.mask_; if !self.ensure_initialized() { return false; } let dictionary = BrotliGetDictionary(); if self.is_last_block_emitted_ { return false; } if is_last { self.is_last_block_emitted_ = true; } if delta > self.input_block_size() as u64 { return false; } let mut storage_ix: usize = usize::from(self.last_bytes_bits_); { let meta_size = max( bytes as usize, self.input_pos_.wrapping_sub(self.last_flush_pos_) as usize, ); self.get_brotli_storage((2usize).wrapping_mul(meta_size).wrapping_add(503 + 24)); } { self.storage_.slice_mut()[0] = self.last_bytes_ as u8; self.storage_.slice_mut()[1] = (self.last_bytes_ >> 8) as u8; } let mut catable_header_size = 0; if let IsFirst::NothingWritten = self.is_first_mb { if self.params.magic_number { BrotliWriteMetadataMetaBlock( &self.params, &mut storage_ix, self.storage_.slice_mut(), ); self.last_bytes_ = self.storage_.slice()[(storage_ix >> 3)] as u16 | ((self.storage_.slice()[1 + (storage_ix >> 3)] as u16) << 8); self.last_bytes_bits_ = (storage_ix & 7u32 as usize) as u8; self.next_out_ = NextOut::DynamicStorage(0); catable_header_size = storage_ix >> 3; *out_size = catable_header_size; self.is_first_mb = IsFirst::HeaderWritten; } } if let IsFirst::BothCatableBytesWritten = self.is_first_mb { // nothing to do here, move along } else if !self.params.catable { self.is_first_mb = IsFirst::BothCatableBytesWritten; } else if bytes != 0 { assert!(self.last_processed_pos_ < 2 || self.custom_dictionary); let num_bytes_to_write_uncompressed: usize = min(2, bytes as usize); { let data = &mut self.ringbuffer_.data_mo.slice_mut()[self.ringbuffer_.buffer_index..]; BrotliStoreUncompressedMetaBlock( &mut self.m8, 0, data, self.last_flush_pos_ as usize, mask as usize, &self.params, num_bytes_to_write_uncompressed, &mut self.recoder_state, &mut storage_ix, self.storage_.slice_mut(), false, /* suppress meta-block logging */ callback, ); self.last_bytes_ = self.storage_.slice()[(storage_ix >> 3)] as u16 | ((self.storage_.slice()[1 + (storage_ix >> 3)] as u16) << 8); self.last_bytes_bits_ = (storage_ix & 7u32 as usize) as u8; self.prev_byte2_ = self.prev_byte_; self.prev_byte_ = data[self.last_flush_pos_ as usize & mask as usize]; if num_bytes_to_write_uncompressed == 2 { self.prev_byte2_ = self.prev_byte_; self.prev_byte_ = data[(self.last_flush_pos_ + 1) as usize & mask as usize]; } } self.last_flush_pos_ += num_bytes_to_write_uncompressed as u64; bytes -= num_bytes_to_write_uncompressed as u32; self.last_processed_pos_ += num_bytes_to_write_uncompressed as u64; if num_bytes_to_write_uncompressed >= 2 { self.is_first_mb = IsFirst::BothCatableBytesWritten; } else if num_bytes_to_write_uncompressed == 1 { if let IsFirst::FirstCatableByteWritten = self.is_first_mb { self.is_first_mb = IsFirst::BothCatableBytesWritten; } else { self.is_first_mb = IsFirst::FirstCatableByteWritten; } } catable_header_size = storage_ix >> 3; self.next_out_ = NextOut::DynamicStorage(0); *out_size = catable_header_size; delta = self.unprocessed_input_size(); } let mut wrapped_last_processed_pos: u32 = WrapPosition(self.last_processed_pos_); if self.params.quality == 1i32 && self.command_buf_.slice().is_empty() { let new_buf = >::alloc_cell( &mut self.m8, kCompressFragmentTwoPassBlockSize, ); self.command_buf_ = new_buf; let new_buf8 = >::alloc_cell( &mut self.m8, kCompressFragmentTwoPassBlockSize, ); self.literal_buf_ = new_buf8; } if self.params.quality == 0i32 || self.params.quality == 1i32 { let mut table_size: usize = 0; { if delta == 0 && !is_last { *out_size = catable_header_size; return true; } let data = &mut self.ringbuffer_.data_mo.slice_mut()[self.ringbuffer_.buffer_index..]; //s.storage_.slice_mut()[0] = (*s).last_bytes_ as u8; // s.storage_.slice_mut()[1] = ((*s).last_bytes_ >> 8) as u8; let table: &mut [i32] = GetHashTable!(self, self.params.quality, bytes as usize, &mut table_size); if self.params.quality == 0i32 { BrotliCompressFragmentFast( &mut self.m8, &mut data[((wrapped_last_processed_pos & mask) as usize)..], bytes as usize, is_last as i32, table, table_size, &mut self.cmd_depths_[..], &mut self.cmd_bits_[..], &mut self.cmd_code_numbits_, &mut self.cmd_code_[..], &mut storage_ix, self.storage_.slice_mut(), ); } else { BrotliCompressFragmentTwoPass( &mut self.m8, &mut data[((wrapped_last_processed_pos & mask) as usize)..], bytes as usize, is_last as i32, self.command_buf_.slice_mut(), self.literal_buf_.slice_mut(), table, table_size, &mut storage_ix, self.storage_.slice_mut(), ); } self.last_bytes_ = self.storage_.slice()[(storage_ix >> 3)] as u16 | ((self.storage_.slice()[(storage_ix >> 3) + 1] as u16) << 8); self.last_bytes_bits_ = (storage_ix & 7u32 as usize) as u8; } self.update_last_processed_pos(); // *output = &mut s.storage_.slice_mut(); self.next_out_ = NextOut::DynamicStorage(0); // this always returns that *out_size = storage_ix >> 3; return true; } { let mut newsize: usize = self .num_commands_ .wrapping_add(bytes.wrapping_div(2) as usize) .wrapping_add(1); if newsize > self.cmd_alloc_size_ { newsize = newsize.wrapping_add(bytes.wrapping_div(4).wrapping_add(16) as usize); self.cmd_alloc_size_ = newsize; let mut new_commands = >::alloc_cell(&mut self.m8, newsize); if !self.commands_.slice().is_empty() { new_commands.slice_mut()[..self.num_commands_] .clone_from_slice(&self.commands_.slice()[..self.num_commands_]); >::free_cell( &mut self.m8, core::mem::take(&mut self.commands_), ); } self.commands_ = new_commands; } } InitOrStitchToPreviousBlock( &mut self.m8, &mut self.hasher_, &mut self.ringbuffer_.data_mo.slice_mut()[self.ringbuffer_.buffer_index..], mask as usize, &mut self.params, wrapped_last_processed_pos as usize, bytes as usize, is_last, ); let literal_context_mode = ChooseContextMode( &self.params, self.ringbuffer_.data_mo.slice(), WrapPosition(self.last_flush_pos_) as usize, mask as usize, (self.input_pos_.wrapping_sub(self.last_flush_pos_)) as usize, ); if self.num_commands_ != 0 && self.last_insert_len_ == 0 { self.extend_last_command(&mut bytes, &mut wrapped_last_processed_pos); } BrotliCreateBackwardReferences( &mut self.m8, dictionary, bytes as usize, wrapped_last_processed_pos as usize, &mut self.ringbuffer_.data_mo.slice_mut()[self.ringbuffer_.buffer_index..], mask as usize, &mut self.params, &mut self.hasher_, &mut self.dist_cache_, &mut self.last_insert_len_, &mut self.commands_.slice_mut()[self.num_commands_..], &mut self.num_commands_, &mut self.num_literals_, ); { let max_length: usize = MaxMetablockSize(&mut self.params); let max_literals: usize = max_length.wrapping_div(8); let max_commands: usize = max_length.wrapping_div(8); let processed_bytes: usize = self.input_pos_.wrapping_sub(self.last_flush_pos_) as usize; let next_input_fits_metablock = processed_bytes.wrapping_add(self.input_block_size()) <= max_length; let should_flush = self.params.quality < 4 && self.num_literals_.wrapping_add(self.num_commands_) >= 0x2fff; if !is_last && !force_flush && !should_flush && next_input_fits_metablock && self.num_literals_ < max_literals && self.num_commands_ < max_commands { if self.update_last_processed_pos() { HasherReset(&mut self.hasher_); } *out_size = catable_header_size; return true; } } if self.last_insert_len_ > 0usize { self.commands_.slice_mut()[self.num_commands_].init_insert(self.last_insert_len_); self.num_commands_ = self.num_commands_.wrapping_add(1); self.num_literals_ = self.num_literals_.wrapping_add(self.last_insert_len_); self.last_insert_len_ = 0usize; } if !is_last && self.input_pos_ == self.last_flush_pos_ { *out_size = catable_header_size; return true; } { let metablock_size: u32 = self.input_pos_.wrapping_sub(self.last_flush_pos_) as u32; //let mut storage_ix: usize = s.last_bytes_bits_ as usize; //s.storage_.slice_mut()[0] = (*s).last_bytes_ as u8; //s.storage_.slice_mut()[1] = ((*s).last_bytes_ >> 8) as u8; WriteMetaBlockInternal( &mut self.m8, &mut self.ringbuffer_.data_mo.slice_mut()[self.ringbuffer_.buffer_index..], mask as usize, self.last_flush_pos_, metablock_size as usize, is_last, literal_context_mode, &mut self.params, &mut self.literal_scratch_space, &mut self.command_scratch_space, &mut self.distance_scratch_space, self.prev_byte_, self.prev_byte2_, self.num_literals_, self.num_commands_, self.commands_.slice_mut(), &mut self.saved_dist_cache_, &mut self.dist_cache_, &mut self.recoder_state, &mut storage_ix, self.storage_.slice_mut(), callback, ); self.last_bytes_ = self.storage_.slice()[(storage_ix >> 3)] as u16 | ((self.storage_.slice()[1 + (storage_ix >> 3)] as u16) << 8); self.last_bytes_bits_ = (storage_ix & 7u32 as usize) as u8; self.last_flush_pos_ = self.input_pos_; if self.update_last_processed_pos() { HasherReset(&mut self.hasher_); } let data = &self.ringbuffer_.data_mo.slice()[self.ringbuffer_.buffer_index..]; if self.last_flush_pos_ > 0 { self.prev_byte_ = data[(((self.last_flush_pos_ as u32).wrapping_sub(1) & mask) as usize)]; } if self.last_flush_pos_ > 1 { self.prev_byte2_ = data[((self.last_flush_pos_.wrapping_sub(2) as u32 & mask) as usize)]; } self.num_commands_ = 0usize; self.num_literals_ = 0usize; self.saved_dist_cache_ .clone_from_slice(self.dist_cache_.split_at(4).0); self.next_out_ = NextOut::DynamicStorage(0); // this always returns that *out_size = storage_ix >> 3; true } } fn write_metadata_header(&mut self) -> usize { let block_size = self.remaining_metadata_bytes_ as usize; let header = GetNextOut!(*self); let mut storage_ix: usize; storage_ix = self.last_bytes_bits_ as usize; header[0] = self.last_bytes_ as u8; header[1] = (self.last_bytes_ >> 8) as u8; self.last_bytes_ = 0; self.last_bytes_bits_ = 0; BrotliWriteBits(1, 0, &mut storage_ix, header); BrotliWriteBits(2usize, 3, &mut storage_ix, header); BrotliWriteBits(1, 0, &mut storage_ix, header); if block_size == 0usize { BrotliWriteBits(2usize, 0, &mut storage_ix, header); } else { let nbits: u32 = if block_size == 1 { 0u32 } else { Log2FloorNonZero((block_size as u32).wrapping_sub(1) as (u64)).wrapping_add(1) }; let nbytes: u32 = nbits.wrapping_add(7).wrapping_div(8); BrotliWriteBits(2usize, nbytes as (u64), &mut storage_ix, header); BrotliWriteBits( (8u32).wrapping_mul(nbytes) as usize, block_size.wrapping_sub(1) as u64, &mut storage_ix, header, ); } storage_ix.wrapping_add(7u32 as usize) >> 3 } } impl BrotliEncoderStateStruct { fn process_metadata< MetaBlockCallback: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], interface::InputPair, &mut Alloc, ), >( &mut self, available_in: &mut usize, next_in_array: &[u8], next_in_offset: &mut usize, available_out: &mut usize, next_out_array: &mut [u8], next_out_offset: &mut usize, total_out: &mut Option, metablock_callback: &mut MetaBlockCallback, ) -> bool { if *available_in > (1u32 << 24) as usize { return false; } if self.stream_state_ as i32 == BrotliEncoderStreamState::BROTLI_STREAM_PROCESSING as i32 { self.remaining_metadata_bytes_ = *available_in as u32; self.stream_state_ = BrotliEncoderStreamState::BROTLI_STREAM_METADATA_HEAD; } if self.stream_state_ as i32 != BrotliEncoderStreamState::BROTLI_STREAM_METADATA_HEAD as i32 && (self.stream_state_ as i32 != BrotliEncoderStreamState::BROTLI_STREAM_METADATA_BODY as i32) { return false; } loop { if self.inject_flush_or_push_output( available_out, next_out_array, next_out_offset, total_out, ) != 0 { continue; } if self.available_out_ != 0usize { break; } if self.input_pos_ != self.last_flush_pos_ { let mut avail_out: usize = self.available_out_; let result = self.encode_data(false, true, &mut avail_out, metablock_callback); self.available_out_ = avail_out; if !result { return false; } continue; } if self.stream_state_ as i32 == BrotliEncoderStreamState::BROTLI_STREAM_METADATA_HEAD as i32 { self.next_out_ = NextOut::TinyBuf(0); self.available_out_ = self.write_metadata_header(); self.stream_state_ = BrotliEncoderStreamState::BROTLI_STREAM_METADATA_BODY; { continue; } } else { if self.remaining_metadata_bytes_ == 0u32 { self.remaining_metadata_bytes_ = !(0u32); self.stream_state_ = BrotliEncoderStreamState::BROTLI_STREAM_PROCESSING; { break; } } if *available_out != 0 { let copy: u32 = min(self.remaining_metadata_bytes_ as usize, *available_out) as u32; next_out_array[*next_out_offset..(*next_out_offset + copy as usize)] .clone_from_slice( &next_in_array[*next_in_offset..(*next_in_offset + copy as usize)], ); //memcpy(*next_out, *next_in, copy as usize); // *next_in = next_in.offset(copy as isize); *next_in_offset += copy as usize; *available_in = available_in.wrapping_sub(copy as usize); self.remaining_metadata_bytes_ = self.remaining_metadata_bytes_.wrapping_sub(copy); *next_out_offset += copy as usize; // *next_out = next_out.offset(copy as isize); *available_out = available_out.wrapping_sub(copy as usize); } else { let copy: u32 = min(self.remaining_metadata_bytes_, 16u32); self.next_out_ = NextOut::TinyBuf(0); GetNextOut!(self)[..(copy as usize)].clone_from_slice( &next_in_array[*next_in_offset..(*next_in_offset + copy as usize)], ); //memcpy(s.next_out_, *next_in, copy as usize); // *next_in = next_in.offset(copy as isize); *next_in_offset += copy as usize; *available_in = available_in.wrapping_sub(copy as usize); self.remaining_metadata_bytes_ = self.remaining_metadata_bytes_.wrapping_sub(copy); self.available_out_ = copy as usize; } { continue; } } } true } } fn CheckFlushCompleteInner( stream_state: &mut BrotliEncoderStreamState, available_out: usize, next_out: &mut NextOut, ) { if *stream_state == BrotliEncoderStreamState::BROTLI_STREAM_FLUSH_REQUESTED && (available_out == 0) { *stream_state = BrotliEncoderStreamState::BROTLI_STREAM_PROCESSING; *next_out = NextOut::None; } } impl BrotliEncoderStateStruct { fn check_flush_complete(&mut self) { CheckFlushCompleteInner( &mut self.stream_state_, self.available_out_, &mut self.next_out_, ); } fn compress_stream_fast( &mut self, op: BrotliEncoderOperation, available_in: &mut usize, next_in_array: &[u8], next_in_offset: &mut usize, available_out: &mut usize, next_out_array: &mut [u8], next_out_offset: &mut usize, total_out: &mut Option, ) -> bool { let block_size_limit: usize = 1 << self.params.lgwin; let buf_size: usize = min( kCompressFragmentTwoPassBlockSize, min(*available_in, block_size_limit), ); let mut command_buf = >::AllocatedMemory::default(); let mut literal_buf = >::AllocatedMemory::default(); if self.params.quality != 0i32 && (self.params.quality != 1i32) { return false; } if self.params.quality == 1i32 { if self.command_buf_.slice().is_empty() && (buf_size == kCompressFragmentTwoPassBlockSize) { self.command_buf_ = >::alloc_cell( &mut self.m8, kCompressFragmentTwoPassBlockSize, ); self.literal_buf_ = >::alloc_cell( &mut self.m8, kCompressFragmentTwoPassBlockSize, ); } if !self.command_buf_.slice().is_empty() { command_buf = core::mem::take(&mut self.command_buf_); literal_buf = core::mem::take(&mut self.literal_buf_); } else { command_buf = >::alloc_cell(&mut self.m8, buf_size); literal_buf = >::alloc_cell(&mut self.m8, buf_size); } } loop { if self.inject_flush_or_push_output( available_out, next_out_array, next_out_offset, total_out, ) != 0 { continue; } if self.available_out_ == 0usize && (self.stream_state_ as i32 == BrotliEncoderStreamState::BROTLI_STREAM_PROCESSING as i32) && (*available_in != 0usize || op as i32 != BrotliEncoderOperation::BROTLI_OPERATION_PROCESS as i32) { let block_size: usize = min(block_size_limit, *available_in); let is_last = *available_in == block_size && op == BrotliEncoderOperation::BROTLI_OPERATION_FINISH; let force_flush = *available_in == block_size && op == BrotliEncoderOperation::BROTLI_OPERATION_FLUSH; let max_out_size: usize = (2usize).wrapping_mul(block_size).wrapping_add(503); let mut inplace: i32 = 1i32; let storage: &mut [u8]; let mut storage_ix: usize = self.last_bytes_bits_ as usize; let mut table_size: usize = 0; if force_flush && block_size == 0 { self.stream_state_ = BrotliEncoderStreamState::BROTLI_STREAM_FLUSH_REQUESTED; { continue; } } if max_out_size <= *available_out { storage = &mut next_out_array[*next_out_offset..]; //GetNextOut!(s); } else { inplace = 0i32; self.get_brotli_storage(max_out_size); storage = self.storage_.slice_mut(); } storage[0] = self.last_bytes_ as u8; storage[1] = (self.last_bytes_ >> 8) as u8; let table: &mut [i32] = GetHashTable!(self, self.params.quality, block_size, &mut table_size); if self.params.quality == 0i32 { BrotliCompressFragmentFast( &mut self.m8, &(next_in_array)[*next_in_offset..], block_size, is_last as i32, table, table_size, &mut self.cmd_depths_[..], &mut self.cmd_bits_[..], &mut self.cmd_code_numbits_, &mut self.cmd_code_[..], &mut storage_ix, storage, ); } else { BrotliCompressFragmentTwoPass( &mut self.m8, &(next_in_array)[*next_in_offset..], block_size, is_last as i32, command_buf.slice_mut(), literal_buf.slice_mut(), table, table_size, &mut storage_ix, storage, ); } *next_in_offset += block_size; *available_in = available_in.wrapping_sub(block_size); if inplace != 0 { let out_bytes: usize = storage_ix >> 3; *next_out_offset += out_bytes; *available_out = available_out.wrapping_sub(out_bytes); self.total_out_ = self.total_out_.wrapping_add(out_bytes as u64); if let &mut Some(ref mut total_out_inner) = total_out { *total_out_inner = self.total_out_ as usize; } } else { let out_bytes: usize = storage_ix >> 3; self.next_out_ = NextOut::DynamicStorage(0); self.available_out_ = out_bytes; } self.last_bytes_ = storage[(storage_ix >> 3)] as u16 | ((storage[1 + (storage_ix >> 3)] as u16) << 8); self.last_bytes_bits_ = (storage_ix & 7u32 as usize) as u8; if force_flush { self.stream_state_ = BrotliEncoderStreamState::BROTLI_STREAM_FLUSH_REQUESTED; } if is_last { self.stream_state_ = BrotliEncoderStreamState::BROTLI_STREAM_FINISHED; } { continue; } } { break; } } if command_buf.slice().len() == kCompressFragmentTwoPassBlockSize && self.command_buf_.slice().is_empty() { // undo temporary aliasing of command_buf and literal_buf self.command_buf_ = core::mem::take(&mut command_buf); self.literal_buf_ = core::mem::take(&mut literal_buf); } else { >::free_cell(&mut self.m8, command_buf); >::free_cell(&mut self.m8, literal_buf); } self.check_flush_complete(); true } fn remaining_input_block_size(&mut self) -> usize { let delta: u64 = self.unprocessed_input_size(); let block_size = self.input_block_size(); if delta >= block_size as u64 { return 0usize; } (block_size as u64).wrapping_sub(delta) as usize } pub fn compress_stream< MetablockCallback: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], interface::InputPair, &mut Alloc, ), >( &mut self, op: BrotliEncoderOperation, available_in: &mut usize, next_in_array: &[u8], next_in_offset: &mut usize, available_out: &mut usize, next_out_array: &mut [u8], next_out_offset: &mut usize, total_out: &mut Option, metablock_callback: &mut MetablockCallback, ) -> bool { if !self.ensure_initialized() { return false; } if self.remaining_metadata_bytes_ != !(0u32) { if *available_in != self.remaining_metadata_bytes_ as usize { return false; } if op as i32 != BrotliEncoderOperation::BROTLI_OPERATION_EMIT_METADATA as i32 { return false; } } if op as i32 == BrotliEncoderOperation::BROTLI_OPERATION_EMIT_METADATA as i32 { self.update_size_hint(0); return self.process_metadata( available_in, next_in_array, next_in_offset, available_out, next_out_array, next_out_offset, total_out, metablock_callback, ); } if self.stream_state_ as i32 == BrotliEncoderStreamState::BROTLI_STREAM_METADATA_HEAD as i32 || self.stream_state_ as i32 == BrotliEncoderStreamState::BROTLI_STREAM_METADATA_BODY as i32 { return false; } if self.stream_state_ as i32 != BrotliEncoderStreamState::BROTLI_STREAM_PROCESSING as i32 && (*available_in != 0usize) { return false; } if (self.params.quality == 0i32 || self.params.quality == 1i32) && !self.params.catable { // this part of the code does not support concatability return self.compress_stream_fast( op, available_in, next_in_array, next_in_offset, available_out, next_out_array, next_out_offset, total_out, ); } loop { let remaining_block_size: usize = self.remaining_input_block_size(); if remaining_block_size != 0usize && (*available_in != 0usize) { let copy_input_size: usize = min(remaining_block_size, *available_in); self.copy_input_to_ring_buffer(copy_input_size, &next_in_array[*next_in_offset..]); *next_in_offset += copy_input_size; *available_in = available_in.wrapping_sub(copy_input_size); { continue; } } if self.inject_flush_or_push_output( available_out, next_out_array, next_out_offset, total_out, ) != 0 { continue; } if self.available_out_ == 0usize && (self.stream_state_ as i32 == BrotliEncoderStreamState::BROTLI_STREAM_PROCESSING as i32) && (remaining_block_size == 0usize || op as i32 != BrotliEncoderOperation::BROTLI_OPERATION_PROCESS as i32) { let is_last = *available_in == 0 && op == BrotliEncoderOperation::BROTLI_OPERATION_FINISH; let force_flush = *available_in == 0 && op == BrotliEncoderOperation::BROTLI_OPERATION_FLUSH; self.update_size_hint(*available_in); let mut avail_out = self.available_out_; let result = self.encode_data(is_last, force_flush, &mut avail_out, metablock_callback); self.available_out_ = avail_out; //this function set next_out to &storage[0] if !result { return false; } if force_flush { self.stream_state_ = BrotliEncoderStreamState::BROTLI_STREAM_FLUSH_REQUESTED; } if is_last { self.stream_state_ = BrotliEncoderStreamState::BROTLI_STREAM_FINISHED; } { continue; } } { break; } } self.check_flush_complete(); true } pub fn is_finished(&self) -> bool { self.stream_state_ == BrotliEncoderStreamState::BROTLI_STREAM_FINISHED && !self.has_more_output() } pub fn has_more_output(&self) -> bool { self.available_out_ != 0 } pub fn take_output(&mut self, size: &mut usize) -> &[u8] { let mut consumed_size: usize = self.available_out_; let mut result: &[u8] = GetNextOut!(*self); if *size != 0 { consumed_size = min(*size, self.available_out_); } if consumed_size != 0 { self.next_out_ = NextOutIncrement(&self.next_out_, consumed_size as i32); self.available_out_ = self.available_out_.wrapping_sub(consumed_size); self.total_out_ = self.total_out_.wrapping_add(consumed_size as u64); CheckFlushCompleteInner( &mut self.stream_state_, self.available_out_, &mut self.next_out_, ); *size = consumed_size; } else { *size = 0usize; result = &[]; } result } } pub fn BrotliEncoderVersion() -> u32 { 0x0100_0f01 } impl BrotliEncoderStateStruct { pub fn input_block_size(&mut self) -> usize { if !self.ensure_initialized() { return 0; } 1 << self.params.lgblock } pub fn write_data< 'a, MetablockCallback: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], interface::InputPair, &mut Alloc, ), >( &'a mut self, is_last: i32, force_flush: i32, out_size: &mut usize, output: &'a mut &'a mut [u8], metablock_callback: &mut MetablockCallback, ) -> bool { let ret = self.encode_data(is_last != 0, force_flush != 0, out_size, metablock_callback); *output = self.storage_.slice_mut(); ret } } brotli-6.0.0/src/enc/entropy_encode.rs000064400000000000000000000446771046102023000160630ustar 00000000000000/* Copyright 2010 Google Inc. All Rights Reserved. Distributed under MIT license. See file LICENSE for detail or copy at https://opensource.org/licenses/MIT */ /* Entropy encoding (Huffman) utilities. */ #![allow(dead_code)] use core::cmp::max; #[derive(Clone, Copy, Default)] pub struct HuffmanTree { pub total_count_: u32, pub index_left_: i16, pub index_right_or_value_: i16, } impl HuffmanTree { pub fn new(count: u32, left: i16, right: i16) -> Self { Self { total_count_: count, index_left_: left, index_right_or_value_: right, } } } pub fn BrotliSetDepth(p0: i32, pool: &mut [HuffmanTree], depth: &mut [u8], max_depth: i32) -> bool { let mut stack: [i32; 16] = [0; 16]; let mut level: i32 = 0i32; let mut p: i32 = p0; stack[0] = -1i32; loop { if (pool[(p as usize)]).index_left_ as i32 >= 0i32 { level += 1; if level > max_depth { return false; } stack[level as usize] = (pool[(p as usize)]).index_right_or_value_ as i32; p = (pool[(p as usize)]).index_left_ as i32; { continue; } } else { let pp = pool[(p as usize)]; depth[((pp).index_right_or_value_ as usize)] = level as u8; } while level >= 0i32 && (stack[level as usize] == -1i32) { level -= 1; } if level < 0i32 { return true; } p = stack[level as usize]; stack[level as usize] = -1i32; } } pub trait HuffmanComparator { fn Cmp(&self, a: &HuffmanTree, b: &HuffmanTree) -> bool; } pub struct SortHuffmanTree {} impl HuffmanComparator for SortHuffmanTree { fn Cmp(&self, v0: &HuffmanTree, v1: &HuffmanTree) -> bool { if v0.total_count_ != v1.total_count_ { v0.total_count_ < v1.total_count_ } else { v0.index_right_or_value_ > v1.index_right_or_value_ } } } pub fn SortHuffmanTreeItems( items: &mut [HuffmanTree], n: usize, comparator: Comparator, ) { static gaps: [usize; 6] = [132, 57, 23, 10, 4, 1]; if n < 13 { for i in 1..n { let mut tmp: HuffmanTree = items[i]; let mut k: usize = i; let mut j: usize = i.wrapping_sub(1); while comparator.Cmp(&mut tmp, &mut items[j]) { items[k] = items[j]; k = j; if { let _old = j; j = j.wrapping_sub(1); _old } == 0 { break; } } items[k] = tmp; } } else { let mut g: i32 = if n < 57usize { 2i32 } else { 0i32 }; while g < 6i32 { { let gap: usize = gaps[g as usize]; for i in gap..n { let mut j: usize = i; let mut tmp: HuffmanTree = items[i]; while j >= gap && (comparator.Cmp(&mut tmp, &mut items[j.wrapping_sub(gap)])) { { items[j] = items[j.wrapping_sub(gap)]; } j = j.wrapping_sub(gap); } items[j] = tmp; } } g += 1; } } } /* This function will create a Huffman tree. The catch here is that the tree cannot be arbitrarily deep. Brotli specifies a maximum depth of 15 bits for "code trees" and 7 bits for "code length code trees." count_limit is the value that is to be faked as the minimum value and this minimum value is raised until the tree matches the maximum length requirement. This algorithm is not of excellent performance for very long data blocks, especially when population counts are longer than 2**tree_limit, but we are not planning to use this with extremely long blocks. See https://en.wikipedia.org/wiki/Huffman_coding */ pub fn BrotliCreateHuffmanTree( data: &[u32], length: usize, tree_limit: i32, tree: &mut [HuffmanTree], depth: &mut [u8], ) { let sentinel = HuffmanTree::new(u32::MAX, -1, -1); let mut count_limit = 1u32; 'break1: loop { { let mut n: usize = 0usize; let mut i: usize; let mut j: usize; let mut k: usize; i = length; while i != 0usize { i = i.wrapping_sub(1); if data[i] != 0 { let count: u32 = max(data[i], count_limit); tree[n] = HuffmanTree::new(count, -1, i as i16); n = n.wrapping_add(1); } } if n == 1 { depth[((tree[0]).index_right_or_value_ as usize)] = 1u8; { break 'break1; } } SortHuffmanTreeItems(tree, n, SortHuffmanTree {}); tree[n] = sentinel; tree[n.wrapping_add(1)] = sentinel; i = 0usize; j = n.wrapping_add(1); k = n.wrapping_sub(1); while k != 0usize { { let left: usize; let right: usize; if (tree[i]).total_count_ <= (tree[j]).total_count_ { left = i; i = i.wrapping_add(1); } else { left = j; j = j.wrapping_add(1); } if (tree[i]).total_count_ <= (tree[j]).total_count_ { right = i; i = i.wrapping_add(1); } else { right = j; j = j.wrapping_add(1); } { let j_end: usize = (2usize).wrapping_mul(n).wrapping_sub(k); (tree[j_end]).total_count_ = (tree[left]) .total_count_ .wrapping_add((tree[right]).total_count_); (tree[j_end]).index_left_ = left as i16; (tree[j_end]).index_right_or_value_ = right as i16; tree[j_end.wrapping_add(1)] = sentinel; } } k = k.wrapping_sub(1); } if BrotliSetDepth( (2usize).wrapping_mul(n).wrapping_sub(1) as i32, tree, depth, tree_limit, ) { break 'break1; } } count_limit = count_limit.wrapping_mul(2); } } pub fn BrotliOptimizeHuffmanCountsForRle( mut length: usize, counts: &mut [u32], good_for_rle: &mut [u8], ) { let mut nonzero_count: usize = 0usize; let mut stride: usize; let mut limit: usize; let mut sum: usize; let streak_limit: usize = 1240usize; for i in 0usize..length { if counts[i] != 0 { nonzero_count = nonzero_count.wrapping_add(1); } } if nonzero_count < 16usize { return; } while length != 0usize && (counts[length.wrapping_sub(1)] == 0u32) { length = length.wrapping_sub(1); } if length == 0usize { return; } { let mut nonzeros: usize = 0usize; let mut smallest_nonzero: u32 = (1i32 << 30) as u32; for i in 0usize..length { if counts[i] != 0u32 { nonzeros = nonzeros.wrapping_add(1); if smallest_nonzero > counts[i] { smallest_nonzero = counts[i]; } } } if nonzeros < 5usize { return; } if smallest_nonzero < 4u32 { let zeros: usize = length.wrapping_sub(nonzeros); if zeros < 6 { for i in 1..length.wrapping_sub(1) { if counts[i - 1] != 0 && counts[i] == 0 && counts[i + 1] != 0 { counts[i] = 1; } } } } if nonzeros < 28usize { return; } } for rle_item in good_for_rle.iter_mut() { *rle_item = 0; } { let mut symbol: u32 = counts[0]; let mut step: usize = 0usize; for i in 0..=length { if i == length || counts[i] != symbol { if symbol == 0u32 && (step >= 5usize) || symbol != 0u32 && (step >= 7usize) { for k in 0usize..step { good_for_rle[i.wrapping_sub(k).wrapping_sub(1)] = 1u8; } } step = 1; if i != length { symbol = counts[i]; } } else { step = step.wrapping_add(1); } } } stride = 0usize; limit = (256u32) .wrapping_mul((counts[0]).wrapping_add(counts[1]).wrapping_add(counts[2])) .wrapping_div(3) .wrapping_add(420) as usize; sum = 0usize; for i in 0..=length { if i == length || good_for_rle[i] != 0 || i != 0usize && (good_for_rle[i.wrapping_sub(1)] != 0) || ((256u32).wrapping_mul(counts[i]) as usize) .wrapping_sub(limit) .wrapping_add(streak_limit) >= (2usize).wrapping_mul(streak_limit) { if stride >= 4usize || stride >= 3usize && (sum == 0usize) { let mut count: usize = sum .wrapping_add(stride.wrapping_div(2)) .wrapping_div(stride); if count == 0usize { count = 1; } if sum == 0usize { count = 0usize; } for k in 0usize..stride { counts[i.wrapping_sub(k).wrapping_sub(1)] = count as u32; } } stride = 0usize; sum = 0usize; if i < length.wrapping_sub(2) { limit = (256u32) .wrapping_mul( (counts[i]) .wrapping_add(counts[i.wrapping_add(1)]) .wrapping_add(counts[i.wrapping_add(2)]), ) .wrapping_div(3) .wrapping_add(420) as usize; } else if i < length { limit = (256u32).wrapping_mul(counts[i]) as usize; } else { limit = 0usize; } } stride = stride.wrapping_add(1); if i != length { sum = sum.wrapping_add(counts[i] as usize); if stride >= 4usize { limit = (256usize) .wrapping_mul(sum) .wrapping_add(stride.wrapping_div(2)) .wrapping_div(stride); } if stride == 4usize { limit = limit.wrapping_add(120); } } } } pub fn DecideOverRleUse( depth: &[u8], length: usize, use_rle_for_non_zero: &mut i32, use_rle_for_zero: &mut i32, ) { let mut total_reps_zero: usize = 0usize; let mut total_reps_non_zero: usize = 0usize; let mut count_reps_zero: usize = 1; let mut count_reps_non_zero: usize = 1; let mut i: usize; i = 0usize; while i < length { let value: u8 = depth[i]; let mut reps: usize = 1; let mut k: usize; k = i.wrapping_add(1); while k < length && (depth[k] as i32 == value as i32) { { reps = reps.wrapping_add(1); } k = k.wrapping_add(1); } if reps >= 3usize && (value as i32 == 0i32) { total_reps_zero = total_reps_zero.wrapping_add(reps); count_reps_zero = count_reps_zero.wrapping_add(1); } if reps >= 4usize && (value as i32 != 0i32) { total_reps_non_zero = total_reps_non_zero.wrapping_add(reps); count_reps_non_zero = count_reps_non_zero.wrapping_add(1); } i = i.wrapping_add(reps); } *use_rle_for_non_zero = if total_reps_non_zero > count_reps_non_zero.wrapping_mul(2) { 1i32 } else { 0i32 }; *use_rle_for_zero = if total_reps_zero > count_reps_zero.wrapping_mul(2) { 1i32 } else { 0i32 }; } fn Reverse(v: &mut [u8], mut start: usize, mut end: usize) { end = end.wrapping_sub(1); while start < end { v.swap(start, end); start = start.wrapping_add(1); end = end.wrapping_sub(1); } } fn BrotliWriteHuffmanTreeRepetitions( previous_value: u8, value: u8, mut repetitions: usize, tree_size: &mut usize, tree: &mut [u8], extra_bits_data: &mut [u8], ) { if previous_value as i32 != value as i32 { tree[*tree_size] = value; extra_bits_data[*tree_size] = 0u8; *tree_size = tree_size.wrapping_add(1); repetitions = repetitions.wrapping_sub(1); } if repetitions == 7usize { tree[*tree_size] = value; extra_bits_data[*tree_size] = 0u8; *tree_size = tree_size.wrapping_add(1); repetitions = repetitions.wrapping_sub(1); } if repetitions < 3usize { for _i in 0usize..repetitions { tree[*tree_size] = value; extra_bits_data[*tree_size] = 0u8; *tree_size = tree_size.wrapping_add(1); } } else { let start: usize = *tree_size; repetitions = repetitions.wrapping_sub(3); loop { tree[*tree_size] = 16u8; extra_bits_data[*tree_size] = (repetitions & 0x03) as u8; *tree_size = tree_size.wrapping_add(1); repetitions >>= 2i32; if repetitions == 0usize { break; } repetitions = repetitions.wrapping_sub(1); } Reverse(tree, start, *tree_size); Reverse(extra_bits_data, start, *tree_size); } } fn BrotliWriteHuffmanTreeRepetitionsZeros( mut repetitions: usize, tree_size: &mut usize, tree: &mut [u8], extra_bits_data: &mut [u8], ) { if repetitions == 11 { tree[*tree_size] = 0u8; extra_bits_data[*tree_size] = 0u8; *tree_size = tree_size.wrapping_add(1); repetitions = repetitions.wrapping_sub(1); } if repetitions < 3usize { for _i in 0usize..repetitions { tree[*tree_size] = 0u8; extra_bits_data[*tree_size] = 0u8; *tree_size = tree_size.wrapping_add(1); } } else { let start: usize = *tree_size; repetitions = repetitions.wrapping_sub(3); loop { tree[*tree_size] = 17u8; extra_bits_data[*tree_size] = (repetitions & 0x7usize) as u8; *tree_size = tree_size.wrapping_add(1); repetitions >>= 3i32; if repetitions == 0usize { break; } repetitions = repetitions.wrapping_sub(1); } Reverse(tree, start, *tree_size); Reverse(extra_bits_data, start, *tree_size); } } pub fn BrotliWriteHuffmanTree( depth: &[u8], length: usize, tree_size: &mut usize, tree: &mut [u8], extra_bits_data: &mut [u8], ) { let mut previous_value: u8 = 8u8; let mut i: usize; let mut use_rle_for_non_zero: i32 = 0i32; let mut use_rle_for_zero: i32 = 0i32; let mut new_length: usize = length; i = 0usize; 'break27: while i < length { { if depth[length.wrapping_sub(i).wrapping_sub(1)] as i32 == 0i32 { new_length = new_length.wrapping_sub(1); } else { break 'break27; } } i = i.wrapping_add(1); } if length > 50usize { DecideOverRleUse( depth, new_length, &mut use_rle_for_non_zero, &mut use_rle_for_zero, ); } i = 0usize; while i < new_length { let value: u8 = depth[i]; let mut reps: usize = 1; if value as i32 != 0i32 && (use_rle_for_non_zero != 0) || value as i32 == 0i32 && (use_rle_for_zero != 0) { let mut k: usize; k = i.wrapping_add(1); while k < new_length && (depth[k] as i32 == value as i32) { { reps = reps.wrapping_add(1); } k = k.wrapping_add(1); } } if value as i32 == 0i32 { BrotliWriteHuffmanTreeRepetitionsZeros(reps, tree_size, tree, extra_bits_data); } else { BrotliWriteHuffmanTreeRepetitions( previous_value, value, reps, tree_size, tree, extra_bits_data, ); previous_value = value; } i = i.wrapping_add(reps); } } fn BrotliReverseBits(num_bits: usize, mut bits: u16) -> u16 { static kLut: [usize; 16] = [ 0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe, 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf, ]; let mut retval: usize = kLut[(bits as i32 & 0xfi32) as usize]; let mut i: usize; i = 4usize; while i < num_bits { { retval <<= 4i32; bits = (bits as i32 >> 4) as u16; retval |= kLut[(bits as i32 & 0xfi32) as usize]; } i = i.wrapping_add(4); } retval >>= (0usize.wrapping_sub(num_bits) & 0x3usize); retval as u16 } const MAX_HUFFMAN_BITS: usize = 16; pub fn BrotliConvertBitDepthsToSymbols(depth: &[u8], len: usize, bits: &mut [u16]) { /* In Brotli, all bit depths are [1..15] 0 bit depth means that the symbol does not exist. */ let mut bl_count: [u16; MAX_HUFFMAN_BITS] = [0; MAX_HUFFMAN_BITS]; let mut next_code: [u16; MAX_HUFFMAN_BITS] = [0; MAX_HUFFMAN_BITS]; let mut code: i32 = 0i32; for i in 0usize..len { let _rhs = 1; let _lhs = &mut bl_count[depth[i] as usize]; *_lhs = (*_lhs as i32 + _rhs) as u16; } bl_count[0] = 0u16; next_code[0] = 0u16; for i in 1..MAX_HUFFMAN_BITS { code = (code + bl_count[i - 1] as i32) << 1; next_code[i] = code as u16; } for i in 0usize..len { if depth[i] != 0 { bits[i] = BrotliReverseBits(depth[i] as usize, { let _rhs = 1; let _lhs = &mut next_code[depth[i] as usize]; let _old = *_lhs; *_lhs = (*_lhs as i32 + _rhs) as u16; _old }); } } } brotli-6.0.0/src/enc/fast_log.rs000064400000000000000000000155431046102023000146320ustar 00000000000000#[allow(dead_code)] #[allow(clippy::excessive_precision)] static mut kLog2Table: [f32; 256] = [ 0.0000000000000000f32, 0.0000000000000000f32, 1.0000000000000000f32, 1.5849625007211563f32, 2.0000000000000000f32, 2.3219280948873622f32, 2.5849625007211561f32, 2.8073549220576042f32, 3.0000000000000000f32, 3.1699250014423126f32, 3.3219280948873626f32, 3.4594316186372978f32, 3.5849625007211565f32, 3.7004397181410922f32, 3.8073549220576037f32, 3.9068905956085187f32, 4.0000000000000000f32, 4.0874628412503400f32, 4.1699250014423122f32, 4.2479275134435852f32, 4.3219280948873626f32, 4.3923174227787607f32, 4.4594316186372973f32, 4.5235619560570131f32, 4.5849625007211570f32, 4.6438561897747244f32, 4.7004397181410926f32, 4.7548875021634691f32, 4.8073549220576037f32, 4.8579809951275728f32, 4.9068905956085187f32, 4.9541963103868758f32, 5.0000000000000000f32, 5.0443941193584534f32, 5.0874628412503400f32, 5.1292830169449664f32, 5.1699250014423122f32, 5.2094533656289501f32, 5.2479275134435852f32, 5.2854022188622487f32, 5.3219280948873626f32, 5.3575520046180838f32, 5.3923174227787607f32, 5.4262647547020979f32, 5.4594316186372973f32, 5.4918530963296748f32, 5.5235619560570131f32, 5.5545888516776376f32, 5.5849625007211570f32, 5.6147098441152083f32, 5.6438561897747244f32, 5.6724253419714961f32, 5.7004397181410926f32, 5.7279204545631996f32, 5.7548875021634691f32, 5.7813597135246599f32, 5.8073549220576046f32, 5.8328900141647422f32, 5.8579809951275719f32, 5.8826430493618416f32, 5.9068905956085187f32, 5.9307373375628867f32, 5.9541963103868758f32, 5.9772799234999168f32, 6.0000000000000000f32, 6.0223678130284544f32, 6.0443941193584534f32, 6.0660891904577721f32, 6.0874628412503400f32, 6.1085244567781700f32, 6.1292830169449672f32, 6.1497471195046822f32, 6.1699250014423122f32, 6.1898245588800176f32, 6.2094533656289510f32, 6.2288186904958804f32, 6.2479275134435861f32, 6.2667865406949019f32, 6.2854022188622487f32, 6.3037807481771031f32, 6.3219280948873617f32, 6.3398500028846252f32, 6.3575520046180847f32, 6.3750394313469254f32, 6.3923174227787598f32, 6.4093909361377026f32, 6.4262647547020979f32, 6.4429434958487288f32, 6.4594316186372982f32, 6.4757334309663976f32, 6.4918530963296748f32, 6.5077946401986964f32, 6.5235619560570131f32, 6.5391588111080319f32, 6.5545888516776376f32, 6.5698556083309478f32, 6.5849625007211561f32, 6.5999128421871278f32, 6.6147098441152092f32, 6.6293566200796095f32, 6.6438561897747253f32, 6.6582114827517955f32, 6.6724253419714952f32, 6.6865005271832185f32, 6.7004397181410917f32, 6.7142455176661224f32, 6.7279204545631988f32, 6.7414669864011465f32, 6.7548875021634691f32, 6.7681843247769260f32, 6.7813597135246599f32, 6.7944158663501062f32, 6.8073549220576037f32, 6.8201789624151887f32, 6.8328900141647422f32, 6.8454900509443757f32, 6.8579809951275719f32, 6.8703647195834048f32, 6.8826430493618416f32, 6.8948177633079437f32, 6.9068905956085187f32, 6.9188632372745955f32, 6.9307373375628867f32, 6.9425145053392399f32, 6.9541963103868758f32, 6.9657842846620879f32, 6.9772799234999168f32, 6.9886846867721664f32, 7.0000000000000000f32, 7.0112272554232540f32, 7.0223678130284544f32, 7.0334230015374501f32, 7.0443941193584534f32, 7.0552824355011898f32, 7.0660891904577721f32, 7.0768155970508317f32, 7.0874628412503400f32, 7.0980320829605272f32, 7.1085244567781700f32, 7.1189410727235076f32, 7.1292830169449664f32, 7.1395513523987937f32, 7.1497471195046822f32, 7.1598713367783891f32, 7.1699250014423130f32, 7.1799090900149345f32, 7.1898245588800176f32, 7.1996723448363644f32, 7.2094533656289492f32, 7.2191685204621621f32, 7.2288186904958804f32, 7.2384047393250794f32, 7.2479275134435861f32, 7.2573878426926521f32, 7.2667865406949019f32, 7.2761244052742384f32, 7.2854022188622487f32, 7.2946207488916270f32, 7.3037807481771031f32, 7.3128829552843557f32, 7.3219280948873617f32, 7.3309168781146177f32, 7.3398500028846243f32, 7.3487281542310781f32, 7.3575520046180847f32, 7.3663222142458151f32, 7.3750394313469254f32, 7.3837042924740528f32, 7.3923174227787607f32, 7.4008794362821844f32, 7.4093909361377026f32, 7.4178525148858991f32, 7.4262647547020979f32, 7.4346282276367255f32, 7.4429434958487288f32, 7.4512111118323299f32, 7.4594316186372973f32, 7.4676055500829976f32, 7.4757334309663976f32, 7.4838157772642564f32, 7.4918530963296748f32, 7.4998458870832057f32, 7.5077946401986964f32, 7.5156998382840436f32, 7.5235619560570131f32, 7.5313814605163119f32, 7.5391588111080319f32, 7.5468944598876373f32, 7.5545888516776376f32, 7.5622424242210728f32, 7.5698556083309478f32, 7.5774288280357487f32, 7.5849625007211561f32, 7.5924570372680806f32, 7.5999128421871278f32, 7.6073303137496113f32, 7.6147098441152075f32, 7.6220518194563764f32, 7.6293566200796095f32, 7.6366246205436488f32, 7.6438561897747244f32, 7.6510516911789290f32, 7.6582114827517955f32, 7.6653359171851765f32, 7.6724253419714952f32, 7.6794800995054464f32, 7.6865005271832185f32, 7.6934869574993252f32, 7.7004397181410926f32, 7.7073591320808825f32, 7.7142455176661224f32, 7.7210991887071856f32, 7.7279204545631996f32, 7.7347096202258392f32, 7.7414669864011465f32, 7.7481928495894596f32, 7.7548875021634691f32, 7.7615512324444795f32, 7.7681843247769260f32, 7.7747870596011737f32, 7.7813597135246608f32, 7.7879025593914317f32, 7.7944158663501062f32, 7.8008998999203047f32, 7.8073549220576037f32, 7.8137811912170374f32, 7.8201789624151887f32, 7.8265484872909159f32, 7.8328900141647422f32, 7.8392037880969445f32, 7.8454900509443757f32, 7.8517490414160571f32, 7.8579809951275719f32, 7.8641861446542798f32, 7.8703647195834048f32, 7.8765169465650002f32, 7.8826430493618425f32, 7.8887432488982601f32, 7.8948177633079446f32, 7.9008668079807496f32, 7.9068905956085187f32, 7.9128893362299619f32, 7.9188632372745955f32, 7.9248125036057813f32, 7.9307373375628867f32, 7.9366379390025719f32, 7.9425145053392399f32, 7.9483672315846778f32, 7.9541963103868758f32, 7.9600019320680806f32, 7.9657842846620870f32, 7.9715435539507720f32, 7.9772799234999168f32, 7.9829935746943104f32, 7.9886846867721664f32, 7.9943534368588578f32, ]; brotli-6.0.0/src/enc/find_stride.rs000064400000000000000000001034441046102023000153240ustar 00000000000000use super::super::alloc::{SliceWrapper, SliceWrapperMut}; use super::input_pair::{InputPair, InputReference}; use super::interface; use super::util::FastLog2; use core::cmp::{max, min}; use core::ops::{Index, IndexMut, Range}; // float32 doesn't have enough resolution for blocks of data more than 3.5 megs pub type floatY = f64; // the cost of storing a particular population of data including the approx // cost of a huffman table to describe the frequencies of each symbol pub fn HuffmanCost(population: &[u32]) -> floatY { assert_eq!(population.len(), 256 * 256); let mut cost: floatY = 0.0 as floatY; let mut sum: floatY = 0.0 as floatY; let mut buckets: floatY = 0.0 as floatY; for pop in population.iter() { if *pop == 0 { continue; } cost -= *pop as floatY * FastLog2(*pop as u64) as floatY; sum += *pop as floatY; buckets += 1.0 as floatY; } //println!("Observed {} nonzero buckets with a sum of {}, hc={}", buckets, sum, cost); 16.0 as floatY * buckets + cost + sum * FastLog2(sum as u64) as floatY } // this holds a population of data assuming 1 byte of prior for that data // bucket_populations is therefore a 65536-long dynamically allocated buffer pub struct EntropyBucketPopulation> { pub bucket_populations: AllocU32::AllocatedMemory, pub cached_bit_entropy: floatY, } impl> EntropyBucketPopulation { pub fn new(m32: &mut AllocU32) -> Self { let size = 256 * 256; EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), } } pub fn free(&mut self, m32: &mut AllocU32) { m32.free_cell(core::mem::take(&mut self.bucket_populations)); } fn clone_from(&mut self, other: &EntropyBucketPopulation) { self.bucket_populations .slice_mut() .clone_from_slice(other.bucket_populations.slice()); } fn add_assign(&mut self, other: &EntropyBucketPopulation) { assert_eq!( self.bucket_populations.slice().len(), other.bucket_populations.slice().len() ); for (item, other_item) in self .bucket_populations .slice_mut() .iter_mut() .zip(other.bucket_populations.slice().iter()) { *item += *other_item; } self.cached_bit_entropy = HuffmanCost(self.bucket_populations.slice()); } // clear the allocated memory and reset literal population to zero fn bzero(&mut self) { self.cached_bit_entropy = 0.0; for bp in self.bucket_populations.slice_mut().iter_mut() { *bp = 0; } } // setup population to the sum of an array of populations where the stride of that row matches. Additionally allow another optional fn initiate_from( &mut self, rows: [&[Self]; 2], rows_stride: [&[u8]; 2], stride: u8, do_clear: bool, ) { self.cached_bit_entropy = 0.0; let mut found_any = false; for (sub_row, sub_stride) in rows.iter().zip(rows_stride.iter()) { for (item, istride) in sub_row.iter().zip(sub_stride.iter()) { if *istride != stride { continue; // if we chain, then optional was already filtered by stride } if do_clear && !found_any { self.bucket_populations .slice_mut() .clone_from_slice(item.bucket_populations.slice()); found_any = true; } else { for (dst, src) in self .bucket_populations .slice_mut() .iter_mut() .zip(item.bucket_populations.slice().iter()) { *dst += *src; } } } } if do_clear && !found_any { self.bzero(); } else { self.cached_bit_entropy = HuffmanCost(self.bucket_populations.slice()); } } fn bit_cost_of_data_subset( &mut self, data0: &[u8], mut stride: u8, mut prev_bytes: [u8; NUM_STRIDES], scratch: &mut EntropyBucketPopulation, ) -> floatY { prev_bytes.reverse(); stride = max(1, stride); // we return stride=1 to mean 1 away scratch .bucket_populations .slice_mut() .clone_from_slice(self.bucket_populations.slice()); scratch.bucket_populations.slice_mut()[65535] += 1; // to demonstrate that we have scratch.bucket_populations.slice_mut()[65535] -= 1; // to demonstrate that we have write capability let mut stray_count = 0.0 as floatY; assert_eq!((NUM_STRIDES - 1) & NUM_STRIDES, 0); // must be power of two for (index, val) in data0.iter().enumerate() { let prior_byte = prev_bytes[(index + (NUM_STRIDES - stride as usize)) & (NUM_STRIDES - 1)]; let loc = &mut scratch.bucket_populations.slice_mut() [prior_byte as usize * 256 + *val as usize]; if *loc == 0 { stray_count += 1.0; } else { *loc -= 1; } prev_bytes[index & (NUM_STRIDES - 1)] = *val; } if self.cached_bit_entropy == 0.0 as floatY { self.cached_bit_entropy = HuffmanCost(self.bucket_populations.slice()); } debug_assert_eq!( HuffmanCost(self.bucket_populations.slice()), self.cached_bit_entropy ); scratch.cached_bit_entropy = HuffmanCost(scratch.bucket_populations.slice()); self.cached_bit_entropy - scratch.cached_bit_entropy + stray_count * 8.0 } } const NUM_STRIDES: usize = 8; #[derive(Copy, Clone)] pub struct BucketPopIndex { pub val: u8, pub six_bits: u8, pub stride: u8, } impl> Index for EntropyBucketPopulation { type Output = u32; fn index(&self, index: BucketPopIndex) -> &u32 { &self.bucket_populations.slice() [index.val as usize + index.six_bits as usize * 256 + index.stride as usize * 256 * 64] } } impl> IndexMut for EntropyBucketPopulation { fn index_mut(&mut self, index: BucketPopIndex) -> &mut u32 { &mut self.bucket_populations.slice_mut() [index.val as usize + index.six_bits as usize * 256 + index.stride as usize * 256 * 64] } } pub struct EntropyTally> { pop: [EntropyBucketPopulation; NUM_STRIDES], } const NUM_LEVELS: usize = 4; const NUM_NODES: usize = (1 << (NUM_LEVELS)) - 1; pub const NUM_LEAF_NODES: usize = (NUM_NODES + 1) >> 1; pub struct EntropyPyramid> { pop: [EntropyBucketPopulation; NUM_NODES], stride: [u8; NUM_NODES], } impl> EntropyPyramid { pub fn last_level_range(&self) -> Range { (NUM_NODES - (1 << (NUM_LEVELS - 1)))..NUM_NODES } pub fn byte_index_to_pyramid_index(&self, byte_index: usize, metablock_size: usize) -> usize { let range = self.last_level_range(); min( range.start + (range.end - range.start) * byte_index / metablock_size, range.end - 1, ) // since we tally after the end of the literal block, it could be after the pyramid } pub fn reset_scratch_to_deepest_level(&self, output: &mut EntropyTally) { let mut has_modified = [false; NUM_STRIDES]; //println!("Last level range {:?}", self.last_level_range()); for index in self.last_level_range() { if has_modified[self.stride[index] as usize] { output.pop[self.stride[index] as usize].add_assign(&self.pop[index]); } else { output.pop[self.stride[index] as usize].clone_from(&self.pop[index]); has_modified[self.stride[index] as usize] = true; } } for stride in 0..NUM_STRIDES { if !has_modified[stride] { output.pop[stride].bzero(); output.pop[stride].cached_bit_entropy = 0.0; } else { output.pop[stride].cached_bit_entropy = HuffmanCost(output.pop[stride].bucket_populations.slice()); } //println!("BASE PYRAMID {} = {}", stride,output.pop[stride].cached_bit_entropy); } } pub fn stride_last_level_range(&self) -> [u8; NUM_LEAF_NODES] { let mut ret = [0u8; NUM_LEAF_NODES]; ret.clone_from_slice(self.stride.split_at(self.stride.len() - NUM_LEAF_NODES).1); ret } pub fn free(&mut self, m32: &mut AllocU32) { for item in self.pop.iter_mut() { item.free(m32); } } pub fn disabled_placeholder(_m32: &mut AllocU32) -> Self { EntropyPyramid:: { pop: [ EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: AllocU32::AllocatedMemory::default(), }, ], stride: [0; NUM_NODES], } } pub fn new(m32: &mut AllocU32) -> Self { let size = 256 * 256; EntropyPyramid:: { pop: [ EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: m32.alloc_cell(size), }, ], stride: [0; NUM_NODES], } } pub fn bit_cost_of_literals( &mut self, data0: &[u8], start_index: u32, metablock_len: usize, stride: u8, previous_bytes: [u8; NUM_STRIDES], scratch: &mut EntropyTally, ) -> floatY { assert!(stride as usize <= NUM_STRIDES); self.pop[self.byte_index_to_pyramid_index(start_index as usize, metablock_len)] .bit_cost_of_data_subset(data0, stride, previous_bytes, &mut scratch.pop[0]) } fn populate_entry_stride1(&mut self, input: InputPair, index: u32) { let mut prev_val = 0; let pyr_item = &mut self.pop[index as usize]; pyr_item.bzero(); assert_eq!(pyr_item.bucket_populations.slice()[65535], 0); for val in input.0.slice().iter().chain(input.1.slice().iter()) { pyr_item.bucket_populations.slice_mut()[prev_val as usize * 256 + *val as usize] += 1; prev_val = *val; } pyr_item.cached_bit_entropy = HuffmanCost(pyr_item.bucket_populations.slice()); self.stride[index as usize] = 0; } fn populate_entry( &mut self, input: InputPair, scratch: &mut EntropyTally, index: u32, mirror_range: Option>, prev_range: Option>, ) { let mut initial_entropies = [0.0 as floatY; NUM_STRIDES]; let nothing: &[EntropyBucketPopulation] = &[]; let nothing_u8: &[u8] = &[]; { let pop_ranges = [ match mirror_range { None => nothing, Some(ref ir) => &self.pop[ir.clone()], }, match prev_range { None => nothing, Some(ref pr) => &self.pop[pr.clone()], }, ]; let stride_ranges = [ match mirror_range { None => nothing_u8, Some(ref ir) => &self.stride[ir.clone()], }, match prev_range { None => nothing_u8, Some(ref pr) => &self.stride[pr.clone()], }, ]; for stride in 0..NUM_STRIDES { scratch.pop[stride].initiate_from(pop_ranges, stride_ranges, stride as u8, true); initial_entropies[stride] = scratch.pop[stride].cached_bit_entropy; } } scratch.observe_input_stream(input.0.slice(), input.1.slice()); let mut best_entropy_index = 0; let mut min_entropy_value = (scratch.pop[0].cached_bit_entropy - initial_entropies[0]); //println!("{} OLD ENTROPY {:} NEW_ENTROPY {:}", best_entropy_index, scratch.pop[0].cached_bit_entropy, initial_entropies[0]); for stride in 1..NUM_STRIDES { let entropy_value = scratch.pop[stride].cached_bit_entropy - initial_entropies[stride]; //println!("{} OLD ENTROPY {:} NEW_ENTROPY {:}", stride, scratch.pop[stride].cached_bit_entropy, initial_entropies[stride]); if entropy_value < min_entropy_value { best_entropy_index = stride; min_entropy_value = entropy_value; } } self.pop[index as usize].clone_from(&scratch.pop[best_entropy_index]); self.stride[index as usize] = best_entropy_index as u8; } pub fn populate_stride1(&mut self, input0: &[u8], input1: &[u8]) { let input = InputPair( InputReference { data: input0, orig_offset: 0, }, InputReference { data: input1, orig_offset: input0.len(), }, ); for i in 0..2 { let first_range = if i == 0 { input.split_at(input.len() >> 1).0 } else { input.split_at(input.len() >> 1).1 }; for j in 0..2 { let second_range = if j == 0 { first_range.split_at(input.len() >> 2).0 } else { first_range.split_at(input.len() >> 2).1 }; if NUM_LEVELS == 4 { for k in 0..2 { let third_range = if j == 0 { second_range.split_at(input.len() >> 3).0 } else { second_range.split_at(input.len() >> 3).1 }; self.populate_entry_stride1(third_range, 7 + ((i << 2) + (j << 1) + k)); } } else { assert_eq!(NUM_LEVELS, 3); // we hard coded the 3 levels for now... we can add more later or make this into some kind of recursion self.populate_entry_stride1(second_range, 3 + ((i << 1) + j)); } } } } pub fn populate(&mut self, input0: &[u8], input1: &[u8], scratch: &mut EntropyTally) { let input = InputPair( InputReference { data: input0, orig_offset: 0, }, InputReference { data: input1, orig_offset: input0.len(), }, ); self.populate_entry(input, scratch, 0, None, None); // BASE // LEVEL 1 self.populate_entry( input.split_at(input.len() >> 1).0, scratch, 1, Some(0..1), None, ); self.populate_entry( input.split_at(input.len() >> 1).1, scratch, 2, None, Some(1..2), ); // should we use the range from 0..1?? // LEVEL 2 self.populate_entry( input.split_at(input.len() >> 2).0, scratch, 3, Some(1..3), None, ); self.populate_entry( input .split_at(input.len() >> 1) .0 .split_at(input.len() >> 2) .1, scratch, 4, Some(2..3), Some(3..4), ); self.populate_entry( input .split_at(input.len() >> 1) .1 .split_at(input.len() >> 2) .0, scratch, 5, Some(3..5), None, ); self.populate_entry( input .split_at(input.len() >> 1) .1 .split_at(input.len() >> 2) .1, scratch, 6, Some(3..6), None, ); if NUM_LEVELS == 4 { // level 4 self.populate_entry( input .split_at(input.len() >> 1) .0 .split_at(input.len() >> 2) .0 .split_at(input.len() >> 3) .0, scratch, 7, Some(4..7), None, ); self.populate_entry( input .split_at(input.len() >> 1) .0 .split_at(input.len() >> 2) .0 .split_at(input.len() >> 3) .1, scratch, 8, Some(4..7), Some(7..8), ); self.populate_entry( input .split_at(input.len() >> 1) .0 .split_at(input.len() >> 2) .1 .split_at(input.len() >> 3) .0, scratch, 9, Some(5..7), Some(7..9), ); self.populate_entry( input .split_at(input.len() >> 1) .0 .split_at(input.len() >> 2) .1 .split_at(input.len() >> 3) .1, scratch, 0x0a, Some(5..7), Some(7..0xa), ); self.populate_entry( input .split_at(input.len() >> 1) .1 .split_at(input.len() >> 2) .0 .split_at(input.len() >> 3) .0, scratch, 0xb, Some(6..7), Some(7..0xb), ); self.populate_entry( input .split_at(input.len() >> 1) .1 .split_at(input.len() >> 2) .0 .split_at(input.len() >> 3) .1, scratch, 0xc, Some(6..7), Some(7..0xc), ); self.populate_entry( input .split_at(input.len() >> 1) .1 .split_at(input.len() >> 2) .1 .split_at(input.len() >> 3) .0, scratch, 0xd, None, Some(7..0xd), ); self.populate_entry( input .split_at(input.len() >> 1) .1 .split_at(input.len() >> 2) .1 .split_at(input.len() >> 3) .1, scratch, 0xe, None, Some(7..0xe), ); } else { assert_eq!(NUM_LEVELS, 3); // we hard coded the 3 levels for now... we can add more later or make this into some kind of recursion } } } impl> EntropyTally { pub fn new(m32: &mut AllocU32, max_stride_arg: Option) -> EntropyTally { let size = 256 * 256; let max_stride = max_stride_arg.unwrap_or(NUM_STRIDES as u8); EntropyTally:: { pop: [ EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: if 0 < max_stride { m32.alloc_cell(size) } else { AllocU32::AllocatedMemory::default() }, }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: if 1 < max_stride { m32.alloc_cell(size) } else { AllocU32::AllocatedMemory::default() }, }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: if 2 < max_stride { m32.alloc_cell(size) } else { AllocU32::AllocatedMemory::default() }, }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: if 3 < max_stride { m32.alloc_cell(size) } else { AllocU32::AllocatedMemory::default() }, }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: if 4 < max_stride { m32.alloc_cell(size) } else { AllocU32::AllocatedMemory::default() }, }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: if 5 < max_stride { m32.alloc_cell(size) } else { AllocU32::AllocatedMemory::default() }, }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: if 6 < max_stride { m32.alloc_cell(size) } else { AllocU32::AllocatedMemory::default() }, }, EntropyBucketPopulation:: { cached_bit_entropy: 0.0, bucket_populations: if 7 < max_stride { m32.alloc_cell(size) } else { AllocU32::AllocatedMemory::default() }, }, ], } } pub fn disabled_placeholder(m32: &mut AllocU32) -> EntropyTally { Self::new(m32, Some(0)) } fn observe_input_stream(&mut self, input0: &[u8], input1: &[u8]) { let mut priors = [0u8; NUM_STRIDES]; for val in input0.iter().chain(input1.iter()) { for stride in 0..NUM_STRIDES { self.pop[stride].bucket_populations.slice_mut() [priors[stride] as usize * 256 + (*val as usize)] += 1; } { let mut tmp = [0u8; NUM_STRIDES - 1]; tmp.clone_from_slice(&priors[..(NUM_STRIDES - 1)]); priors[1..].clone_from_slice(&tmp[..]); priors[0] = *val; } } for stride in 0..NUM_STRIDES { self.pop[stride].cached_bit_entropy = HuffmanCost(self.pop[stride].bucket_populations.slice()); } } fn identify_best_population_and_update_cache(&mut self) -> u8 { let mut old_bit_entropy: [floatY; NUM_STRIDES] = [0.0; NUM_STRIDES]; for (obe, be) in old_bit_entropy.iter_mut().zip(self.pop.iter_mut()) { *obe = be.cached_bit_entropy; if *obe != 0.0 { be.cached_bit_entropy = HuffmanCost(be.bucket_populations.slice()); } } let mut best_stride = 0u8; let mut best_entropy = self.pop[0].cached_bit_entropy - old_bit_entropy[0]; //println!("Weighing {} as {}", best_stride, best_entropy); for index in 1..NUM_STRIDES { let cur = self.pop[index].cached_bit_entropy - old_bit_entropy[index]; //println!("Weighing {} as {} = [{} - {}]", index, cur, self.pop[index].cached_bit_entropy, old_bit_entropy[index]); if (best_entropy == 0.0 || cur < best_entropy) && old_bit_entropy[index] > 0.0 { best_stride = index as u8; best_entropy = cur; } } best_stride } pub fn peek(&mut self) -> &mut EntropyBucketPopulation { &mut self.pop[0] } pub fn get_previous_bytes( &self, input0: &[u8], input1: &[u8], bytes_processed: usize, ) -> [u8; NUM_STRIDES] { let mut retval = [0u8; NUM_STRIDES]; for index in 0..NUM_STRIDES { let bp_offset = index + 1; if bp_offset <= bytes_processed { let offset = bytes_processed - bp_offset; if offset >= input0.len() { retval[index] = input1[offset - input0.len()]; } else { retval[index] = input0[offset]; } } } retval } pub fn pick_best_stride>( &mut self, commands: &[interface::Command], input0: &[u8], input1: &[u8], bytes_processed: &mut usize, entropy_pyramid: &EntropyPyramid, stride_detection_quality: u8, ) -> u8 { if stride_detection_quality == 0 { return 0; } //println!("ENTROPY PYRAMID {:?}", entropy_pyramid.stride); if stride_detection_quality > 1 { entropy_pyramid.reset_scratch_to_deepest_level(self); } let mut pyramid_byte_index: usize = 0; for cmd in commands.iter() { match *cmd { interface::Command::Copy(ref copy) => { *bytes_processed += copy.num_bytes as usize; } interface::Command::Dict(ref dict) => { *bytes_processed += dict.final_size as usize; } interface::Command::Literal(ref lit) => { if stride_detection_quality > 1 { let mut priors = self.get_previous_bytes(input0, input1, *bytes_processed); for (lindex, val) in lit.data.slice().iter().enumerate() { if lindex == NUM_STRIDES { let vpriors = self.get_previous_bytes( input0, input1, NUM_STRIDES + *bytes_processed, ); assert_eq!(vpriors, priors); } for (index, prior) in priors.iter().enumerate() { self.pop[index].bucket_populations.slice_mut() [256 * (*prior as usize) + *val as usize] += 1; // increment the population value of this literal // for the respective prior for the stride index } { //reset prior values for the next item let mut tmp = [0u8; 7]; tmp.clone_from_slice(&priors[..7]); priors[1..].clone_from_slice(&tmp[..]); priors[0] = *val; } } } *bytes_processed += lit.data.slice().len(); pyramid_byte_index = *bytes_processed; } interface::Command::BlockSwitchCommand(_) | interface::Command::BlockSwitchLiteral(_) | interface::Command::BlockSwitchDistance(_) | interface::Command::PredictionMode(_) => {} } } //println!("ENTROPY PYRAMID {:?} selected {}", entropy_pyramid.stride, best_stride); if stride_detection_quality > 1 { self.identify_best_population_and_update_cache() + 1 } else { entropy_pyramid.stride[entropy_pyramid .byte_index_to_pyramid_index(pyramid_byte_index, input0.len() + input1.len())] + 1 } } pub fn free(&mut self, m32: &mut AllocU32) { for item in self.pop.iter_mut() { m32.free_cell(core::mem::take(&mut item.bucket_populations)) } } pub fn is_free(&mut self) -> bool { self.pop[0].bucket_populations.slice().is_empty() } } brotli-6.0.0/src/enc/fixed_queue.rs000064400000000000000000000040561046102023000153340ustar 00000000000000pub const MAX_THREADS: usize = 16; pub struct FixedQueue { data: [Option; MAX_THREADS], size: usize, start: usize, } impl Default for FixedQueue { fn default() -> Self { Self::new() } } impl FixedQueue { pub fn new() -> Self { FixedQueue { data: [ None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, ], size: 0, start: 0, } } pub fn can_push(&self) -> bool { self.size < self.data.len() } pub fn size(&self) -> usize { self.size } pub fn push(&mut self, item: T) -> Result<(), ()> { if self.size == self.data.len() { return Err(()); } let index = (self.start + self.size) % self.data.len(); self.data[index] = Some(item); self.size += 1; Ok(()) } pub fn pop(&mut self) -> Option { if self.size == 0 { return None; } let index = self.start % self.data.len(); let ret = self.data[index].take(); self.start += 1; self.size -= 1; ret } pub fn how_much_free_space(&self) -> usize { self.data.len() - self.size } pub fn remove) -> bool>(&mut self, f: F) -> Option { if self.size == 0 { return None; } for index in 0..self.size { if f(&self.data[(self.start + index) % self.data.len()]) { let start_index = self.start % self.data.len(); let target_index = (self.start + index) % self.data.len(); let ret = self.data[target_index].take(); let replace = self.data[start_index].take(); let is_none = core::mem::replace(&mut self.data[target_index], replace); assert!(is_none.is_none()); self.start += 1; self.size -= 1; return ret; } } None } } brotli-6.0.0/src/enc/histogram.rs000075500000000000000000000357371046102023000150430ustar 00000000000000#![allow(dead_code)] use super::super::alloc::{SliceWrapper, SliceWrapperMut}; use super::block_split::BlockSplit; use super::command::Command; use super::constants::{kSigned3BitContextLookup, kUTF8ContextLookup}; use super::vectorization::Mem256i; use core::cmp::min; static kBrotliMinWindowBits: i32 = 10i32; static kBrotliMaxWindowBits: i32 = 24i32; //#[derive(Clone)] clone is broken for arrays > 32 pub struct HistogramLiteral { pub data_: [u32; 256], pub total_count_: usize, pub bit_cost_: super::util::floatX, } impl Clone for HistogramLiteral { #[inline(always)] fn clone(&self) -> HistogramLiteral { HistogramLiteral { data_: self.data_, total_count_: self.total_count_, bit_cost_: self.bit_cost_, } } } impl Default for HistogramLiteral { #[inline(always)] fn default() -> HistogramLiteral { HistogramLiteral { data_: [0; 256], total_count_: 0, bit_cost_: 3.402e+38 as super::util::floatX, } } } //#[derive(Clone)] clone is broken for arrays > 32 pub struct HistogramCommand { pub data_: [u32; 704], pub total_count_: usize, pub bit_cost_: super::util::floatX, } impl Clone for HistogramCommand { #[inline(always)] fn clone(&self) -> HistogramCommand { HistogramCommand { data_: self.data_, total_count_: self.total_count_, bit_cost_: self.bit_cost_, } } } impl Default for HistogramCommand { #[inline(always)] fn default() -> HistogramCommand { HistogramCommand { data_: [0; 704], total_count_: 0, bit_cost_: 3.402e+38 as super::util::floatX, } } } //#[derive(Clone)] // #derive is broken for arrays > 32 #[cfg(not(feature = "disallow_large_window_size"))] const BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS: usize = 544; #[cfg(feature = "disallow_large_window_size")] const BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS: usize = 520; pub struct HistogramDistance { pub data_: [u32; BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS], pub total_count_: usize, pub bit_cost_: super::util::floatX, } impl Clone for HistogramDistance { fn clone(&self) -> HistogramDistance { HistogramDistance { data_: self.data_, total_count_: self.total_count_, bit_cost_: self.bit_cost_, } } } impl Default for HistogramDistance { fn default() -> HistogramDistance { HistogramDistance { data_: [0; BROTLI_NUM_HISTOGRAM_DISTANCE_SYMBOLS], total_count_: 0, bit_cost_: 3.402e+38 as super::util::floatX, } } } pub trait CostAccessors { type i32vec: Sized + SliceWrapper + SliceWrapperMut; fn make_nnz_storage() -> Self::i32vec; fn total_count(&self) -> usize; fn bit_cost(&self) -> super::util::floatX; fn set_bit_cost(&mut self, cost: super::util::floatX); fn set_total_count(&mut self, count: usize); } impl SliceWrapper for HistogramLiteral { #[inline(always)] fn slice(&self) -> &[u32] { &self.data_[..] } } impl SliceWrapperMut for HistogramLiteral { #[inline(always)] fn slice_mut(&mut self) -> &mut [u32] { &mut self.data_[..] } } pub struct Array264i([Mem256i; 33]); impl SliceWrapperMut for Array264i { #[inline(always)] fn slice_mut(&mut self) -> &mut [Mem256i] { &mut self.0[..] } } impl SliceWrapper for Array264i { #[inline(always)] fn slice(&self) -> &[Mem256i] { &self.0[..] } } impl Default for Array264i { #[inline(always)] fn default() -> Array264i { Array264i([Mem256i::default(); 33]) } } pub struct Array528i([Mem256i; 66]); impl SliceWrapperMut for Array528i { #[inline(always)] fn slice_mut(&mut self) -> &mut [Mem256i] { &mut self.0[..] } } impl SliceWrapper for Array528i { #[inline(always)] fn slice(&self) -> &[Mem256i] { &self.0[..] } } impl Default for Array528i { #[inline(always)] fn default() -> Array528i { Array528i([Mem256i::default(); 66]) } } pub struct Array712i([Mem256i; 89]); impl SliceWrapperMut for Array712i { #[inline(always)] fn slice_mut(&mut self) -> &mut [Mem256i] { &mut self.0[..] } } impl SliceWrapper for Array712i { #[inline(always)] fn slice(&self) -> &[Mem256i] { &self.0[..] } } impl Default for Array712i { #[inline(always)] fn default() -> Array712i { Array712i([Mem256i::default(); 89]) } } pub struct EmptyIVec {} impl SliceWrapperMut for EmptyIVec { #[inline(always)] fn slice_mut(&mut self) -> &mut [Mem256i] { &mut [] } } impl SliceWrapper for EmptyIVec { #[inline(always)] fn slice(&self) -> &[Mem256i] { &[] } } impl Default for EmptyIVec { #[inline(always)] fn default() -> EmptyIVec { EmptyIVec {} } } #[cfg(feature = "vector_scratch_space")] pub type HistogramLiteralScratch = Array264i; #[cfg(not(feature = "vector_scratch_space"))] pub type HistogramLiteralScratch = EmptyIVec; impl CostAccessors for HistogramLiteral { type i32vec = HistogramLiteralScratch; fn make_nnz_storage() -> Self::i32vec { HistogramLiteralScratch::default() } #[inline(always)] fn total_count(&self) -> usize { self.total_count_ } #[inline(always)] fn bit_cost(&self) -> super::util::floatX { self.bit_cost_ } #[inline(always)] fn set_bit_cost(&mut self, data: super::util::floatX) { self.bit_cost_ = data; } #[inline(always)] fn set_total_count(&mut self, data: usize) { self.total_count_ = data; } } impl SliceWrapper for HistogramCommand { #[inline(always)] fn slice(&self) -> &[u32] { &self.data_[..] } } impl SliceWrapperMut for HistogramCommand { #[inline(always)] fn slice_mut(&mut self) -> &mut [u32] { &mut self.data_[..] } } #[cfg(feature = "vector_scratch_space")] pub type HistogramCommandScratch = Array712i; #[cfg(not(feature = "vector_scratch_space"))] pub type HistogramCommandScratch = EmptyIVec; impl CostAccessors for HistogramCommand { type i32vec = HistogramCommandScratch; fn make_nnz_storage() -> Self::i32vec { HistogramCommandScratch::default() } #[inline(always)] fn total_count(&self) -> usize { self.total_count_ } #[inline(always)] fn bit_cost(&self) -> super::util::floatX { self.bit_cost_ } #[inline(always)] fn set_bit_cost(&mut self, data: super::util::floatX) { self.bit_cost_ = data; } #[inline(always)] fn set_total_count(&mut self, data: usize) { self.total_count_ = data; } } impl SliceWrapper for HistogramDistance { #[inline(always)] fn slice(&self) -> &[u32] { &self.data_[..] } } impl SliceWrapperMut for HistogramDistance { #[inline(always)] fn slice_mut(&mut self) -> &mut [u32] { &mut self.data_[..] } } #[cfg(feature = "vector_scratch_space")] pub type HistogramDistanceScratch = Array528i; #[cfg(not(feature = "vector_scratch_space"))] pub type HistogramDistanceScratch = EmptyIVec; impl CostAccessors for HistogramDistance { type i32vec = HistogramDistanceScratch; fn make_nnz_storage() -> Self::i32vec { HistogramDistanceScratch::default() } #[inline(always)] fn total_count(&self) -> usize { self.total_count_ } #[inline(always)] fn bit_cost(&self) -> super::util::floatX { self.bit_cost_ } #[inline(always)] fn set_bit_cost(&mut self, data: super::util::floatX) { self.bit_cost_ = data; } #[inline(always)] fn set_total_count(&mut self, data: usize) { self.total_count_ = data; } } #[derive(Copy, Clone)] pub enum ContextType { CONTEXT_LSB6 = 0, CONTEXT_MSB6 = 1, CONTEXT_UTF8 = 2, CONTEXT_SIGNED = 3, } impl Default for ContextType { #[inline(always)] fn default() -> ContextType { ContextType::CONTEXT_LSB6 } } pub struct BlockSplitIterator<'a, Alloc: alloc::Allocator + 'a + alloc::Allocator + 'a> { pub split_: &'a BlockSplit, pub idx_: usize, pub type_: usize, pub length_: usize, } impl<'a, Alloc: alloc::Allocator + alloc::Allocator + 'a> BlockSplitIterator<'a, Alloc> { fn new(split: &'a BlockSplit) -> Self { Self { split_: split, idx_: 0, type_: 0, length_: if !split.lengths.slice().is_empty() { split.lengths.slice()[0] as usize } else { 0 }, } } fn next(&mut self) { if self.length_ == 0 { self.idx_ = self.idx_.wrapping_add(1); self.type_ = self.split_.types.slice()[self.idx_] as usize; self.length_ = self.split_.lengths.slice()[self.idx_] as usize; } self.length_ = self.length_.wrapping_sub(1); } } pub fn HistogramAddItem + SliceWrapperMut + CostAccessors>( xself: &mut HistogramType, val: usize, ) { { let _rhs = 1; let _lhs = &mut xself.slice_mut()[val]; let val = (*_lhs).wrapping_add(_rhs as u32); *_lhs = val; } let new_count = xself.total_count().wrapping_add(1); xself.set_total_count(new_count); } pub fn HistogramAddVector< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors, IntegerType: Sized + Clone, >( xself: &mut HistogramType, p: &[IntegerType], n: usize, ) where u64: core::convert::From, { let new_tc = xself.total_count().wrapping_add(n); xself.set_total_count(new_tc); for p_item in p[..n].iter() { let _rhs = 1; let index: usize = u64::from(p_item.clone()) as usize; let _lhs = &mut xself.slice_mut()[index]; *_lhs = (*_lhs).wrapping_add(_rhs as u32); } } #[inline(always)] pub fn HistogramClear + CostAccessors>( xself: &mut HistogramType, ) { for data_elem in xself.slice_mut().iter_mut() { *data_elem = 0; } xself.set_total_count(0); xself.set_bit_cost(3.402e+38 as super::util::floatX); } pub fn ClearHistograms + CostAccessors>( array: &mut [HistogramType], length: usize, ) { for item in array[..length].iter_mut() { HistogramClear(item) } } #[inline(always)] pub fn HistogramAddHistogram< HistogramType: SliceWrapperMut + SliceWrapper + CostAccessors, >( xself: &mut HistogramType, v: &HistogramType, ) { let old_total_count = xself.total_count(); xself.set_total_count(old_total_count + (*v).total_count()); let h0 = xself.slice_mut(); let h1 = v.slice(); let n = min(h0.len(), h1.len()); for i in 0..n { let h0val = &mut h0[i]; let val = h0val.wrapping_add(h1[i]); *h0val = val; } } pub fn HistogramSelfAddHistogram< HistogramType: SliceWrapperMut + SliceWrapper + CostAccessors, >( xself: &mut [HistogramType], i0: usize, i1: usize, ) { let tc_new = xself[i1].total_count(); let tc_old = xself[i0].total_count(); xself[i0].set_total_count(tc_old.wrapping_add(tc_new)); let h0 = xself[i0].slice().len(); let h0a = xself[i0].slice().len(); let h1 = xself[i1].slice().len(); let n = min(h0, min(h0a, h1)); for h_index in 0..n { let val = xself[i0].slice()[h_index].wrapping_add(xself[i1].slice()[h_index]); xself[i0].slice_mut()[h_index] = val; } } #[inline(always)] pub fn Context(p1: u8, p2: u8, mode: ContextType) -> u8 { match mode { ContextType::CONTEXT_SIGNED => { (((kSigned3BitContextLookup[p1 as usize] as i32) << 3) + kSigned3BitContextLookup[p2 as usize] as i32) as u8 } ContextType::CONTEXT_UTF8 => { (kUTF8ContextLookup[p1 as usize] as i32 | kUTF8ContextLookup[(p2 as i32 + 256i32) as usize] as i32) as u8 } ContextType::CONTEXT_MSB6 => (p1 as i32 >> 2) as u8, ContextType::CONTEXT_LSB6 => (p1 as i32 & 0x3fi32) as u8, /* else { 0u8 }*/ } } pub fn BrotliBuildHistogramsWithContext<'a, Alloc: alloc::Allocator + alloc::Allocator>( cmds: &[Command], num_commands: usize, literal_split: &BlockSplit, insert_and_copy_split: &BlockSplit, dist_split: &BlockSplit, ringbuffer: &[u8], start_pos: usize, mask: usize, mut prev_byte: u8, mut prev_byte2: u8, context_modes: &[ContextType], literal_histograms: &mut [HistogramLiteral], insert_and_copy_histograms: &mut [HistogramCommand], copy_dist_histograms: &mut [HistogramDistance], ) { let mut pos: usize = start_pos; let mut literal_it: BlockSplitIterator; let mut insert_and_copy_it: BlockSplitIterator; let mut dist_it: BlockSplitIterator; literal_it = BlockSplitIterator::new(literal_split); insert_and_copy_it = BlockSplitIterator::new(insert_and_copy_split); dist_it = BlockSplitIterator::new(dist_split); for i in 0usize..num_commands { let cmd = &cmds[i]; let mut j: usize; insert_and_copy_it.next(); HistogramAddItem( &mut insert_and_copy_histograms[insert_and_copy_it.type_], cmd.cmd_prefix_ as usize, ); j = cmd.insert_len_ as usize; while j != 0usize { { literal_it.next(); let context: usize = if !context_modes.is_empty() { (literal_it.type_ << 6).wrapping_add(Context( prev_byte, prev_byte2, context_modes[literal_it.type_], ) as usize) } else { literal_it.type_ }; HistogramAddItem( &mut literal_histograms[(context as usize)], ringbuffer[(pos & mask)] as usize, ); prev_byte2 = prev_byte; prev_byte = ringbuffer[(pos & mask)]; pos = pos.wrapping_add(1); } j = j.wrapping_sub(1); } pos = pos.wrapping_add(cmd.copy_len() as usize); if cmd.copy_len() != 0 { prev_byte2 = ringbuffer[(pos.wrapping_sub(2) & mask)]; prev_byte = ringbuffer[(pos.wrapping_sub(1) & mask)]; if cmd.cmd_prefix_ as i32 >= 128i32 { dist_it.next(); let context: usize = (dist_it.type_ << 2).wrapping_add(cmd.distance_context() as usize); HistogramAddItem( &mut copy_dist_histograms[(context as usize)], cmd.dist_prefix_ as usize & 0x3ff, ); } } } } brotli-6.0.0/src/enc/input_pair.rs000064400000000000000000000102641046102023000152010ustar 00000000000000use super::super::alloc::SliceWrapper; use super::super::alloc::SliceWrapperMut; use super::interface::Freezable; use core::cmp::min; #[derive(Copy, Clone, Default, Debug)] pub struct InputReference<'a> { pub data: &'a [u8], pub orig_offset: usize, // offset into the original slice of data } impl<'a> SliceWrapper for InputReference<'a> { fn slice(&self) -> &[u8] { self.data } } impl<'a> Freezable for InputReference<'a> { fn freeze(&self) -> super::interface::SliceOffset { debug_assert!(self.data.len() <= 0xffff_ffff); super::interface::SliceOffset(self.orig_offset, self.data.len() as u32) } } #[derive(Default)] pub struct InputReferenceMut<'a> { pub data: &'a mut [u8], pub orig_offset: usize, // offset into the original slice of data } impl<'a> SliceWrapper for InputReferenceMut<'a> { fn slice(&self) -> &[u8] { self.data } } impl<'a> SliceWrapperMut for InputReferenceMut<'a> { fn slice_mut(&mut self) -> &mut [u8] { self.data } } impl<'a> From> for InputReference<'a> { fn from(val: InputReferenceMut<'a>) -> InputReference<'a> { InputReference { data: val.data, orig_offset: val.orig_offset, } } } impl<'a> From<&'a InputReferenceMut<'a>> for InputReference<'a> { fn from(val: &'a InputReferenceMut<'a>) -> InputReference<'a> { InputReference { data: val.data, orig_offset: val.orig_offset, } } } #[derive(Clone, Debug, Copy)] pub struct InputPair<'a>(pub InputReference<'a>, pub InputReference<'a>); impl<'a> PartialEq for InputPair<'a> { fn eq(&self, other: &InputPair<'_>) -> bool { if self.0.len() + self.1.len() != other.0.len() + other.1.len() { return false; } for (a_iter, b_iter) in self .0 .data .iter() .chain(self.1.data.iter()) .zip(other.0.data.iter().chain(other.1.data.iter())) { if *a_iter != *b_iter { return false; } } true } } impl<'a> core::ops::Index for InputPair<'a> { type Output = u8; fn index(&self, index: usize) -> &u8 { if index >= self.0.len() { &self.1.data[index - self.0.len()] } else { &self.0.data[index] } } } impl<'a> core::fmt::LowerHex for InputPair<'a> { fn fmt(&self, fmtr: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { for item in self.0.data { fmtr.write_fmt(format_args!("{:02x}", item))? } for item in self.1.data { fmtr.write_fmt(format_args!("{:02x}", item))? } Ok(()) } } impl<'a> InputPair<'a> { pub fn split_at(&self, loc: usize) -> (InputPair<'a>, InputPair<'a>) { if loc >= self.0.len() { let offset_from_self_1 = loc - self.0.len(); let (first, second) = self.1.data.split_at(min(offset_from_self_1, self.1.len())); return ( InputPair::<'a>( self.0, InputReference::<'a> { data: first, orig_offset: self.1.orig_offset, }, ), InputPair::<'a>( InputReference::<'a>::default(), InputReference::<'a> { data: second, orig_offset: offset_from_self_1 + self.1.orig_offset, }, ), ); } let (first, second) = self.0.data.split_at(min(loc, self.0.len())); ( InputPair::<'a>( InputReference::<'a> { data: first, orig_offset: self.0.orig_offset, }, InputReference::<'a>::default(), ), InputPair::<'a>( InputReference::<'a> { data: second, orig_offset: self.0.orig_offset + loc, }, self.1, ), ) } pub fn len(&self) -> usize { self.0.len() + self.1.len() } } brotli-6.0.0/src/enc/interface.rs000064400000000000000000000662611046102023000147770ustar 00000000000000use super::histogram; pub use super::input_pair::{InputPair, InputReference, InputReferenceMut}; use alloc::{Allocator, SliceWrapper, SliceWrapperMut}; #[allow(unused_imports)] // right now just used in feature flag use core; #[derive(Debug, Copy, Clone, Default)] pub struct BlockSwitch(pub u8); // Commands that can instantiate as a no-op should implement this. pub trait Nop { fn nop() -> T; } impl BlockSwitch { #[inline(always)] pub fn new(block_type: u8) -> Self { BlockSwitch(block_type) } #[inline(always)] pub fn block_type(&self) -> u8 { self.0 } } #[derive(Debug, Copy, Clone, Default)] pub struct LiteralBlockSwitch(pub BlockSwitch, pub u8); impl LiteralBlockSwitch { pub fn new(block_type: u8, stride: u8) -> Self { LiteralBlockSwitch(BlockSwitch::new(block_type), stride) } #[inline(always)] pub fn block_type(&self) -> u8 { self.0.block_type() } #[inline(always)] pub fn stride(&self) -> u8 { self.1 } #[inline(always)] pub fn update_stride(&mut self, new_stride: u8) { self.1 = new_stride; } } pub const LITERAL_PREDICTION_MODE_SIGN: u8 = 3; pub const LITERAL_PREDICTION_MODE_UTF8: u8 = 2; pub const LITERAL_PREDICTION_MODE_MSB6: u8 = 1; pub const LITERAL_PREDICTION_MODE_LSB6: u8 = 0; #[derive(Default, Copy, Clone, Debug, PartialEq, Eq, Hash)] pub struct LiteralPredictionModeNibble(pub u8); impl LiteralPredictionModeNibble { #[inline(always)] pub fn new(prediction_mode: u8) -> Result { if prediction_mode < 16 { return Ok(LiteralPredictionModeNibble(prediction_mode)); } Err(()) } #[inline(always)] pub fn prediction_mode(&self) -> u8 { self.0 } #[inline(always)] pub fn signed() -> Self { LiteralPredictionModeNibble(LITERAL_PREDICTION_MODE_SIGN) } #[inline(always)] pub fn utf8() -> Self { LiteralPredictionModeNibble(LITERAL_PREDICTION_MODE_UTF8) } #[inline(always)] pub fn msb6() -> Self { LiteralPredictionModeNibble(LITERAL_PREDICTION_MODE_MSB6) } #[inline(always)] pub fn lsb6() -> Self { LiteralPredictionModeNibble(LITERAL_PREDICTION_MODE_LSB6) } #[inline(always)] pub fn to_context_enum(&self) -> Result { match self.0 { LITERAL_PREDICTION_MODE_LSB6 => Ok(histogram::ContextType::CONTEXT_LSB6), LITERAL_PREDICTION_MODE_MSB6 => Ok(histogram::ContextType::CONTEXT_MSB6), LITERAL_PREDICTION_MODE_UTF8 => Ok(histogram::ContextType::CONTEXT_UTF8), LITERAL_PREDICTION_MODE_SIGN => Ok(histogram::ContextType::CONTEXT_SIGNED), _ => Err(()), } } } pub const NUM_SPEED_VALUES: usize = 12; pub const NUM_MIXING_VALUES: usize = 16 * 256 + 16 * 256; pub const NUM_PREDMODE_SETUP_VALUES: usize = 4; pub const RESERVED_OFFSET: usize = 3; pub const ADV_CONTEXT_MAP_OFFSET: usize = 2; pub const MIXING_MATH_OFFSET: usize = 1; pub const PREDMODE_OFFSET: usize = 0; pub const MIXING_OFFSET: usize = NUM_PREDMODE_SETUP_VALUES + PREDMODE_OFFSET; pub const SPEED_OFFSET: usize = MIXING_OFFSET + NUM_MIXING_VALUES; pub const DISTANCE_CONTEXT_MAP_OFFSET: usize = SPEED_OFFSET + NUM_SPEED_VALUES; pub const MAX_PREDMODE_SPEED_AND_DISTANCE_CONTEXT_MAP_SIZE: usize = DISTANCE_CONTEXT_MAP_OFFSET + 256 * 4; pub const MAX_LITERAL_CONTEXT_MAP_SIZE: usize = 256 * 64; pub const MAX_ADV_LITERAL_CONTEXT_MAP_SIZE: usize = 256 * 64 * 2; #[derive(Debug)] pub struct PredictionModeContextMap> { pub literal_context_map: SliceType, pub predmode_speed_and_distance_context_map: SliceType, } impl + SliceWrapperMut> PredictionModeContextMap { #[inline] pub fn distance_context_map_mut(&mut self) -> &mut [u8] { self.predmode_speed_and_distance_context_map .slice_mut() .split_at_mut(DISTANCE_CONTEXT_MAP_OFFSET) .1 } #[inline] pub fn set_stride_context_speed(&mut self, speed_max: [(u16, u16); 2]) { let cm_slice = self.predmode_speed_and_distance_context_map.slice_mut(); for high in 0..2 { cm_slice[Self::stride_context_speed_offset() + high] = Self::u16_to_f8(speed_max[high].0); cm_slice[Self::stride_context_speed_max_offset() + high] = Self::u16_to_f8(speed_max[high].1); } } #[inline] pub fn set_context_map_speed(&mut self, speed_max: [(u16, u16); 2]) { let cm_slice = self.predmode_speed_and_distance_context_map.slice_mut(); for high in 0..2 { cm_slice[Self::context_map_speed_offset() + high] = Self::u16_to_f8(speed_max[high].0); cm_slice[Self::context_map_speed_max_offset() + high] = Self::u16_to_f8(speed_max[high].1); } } pub fn set_mixing_math(&mut self, math_enum: u8) { let cm_slice = self.predmode_speed_and_distance_context_map.slice_mut(); cm_slice[MIXING_MATH_OFFSET] = math_enum; } pub fn set_adv_context_map(&mut self, is_adv: u8) { let cm_slice = self.predmode_speed_and_distance_context_map.slice_mut(); cm_slice[ADV_CONTEXT_MAP_OFFSET] = is_adv; } #[inline] pub fn set_mixing_values(&mut self, mixing_mask: &[u8; NUM_MIXING_VALUES]) { let cm_slice = self.predmode_speed_and_distance_context_map.slice_mut(); cm_slice[MIXING_OFFSET..(MIXING_OFFSET + NUM_MIXING_VALUES)] .clone_from_slice(&mixing_mask[..]); } #[inline] pub fn get_mixing_values_mut(&mut self) -> &mut [u8] { let cm_slice = self.predmode_speed_and_distance_context_map.slice_mut(); &mut cm_slice[MIXING_OFFSET..(MIXING_OFFSET + NUM_MIXING_VALUES)] } #[inline] pub fn set_combined_stride_context_speed(&mut self, speed_max: [(u16, u16); 2]) { let cm_slice = self.predmode_speed_and_distance_context_map.slice_mut(); for high in 0..2 { cm_slice[Self::combined_stride_context_speed_offset() + high] = Self::u16_to_f8(speed_max[high].0); cm_slice[Self::combined_stride_context_speed_max_offset() + high] = Self::u16_to_f8(speed_max[high].1); } } pub fn set_literal_prediction_mode(&mut self, val: LiteralPredictionModeNibble) { let cm_slice = self.predmode_speed_and_distance_context_map.slice_mut(); cm_slice[PREDMODE_OFFSET] = val.0; } } impl> PredictionModeContextMap { #[inline] pub fn from_mut>( other: PredictionModeContextMap, ) -> PredictionModeContextMap where SliceType: From, { PredictionModeContextMap:: { literal_context_map: SliceType::from(other.literal_context_map), predmode_speed_and_distance_context_map: SliceType::from( other.predmode_speed_and_distance_context_map, ), } } #[inline] pub fn get_mixing_values(&self) -> &[u8] { let cm_slice = self.predmode_speed_and_distance_context_map.slice(); &cm_slice[MIXING_OFFSET..(MIXING_OFFSET + NUM_MIXING_VALUES)] } #[inline] pub fn get_mixing_math(&self) -> u8 { let cm_slice = self.predmode_speed_and_distance_context_map.slice(); if cm_slice.len() <= MIXING_MATH_OFFSET { return 1; } cm_slice[MIXING_MATH_OFFSET] } #[inline] pub fn get_is_adv_context_map(&self) -> u8 { let cm_slice = self.predmode_speed_and_distance_context_map.slice(); if cm_slice.len() <= ADV_CONTEXT_MAP_OFFSET { return 0; } cm_slice[ADV_CONTEXT_MAP_OFFSET] } #[inline] pub fn has_context_speeds(&self) -> bool { self.predmode_speed_and_distance_context_map.slice().len() >= DISTANCE_CONTEXT_MAP_OFFSET } #[inline] pub fn size_of_combined_array(distance_context_map_size: usize) -> usize { distance_context_map_size + DISTANCE_CONTEXT_MAP_OFFSET } #[inline] pub fn context_speeds_standard_len(&self) -> usize { NUM_SPEED_VALUES } #[inline] pub fn context_speeds_f8(&self) -> &[u8] { &self.predmode_speed_and_distance_context_map.slice() [SPEED_OFFSET..DISTANCE_CONTEXT_MAP_OFFSET] } #[inline] pub fn distance_context_map(&self) -> &[u8] { self.predmode_speed_and_distance_context_map .slice() .split_at(DISTANCE_CONTEXT_MAP_OFFSET) .1 } #[inline] pub fn f8_to_u16(data: u8) -> u16 { self::u8_to_speed(data) } #[inline] pub fn u16_to_f8(data: u16) -> u8 { self::speed_to_u8(data) } #[inline] pub fn stride_context_speed_offset() -> usize { SPEED_OFFSET } #[inline] pub fn stride_context_speed_max_offset() -> usize { SPEED_OFFSET + 2 } #[inline] pub fn context_map_speed_offset() -> usize { SPEED_OFFSET + 4 } #[inline] pub fn context_map_speed_max_offset() -> usize { SPEED_OFFSET + 6 } #[inline] pub fn combined_stride_context_speed_offset() -> usize { SPEED_OFFSET + 8 } #[inline] pub fn combined_stride_context_speed_max_offset() -> usize { SPEED_OFFSET + 10 } #[inline] pub fn literal_prediction_mode(&self) -> LiteralPredictionModeNibble { let cm_slice = self.predmode_speed_and_distance_context_map.slice(); if PREDMODE_OFFSET < cm_slice.len() { LiteralPredictionModeNibble(cm_slice[PREDMODE_OFFSET]) } else { LiteralPredictionModeNibble::default() } } pub fn stride_context_speed(&self) -> [(u16, u16); 2] { let v = self.stride_context_speed_f8(); [ (self::u8_to_speed(v[0].0), self::u8_to_speed(v[0].1)), (self::u8_to_speed(v[1].0), self::u8_to_speed(v[1].1)), ] } pub fn context_map_speed(&self) -> [(u16, u16); 2] { let v = self.context_map_speed_f8(); [ (self::u8_to_speed(v[0].0), self::u8_to_speed(v[0].1)), (self::u8_to_speed(v[1].0), self::u8_to_speed(v[1].1)), ] } pub fn combined_stride_context_speed(&self) -> [(u16, u16); 2] { let v = self.combined_stride_context_speed_f8(); [ (self::u8_to_speed(v[0].0), self::u8_to_speed(v[0].1)), (self::u8_to_speed(v[1].0), self::u8_to_speed(v[1].1)), ] } #[inline] pub fn stride_context_speed_f8(&self) -> [(u8, u8); 2] { let cm_slice = self.predmode_speed_and_distance_context_map.slice(); let low_speed = cm_slice[Self::stride_context_speed_offset()]; let high_speed = cm_slice[Self::stride_context_speed_offset() + 1]; let low_max = cm_slice[Self::stride_context_speed_max_offset()]; let high_max = cm_slice[Self::stride_context_speed_max_offset() + 1]; [(low_speed, low_max), (high_speed, high_max)] } #[inline] pub fn combined_stride_context_speed_f8(&self) -> [(u8, u8); 2] { let cm_slice = self.predmode_speed_and_distance_context_map.slice(); let low_speed = cm_slice[Self::combined_stride_context_speed_offset()]; let high_speed = cm_slice[Self::combined_stride_context_speed_offset() + 1]; let low_max = cm_slice[Self::combined_stride_context_speed_max_offset()]; let high_max = cm_slice[Self::combined_stride_context_speed_max_offset() + 1]; [(low_speed, low_max), (high_speed, high_max)] } #[inline] pub fn context_map_speed_f8(&self) -> [(u8, u8); 2] { let cm_slice = self.predmode_speed_and_distance_context_map.slice(); let low_speed = cm_slice[Self::context_map_speed_offset()]; let high_speed = cm_slice[Self::context_map_speed_offset() + 1]; let low_max = cm_slice[Self::context_map_speed_max_offset()]; let high_max = cm_slice[Self::context_map_speed_max_offset() + 1]; [(low_speed, low_max), (high_speed, high_max)] } } impl + Clone> Clone for PredictionModeContextMap { #[inline(always)] fn clone(&self) -> Self { PredictionModeContextMap:: { literal_context_map: self.literal_context_map.clone(), predmode_speed_and_distance_context_map: self .predmode_speed_and_distance_context_map .clone(), } } } impl + Clone + Copy> Copy for PredictionModeContextMap {} #[derive(Debug, Clone, Copy)] pub struct CopyCommand { pub distance: u32, pub num_bytes: u32, } impl Nop for CopyCommand { #[inline(always)] fn nop() -> Self { CopyCommand { distance: 1, num_bytes: 0, } } } #[derive(Debug, Clone, Copy)] pub struct DictCommand { pub word_size: u8, pub transform: u8, pub final_size: u8, pub empty: u8, pub word_id: u32, } impl Nop for DictCommand { #[inline(always)] fn nop() -> Self { DictCommand { word_size: 0, transform: 0, final_size: 0, empty: 1, word_id: 0, } } } #[derive(Debug)] #[cfg(not(feature = "external-literal-probability"))] pub struct FeatureFlagSliceType>(core::marker::PhantomData); #[cfg(not(feature = "external-literal-probability"))] impl> SliceWrapper for FeatureFlagSliceType { fn slice(&self) -> &[u8] { &[] } } #[cfg(not(feature = "external-literal-probability"))] impl + Default> Default for FeatureFlagSliceType { fn default() -> Self { FeatureFlagSliceType::(core::marker::PhantomData::) } } #[derive(Debug)] #[cfg(feature = "external-literal-probability")] pub struct FeatureFlagSliceType>(pub SliceType); #[cfg(feature = "external-literal-probability")] impl> SliceWrapper for FeatureFlagSliceType { #[inline(always)] fn slice(&self) -> &[u8] { self.0.slice() } } #[cfg(feature = "external-literal-probability")] impl + Default> Default for FeatureFlagSliceType { #[inline(always)] fn default() -> Self { FeatureFlagSliceType::(SliceType::default()) } } impl + Clone> Clone for FeatureFlagSliceType { #[inline(always)] fn clone(&self) -> Self { FeatureFlagSliceType::(self.0) } } impl + Clone + Copy> Copy for FeatureFlagSliceType {} #[derive(Debug)] pub struct LiteralCommand> { pub data: SliceType, pub prob: FeatureFlagSliceType, pub high_entropy: bool, // this block of bytes is high entropy with a few patterns never seen again; adapt slower } impl> SliceWrapper for LiteralCommand { #[inline(always)] fn slice(&self) -> &[u8] { self.data.slice() } } impl + SliceWrapperMut> SliceWrapperMut for LiteralCommand { #[inline(always)] fn slice_mut(&mut self) -> &mut [u8] { self.data.slice_mut() } } impl + Default> Nop> for LiteralCommand { #[inline(always)] fn nop() -> Self { LiteralCommand { data: SliceType::default(), prob: FeatureFlagSliceType::::default(), high_entropy: false, } } } impl + Clone> Clone for LiteralCommand { #[inline(always)] fn clone(&self) -> LiteralCommand { LiteralCommand:: { data: self.data.clone(), prob: self.prob.clone(), high_entropy: self.high_entropy, } } } impl + Clone + Copy> Copy for LiteralCommand {} #[derive(Debug)] pub enum Command> { Copy(CopyCommand), Dict(DictCommand), Literal(LiteralCommand), BlockSwitchCommand(BlockSwitch), BlockSwitchLiteral(LiteralBlockSwitch), BlockSwitchDistance(BlockSwitch), PredictionMode(PredictionModeContextMap), } impl + Default> Command { #[inline] pub fn free_array(&mut self, apply_func: &mut F) where F: FnMut(SliceType), { match self { Command::Literal(ref mut lit) => apply_func(core::mem::take(&mut lit.data)), Command::PredictionMode(ref mut pm) => { apply_func(core::mem::take(&mut pm.literal_context_map)); apply_func(core::mem::take( &mut pm.predmode_speed_and_distance_context_map, )); } _ => {} } } } impl> Default for Command { #[inline(always)] fn default() -> Self { Command::::nop() } } impl> Nop> for Command { #[inline(always)] fn nop() -> Command { Command::Copy(CopyCommand::nop()) } } impl + Clone> Clone for Command { #[inline] fn clone(&self) -> Command { match self { Command::Copy(copy) => Command::Copy(*copy), Command::Dict(dict) => Command::Dict(*dict), Command::Literal(literal) => Command::Literal(literal.clone()), Command::BlockSwitchCommand(switch) => Command::BlockSwitchCommand(*switch), Command::BlockSwitchLiteral(switch) => Command::BlockSwitchLiteral(*switch), Command::BlockSwitchDistance(switch) => Command::BlockSwitchDistance(*switch), Command::PredictionMode(pm) => Command::PredictionMode(pm.clone()), } } } impl + Clone + Copy> Copy for Command {} #[inline(always)] pub fn free_cmd_inline>( xself: &mut Command, m8: &mut SliceTypeAllocator, ) { match *xself { Command::Literal(ref mut lit) => m8.free_cell(core::mem::take(&mut lit.data)), Command::PredictionMode(ref mut pm) => { m8.free_cell(core::mem::take(&mut pm.literal_context_map)); m8.free_cell(core::mem::take( &mut pm.predmode_speed_and_distance_context_map, )); } Command::Dict(_) | Command::Copy(_) | Command::BlockSwitchCommand(_) | Command::BlockSwitchLiteral(_) | Command::BlockSwitchDistance(_) => {} } } #[inline(never)] pub fn free_cmd>( xself: &mut Command, m8: &mut SliceTypeAllocator, ) { free_cmd_inline(xself, m8) } #[derive(Clone, Copy, Default, Debug)] pub struct SliceOffset(pub usize, pub u32); impl SliceWrapper for SliceOffset { fn slice(&self) -> &[u8] { // not perfect--shouldn't be calling this without thawing the wrapper &[] } } pub trait Freezable { fn freeze(&self) -> SliceOffset; } pub trait Unfreezable { fn thaw<'a>(&self, data: &'a [u8]) -> InputReference<'a>; fn thaw_mut<'a>(&self, data: &'a mut [u8]) -> InputReferenceMut<'a>; fn thaw_pair<'a>(&self, pair: &InputPair<'a>) -> Result, ()>; } impl<'a> From> for SliceOffset { fn from(f: InputReference<'a>) -> Self { debug_assert!(f.data.len() <= 0xffff_ffff); SliceOffset(f.orig_offset, f.data.len() as u32) } } impl Unfreezable for SliceOffset { fn thaw<'a>(&self, data: &'a [u8]) -> InputReference<'a> { InputReference { data: data.split_at(self.0).1.split_at(self.1 as usize).0, orig_offset: self.0, } } fn thaw_mut<'a>(&self, data: &'a mut [u8]) -> InputReferenceMut<'a> { InputReferenceMut { data: data.split_at_mut(self.0).1.split_at_mut(self.1 as usize).0, orig_offset: self.0, } } fn thaw_pair<'a>(&self, pair: &InputPair<'a>) -> Result, ()> { if self.0 >= pair.1.orig_offset { return Ok(InputReference { data: pair .1 .data .split_at(self.0 - pair.1.orig_offset) .1 .split_at(self.1 as usize) .0, orig_offset: self.0, }); } let offset = self.0 - pair.0.orig_offset; if offset + self.1 as usize <= pair.0.data.len() { // overlap Ok(InputReference { data: pair.0.data.split_at(offset).1.split_at(self.1 as usize).0, orig_offset: self.0, }) } else { Err(()) } } } impl SliceOffset { pub fn offset(&self) -> usize { self.0 } pub fn len(&self) -> usize { self.1 as usize } pub fn len32(&self) -> u32 { self.1 } } pub type StaticCommand = Command; pub trait CommandProcessor<'a> { fn push(&mut self, val: Command>); fn push_literals(&mut self, data: &InputPair<'a>) { if data.0.len() != 0 { self.push(Command::Literal(LiteralCommand { data: data.0, prob: FeatureFlagSliceType::::default(), high_entropy: false, })); } if data.1.len() != 0 { self.push(Command::Literal(LiteralCommand { data: data.1, prob: FeatureFlagSliceType::::default(), high_entropy: false, })); } } fn push_rand_literals(&mut self, data: &InputPair<'a>) { if data.0.len() != 0 { self.push(Command::Literal(LiteralCommand { data: data.0, prob: FeatureFlagSliceType::::default(), high_entropy: true, })); } if data.1.len() != 0 { self.push(Command::Literal(LiteralCommand { data: data.1, prob: FeatureFlagSliceType::::default(), high_entropy: true, })); } } fn push_block_switch_literal(&mut self, block_type: u8) { self.push(Command::BlockSwitchLiteral(LiteralBlockSwitch::new( block_type, 0, ))) } } impl> Command { pub fn thaw_pair<'a>(&self, data: &InputPair<'a>) -> Command> { match self { Command::Literal(ref lit) => Command::Literal(LiteralCommand { data: lit.data.thaw_pair(data).unwrap(), prob: FeatureFlagSliceType::default(), high_entropy: lit.high_entropy, }), Command::PredictionMode(ref pm) => Command::PredictionMode(PredictionModeContextMap { literal_context_map: pm.literal_context_map.thaw_pair(data).unwrap(), predmode_speed_and_distance_context_map: pm .predmode_speed_and_distance_context_map .thaw_pair(data) .unwrap(), }), Command::Dict(ref d) => Command::Dict(*d), Command::Copy(ref c) => Command::Copy(*c), Command::BlockSwitchCommand(ref c) => Command::BlockSwitchCommand(*c), Command::BlockSwitchLiteral(ref c) => Command::BlockSwitchLiteral(*c), Command::BlockSwitchDistance(ref c) => Command::BlockSwitchDistance(*c), } } pub fn thaw<'a>(&self, data: &'a [u8]) -> Command> { match self { Command::Literal(ref lit) => Command::Literal(LiteralCommand { data: lit.data.thaw(data), prob: FeatureFlagSliceType::default(), high_entropy: lit.high_entropy, }), Command::PredictionMode(ref pm) => Command::PredictionMode(PredictionModeContextMap { literal_context_map: pm.literal_context_map.thaw(data), predmode_speed_and_distance_context_map: pm .predmode_speed_and_distance_context_map .thaw(data), }), Command::Dict(ref d) => Command::Dict(*d), Command::Copy(ref c) => Command::Copy(*c), Command::BlockSwitchCommand(ref c) => Command::BlockSwitchCommand(*c), Command::BlockSwitchLiteral(ref c) => Command::BlockSwitchLiteral(*c), Command::BlockSwitchDistance(ref c) => Command::BlockSwitchDistance(*c), } } } impl + Freezable> Command { pub fn freeze(&self) -> Command { match self { Command::Literal(ref lit) => Command::Literal(LiteralCommand { data: lit.data.freeze(), prob: FeatureFlagSliceType::default(), high_entropy: lit.high_entropy, }), Command::PredictionMode(ref pm) => Command::PredictionMode(PredictionModeContextMap { literal_context_map: pm.literal_context_map.freeze(), predmode_speed_and_distance_context_map: pm .predmode_speed_and_distance_context_map .freeze(), }), Command::Dict(ref d) => Command::Dict(*d), Command::Copy(ref c) => Command::Copy(*c), Command::BlockSwitchCommand(ref c) => Command::BlockSwitchCommand(*c), Command::BlockSwitchLiteral(ref c) => Command::BlockSwitchLiteral(*c), Command::BlockSwitchDistance(ref c) => Command::BlockSwitchDistance(*c), } } } #[inline(always)] pub fn speed_to_u8(data: u16) -> u8 { let length = 16 - data.leading_zeros() as u8; let mantissa = if data != 0 { let rem = data - (1 << (length - 1)); (rem << 3) >> (length - 1) } else { 0 }; (length << 3) | mantissa as u8 } #[inline(always)] pub fn u8_to_speed(data: u8) -> u16 { if data < 8 { 0 } else { let log_val = (data >> 3) - 1; let rem = (u16::from(data) & 0x07) << log_val; (1u16 << log_val) | (rem >> 3) } } #[cfg(test)] mod test { use super::speed_to_u8; use super::u8_to_speed; fn tst_u8_to_speed(data: u16) { assert_eq!(u8_to_speed(speed_to_u8(data)), data); } #[test] fn test_u8_to_speed() { tst_u8_to_speed(0); tst_u8_to_speed(1); tst_u8_to_speed(2); tst_u8_to_speed(3); tst_u8_to_speed(4); tst_u8_to_speed(5); tst_u8_to_speed(6); tst_u8_to_speed(7); tst_u8_to_speed(8); tst_u8_to_speed(10); tst_u8_to_speed(12); tst_u8_to_speed(16); tst_u8_to_speed(24); tst_u8_to_speed(32); tst_u8_to_speed(48); tst_u8_to_speed(64); tst_u8_to_speed(96); tst_u8_to_speed(768); tst_u8_to_speed(1280); tst_u8_to_speed(1536); tst_u8_to_speed(1664); } } brotli-6.0.0/src/enc/ir_interpret.rs000064400000000000000000000107041046102023000155340ustar 00000000000000use super::super::alloc::SliceWrapper; use super::constants::{kSigned3BitContextLookup, kUTF8ContextLookup}; use super::histogram::ContextType; use super::input_pair::InputReference; use super::interface; use super::interface::LiteralPredictionModeNibble; pub trait IRInterpreter { fn inc_local_byte_offset(&mut self, inc: usize); fn local_byte_offset(&self) -> usize; fn update_block_type(&mut self, new_type: u8, new_stride: u8); fn block_type(&self) -> u8; fn literal_data_at_offset(&self, index: usize) -> u8; fn literal_context_map(&self) -> &[u8]; fn prediction_mode(&self) -> ::interface::LiteralPredictionModeNibble; fn update_cost( &mut self, stride_prior: [u8; 8], stride_byte_offset: usize, selected_bits: u8, cm_prior: usize, literal: u8, ); } pub fn push_base( xself: &mut Interpreter, val: interface::Command>, ) { match val { interface::Command::BlockSwitchCommand(_) | interface::Command::BlockSwitchDistance(_) | interface::Command::PredictionMode(_) => {} interface::Command::Copy(ref copy) => { xself.inc_local_byte_offset(copy.num_bytes as usize); } interface::Command::Dict(ref dict) => { xself.inc_local_byte_offset(dict.final_size as usize); } interface::Command::BlockSwitchLiteral(block_type) => { xself.update_block_type(block_type.block_type(), block_type.stride()) } interface::Command::Literal(ref lit) => { //let stride = xself.get_stride(xself.local_byte_offset()) as usize; let mut priors = [0u8; 8]; for poffset in 0..8 { if xself.local_byte_offset() > poffset { let input_offset = xself.local_byte_offset() - poffset - 1; priors[7 - poffset] = xself.literal_data_at_offset(input_offset); } } let mut cur = 0usize; for literal in lit.data.slice().iter() { let (huffman_table_index, selected_bits) = compute_huffman_table_index_for_context_map( priors[(cur + 7) & 7], priors[(cur + 6) & 7], xself.literal_context_map(), xself.prediction_mode(), xself.block_type(), ); xself.update_cost( priors, (cur + 7) & 7, selected_bits, huffman_table_index, *literal, ); priors[cur & 7] = *literal; cur += 1; cur &= 7; } xself.inc_local_byte_offset(lit.data.slice().len()); } } } // not sure why this fails //impl<'a> interface::CommandProcessor<'a> for IRInterpreter { // fn push])>(&mut self, // val: interface::Command>, // callback: &mut Cb) { // push_base(self, val, callback) // } //} fn compute_huffman_table_index_for_context_map( prev_byte: u8, prev_prev_byte: u8, literal_context_map: &[u8], //interface::PredictionModeContextMap, prediction_mode: LiteralPredictionModeNibble, block_type: u8, ) -> (usize, u8) { let prior = Context( prev_byte, prev_prev_byte, prediction_mode.to_context_enum().unwrap(), ); assert!(prior < 64); let context_map_index = ((block_type as usize) << 6) | prior as usize; if context_map_index < literal_context_map.len() { (literal_context_map[context_map_index] as usize, prior) } else { (prior as usize, prior) } } pub fn Context(p1: u8, p2: u8, mode: ContextType) -> u8 { match mode { ContextType::CONTEXT_LSB6 => p1 & 0x3f, ContextType::CONTEXT_MSB6 => (p1 as i32 >> 2) as u8, ContextType::CONTEXT_UTF8 => { (kUTF8ContextLookup[p1 as usize] as i32 | kUTF8ContextLookup[(p2 as i32 + 256i32) as usize] as i32) as u8 } ContextType::CONTEXT_SIGNED => { (((kSigned3BitContextLookup[p1 as usize] as i32) << 3) + kSigned3BitContextLookup[p2 as usize] as i32) as u8 } } // 0u8 } brotli-6.0.0/src/enc/literal_cost.rs000075500000000000000000000206041046102023000155150ustar 00000000000000#![allow(dead_code)] use super::utf8_util::BrotliIsMostlyUTF8; use super::util::FastLog2f64; use core::cmp::min; static kMinUTF8Ratio: super::util::floatX = 0.75 as super::util::floatX; fn UTF8Position(last: usize, c: usize, clamp: usize) -> usize { if c < 128usize { 0usize } else if c >= 192usize { min(1usize, clamp) } else if last < 0xe0usize { 0usize } else { min(2usize, clamp) } } fn DecideMultiByteStatsLevel(pos: usize, len: usize, mask: usize, data: &[u8]) -> usize { let mut counts = [0usize; 3]; let mut max_utf8: usize = 1; let mut last_c: usize = 0usize; let mut i: usize; i = 0usize; while i < len { { let c: usize = data[(pos.wrapping_add(i) & mask)] as usize; { let _rhs = 1; let _lhs = &mut counts[UTF8Position(last_c, c, 2usize)]; *_lhs = (*_lhs).wrapping_add(_rhs as usize); } last_c = c; } i = i.wrapping_add(1); } if counts[2] < 500usize { max_utf8 = 1; } if counts[1].wrapping_add(counts[2]) < 25usize { max_utf8 = 0usize; } max_utf8 } fn EstimateBitCostsForLiteralsUTF8( pos: usize, len: usize, mask: usize, data: &[u8], cost: &mut [super::util::floatX], ) { let max_utf8: usize = DecideMultiByteStatsLevel(pos, len, mask, data); let mut histogram = [[0usize; 256]; 3]; let window_half: usize = 495usize; let in_window: usize = min(window_half, len); let mut in_window_utf8 = [0usize; 3]; let mut i: usize; { let mut last_c: usize = 0usize; let mut utf8_pos: usize = 0usize; i = 0usize; while i < in_window { { let c: usize = data[(pos.wrapping_add(i) & mask)] as usize; { let _rhs = 1; let _lhs = &mut histogram[utf8_pos][c]; *_lhs = (*_lhs).wrapping_add(_rhs as usize); } { let _rhs = 1; let _lhs = &mut in_window_utf8[utf8_pos]; *_lhs = (*_lhs).wrapping_add(_rhs as usize); } utf8_pos = UTF8Position(last_c, c, max_utf8); last_c = c; } i = i.wrapping_add(1); } } i = 0usize; while i < len { { if i >= window_half { let c: usize = (if i < window_half.wrapping_add(1) { 0i32 } else { data[(pos .wrapping_add(i) .wrapping_sub(window_half) .wrapping_sub(1) & mask)] as i32 }) as usize; let last_c: usize = (if i < window_half.wrapping_add(2) { 0i32 } else { data[(pos .wrapping_add(i) .wrapping_sub(window_half) .wrapping_sub(2) & mask)] as i32 }) as usize; let utf8_pos2: usize = UTF8Position(last_c, c, max_utf8); { let _rhs = 1; let _lhs = &mut histogram[utf8_pos2] [data[(pos.wrapping_add(i).wrapping_sub(window_half) & mask)] as usize]; *_lhs = (*_lhs).wrapping_sub(_rhs as usize); } { let _rhs = 1; let _lhs = &mut in_window_utf8[utf8_pos2]; *_lhs = (*_lhs).wrapping_sub(_rhs as usize); } } if i.wrapping_add(window_half) < len { let c: usize = data[(pos .wrapping_add(i) .wrapping_add(window_half) .wrapping_sub(1) & mask)] as usize; let last_c: usize = data[(pos .wrapping_add(i) .wrapping_add(window_half) .wrapping_sub(2) & mask)] as usize; let utf8_pos2: usize = UTF8Position(last_c, c, max_utf8); { let _rhs = 1; let _lhs = &mut histogram[utf8_pos2] [data[(pos.wrapping_add(i).wrapping_add(window_half) & mask)] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as usize); } { let _rhs = 1; let _lhs = &mut in_window_utf8[utf8_pos2]; *_lhs = (*_lhs).wrapping_add(_rhs as usize); } } { let c: usize = (if i < 1 { 0i32 } else { data[(pos.wrapping_add(i).wrapping_sub(1) & mask)] as i32 }) as usize; let last_c: usize = (if i < 2usize { 0i32 } else { data[(pos.wrapping_add(i).wrapping_sub(2) & mask)] as i32 }) as usize; let utf8_pos: usize = UTF8Position(last_c, c, max_utf8); let masked_pos: usize = pos.wrapping_add(i) & mask; let mut histo: usize = histogram[utf8_pos][data[masked_pos] as usize]; //precision is vital here: lets keep double precision let mut lit_cost: f64; if histo == 0usize { histo = 1; } lit_cost = FastLog2f64(in_window_utf8[utf8_pos] as u64) as f64 - FastLog2f64(histo as u64) as f64; lit_cost += 0.02905; if lit_cost < 1.0 { lit_cost *= 0.5; lit_cost += 0.5; } if i < 2000usize { lit_cost += (0.7 - (2000usize).wrapping_sub(i) as (f64) / 2000.0 * 0.35); } cost[i] = lit_cost as (super::util::floatX); } } i = i.wrapping_add(1); } } pub fn BrotliEstimateBitCostsForLiterals( pos: usize, len: usize, mask: usize, data: &[u8], cost: &mut [super::util::floatX], ) { if BrotliIsMostlyUTF8(data, pos, mask, len, kMinUTF8Ratio) != 0 { EstimateBitCostsForLiteralsUTF8(pos, len, mask, data, cost); } else { let mut histogram: [usize; 256] = [0; 256]; let window_half: usize = 2000usize; let mut in_window: usize = min(window_half, len); let mut i: usize; for i in 0usize..in_window { let _rhs = 1; let _lhs = &mut histogram[data[(pos.wrapping_add(i) & mask)] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as usize); } i = 0usize; while i < len { { let mut histo: usize; if i >= window_half { { let _rhs = 1; let _lhs = &mut histogram [data[(pos.wrapping_add(i).wrapping_sub(window_half) & mask)] as usize]; *_lhs = (*_lhs).wrapping_sub(_rhs as usize); } in_window = in_window.wrapping_sub(1); } if i.wrapping_add(window_half) < len { { let _rhs = 1; let _lhs = &mut histogram [data[(pos.wrapping_add(i).wrapping_add(window_half) & mask)] as usize]; *_lhs = (*_lhs).wrapping_add(_rhs as usize); } in_window = in_window.wrapping_add(1); } histo = histogram[data[(pos.wrapping_add(i) & mask)] as usize]; if histo == 0usize { histo = 1; } { //precision is vital here: lets keep double precision let mut lit_cost: f64 = FastLog2f64(in_window as u64) as f64 - FastLog2f64(histo as u64) as f64; lit_cost += 0.029; if lit_cost < 1.0 { lit_cost *= 0.5; lit_cost += 0.5; } cost[i] = lit_cost as (super::util::floatX); } } i = i.wrapping_add(1); } } } brotli-6.0.0/src/enc/metablock.rs000075500000000000000000001240531046102023000147750ustar 00000000000000#![allow(dead_code)] use super::super::alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use super::backward_references::BrotliEncoderParams; use super::bit_cost::{BitsEntropy, BrotliPopulationCost}; use super::block_split::BlockSplit; use super::block_splitter::BrotliSplitBlock; use super::brotli_bit_stream::MetaBlockSplit; use super::cluster::BrotliClusterHistograms; use super::combined_alloc::BrotliAlloc; use super::command::{BrotliDistanceParams, Command, PrefixEncodeCopyDistance}; use super::constants::BROTLI_MAX_NPOSTFIX; use super::encode::{ BROTLI_DISTANCE_ALPHABET_SIZE, BROTLI_LARGE_MAX_DISTANCE_BITS, BROTLI_MAX_ALLOWED_DISTANCE, BROTLI_MAX_DISTANCE_BITS, }; use super::entropy_encode::BrotliOptimizeHuffmanCountsForRle; use super::histogram::{ BrotliBuildHistogramsWithContext, ClearHistograms, Context, ContextType, CostAccessors, HistogramAddHistogram, HistogramAddItem, HistogramClear, HistogramCommand, HistogramDistance, HistogramLiteral, }; use core::cmp::{max, min}; pub fn BrotliInitDistanceParams(params: &mut BrotliEncoderParams, npostfix: u32, ndirect: u32) { let dist_params = &mut params.dist; let mut alphabet_size; let mut max_distance; dist_params.distance_postfix_bits = npostfix; dist_params.num_direct_distance_codes = ndirect; alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE(npostfix, ndirect, BROTLI_MAX_DISTANCE_BITS); max_distance = ndirect + (1u32 << (BROTLI_MAX_DISTANCE_BITS + npostfix + 2)) - (1u32 << (npostfix + 2)); if (params.large_window) { let bound: [u32; BROTLI_MAX_NPOSTFIX + 1] = [0, 4, 12, 28]; let postfix = 1u32 << npostfix; alphabet_size = BROTLI_DISTANCE_ALPHABET_SIZE(npostfix, ndirect, BROTLI_LARGE_MAX_DISTANCE_BITS); /* The maximum distance is set so that no distance symbol used can encode a distance larger than BROTLI_MAX_ALLOWED_DISTANCE with all its extra bits set. */ if (ndirect < bound[npostfix as usize]) { max_distance = BROTLI_MAX_ALLOWED_DISTANCE as u32 - (bound[npostfix as usize] - ndirect); } else if (ndirect >= bound[npostfix as usize] + postfix) { max_distance = (3u32 << 29) - 4 + (ndirect - bound[npostfix as usize]); } else { max_distance = BROTLI_MAX_ALLOWED_DISTANCE as u32; } } dist_params.alphabet_size = alphabet_size; dist_params.max_distance = max_distance as usize; } fn RecomputeDistancePrefixes( cmds: &mut [Command], num_commands: usize, orig_params: &BrotliDistanceParams, new_params: &BrotliDistanceParams, ) { if orig_params.distance_postfix_bits == new_params.distance_postfix_bits && orig_params.num_direct_distance_codes == new_params.num_direct_distance_codes { return; } for cmd in cmds.split_at_mut(num_commands).0.iter_mut() { if (cmd.copy_len() != 0 && cmd.cmd_prefix_ >= 128) { let ret = cmd.restore_distance_code(orig_params); PrefixEncodeCopyDistance( ret as usize, new_params.num_direct_distance_codes as usize, new_params.distance_postfix_bits as u64, &mut cmd.dist_prefix_, &mut cmd.dist_extra_, ); } } } fn ComputeDistanceCost( cmds: &[Command], num_commands: usize, orig_params: &BrotliDistanceParams, new_params: &BrotliDistanceParams, scratch: &mut ::i32vec, cost: &mut f64, ) -> bool { let mut equal_params = false; let mut dist_prefix: u16 = 0; let mut dist_extra: u32 = 0; let mut extra_bits: f64 = 0.0; let mut histo = HistogramDistance::default(); if (orig_params.distance_postfix_bits == new_params.distance_postfix_bits && orig_params.num_direct_distance_codes == new_params.num_direct_distance_codes) { equal_params = true; } for cmd in cmds.split_at(num_commands).0 { if cmd.copy_len() != 0 && cmd.cmd_prefix_ >= 128 { if equal_params { dist_prefix = cmd.dist_prefix_; } else { let distance = cmd.restore_distance_code(orig_params); if distance > new_params.max_distance as u32 { return false; } PrefixEncodeCopyDistance( distance as usize, new_params.num_direct_distance_codes as usize, new_params.distance_postfix_bits as u64, &mut dist_prefix, &mut dist_extra, ); } HistogramAddItem(&mut histo, (dist_prefix & 0x03ff) as usize); extra_bits += (dist_prefix >> 10) as f64; } } *cost = BrotliPopulationCost(&histo, scratch) as f64 + extra_bits; true } pub fn BrotliBuildMetaBlock( alloc: &mut Alloc, ringbuffer: &[u8], pos: usize, mask: usize, params: &mut BrotliEncoderParams, prev_byte: u8, prev_byte2: u8, cmds: &mut [Command], num_commands: usize, literal_context_mode: ContextType, lit_scratch_space: &mut ::i32vec, cmd_scratch_space: &mut ::i32vec, dst_scratch_space: &mut ::i32vec, mb: &mut MetaBlockSplit, ) { static kMaxNumberOfHistograms: usize = 256usize; let mut distance_histograms: >::AllocatedMemory; let mut literal_histograms: >::AllocatedMemory; let mut literal_context_modes: >::AllocatedMemory = >::AllocatedMemory::default(); let mut i: usize; let mut literal_context_multiplier: usize = 1; let mut ndirect_msb: u32 = 0; let mut check_orig = true; if !params.avoid_distance_prefix_search { let mut best_dist_cost: f64 = 1e99; let orig_params = params.clone(); let mut new_params = params.clone(); for npostfix in 0..(BROTLI_MAX_NPOSTFIX + 1) { while ndirect_msb < 16 { let ndirect = ndirect_msb << npostfix; let mut dist_cost: f64 = 0.0; BrotliInitDistanceParams(&mut new_params, npostfix as u32, ndirect); if npostfix as u32 == orig_params.dist.distance_postfix_bits && ndirect == orig_params.dist.num_direct_distance_codes { check_orig = false; } let skip: bool = !ComputeDistanceCost( cmds, num_commands, &orig_params.dist, &new_params.dist, dst_scratch_space, &mut dist_cost, ); if skip || (dist_cost > best_dist_cost) { break; } best_dist_cost = dist_cost; params.dist = new_params.dist; ndirect_msb += 1; } ndirect_msb = ndirect_msb.saturating_sub(1); ndirect_msb /= 2; } if check_orig { let mut dist_cost: f64 = 0.0; ComputeDistanceCost( cmds, num_commands, &orig_params.dist, &orig_params.dist, dst_scratch_space, &mut dist_cost, ); if dist_cost < best_dist_cost { // best_dist_cost = dist_cost; unused params.dist = orig_params.dist; } } RecomputeDistancePrefixes(cmds, num_commands, &orig_params.dist, ¶ms.dist); } BrotliSplitBlock( alloc, cmds, num_commands, ringbuffer, pos, mask, params, lit_scratch_space, cmd_scratch_space, dst_scratch_space, &mut mb.literal_split, &mut mb.command_split, &mut mb.distance_split, ); if params.disable_literal_context_modeling == 0 { literal_context_multiplier = (1i32 << 6) as usize; literal_context_modes = >::alloc_cell(alloc, mb.literal_split.num_types); for item in literal_context_modes.slice_mut().iter_mut() { *item = literal_context_mode; } } let literal_histograms_size: usize = mb .literal_split .num_types .wrapping_mul(literal_context_multiplier); literal_histograms = >::alloc_cell(alloc, literal_histograms_size); let distance_histograms_size: usize = mb.distance_split.num_types << 2; distance_histograms = >::alloc_cell(alloc, distance_histograms_size); mb.command_histograms_size = mb.command_split.num_types; mb.command_histograms = >::alloc_cell(alloc, mb.command_histograms_size); BrotliBuildHistogramsWithContext( cmds, num_commands, &mut mb.literal_split, &mut mb.command_split, &mut mb.distance_split, ringbuffer, pos, mask, prev_byte, prev_byte2, literal_context_modes.slice(), literal_histograms.slice_mut(), mb.command_histograms.slice_mut(), distance_histograms.slice_mut(), ); >::free_cell(alloc, literal_context_modes); mb.literal_context_map_size = mb.literal_split.num_types << 6; mb.literal_context_map = >::alloc_cell(alloc, mb.literal_context_map_size); mb.literal_histograms_size = mb.literal_context_map_size; mb.literal_histograms = >::alloc_cell(alloc, mb.literal_histograms_size); BrotliClusterHistograms( alloc, literal_histograms.slice(), literal_histograms_size, kMaxNumberOfHistograms, lit_scratch_space, mb.literal_histograms.slice_mut(), &mut mb.literal_histograms_size, mb.literal_context_map.slice_mut(), ); >::free_cell(alloc, literal_histograms); if params.disable_literal_context_modeling != 0 { i = mb.literal_split.num_types; while i != 0usize { let mut j: usize = 0usize; i = i.wrapping_sub(1); while j < (1i32 << 6) as usize { { let val = mb.literal_context_map.slice()[i]; mb.literal_context_map.slice_mut()[(i << 6).wrapping_add(j)] = val; } j = j.wrapping_add(1); } } } mb.distance_context_map_size = mb.distance_split.num_types << 2; mb.distance_context_map = >::alloc_cell(alloc, mb.distance_context_map_size); mb.distance_histograms_size = mb.distance_context_map_size; mb.distance_histograms = >::alloc_cell(alloc, mb.distance_histograms_size); BrotliClusterHistograms( alloc, distance_histograms.slice(), mb.distance_context_map_size, kMaxNumberOfHistograms, dst_scratch_space, mb.distance_histograms.slice_mut(), &mut mb.distance_histograms_size, mb.distance_context_map.slice_mut(), ); >::free_cell(alloc, distance_histograms); } /* pub struct BlockSplitter<'a, HistogramType:SliceWrapper+SliceWrapperMut +CostAccessors, AllocU8:alloc::Allocator+'a, AllocU32:alloc::Allocator+'a, AllocHT:alloc::Allocator+'a > { */ pub struct BlockSplitter { pub alphabet_size_: usize, pub min_block_size_: usize, pub split_threshold_: super::util::floatX, pub num_blocks_: usize, // pub split_: &'a mut BlockSplit, // pub histograms_: AllocHT::AllocatedMemory, // FIXME: pull this one out at the end // pub histograms_size_: &'a mut usize, // FIXME: pull this one out at the end pub target_block_size_: usize, pub block_size_: usize, pub curr_histogram_ix_: usize, pub last_histogram_ix_: [usize; 2], pub last_entropy_: [super::util::floatX; 2], pub merge_last_count_: usize, } pub struct ContextBlockSplitter { pub alphabet_size_: usize, pub num_contexts_: usize, pub max_block_types_: usize, pub min_block_size_: usize, pub split_threshold_: super::util::floatX, pub num_blocks_: usize, // pub split_: &'a mut BlockSplit, // pub histograms_: AllocHL::AllocatedMemory, // pub histograms_size_: &'a mut usize, // FIXME: pull this one out at the end pub target_block_size_: usize, pub block_size_: usize, pub curr_histogram_ix_: usize, pub last_histogram_ix_: [usize; 2], pub last_entropy_: [super::util::floatX; 2 * BROTLI_MAX_STATIC_CONTEXTS], pub merge_last_count_: usize, } enum LitBlocks { plain(BlockSplitter), //<'a, HistogramLiteral, AllocU8, AllocU32, AllocHL>, ctx(ContextBlockSplitter), //<'a, AllocU8, AllocU32, AllocHL>, } /* pub struct BlockSplitterCommand { pub alphabet_size_: usize, pub min_block_size_: usize, pub split_threshold_: super::util::floatX, pub num_blocks_: usize, pub split_: *mut BlockSplit, pub histograms_: *mut HistogramCommand, pub histograms_size_: *mut usize, pub target_block_size_: usize, pub block_size_: usize, pub curr_histogram_ix_: usize, pub last_histogram_ix_: [usize; 2], pub last_entropy_: [super::util::floatX; 2], pub merge_last_count_: usize, } pub struct BlockSplitterDistance { pub alphabet_size_: usize, pub min_block_size_: usize, pub split_threshold_: super::util::floatX, pub num_blocks_: usize, pub split_: *mut BlockSplit, pub histograms_: *mut HistogramDistance, pub histograms_size_: *mut usize, pub target_block_size_: usize, pub block_size_: usize, pub curr_histogram_ix_: usize, pub last_histogram_ix_: [usize; 2], pub last_entropy_: [super::util::floatX; 2], pub merge_last_count_: usize, } */ fn InitBlockSplitter< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator, >( alloc: &mut Alloc, alphabet_size: usize, min_block_size: usize, split_threshold: super::util::floatX, num_symbols: usize, split: &mut BlockSplit, histograms: &mut >::AllocatedMemory, histograms_size: &mut usize, ) -> BlockSplitter { let max_num_blocks: usize = num_symbols.wrapping_div(min_block_size).wrapping_add(1); let max_num_types: usize = min(max_num_blocks, (256i32 + 1i32) as usize); let mut xself = BlockSplitter { last_entropy_: [0.0 as super::util::floatX; 2], alphabet_size_: alphabet_size, min_block_size_: min_block_size, split_threshold_: split_threshold, num_blocks_: 0usize, //xself.split_ : split, //xself.histograms_size_ : histograms_size, target_block_size_: min_block_size, block_size_: 0usize, curr_histogram_ix_: 0usize, merge_last_count_: 0usize, last_histogram_ix_: [0; 2], }; { if split.types.slice().len() < max_num_blocks { let mut _new_size: usize = if split.types.slice().is_empty() { max_num_blocks } else { split.types.slice().len() }; let mut new_array: >::AllocatedMemory; while _new_size < max_num_blocks { _new_size = _new_size.wrapping_mul(2); } new_array = >::alloc_cell(alloc, _new_size); if (!split.types.slice().is_empty()) { new_array.slice_mut()[..split.types.slice().len()] .clone_from_slice(split.types.slice()); } >::free_cell( alloc, core::mem::replace(&mut split.types, new_array), ); } } { if split.lengths.slice().len() < max_num_blocks { let mut _new_size: usize = if split.lengths.slice().is_empty() { max_num_blocks } else { split.lengths.slice().len() }; while _new_size < max_num_blocks { _new_size = _new_size.wrapping_mul(2); } let mut new_array = >::alloc_cell(alloc, _new_size); new_array.slice_mut()[..split.lengths.slice().len()] .clone_from_slice(split.lengths.slice()); >::free_cell( alloc, core::mem::replace(&mut split.lengths, new_array), ); } } split.num_blocks = max_num_blocks; *histograms_size = max_num_types; let hlocal = >::alloc_cell(alloc, *histograms_size); >::free_cell( alloc, core::mem::replace(&mut *histograms, hlocal), ); HistogramClear(&mut histograms.slice_mut()[0]); xself.last_histogram_ix_[0] = 0; xself.last_histogram_ix_[1] = 0; xself } fn InitContextBlockSplitter< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator, >( alloc: &mut Alloc, alphabet_size: usize, num_contexts: usize, min_block_size: usize, split_threshold: super::util::floatX, num_symbols: usize, split: &mut BlockSplit, histograms: &mut >::AllocatedMemory, histograms_size: &mut usize, ) -> ContextBlockSplitter { let max_num_blocks: usize = num_symbols.wrapping_div(min_block_size).wrapping_add(1); assert!(num_contexts <= BROTLI_MAX_STATIC_CONTEXTS); let mut xself = ContextBlockSplitter { alphabet_size_: alphabet_size, num_contexts_: num_contexts, max_block_types_: (256usize).wrapping_div(num_contexts), min_block_size_: min_block_size, split_threshold_: split_threshold, num_blocks_: 0usize, // histograms_size_: histograms_size, target_block_size_: min_block_size, block_size_: 0usize, curr_histogram_ix_: 0usize, merge_last_count_: 0usize, last_histogram_ix_: [0; 2], last_entropy_: [0.0 as super::util::floatX; 2 * BROTLI_MAX_STATIC_CONTEXTS], }; let max_num_types: usize = min(max_num_blocks, xself.max_block_types_.wrapping_add(1)); { if split.types.slice().len() < max_num_blocks { let mut _new_size: usize = if split.types.slice().is_empty() { max_num_blocks } else { split.types.slice().len() }; while _new_size < max_num_blocks { _new_size = _new_size.wrapping_mul(2); } let mut new_array = >::alloc_cell(alloc, _new_size); if (!split.types.slice().is_empty()) { new_array.slice_mut()[..split.types.slice().len()] .clone_from_slice(split.types.slice()); } >::free_cell( alloc, core::mem::replace(&mut split.types, new_array), ); } } { if split.lengths.slice().len() < max_num_blocks { let mut _new_size: usize = if split.lengths.slice().is_empty() { max_num_blocks } else { split.lengths.slice().len() }; while _new_size < max_num_blocks { _new_size = _new_size.wrapping_mul(2); } let mut new_array = >::alloc_cell(alloc, _new_size); if (!split.lengths.slice().is_empty()) { new_array.slice_mut()[..split.lengths.slice().len()] .clone_from_slice(split.lengths.slice()); } >::free_cell( alloc, core::mem::replace(&mut split.lengths, new_array), ); } } split.num_blocks = max_num_blocks; *histograms_size = max_num_types.wrapping_mul(num_contexts); *histograms = >::alloc_cell(alloc, *histograms_size); //xself.histograms_ = *histograms; ClearHistograms(&mut histograms.slice_mut()[0..], num_contexts); xself.last_histogram_ix_[0] = 0; xself.last_histogram_ix_[1] = 0; xself } fn BlockSplitterFinishBlock< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors + Clone, Alloc: alloc::Allocator + alloc::Allocator, >( xself: &mut BlockSplitter, split: &mut BlockSplit, histograms: &mut [HistogramType], histograms_size: &mut usize, is_final: i32, ) { xself.block_size_ = max(xself.block_size_, xself.min_block_size_); if xself.num_blocks_ == 0usize { split.lengths.slice_mut()[0] = xself.block_size_ as u32; split.types.slice_mut()[0] = 0u8; xself.last_entropy_[0] = BitsEntropy((histograms[0]).slice(), xself.alphabet_size_); xself.last_entropy_[1] = xself.last_entropy_[0]; xself.num_blocks_ = xself.num_blocks_.wrapping_add(1); split.num_types = split.num_types.wrapping_add(1); xself.curr_histogram_ix_ = xself.curr_histogram_ix_.wrapping_add(1); if xself.curr_histogram_ix_ < *histograms_size { HistogramClear(&mut histograms[xself.curr_histogram_ix_]); } xself.block_size_ = 0usize; } else if xself.block_size_ > 0usize { let entropy: super::util::floatX = BitsEntropy( (histograms[xself.curr_histogram_ix_]).slice(), xself.alphabet_size_, ); let mut combined_histo: [HistogramType; 2] = [ histograms[xself.curr_histogram_ix_].clone(), histograms[xself.curr_histogram_ix_].clone(), ]; let mut combined_entropy: [super::util::floatX; 2] = [0.0 as super::util::floatX, 0.0 as super::util::floatX]; let mut diff: [super::util::floatX; 2] = [0.0 as super::util::floatX, 0.0 as super::util::floatX]; for j in 0..2 { let last_histogram_ix: usize = xself.last_histogram_ix_[j]; HistogramAddHistogram(&mut combined_histo[j], &histograms[last_histogram_ix]); combined_entropy[j] = BitsEntropy( &mut combined_histo[j].slice_mut()[0..], xself.alphabet_size_, ); diff[j] = combined_entropy[j] - entropy - xself.last_entropy_[j]; } if split.num_types < 256usize && (diff[0] > xself.split_threshold_) && (diff[1] > xself.split_threshold_) { split.lengths.slice_mut()[xself.num_blocks_] = xself.block_size_ as u32; split.types.slice_mut()[xself.num_blocks_] = split.num_types as u8; xself.last_histogram_ix_[1] = xself.last_histogram_ix_[0]; xself.last_histogram_ix_[0] = split.num_types as u8 as usize; xself.last_entropy_[1] = xself.last_entropy_[0]; xself.last_entropy_[0] = entropy; xself.num_blocks_ = xself.num_blocks_.wrapping_add(1); split.num_types = split.num_types.wrapping_add(1); xself.curr_histogram_ix_ = xself.curr_histogram_ix_.wrapping_add(1); if xself.curr_histogram_ix_ < *histograms_size { HistogramClear(&mut histograms[xself.curr_histogram_ix_]); } xself.block_size_ = 0usize; xself.merge_last_count_ = 0usize; xself.target_block_size_ = xself.min_block_size_; } else if diff[1] < diff[0] - 20.0 as super::util::floatX { split.lengths.slice_mut()[xself.num_blocks_] = xself.block_size_ as u32; split.types.slice_mut()[xself.num_blocks_] = split.types.slice()[xself.num_blocks_.wrapping_sub(2)]; //FIXME: investigate copy? { xself.last_histogram_ix_.swap(0, 1); } histograms[xself.last_histogram_ix_[0]] = combined_histo[1].clone(); xself.last_entropy_[1] = xself.last_entropy_[0]; xself.last_entropy_[0] = combined_entropy[1]; xself.num_blocks_ = xself.num_blocks_.wrapping_add(1); xself.block_size_ = 0usize; HistogramClear(&mut histograms[xself.curr_histogram_ix_]); xself.merge_last_count_ = 0usize; xself.target_block_size_ = xself.min_block_size_; } else { { let _rhs = xself.block_size_ as u32; let _lhs = &mut split.lengths.slice_mut()[xself.num_blocks_.wrapping_sub(1)]; *_lhs = (*_lhs).wrapping_add(_rhs); } histograms[xself.last_histogram_ix_[0]] = combined_histo[0].clone(); xself.last_entropy_[0] = combined_entropy[0]; if split.num_types == 1 { xself.last_entropy_[1] = xself.last_entropy_[0]; } xself.block_size_ = 0usize; HistogramClear(&mut histograms[xself.curr_histogram_ix_]); if { xself.merge_last_count_ = xself.merge_last_count_.wrapping_add(1); xself.merge_last_count_ } > 1 { xself.target_block_size_ = xself.target_block_size_.wrapping_add(xself.min_block_size_); } } } if is_final != 0 { *histograms_size = split.num_types; split.num_blocks = xself.num_blocks_; } } const BROTLI_MAX_STATIC_CONTEXTS: usize = 13; fn ContextBlockSplitterFinishBlock< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator, AllocHL: alloc::Allocator, >( xself: &mut ContextBlockSplitter, m: &mut AllocHL, split: &mut BlockSplit, histograms: &mut [HistogramLiteral], histograms_size: &mut usize, is_final: i32, ) { let num_contexts: usize = xself.num_contexts_; if xself.block_size_ < xself.min_block_size_ { xself.block_size_ = xself.min_block_size_; } if xself.num_blocks_ == 0usize { split.lengths.slice_mut()[0] = xself.block_size_ as u32; split.types.slice_mut()[0] = 0u8; for i in 0usize..num_contexts { xself.last_entropy_[i] = BitsEntropy((histograms[i]).slice(), xself.alphabet_size_); xself.last_entropy_[num_contexts.wrapping_add(i)] = xself.last_entropy_[i]; } xself.num_blocks_ = xself.num_blocks_.wrapping_add(1); split.num_types = split.num_types.wrapping_add(1); xself.curr_histogram_ix_ = xself.curr_histogram_ix_.wrapping_add(num_contexts); if xself.curr_histogram_ix_ < *histograms_size { ClearHistograms( &mut histograms[xself.curr_histogram_ix_..], xself.num_contexts_, ); } xself.block_size_ = 0usize; } else if xself.block_size_ > 0usize { let mut entropy = [0.0 as super::util::floatX; BROTLI_MAX_STATIC_CONTEXTS]; let mut combined_histo = m.alloc_cell(2 * num_contexts); let mut combined_entropy = [0.0 as super::util::floatX; 2 * BROTLI_MAX_STATIC_CONTEXTS]; let mut diff: [super::util::floatX; 2] = [0.0 as super::util::floatX; 2]; for i in 0usize..num_contexts { let curr_histo_ix: usize = xself.curr_histogram_ix_.wrapping_add(i); let mut j: usize; entropy[i] = BitsEntropy((histograms[curr_histo_ix]).slice(), xself.alphabet_size_); j = 0usize; while j < 2usize { { let jx: usize = j.wrapping_mul(num_contexts).wrapping_add(i); let last_histogram_ix: usize = xself.last_histogram_ix_[j].wrapping_add(i); combined_histo.slice_mut()[jx] = histograms[curr_histo_ix].clone(); HistogramAddHistogram( &mut combined_histo.slice_mut()[jx], &mut histograms[last_histogram_ix], ); combined_entropy[jx] = BitsEntropy(combined_histo.slice()[jx].slice(), xself.alphabet_size_); diff[j] += combined_entropy[jx] - entropy[i] - xself.last_entropy_[jx]; } j = j.wrapping_add(1); } } if split.num_types < xself.max_block_types_ && (diff[0] > xself.split_threshold_) && (diff[1] > xself.split_threshold_) { split.lengths.slice_mut()[xself.num_blocks_] = xself.block_size_ as u32; split.types.slice_mut()[xself.num_blocks_] = split.num_types as u8; xself.last_histogram_ix_[1] = xself.last_histogram_ix_[0]; xself.last_histogram_ix_[0] = split.num_types.wrapping_mul(num_contexts); for i in 0usize..num_contexts { xself.last_entropy_[num_contexts.wrapping_add(i)] = xself.last_entropy_[i]; xself.last_entropy_[i] = entropy[i]; } xself.num_blocks_ = xself.num_blocks_.wrapping_add(1); split.num_types = split.num_types.wrapping_add(1); xself.curr_histogram_ix_ = xself.curr_histogram_ix_.wrapping_add(num_contexts); if xself.curr_histogram_ix_ < *histograms_size { ClearHistograms( &mut histograms[xself.curr_histogram_ix_..], xself.num_contexts_, ); } xself.block_size_ = 0usize; xself.merge_last_count_ = 0usize; xself.target_block_size_ = xself.min_block_size_; } else if diff[1] < diff[0] - 20.0 as super::util::floatX { split.lengths.slice_mut()[xself.num_blocks_] = xself.block_size_ as u32; let nbm2 = split.types.slice()[xself.num_blocks_.wrapping_sub(2)]; split.types.slice_mut()[xself.num_blocks_] = nbm2; { xself.last_histogram_ix_.swap(0, 1); } for i in 0usize..num_contexts { histograms[xself.last_histogram_ix_[0].wrapping_add(i)] = combined_histo.slice()[num_contexts.wrapping_add(i)].clone(); xself.last_entropy_[num_contexts.wrapping_add(i)] = xself.last_entropy_[i]; xself.last_entropy_[i] = combined_entropy[num_contexts.wrapping_add(i)]; HistogramClear(&mut histograms[xself.curr_histogram_ix_.wrapping_add(i)]); } xself.num_blocks_ = xself.num_blocks_.wrapping_add(1); xself.block_size_ = 0usize; xself.merge_last_count_ = 0usize; xself.target_block_size_ = xself.min_block_size_; } else { { let _rhs = xself.block_size_ as u32; let _lhs = &mut split.lengths.slice_mut()[xself.num_blocks_.wrapping_sub(1)]; let old_split_length = *_lhs; *_lhs = old_split_length.wrapping_add(_rhs); } for i in 0usize..num_contexts { histograms[xself.last_histogram_ix_[0].wrapping_add(i)] = combined_histo.slice()[i].clone(); xself.last_entropy_[i] = combined_entropy[i]; if split.num_types == 1 { xself.last_entropy_[num_contexts.wrapping_add(i)] = xself.last_entropy_[i]; } HistogramClear(&mut histograms[xself.curr_histogram_ix_.wrapping_add(i)]); } xself.block_size_ = 0usize; if { xself.merge_last_count_ = xself.merge_last_count_.wrapping_add(1); xself.merge_last_count_ } > 1 { xself.target_block_size_ = xself.target_block_size_.wrapping_add(xself.min_block_size_); } } m.free_cell(combined_histo); } if is_final != 0 { *histograms_size = split.num_types.wrapping_mul(num_contexts); split.num_blocks = xself.num_blocks_; } } fn BlockSplitterAddSymbol< HistogramType: SliceWrapper + SliceWrapperMut + CostAccessors + Clone, Alloc: alloc::Allocator + alloc::Allocator, >( xself: &mut BlockSplitter, split: &mut BlockSplit, histograms: &mut [HistogramType], histograms_size: &mut usize, symbol: usize, ) { HistogramAddItem(&mut histograms[xself.curr_histogram_ix_], symbol); xself.block_size_ = xself.block_size_.wrapping_add(1); if xself.block_size_ == xself.target_block_size_ { BlockSplitterFinishBlock(xself, split, histograms, histograms_size, 0i32); } } fn ContextBlockSplitterAddSymbol< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator, >( xself: &mut ContextBlockSplitter, m: &mut Alloc, split: &mut BlockSplit, histograms: &mut [HistogramLiteral], histograms_size: &mut usize, symbol: usize, context: usize, ) { HistogramAddItem( &mut histograms[xself.curr_histogram_ix_.wrapping_add(context)], symbol, ); xself.block_size_ = xself.block_size_.wrapping_add(1); if xself.block_size_ == xself.target_block_size_ { ContextBlockSplitterFinishBlock(xself, m, split, histograms, histograms_size, 0i32); } } fn MapStaticContexts< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, >( m32: &mut Alloc, num_contexts: usize, static_context_map: &[u32], mb: &mut MetaBlockSplit, ) { mb.literal_context_map_size = mb.literal_split.num_types << 6; let new_literal_context_map = >::alloc_cell(m32, mb.literal_context_map_size); >::free_cell( m32, core::mem::replace(&mut mb.literal_context_map, new_literal_context_map), ); for i in 0usize..mb.literal_split.num_types { let offset: u32 = i.wrapping_mul(num_contexts) as u32; for j in 0usize..(1u32 << 6) as usize { mb.literal_context_map.slice_mut()[(i << 6).wrapping_add(j)] = offset.wrapping_add(static_context_map[j]); } } } pub fn BrotliBuildMetaBlockGreedyInternal< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, >( alloc: &mut Alloc, ringbuffer: &[u8], mut pos: usize, mask: usize, mut prev_byte: u8, mut prev_byte2: u8, literal_context_mode: ContextType, num_contexts: usize, static_context_map: &[u32], commands: &[Command], n_commands: usize, mb: &mut MetaBlockSplit, ) { let mut lit_blocks: LitBlocks; let mut cmd_blocks: BlockSplitter; let mut dist_blocks: BlockSplitter; let mut num_literals: usize = 0usize; for i in 0usize..n_commands { num_literals = num_literals.wrapping_add((commands[i]).insert_len_ as usize); } lit_blocks = if num_contexts == 1 { LitBlocks::plain(InitBlockSplitter::( alloc, 256usize, 512usize, 400.0 as super::util::floatX, num_literals, &mut mb.literal_split, &mut mb.literal_histograms, &mut mb.literal_histograms_size, )) } else { LitBlocks::ctx(InitContextBlockSplitter::( alloc, 256usize, num_contexts, 512usize, 400.0 as super::util::floatX, num_literals, &mut mb.literal_split, &mut mb.literal_histograms, &mut mb.literal_histograms_size, )) }; cmd_blocks = InitBlockSplitter::( alloc, 704usize, 1024usize, 500.0 as super::util::floatX, n_commands, &mut mb.command_split, &mut mb.command_histograms, &mut mb.command_histograms_size, ); dist_blocks = InitBlockSplitter::( alloc, 64usize, 512usize, 100.0 as super::util::floatX, n_commands, &mut mb.distance_split, &mut mb.distance_histograms, &mut mb.distance_histograms_size, ); for i in 0usize..n_commands { let cmd: Command = commands[i]; let mut j: usize; BlockSplitterAddSymbol( &mut cmd_blocks, &mut mb.command_split, mb.command_histograms.slice_mut(), &mut mb.command_histograms_size, cmd.cmd_prefix_ as usize, ); j = cmd.insert_len_ as usize; while j != 0usize { { let literal: u8 = ringbuffer[(pos & mask)]; match (&mut lit_blocks) { &mut LitBlocks::plain(ref mut lit_blocks_plain) => BlockSplitterAddSymbol( lit_blocks_plain, &mut mb.literal_split, mb.literal_histograms.slice_mut(), &mut mb.literal_histograms_size, literal as usize, ), &mut LitBlocks::ctx(ref mut lit_blocks_ctx) => { let context: usize = Context(prev_byte, prev_byte2, literal_context_mode) as usize; ContextBlockSplitterAddSymbol( lit_blocks_ctx, alloc, &mut mb.literal_split, mb.literal_histograms.slice_mut(), &mut mb.literal_histograms_size, literal as usize, static_context_map[(context as usize)] as usize, ); } } prev_byte2 = prev_byte; prev_byte = literal; pos = pos.wrapping_add(1); } j = j.wrapping_sub(1); } pos = pos.wrapping_add(cmd.copy_len() as usize); if cmd.copy_len() != 0 { prev_byte2 = ringbuffer[(pos.wrapping_sub(2) & mask)]; prev_byte = ringbuffer[(pos.wrapping_sub(1) & mask)]; if cmd.cmd_prefix_ as i32 >= 128i32 { BlockSplitterAddSymbol( &mut dist_blocks, &mut mb.distance_split, mb.distance_histograms.slice_mut(), &mut mb.distance_histograms_size, cmd.dist_prefix_ as usize & 0x3ff, ); } } } match (&mut lit_blocks) { &mut LitBlocks::plain(ref mut lit_blocks_plain) => BlockSplitterFinishBlock( lit_blocks_plain, &mut mb.literal_split, mb.literal_histograms.slice_mut(), &mut mb.literal_histograms_size, 1i32, ), &mut LitBlocks::ctx(ref mut lit_blocks_ctx) => ContextBlockSplitterFinishBlock( lit_blocks_ctx, alloc, &mut mb.literal_split, mb.literal_histograms.slice_mut(), &mut mb.literal_histograms_size, 1i32, ), } BlockSplitterFinishBlock( &mut cmd_blocks, &mut mb.command_split, mb.command_histograms.slice_mut(), &mut mb.command_histograms_size, 1i32, ); BlockSplitterFinishBlock( &mut dist_blocks, &mut mb.distance_split, mb.distance_histograms.slice_mut(), &mut mb.distance_histograms_size, 1i32, ); if num_contexts > 1 { MapStaticContexts(alloc, num_contexts, static_context_map, mb); } } pub fn BrotliBuildMetaBlockGreedy< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, >( alloc: &mut Alloc, ringbuffer: &[u8], pos: usize, mask: usize, prev_byte: u8, prev_byte2: u8, literal_context_mode: ContextType, _literal_context_lut: &[u8], num_contexts: usize, static_context_map: &[u32], commands: &[Command], n_commands: usize, mb: &mut MetaBlockSplit, ) { if num_contexts == 1 { BrotliBuildMetaBlockGreedyInternal( alloc, ringbuffer, pos, mask, prev_byte, prev_byte2, literal_context_mode, 1, &[], commands, n_commands, mb, ); } else { BrotliBuildMetaBlockGreedyInternal( alloc, ringbuffer, pos, mask, prev_byte, prev_byte2, literal_context_mode, num_contexts, static_context_map, commands, n_commands, mb, ); } } pub fn BrotliOptimizeHistograms< Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator + alloc::Allocator, >( num_distance_codes: usize, mb: &mut MetaBlockSplit, ) { let mut good_for_rle: [u8; 704] = [0; 704]; for i in 0usize..mb.literal_histograms_size { BrotliOptimizeHuffmanCountsForRle( 256usize, mb.literal_histograms.slice_mut()[i].slice_mut(), &mut good_for_rle[..], ); } for i in 0usize..mb.command_histograms_size { BrotliOptimizeHuffmanCountsForRle( 704usize, mb.command_histograms.slice_mut()[i].slice_mut(), &mut good_for_rle[..], ); } for i in 0usize..mb.distance_histograms_size { BrotliOptimizeHuffmanCountsForRle( num_distance_codes, mb.distance_histograms.slice_mut()[i].slice_mut(), &mut good_for_rle[..], ); } } brotli-6.0.0/src/enc/mod.rs000075500000000000000000000244521046102023000136150ustar 00000000000000#![cfg_attr(not(feature = "std"), allow(unused_imports))] #[macro_use] pub mod vectorization; pub mod backward_references; pub mod bit_cost; pub mod block_split; pub mod brotli_bit_stream; pub mod cluster; pub mod combined_alloc; pub mod command; pub mod constants; pub mod dictionary_hash; pub mod entropy_encode; pub mod fast_log; pub mod histogram; pub mod input_pair; pub mod literal_cost; pub mod static_dict; pub mod static_dict_lut; pub mod utf8_util; pub mod util; pub use self::backward_references::hash_to_binary_tree; pub use self::backward_references::hq as backward_references_hq; pub mod block_splitter; pub mod compress_fragment; pub mod compress_fragment_two_pass; pub mod context_map_entropy; pub mod encode; pub mod find_stride; pub mod interface; pub mod ir_interpret; pub mod metablock; pub mod pdf; pub mod prior_eval; pub mod reader; pub mod stride_eval; pub mod writer; pub use self::combined_alloc::{BrotliAlloc, CombiningAllocator}; mod compat; pub mod fixed_queue; pub mod multithreading; pub mod singlethreading; pub mod threading; pub mod worker_pool; #[cfg(feature = "simd")] pub type s16 = core::simd::i16x16; #[cfg(feature = "simd")] pub type v8 = core::simd::f32x8; #[cfg(feature = "simd")] pub type s8 = core::simd::i32x8; #[cfg(not(feature = "simd"))] pub type s16 = compat::Compat16x16; #[cfg(not(feature = "simd"))] pub type v8 = compat::CompatF8; #[cfg(not(feature = "simd"))] pub type s8 = compat::Compat32x8; mod parameters; mod test; mod weights; pub use self::backward_references::{BrotliEncoderParams, UnionHasher}; use self::encode::{BrotliEncoderDestroyInstance, BrotliEncoderOperation}; pub use self::encode::{ BrotliEncoderInitParams, BrotliEncoderMaxCompressedSize, BrotliEncoderMaxCompressedSizeMulti, }; pub use self::hash_to_binary_tree::ZopfliNode; pub use self::interface::StaticCommand; pub use self::pdf::PDF; pub use self::util::floatX; pub use self::vectorization::{v256, v256i, Mem256f}; use brotli_decompressor::{CustomRead, CustomWrite}; pub use interface::{InputPair, InputReference, InputReferenceMut}; pub use alloc::{AllocatedStackMemory, Allocator, SliceWrapper, SliceWrapperMut, StackAllocator}; #[cfg(feature = "std")] pub use alloc_stdlib::StandardAlloc; #[cfg(feature = "std")] use std::io; #[cfg(feature = "std")] use std::io::{Error, ErrorKind, Read, Write}; #[cfg(feature = "std")] pub use brotli_decompressor::{IntoIoReader, IoReaderWrapper, IoWriterWrapper}; use enc::encode::BrotliEncoderStateStruct; #[cfg(not(feature = "std"))] pub use self::singlethreading::{compress_worker_pool, new_work_pool, WorkerPool}; pub use self::threading::{ BatchSpawnableLite, BrotliEncoderThreadError, CompressionThreadResult, Owned, SendAlloc, }; #[cfg(feature = "std")] pub use self::worker_pool::{compress_worker_pool, new_work_pool, WorkerPool}; #[cfg(feature = "std")] pub fn compress_multi< Alloc: BrotliAlloc + Send + 'static, SliceW: SliceWrapper + Send + 'static + Sync, >( params: &BrotliEncoderParams, owned_input: &mut Owned, output: &mut [u8], alloc_per_thread: &mut [SendAlloc< CompressionThreadResult, backward_references::UnionHasher, Alloc, , backward_references::UnionHasher, Alloc, (SliceW, BrotliEncoderParams), > as BatchSpawnableLite< CompressionThreadResult, backward_references::UnionHasher, Alloc, (SliceW, BrotliEncoderParams), >>::JoinHandle, >], ) -> Result where >::AllocatedMemory: Send, >::AllocatedMemory: Send + Sync, >::AllocatedMemory: Send + Sync, { let mut work_pool = self::worker_pool::new_work_pool(alloc_per_thread.len() - 1); compress_worker_pool( params, owned_input, output, alloc_per_thread, &mut work_pool, ) } #[cfg(feature = "std")] pub use self::multithreading::compress_multi as compress_multi_no_threadpool; #[cfg(not(feature = "std"))] pub use self::singlethreading::compress_multi; #[cfg(not(feature = "std"))] pub use self::singlethreading::compress_multi as compress_multi_no_threadpool; #[cfg(feature = "std")] pub fn BrotliCompress( r: &mut InputType, w: &mut OutputType, params: &BrotliEncoderParams, ) -> Result where InputType: Read, OutputType: Write, { let mut input_buffer: [u8; 4096] = [0; 4096]; let mut output_buffer: [u8; 4096] = [0; 4096]; BrotliCompressCustomAlloc( r, w, &mut input_buffer[..], &mut output_buffer[..], params, StandardAlloc::default(), ) } #[cfg(feature = "std")] pub fn BrotliCompressCustomAlloc( r: &mut InputType, w: &mut OutputType, input_buffer: &mut [u8], output_buffer: &mut [u8], params: &BrotliEncoderParams, alloc: Alloc, ) -> Result where InputType: Read, OutputType: Write, { let mut nop_callback = |_data: &mut interface::PredictionModeContextMap, _cmds: &mut [interface::StaticCommand], _mb: interface::InputPair, _m: &mut Alloc| (); BrotliCompressCustomIo( &mut IoReaderWrapper::(r), &mut IoWriterWrapper::(w), input_buffer, output_buffer, params, alloc, &mut nop_callback, Error::new(ErrorKind::UnexpectedEof, "Unexpected EOF"), ) } pub fn BrotliCompressCustomIo< ErrType, InputType, OutputType, Alloc: BrotliAlloc, MetablockCallback: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], interface::InputPair, &mut Alloc, ), >( r: &mut InputType, w: &mut OutputType, input_buffer: &mut [u8], output_buffer: &mut [u8], params: &BrotliEncoderParams, alloc: Alloc, metablock_callback: &mut MetablockCallback, unexpected_eof_error_constant: ErrType, ) -> Result where InputType: CustomRead, OutputType: CustomWrite, { BrotliCompressCustomIoCustomDict( r, w, input_buffer, output_buffer, params, alloc, metablock_callback, &[], unexpected_eof_error_constant, ) } pub fn BrotliCompressCustomIoCustomDict< ErrType, InputType, OutputType, Alloc: BrotliAlloc, MetablockCallback: FnMut( &mut interface::PredictionModeContextMap, &mut [interface::StaticCommand], interface::InputPair, &mut Alloc, ), >( r: &mut InputType, w: &mut OutputType, input_buffer: &mut [u8], output_buffer: &mut [u8], params: &BrotliEncoderParams, alloc: Alloc, metablock_callback: &mut MetablockCallback, dict: &[u8], unexpected_eof_error_constant: ErrType, ) -> Result where InputType: CustomRead, OutputType: CustomWrite, { assert!(!input_buffer.is_empty()); assert!(!output_buffer.is_empty()); let mut s_orig = BrotliEncoderStateStruct::new(alloc); s_orig.params = params.clone(); if !dict.is_empty() { s_orig.set_custom_dictionary(dict.len(), dict); } let mut next_in_offset: usize = 0; let mut next_out_offset: usize = 0; let mut total_out = Some(0); let mut read_err: Result<(), ErrType> = Ok(()); { let s = &mut s_orig; //BrotliEncoderSetParameter(s, BrotliEncoderParameter::BROTLI_PARAM_MODE, 0 as u32); // gen, text, font //BrotliEncoderSetParameter(s, // BrotliEncoderParameter::BROTLI_PARAM_SIZE_HINT, // input.len() as u32); let mut available_in: usize = 0; let mut available_out: usize = output_buffer.len(); let mut eof = false; loop { if available_in == 0 && !eof { next_in_offset = 0; match r.read(input_buffer) { Err(e) => { read_err = Err(e); available_in = 0; eof = true; } Ok(size) => { if size == 0 { eof = true; } available_in = size; } } } let op: BrotliEncoderOperation; if available_in == 0 { op = BrotliEncoderOperation::BROTLI_OPERATION_FINISH; } else { op = BrotliEncoderOperation::BROTLI_OPERATION_PROCESS; } let result = s.compress_stream( op, &mut available_in, input_buffer, &mut next_in_offset, &mut available_out, output_buffer, &mut next_out_offset, &mut total_out, metablock_callback, ); let fin = s.is_finished(); if available_out == 0 || fin { let lim = output_buffer.len() - available_out; assert_eq!(next_out_offset, lim); next_out_offset = 0; while next_out_offset < lim { match w.write(&mut output_buffer[next_out_offset..lim]) { Err(e) => { BrotliEncoderDestroyInstance(s); read_err?; return Err(e); } Ok(size) => { next_out_offset += size; } } } available_out = output_buffer.len(); next_out_offset = 0; } if !result { if read_err.is_ok() { read_err = Err(unexpected_eof_error_constant); } break; } if fin { break; } } BrotliEncoderDestroyInstance(s); } read_err?; Ok(total_out.unwrap()) } brotli-6.0.0/src/enc/multithreading.rs000075500000000000000000000134251046102023000160540ustar 00000000000000#![cfg(feature = "std")] use alloc::{Allocator, SliceWrapper}; use core::marker::PhantomData; use core::mem; use enc::backward_references::UnionHasher; use enc::threading::{ AnyBoxConstructor, BatchSpawnable, BatchSpawnableLite, BrotliEncoderThreadError, CompressMulti, CompressionThreadResult, InternalOwned, InternalSendAlloc, Joinable, Owned, OwnedRetriever, PoisonedThreadError, SendAlloc, }; use enc::BrotliAlloc; use enc::BrotliEncoderParams; use std::thread::JoinHandle; // in-place thread create use std::sync::RwLock; pub struct MultiThreadedJoinable( JoinHandle, PhantomData, ); impl Joinable for MultiThreadedJoinable { fn join(self) -> Result { match self.0.join() { Ok(t) => Ok(t), Err(e) => Err(::new(e)), } } } pub struct MultiThreadedOwnedRetriever(RwLock); impl OwnedRetriever for MultiThreadedOwnedRetriever { fn view T>(&self, f: F) -> Result { match self.0.read() { Ok(u) => Ok(f(&*u)), Err(_) => Err(PoisonedThreadError::default()), } } fn unwrap(self) -> Result { match self.0.into_inner() { Ok(u) => Ok(u), Err(_) => Err(PoisonedThreadError::default()), } } } #[derive(Default)] pub struct MultiThreadedSpawner {} fn spawn_work< ReturnValue: Send + 'static, ExtraInput: Send + 'static, F: Fn(ExtraInput, usize, usize, &U, Alloc) -> ReturnValue + Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, >( extra_input: ExtraInput, index: usize, num_threads: usize, locked_input: std::sync::Arc>, alloc: Alloc, f: F, ) -> std::thread::JoinHandle where >::AllocatedMemory: Send + 'static, { std::thread::spawn(move || { let t: ReturnValue = locked_input .view(move |guard: &U| -> ReturnValue { f(extra_input, index, num_threads, guard, alloc) }) .unwrap(); t }) } impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > BatchSpawnable for MultiThreadedSpawner where >::AllocatedMemory: Send + 'static, { type JoinHandle = MultiThreadedJoinable; type FinalJoinHandle = std::sync::Arc>; fn make_spawner(&mut self, input: &mut Owned) -> Self::FinalJoinHandle { std::sync::Arc::>::new(RwLock::new( mem::replace(input, Owned(InternalOwned::Borrowed)).unwrap(), )) } fn spawn ReturnValue + Send + 'static + Copy>( &mut self, input: &mut Self::FinalJoinHandle, work: &mut SendAlloc, index: usize, num_threads: usize, f: F, ) { let (alloc, extra_input) = work.replace_with_default(); let ret = spawn_work(extra_input, index, num_threads, input.clone(), alloc, f); *work = SendAlloc(InternalSendAlloc::Join(MultiThreadedJoinable( ret, PhantomData, ))); } } impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > BatchSpawnableLite for MultiThreadedSpawner where >::AllocatedMemory: Send + 'static, >::AllocatedMemory: Send + Sync, >::AllocatedMemory: Send + Sync, { type JoinHandle = >::JoinHandle; type FinalJoinHandle = >::FinalJoinHandle; fn make_spawner(&mut self, input: &mut Owned) -> Self::FinalJoinHandle { >::make_spawner(self, input) } fn spawn( &mut self, handle: &mut Self::FinalJoinHandle, alloc_per_thread: &mut SendAlloc, index: usize, num_threads: usize, f: fn(ExtraInput, usize, usize, &U, Alloc) -> ReturnValue, ) { >::spawn( self, handle, alloc_per_thread, index, num_threads, f, ) } } pub fn compress_multi< Alloc: BrotliAlloc + Send + 'static, SliceW: SliceWrapper + Send + 'static + Sync, >( params: &BrotliEncoderParams, owned_input: &mut Owned, output: &mut [u8], alloc_per_thread: &mut [SendAlloc< CompressionThreadResult, UnionHasher, Alloc, , UnionHasher, Alloc, SliceW, >>::JoinHandle, >], ) -> Result where >::AllocatedMemory: Send, >::AllocatedMemory: Send + Sync, >::AllocatedMemory: Send + Sync, { CompressMulti( params, owned_input, output, alloc_per_thread, &mut MultiThreadedSpawner::default(), ) } brotli-6.0.0/src/enc/parameters.rs000064400000000000000000000131461046102023000151740ustar 00000000000000#[derive(PartialEq, Eq, Copy, Clone, Debug)] #[repr(C)] pub enum BrotliEncoderParameter { BROTLI_PARAM_MODE = 0, BROTLI_PARAM_QUALITY = 1, BROTLI_PARAM_LGWIN = 2, BROTLI_PARAM_LGBLOCK = 3, BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING = 4, BROTLI_PARAM_SIZE_HINT = 5, BROTLI_PARAM_LARGE_WINDOW = 6, BROTLI_PARAM_Q9_5 = 150, BROTLI_METABLOCK_CALLBACK = 151, BROTLI_PARAM_STRIDE_DETECTION_QUALITY = 152, BROTLI_PARAM_HIGH_ENTROPY_DETECTION_QUALITY = 153, BROTLI_PARAM_LITERAL_BYTE_SCORE = 154, BROTLI_PARAM_CDF_ADAPTATION_DETECTION = 155, BROTLI_PARAM_PRIOR_BITMASK_DETECTION = 156, BROTLI_PARAM_SPEED = 157, BROTLI_PARAM_SPEED_MAX = 158, BROTLI_PARAM_CM_SPEED = 159, BROTLI_PARAM_CM_SPEED_MAX = 160, BROTLI_PARAM_SPEED_LOW = 161, BROTLI_PARAM_SPEED_LOW_MAX = 162, BROTLI_PARAM_CM_SPEED_LOW = 164, BROTLI_PARAM_CM_SPEED_LOW_MAX = 165, BROTLI_PARAM_AVOID_DISTANCE_PREFIX_SEARCH = 166, BROTLI_PARAM_CATABLE = 167, BROTLI_PARAM_APPENDABLE = 168, BROTLI_PARAM_MAGIC_NUMBER = 169, BROTLI_PARAM_NO_DICTIONARY = 170, BROTLI_PARAM_FAVOR_EFFICIENCY = 171, UNUSED7 = 7, UNUSED8 = 8, UNUSED9 = 9, UNUSED10 = 10, UNUSED11 = 11, UNUSED12 = 12, UNUSED13 = 13, UNUSED14 = 14, UNUSED15 = 15, UNUSED16 = 16, UNUSED17 = 17, UNUSED18 = 18, UNUSED19 = 19, UNUSED20 = 20, UNUSED21 = 21, UNUSED22 = 22, UNUSED23 = 23, UNUSED24 = 24, UNUSED25 = 25, UNUSED26 = 26, UNUSED27 = 27, UNUSED28 = 28, UNUSED29 = 29, UNUSED30 = 30, UNUSED31 = 31, UNUSED32 = 32, UNUSED33 = 33, UNUSED34 = 34, UNUSED35 = 35, UNUSED36 = 36, UNUSED37 = 37, UNUSED38 = 38, UNUSED39 = 39, UNUSED40 = 40, UNUSED41 = 41, UNUSED42 = 42, UNUSED43 = 43, UNUSED44 = 44, UNUSED45 = 45, UNUSED46 = 46, UNUSED47 = 47, UNUSED48 = 48, UNUSED49 = 49, UNUSED50 = 50, UNUSED51 = 51, UNUSED52 = 52, UNUSED53 = 53, UNUSED54 = 54, UNUSED55 = 55, UNUSED56 = 56, UNUSED57 = 57, UNUSED58 = 58, UNUSED59 = 59, UNUSED60 = 60, UNUSED61 = 61, UNUSED62 = 62, UNUSED63 = 63, UNUSED64 = 64, UNUSED65 = 65, UNUSED66 = 66, UNUSED67 = 67, UNUSED68 = 68, UNUSED69 = 69, UNUSED70 = 70, UNUSED71 = 71, UNUSED72 = 72, UNUSED73 = 73, UNUSED74 = 74, UNUSED75 = 75, UNUSED76 = 76, UNUSED77 = 77, UNUSED78 = 78, UNUSED79 = 79, UNUSED80 = 80, UNUSED81 = 81, UNUSED82 = 82, UNUSED83 = 83, UNUSED84 = 84, UNUSED85 = 85, UNUSED86 = 86, UNUSED87 = 87, UNUSED88 = 88, UNUSED89 = 89, UNUSED90 = 90, UNUSED91 = 91, UNUSED92 = 92, UNUSED93 = 93, UNUSED94 = 94, UNUSED95 = 95, UNUSED96 = 96, UNUSED97 = 97, UNUSED98 = 98, UNUSED99 = 99, UNUSED100 = 100, UNUSED101 = 101, UNUSED102 = 102, UNUSED103 = 103, UNUSED104 = 104, UNUSED105 = 105, UNUSED106 = 106, UNUSED107 = 107, UNUSED108 = 108, UNUSED109 = 109, UNUSED110 = 110, UNUSED111 = 111, UNUSED112 = 112, UNUSED113 = 113, UNUSED114 = 114, UNUSED115 = 115, UNUSED116 = 116, UNUSED117 = 117, UNUSED118 = 118, UNUSED119 = 119, UNUSED120 = 120, UNUSED121 = 121, UNUSED122 = 122, UNUSED123 = 123, UNUSED124 = 124, UNUSED125 = 125, UNUSED126 = 126, UNUSED127 = 127, UNUSED128 = 128, UNUSED129 = 129, UNUSED130 = 130, UNUSED131 = 131, UNUSED132 = 132, UNUSED133 = 133, UNUSED134 = 134, UNUSED135 = 135, UNUSED136 = 136, UNUSED137 = 137, UNUSED138 = 138, UNUSED139 = 139, UNUSED140 = 140, UNUSED141 = 141, UNUSED142 = 142, UNUSED143 = 143, UNUSED144 = 144, UNUSED145 = 145, UNUSED146 = 146, UNUSED147 = 147, UNUSED148 = 148, UNUSED149 = 149, UNUSED172 = 172, UNUSED173 = 173, UNUSED174 = 174, UNUSED175 = 175, UNUSED176 = 176, UNUSED177 = 177, UNUSED178 = 178, UNUSED179 = 179, UNUSED180 = 180, UNUSED181 = 181, UNUSED182 = 182, UNUSED183 = 183, UNUSED184 = 184, UNUSED185 = 185, UNUSED186 = 186, UNUSED187 = 187, UNUSED188 = 188, UNUSED189 = 189, UNUSED190 = 190, UNUSED191 = 191, UNUSED192 = 192, UNUSED193 = 193, UNUSED194 = 194, UNUSED195 = 195, UNUSED196 = 196, UNUSED197 = 197, UNUSED198 = 198, UNUSED199 = 199, UNUSED200 = 200, UNUSED201 = 201, UNUSED202 = 202, UNUSED203 = 203, UNUSED204 = 204, UNUSED205 = 205, UNUSED206 = 206, UNUSED207 = 207, UNUSED208 = 208, UNUSED209 = 209, UNUSED210 = 210, UNUSED211 = 211, UNUSED212 = 212, UNUSED213 = 213, UNUSED214 = 214, UNUSED215 = 215, UNUSED216 = 216, UNUSED217 = 217, UNUSED218 = 218, UNUSED219 = 219, UNUSED220 = 220, UNUSED221 = 221, UNUSED222 = 222, UNUSED223 = 223, UNUSED224 = 224, UNUSED225 = 225, UNUSED226 = 226, UNUSED227 = 227, UNUSED228 = 228, UNUSED229 = 229, UNUSED230 = 230, UNUSED231 = 231, UNUSED232 = 232, UNUSED233 = 233, UNUSED234 = 234, UNUSED235 = 235, UNUSED236 = 236, UNUSED237 = 237, UNUSED238 = 238, UNUSED239 = 239, UNUSED240 = 240, UNUSED241 = 241, UNUSED242 = 242, UNUSED243 = 243, UNUSED244 = 244, UNUSED245 = 245, UNUSED246 = 246, UNUSED247 = 247, UNUSED248 = 248, UNUSED249 = 249, UNUSED250 = 250, UNUSED251 = 251, UNUSED252 = 252, UNUSED253 = 253, UNUSED254 = 254, UNUSED255 = 255, } brotli-6.0.0/src/enc/pdf.rs000064400000000000000000000002121046102023000135700ustar 00000000000000//TODO: replace with builtin SIMD type // FIXME!!! #[allow(dead_code)] #[derive(Copy, Clone, Default, Debug)] pub struct PDF([i16; 16]); brotli-6.0.0/src/enc/prior_eval.rs000064400000000000000000000735531046102023000152030ustar 00000000000000use super::super::alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use super::backward_references::BrotliEncoderParams; use super::find_stride; use super::input_pair::{InputPair, InputReference, InputReferenceMut}; use super::interface; use super::ir_interpret::{push_base, IRInterpreter}; use super::util::{floatX, FastLog2u16}; use super::{s16, v8}; use core::cmp::min; #[cfg(feature = "simd")] use core::simd::prelude::SimdPartialOrd; // the high nibble, followed by the low nibbles pub const CONTEXT_MAP_PRIOR_SIZE: usize = 256 * 17; pub const STRIDE_PRIOR_SIZE: usize = 256 * 256 * 2; pub const ADV_PRIOR_SIZE: usize = 65536 + (20 << 16); pub const DEFAULT_SPEED: (u16, u16) = (8, 8192); pub enum WhichPrior { CM = 0, ADV = 1, SLOW_CM = 2, FAST_CM = 3, STRIDE1 = 4, STRIDE2 = 5, STRIDE3 = 6, STRIDE4 = 7, // STRIDE8 = 8, NUM_PRIORS = 8, // future ideas } pub trait Prior { fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize; #[inline(always)] fn lookup_mut( data: &mut [s16], stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> CDF { let index = Self::lookup_lin(stride_byte, selected_context, actual_context, high_nibble); CDF::from(&mut data[index]) } #[inline(always)] fn lookup( data: &[s16], stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> &s16 { let index = Self::lookup_lin(stride_byte, selected_context, actual_context, high_nibble); &data[index] } #[allow(unused_variables)] #[inline(always)] fn score_index( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { let which = Self::which(); assert!(which < WhichPrior::NUM_PRIORS as usize); assert!(actual_context < 256); if let Some(nibble) = high_nibble { WhichPrior::NUM_PRIORS as usize * (actual_context + 4096 + 256 * nibble as usize) + which } else { WhichPrior::NUM_PRIORS as usize * (actual_context + 256 * (stride_byte >> 4) as usize) + which } } fn which() -> usize; } #[inline(always)] fn upper_score_index(stride_byte: u8, _selected_context: u8, actual_context: usize) -> usize { actual_context + 256 * (stride_byte >> 4) as usize } #[inline(always)] fn lower_score_index( _stride_byte: u8, _selected_context: u8, actual_context: usize, high_nibble: u8, ) -> usize { debug_assert!(actual_context < 256); debug_assert!(high_nibble < 16); actual_context + 4096 + 256 * high_nibble as usize } #[allow(unused_variables)] #[inline(always)] fn stride_lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { if let Some(nibble) = high_nibble { 1 + 2 * (actual_context | ((stride_byte as usize & 0x0f) << 8) | ((nibble as usize) << 12)) } else { 2 * (actual_context | ((stride_byte as usize) << 8)) } } pub struct Stride1Prior {} impl Stride1Prior { #[inline(always)] pub fn offset() -> usize { 0 } } impl Prior for Stride1Prior { #[inline(always)] fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { stride_lookup_lin(stride_byte, selected_context, actual_context, high_nibble) } #[inline(always)] fn which() -> usize { WhichPrior::STRIDE1 as usize } } /*impl StridePrior for Stride1Prior { const STRIDE_OFFSET:usize = 0; }*/ pub struct Stride2Prior {} impl Stride2Prior { #[inline(always)] pub fn offset() -> usize { 1 } } impl Prior for Stride2Prior { #[inline(always)] fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { stride_lookup_lin(stride_byte, selected_context, actual_context, high_nibble) } #[inline] fn which() -> usize { WhichPrior::STRIDE2 as usize } } /*impl StridePrior for Stride2Prior { const STRIDE_OFFSET:usize = 1; }*/ pub struct Stride3Prior {} impl Stride3Prior { #[inline(always)] pub fn offset() -> usize { 2 } } impl Prior for Stride3Prior { #[inline(always)] fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { stride_lookup_lin(stride_byte, selected_context, actual_context, high_nibble) } #[inline(always)] fn which() -> usize { WhichPrior::STRIDE3 as usize } } /*impl StridePrior for Stride3Prior { const STRIDE_OFFSET:usize = 2; }*/ pub struct Stride4Prior {} impl Stride4Prior { #[inline(always)] pub fn offset() -> usize { 3 } } impl Prior for Stride4Prior { #[inline(always)] fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { stride_lookup_lin(stride_byte, selected_context, actual_context, high_nibble) } #[inline] fn which() -> usize { WhichPrior::STRIDE4 as usize } } /*impl StridePrior for Stride4Prior { const STRIDE_OFFSET:usize = 3; }*/ /*pub struct Stride8Prior{ } impl StridePrior for Stride8Prior { const STRIDE_OFFSET:usize = 7; } impl Stride8Prior { #[inline(always)] pub fn offset() -> usize{ 7 } } impl Prior for Stride8Prior { fn lookup_lin(stride_byte:u8, selected_context:u8, actual_context:usize, high_nibble: Option) -> usize { stride_lookup_lin(stride_byte, selected_context, actual_context, high_nibble) } #[inline] fn which() -> usize { WhichPrior::STRIDE8 as usize } } */ pub struct CMPrior {} impl Prior for CMPrior { #[allow(unused_variables)] #[inline(always)] fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { if let Some(nibble) = high_nibble { (nibble as usize + 1) + 17 * actual_context } else { 17 * actual_context } } #[inline(always)] fn which() -> usize { WhichPrior::CM as usize } } pub struct FastCMPrior {} impl Prior for FastCMPrior { #[allow(unused_variables)] #[inline(always)] fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { if let Some(nibble) = high_nibble { 2 * actual_context } else { 2 * actual_context + 1 } } #[inline(always)] fn which() -> usize { WhichPrior::FAST_CM as usize } } pub struct SlowCMPrior {} impl Prior for SlowCMPrior { #[allow(unused_variables)] #[inline(always)] fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { if let Some(nibble) = high_nibble { (nibble as usize + 1) + 17 * actual_context } else { 17 * actual_context } } #[inline] fn which() -> usize { WhichPrior::SLOW_CM as usize } } pub struct AdvPrior {} impl Prior for AdvPrior { #[allow(unused_variables)] #[inline(always)] fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { if let Some(nibble) = high_nibble { 65536 + (actual_context | ((stride_byte as usize) << 8) | ((nibble as usize & 0xf) << 16)) } else { actual_context | ((stride_byte as usize & 0xf0) << 8) } } #[inline(always)] fn which() -> usize { WhichPrior::ADV as usize } } pub struct CDF<'a> { cdf: &'a mut s16, } impl<'a> CDF<'a> { #[inline(always)] pub fn cost(&self, nibble_u8: u8) -> floatX { let nibble = nibble_u8 as usize & 0xf; let mut pdf = self.cdf[nibble]; if nibble_u8 != 0 { pdf -= self.cdf[(nibble - 1)]; } FastLog2u16(self.cdf[15] as u16) - FastLog2u16(pdf as u16) } #[inline(always)] pub fn update(&mut self, nibble_u8: u8, speed: (u16, u16)) { let mut cdf = *self.cdf; let increment_v = s16::splat(speed.0 as i16); let one_to_16 = s16::from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]); let mask_v: s16 = one_to_16.simd_gt(s16::splat(i16::from(nibble_u8))).to_int(); cdf = cdf + (increment_v & mask_v); if cdf[15] >= speed.1 as i16 { let cdf_bias = one_to_16; cdf = cdf + cdf_bias - ((cdf + cdf_bias) >> 2); } *self.cdf = cdf; } } impl<'a> From<&'a mut s16> for CDF<'a> { #[inline(always)] fn from(cdf: &'a mut s16) -> CDF<'a> { CDF { cdf } } } pub fn init_cdfs(cdfs: &mut [s16]) { for item in cdfs.iter_mut() { *item = s16::from([4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64]); } } pub struct PriorEval< 'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator, > { input: InputPair<'a>, context_map: interface::PredictionModeContextMap>, block_type: u8, local_byte_offset: usize, _nop: >::AllocatedMemory, cm_priors: >::AllocatedMemory, slow_cm_priors: >::AllocatedMemory, fast_cm_priors: >::AllocatedMemory, stride_priors: [>::AllocatedMemory; 4], adv_priors: >::AllocatedMemory, _stride_pyramid_leaves: [u8; find_stride::NUM_LEAF_NODES], score: >::AllocatedMemory, cm_speed: [(u16, u16); 2], stride_speed: [(u16, u16); 2], cur_stride: u8, } impl<'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator> PriorEval<'a, Alloc> { pub fn new( alloc: &mut Alloc, input: InputPair<'a>, stride: [u8; find_stride::NUM_LEAF_NODES], prediction_mode: interface::PredictionModeContextMap>, params: &BrotliEncoderParams, ) -> Self { let do_alloc = params.prior_bitmask_detection != 0; let mut cm_speed = prediction_mode.context_map_speed(); let mut stride_speed = prediction_mode.stride_context_speed(); if cm_speed[0] == (0, 0) { cm_speed[0] = params.literal_adaptation[2] } if cm_speed[0] == (0, 0) { cm_speed[0] = DEFAULT_SPEED; } if cm_speed[1] == (0, 0) { cm_speed[1] = params.literal_adaptation[3] } if cm_speed[1] == (0, 0) { cm_speed[1] = cm_speed[0]; } if stride_speed[0] == (0, 0) { stride_speed[0] = params.literal_adaptation[0] } if stride_speed[0] == (0, 0) { stride_speed[0] = DEFAULT_SPEED; } if stride_speed[1] == (0, 0) { stride_speed[1] = params.literal_adaptation[1] } if stride_speed[1] == (0, 0) { stride_speed[1] = stride_speed[0]; } let mut ret = PriorEval:: { input, context_map: prediction_mode, block_type: 0, cur_stride: 1, local_byte_offset: 0, _nop: >::AllocatedMemory::default(), cm_priors: if do_alloc { >::alloc_cell(alloc, CONTEXT_MAP_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, slow_cm_priors: if do_alloc { >::alloc_cell(alloc, CONTEXT_MAP_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, fast_cm_priors: if do_alloc { >::alloc_cell(alloc, CONTEXT_MAP_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, stride_priors: [ if do_alloc { >::alloc_cell(alloc, STRIDE_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, if do_alloc { >::alloc_cell(alloc, STRIDE_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, if do_alloc { >::alloc_cell(alloc, STRIDE_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, if do_alloc { >::alloc_cell(alloc, STRIDE_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, /*if do_alloc {m16x16.alloc_cell(STRIDE_PRIOR_SIZE)} else { Alloc16x16::AllocatedMemory::default()},*/ ], adv_priors: if do_alloc { >::alloc_cell(alloc, ADV_PRIOR_SIZE) } else { >::AllocatedMemory::default() }, _stride_pyramid_leaves: stride, score: if do_alloc { >::alloc_cell(alloc, 8192) } else { >::AllocatedMemory::default() }, cm_speed, stride_speed, }; init_cdfs(ret.cm_priors.slice_mut()); init_cdfs(ret.slow_cm_priors.slice_mut()); init_cdfs(ret.fast_cm_priors.slice_mut()); init_cdfs(ret.stride_priors[0].slice_mut()); init_cdfs(ret.stride_priors[1].slice_mut()); init_cdfs(ret.stride_priors[2].slice_mut()); init_cdfs(ret.stride_priors[3].slice_mut()); //init_cdfs(ret.stride_priors[4].slice_mut()); init_cdfs(ret.adv_priors.slice_mut()); ret } pub fn choose_bitmask(&mut self) { let epsilon = 6.0; let mut max_popularity = 0u32; let mut max_popularity_index = 0u8; assert_eq!(WhichPrior::NUM_PRIORS as usize, 8); let mut popularity = [0u32; 8]; let mut bitmask = [0u8; super::interface::NUM_MIXING_VALUES]; for (i, score) in self.score.slice().iter().enumerate() { let cm_score = score[WhichPrior::CM as usize]; let slow_cm_score = score[WhichPrior::SLOW_CM as usize]; let fast_cm_score = score[WhichPrior::FAST_CM as usize] + 16.0; let stride1_score = score[WhichPrior::STRIDE1 as usize]; let stride2_score = score[WhichPrior::STRIDE2 as usize]; let stride3_score = score[WhichPrior::STRIDE3 as usize] + 16.0; let stride4_score = score[WhichPrior::STRIDE4 as usize]; //let stride8_score = score[WhichPrior::STRIDE8] * 1.125 + 16.0; let stride8_score = stride4_score + 1.0; // FIXME: never lowest -- ignore stride 8 let stride_score = min( stride1_score as u64, min( stride2_score as u64, min( stride3_score as u64, min(stride4_score as u64, stride8_score as u64), ), ), ); let adv_score = score[WhichPrior::ADV as usize]; if adv_score + epsilon < stride_score as floatX && adv_score + epsilon < cm_score && adv_score + epsilon < slow_cm_score && adv_score + epsilon < fast_cm_score { bitmask[i] = 1; } else if slow_cm_score + epsilon < stride_score as floatX && slow_cm_score + epsilon < cm_score && slow_cm_score + epsilon < fast_cm_score { bitmask[i] = 2; } else if fast_cm_score + epsilon < stride_score as floatX && fast_cm_score + epsilon < cm_score { bitmask[i] = 3; } else if epsilon + (stride_score as floatX) < cm_score { bitmask[i] = WhichPrior::STRIDE1 as u8; if stride_score == stride8_score as u64 { //bitmask[i] = WhichPrior::STRIDE8 as u8; } if stride_score == stride4_score as u64 { bitmask[i] = WhichPrior::STRIDE4 as u8; } if stride_score == stride3_score as u64 { bitmask[i] = WhichPrior::STRIDE3 as u8; } if stride_score == stride2_score as u64 { bitmask[i] = WhichPrior::STRIDE2 as u8; } if stride_score == stride1_score as u64 { bitmask[i] = WhichPrior::STRIDE1 as u8; } } else { bitmask[i] = 0; } if stride_score == 0 { bitmask[i] = max_popularity_index; //eprintln!("Miss {}[{}] ~ {}", bitmask[i], i, max_popularity_index); } else { popularity[bitmask[i] as usize] += 1; if popularity[bitmask[i] as usize] > max_popularity { max_popularity = popularity[bitmask[i] as usize]; max_popularity_index = bitmask[i]; } //eprintln!("Score {} {} {} {} {}: {}[{}] max={},{}", cm_score, adv_score, slow_cm_score, fast_cm_score, stride_score, bitmask[i], i, max_popularity, max_popularity_index); } } self.context_map.set_mixing_values(&bitmask); } pub fn free(&mut self, alloc: &mut Alloc) { >::free_cell(alloc, core::mem::take(&mut self.score)); >::free_cell(alloc, core::mem::take(&mut self.cm_priors)); >::free_cell(alloc, core::mem::take(&mut self.slow_cm_priors)); >::free_cell(alloc, core::mem::take(&mut self.fast_cm_priors)); >::free_cell(alloc, core::mem::take(&mut self.stride_priors[0])); >::free_cell(alloc, core::mem::take(&mut self.stride_priors[1])); >::free_cell(alloc, core::mem::take(&mut self.stride_priors[2])); >::free_cell(alloc, core::mem::take(&mut self.stride_priors[3])); //>::free_cell(alloc, core::mem::replace(&mut self.stride_priors[4], >::AllocatedMemory::default())); >::free_cell(alloc, core::mem::take(&mut self.adv_priors)); } pub fn take_prediction_mode( &mut self, ) -> interface::PredictionModeContextMap> { core::mem::replace( &mut self.context_map, interface::PredictionModeContextMap::> { literal_context_map: InputReferenceMut::default(), predmode_speed_and_distance_context_map: InputReferenceMut::default(), }, ) } fn update_cost_base( &mut self, stride_prior: [u8; 8], stride_prior_offset: usize, selected_bits: u8, cm_prior: usize, literal: u8, ) { let mut l_score = v8::splat(0.0); let mut h_score = v8::splat(0.0); let base_stride_prior = stride_prior[stride_prior_offset.wrapping_sub(self.cur_stride as usize) & 7]; let hscore_index = upper_score_index(base_stride_prior, selected_bits, cm_prior); let lscore_index = lower_score_index(base_stride_prior, selected_bits, cm_prior, literal >> 4); { type CurPrior = CMPrior; let mut cdf = CurPrior::lookup_mut( self.cm_priors.slice_mut(), base_stride_prior, selected_bits, cm_prior, None, ); h_score[CurPrior::which()] = cdf.cost(literal >> 4); cdf.update(literal >> 4, self.cm_speed[1]); } { type CurPrior = CMPrior; let mut cdf = CurPrior::lookup_mut( self.cm_priors.slice_mut(), base_stride_prior, selected_bits, cm_prior, Some(literal >> 4), ); l_score[CurPrior::which()] = cdf.cost(literal & 0xf); cdf.update(literal & 0xf, self.cm_speed[0]); } { type CurPrior = SlowCMPrior; let mut cdf = CurPrior::lookup_mut( self.slow_cm_priors.slice_mut(), base_stride_prior, selected_bits, cm_prior, None, ); h_score[CurPrior::which()] = cdf.cost(literal >> 4); cdf.update(literal >> 4, (0, 1024)); } { type CurPrior = SlowCMPrior; let mut cdf = CurPrior::lookup_mut( self.slow_cm_priors.slice_mut(), base_stride_prior, selected_bits, cm_prior, Some(literal >> 4), ); l_score[CurPrior::which()] = cdf.cost(literal & 0xf); cdf.update(literal & 0xf, (0, 1024)); } { type CurPrior = FastCMPrior; let mut cdf = CurPrior::lookup_mut( self.fast_cm_priors.slice_mut(), base_stride_prior, selected_bits, cm_prior, None, ); h_score[CurPrior::which()] = cdf.cost(literal >> 4); cdf.update(literal >> 4, self.cm_speed[0]); } { type CurPrior = FastCMPrior; let mut cdf = CurPrior::lookup_mut( self.fast_cm_priors.slice_mut(), base_stride_prior, selected_bits, cm_prior, Some(literal >> 4), ); l_score[CurPrior::which()] = cdf.cost(literal & 0xf); cdf.update(literal & 0xf, self.cm_speed[0]); } { type CurPrior = Stride1Prior; let mut cdf = CurPrior::lookup_mut( self.stride_priors[0].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset()) & 7], selected_bits, cm_prior, None, ); h_score[CurPrior::which()] = cdf.cost(literal >> 4); cdf.update(literal >> 4, self.stride_speed[1]); } { type CurPrior = Stride1Prior; let mut cdf = CurPrior::lookup_mut( self.stride_priors[0].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset()) & 7], selected_bits, cm_prior, Some(literal >> 4), ); l_score[CurPrior::which()] = cdf.cost(literal & 0xf); cdf.update(literal & 0xf, self.stride_speed[0]); } { type CurPrior = Stride2Prior; let mut cdf = CurPrior::lookup_mut( self.stride_priors[1].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset()) & 7], selected_bits, cm_prior, None, ); h_score[CurPrior::which()] = cdf.cost(literal >> 4); cdf.update(literal >> 4, self.stride_speed[1]); } { type CurPrior = Stride2Prior; let mut cdf = CurPrior::lookup_mut( self.stride_priors[1].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset()) & 7], selected_bits, cm_prior, Some(literal >> 4), ); l_score[CurPrior::which()] = cdf.cost(literal & 0xf); cdf.update(literal & 0xf, self.stride_speed[0]); } { type CurPrior = Stride3Prior; let mut cdf = CurPrior::lookup_mut( self.stride_priors[2].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset()) & 7], selected_bits, cm_prior, None, ); h_score[CurPrior::which()] = cdf.cost(literal >> 4); cdf.update(literal >> 4, self.stride_speed[1]); } { type CurPrior = Stride3Prior; let mut cdf = CurPrior::lookup_mut( self.stride_priors[2].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset()) & 7], selected_bits, cm_prior, Some(literal >> 4), ); l_score[CurPrior::which()] = cdf.cost(literal & 0xf); cdf.update(literal & 0xf, self.stride_speed[0]); } { type CurPrior = Stride4Prior; let mut cdf = CurPrior::lookup_mut( self.stride_priors[3].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset()) & 7], selected_bits, cm_prior, None, ); h_score[CurPrior::which()] = cdf.cost(literal >> 4); cdf.update(literal >> 4, self.stride_speed[1]); } { type CurPrior = Stride4Prior; let mut cdf = CurPrior::lookup_mut( self.stride_priors[3].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset()) & 7], selected_bits, cm_prior, Some(literal >> 4), ); l_score[CurPrior::which()] = cdf.cost(literal & 0xf); cdf.update(literal & 0xf, self.stride_speed[0]); } /* { type CurPrior = Stride8Prior; let mut cdf = CurPrior::lookup_mut(self.stride_priors[4].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset())&7], selected_bits, cm_prior, None); h_score[CurPrior::which()] = cdf.cost(literal>>4); cdf.update(literal >> 4, self.stride_speed[1]); } { type CurPrior = Stride8Prior; let mut cdf = CurPrior::lookup_mut(self.stride_priors[4].slice_mut(), stride_prior[stride_prior_offset.wrapping_sub(CurPrior::offset()) & 7], selected_bits, cm_prior, Some(literal >> 4)); l_score[CurPrior::which()] = cdf.cost(literal&0xf); cdf.update(literal&0xf, self.stride_speed[0]); } */ type CurPrior = AdvPrior; { let mut cdf = CurPrior::lookup_mut( self.adv_priors.slice_mut(), base_stride_prior, selected_bits, cm_prior, None, ); h_score[CurPrior::which()] = cdf.cost(literal >> 4); cdf.update(literal >> 4, self.stride_speed[1]); } { let mut cdf = CurPrior::lookup_mut( self.adv_priors.slice_mut(), base_stride_prior, selected_bits, cm_prior, Some(literal >> 4), ); l_score[CurPrior::which()] = cdf.cost(literal & 0xf); cdf.update(literal & 0xf, self.stride_speed[0]); } self.score.slice_mut()[lscore_index] += l_score; self.score.slice_mut()[hscore_index] += h_score; } } impl<'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator> IRInterpreter for PriorEval<'a, Alloc> { #[inline] fn inc_local_byte_offset(&mut self, inc: usize) { self.local_byte_offset += inc; } #[inline] fn local_byte_offset(&self) -> usize { self.local_byte_offset } #[inline] fn update_block_type(&mut self, new_type: u8, stride: u8) { self.block_type = new_type; self.cur_stride = stride; } #[inline] fn block_type(&self) -> u8 { self.block_type } #[inline] fn literal_data_at_offset(&self, index: usize) -> u8 { self.input[index] } #[inline] fn literal_context_map(&self) -> &[u8] { self.context_map.literal_context_map.slice() } #[inline] fn prediction_mode(&self) -> ::interface::LiteralPredictionModeNibble { self.context_map.literal_prediction_mode() } #[inline] fn update_cost( &mut self, stride_prior: [u8; 8], stride_prior_offset: usize, selected_bits: u8, cm_prior: usize, literal: u8, ) { //let stride = self.cur_stride as usize; self.update_cost_base( stride_prior, stride_prior_offset, selected_bits, cm_prior, literal, ) } } impl<'a, 'b, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator> interface::CommandProcessor<'b> for PriorEval<'a, Alloc> { #[inline] fn push(&mut self, val: interface::Command>) { push_base(self, val) } } brotli-6.0.0/src/enc/reader.rs000075500000000000000000000176051046102023000143020ustar 00000000000000#![cfg_attr(not(feature = "std"), allow(unused_imports))] use super::backward_references::BrotliEncoderParams; use super::combined_alloc::BrotliAlloc; use super::encode::{ BrotliEncoderDestroyInstance, BrotliEncoderOperation, BrotliEncoderParameter, BrotliEncoderStateStruct, }; use super::interface; use brotli_decompressor::CustomRead; #[cfg(feature = "std")] pub use brotli_decompressor::{IntoIoReader, IoReaderWrapper, IoWriterWrapper}; pub use alloc::{AllocatedStackMemory, Allocator, SliceWrapper, SliceWrapperMut, StackAllocator}; #[cfg(feature = "std")] pub use alloc_stdlib::StandardAlloc; #[cfg(feature = "std")] use std::io; #[cfg(feature = "std")] use std::io::{Error, ErrorKind, Read}; #[cfg(feature = "std")] pub struct CompressorReaderCustomAlloc, Alloc: BrotliAlloc>( CompressorReaderCustomIo, BufferType, Alloc>, ); #[cfg(feature = "std")] impl, Alloc: BrotliAlloc> CompressorReaderCustomAlloc { pub fn new(r: R, buffer: BufferType, alloc: Alloc, q: u32, lgwin: u32) -> Self { CompressorReaderCustomAlloc::(CompressorReaderCustomIo::< Error, IntoIoReader, BufferType, Alloc, >::new( IntoIoReader::(r), buffer, alloc, Error::new(ErrorKind::InvalidData, "Invalid Data"), q, lgwin, )) } pub fn get_ref(&self) -> &R { &self.0.get_ref().0 } pub fn into_inner(self) -> R { self.0.into_inner().0 } } #[cfg(feature = "std")] impl, Alloc: BrotliAlloc> Read for CompressorReaderCustomAlloc { fn read(&mut self, buf: &mut [u8]) -> Result { self.0.read(buf) } } #[cfg(feature = "std")] pub struct CompressorReader( CompressorReaderCustomAlloc< R, >::AllocatedMemory, StandardAlloc, >, ); #[cfg(feature = "std")] impl CompressorReader { pub fn new(r: R, buffer_size: usize, q: u32, lgwin: u32) -> Self { let mut alloc = StandardAlloc::default(); let buffer = >::alloc_cell( &mut alloc, if buffer_size == 0 { 4096 } else { buffer_size }, ); CompressorReader::(CompressorReaderCustomAlloc::new(r, buffer, alloc, q, lgwin)) } pub fn with_params(r: R, buffer_size: usize, params: &BrotliEncoderParams) -> Self { let mut reader = Self::new(r, buffer_size, params.quality as u32, params.lgwin as u32); (reader.0).0.state.0.params = params.clone(); reader } pub fn get_ref(&self) -> &R { self.0.get_ref() } pub fn into_inner(self) -> R { self.0.into_inner() } } #[cfg(feature = "std")] impl Read for CompressorReader { fn read(&mut self, buf: &mut [u8]) -> Result { self.0.read(buf) } } pub struct CompressorReaderCustomIo< ErrType, R: CustomRead, BufferType: SliceWrapperMut, Alloc: BrotliAlloc, > { input_buffer: BufferType, total_out: Option, input_offset: usize, input_len: usize, input: R, input_eof: bool, error_if_invalid_data: Option, state: StateWrapper, } struct StateWrapper(BrotliEncoderStateStruct); impl Drop for StateWrapper { fn drop(&mut self) { BrotliEncoderDestroyInstance(&mut self.0); } } impl, BufferType: SliceWrapperMut, Alloc: BrotliAlloc> CompressorReaderCustomIo { pub fn new( r: R, buffer: BufferType, alloc: Alloc, invalid_data_error_type: ErrType, q: u32, lgwin: u32, ) -> Self { let mut ret = CompressorReaderCustomIo { input_buffer: buffer, total_out: Some(0), input_offset: 0, input_len: 0, input_eof: false, input: r, state: StateWrapper(BrotliEncoderStateStruct::new(alloc)), error_if_invalid_data: Some(invalid_data_error_type), }; ret.state .0 .set_parameter(BrotliEncoderParameter::BROTLI_PARAM_QUALITY, q); ret.state .0 .set_parameter(BrotliEncoderParameter::BROTLI_PARAM_LGWIN, lgwin); ret } pub fn copy_to_front(&mut self) { let avail_in = self.input_len - self.input_offset; if self.input_offset == self.input_buffer.slice_mut().len() { self.input_offset = 0; self.input_len = 0; } else if self.input_offset + 256 > self.input_buffer.slice_mut().len() && avail_in < self.input_offset { let (first, second) = self .input_buffer .slice_mut() .split_at_mut(self.input_offset); first[0..avail_in].clone_from_slice(&second[0..avail_in]); self.input_len -= self.input_offset; self.input_offset = 0; } } pub fn into_inner(self) -> R { match self { CompressorReaderCustomIo { input_buffer: _ib, total_out: _to, input_offset: _io, input_len: _len, input, input_eof: _ieof, error_if_invalid_data: _eiid, state: _state, } => input, } } pub fn get_ref(&self) -> &R { &self.input } } impl, BufferType: SliceWrapperMut, Alloc: BrotliAlloc> CustomRead for CompressorReaderCustomIo { fn read(&mut self, buf: &mut [u8]) -> Result { let mut nop_callback = |_data: &mut interface::PredictionModeContextMap, _cmds: &mut [interface::StaticCommand], _mb: interface::InputPair, _mfv: &mut Alloc| (); let mut output_offset: usize = 0; let mut avail_out = buf.len(); let mut avail_in = self.input_len - self.input_offset; while output_offset == 0 { if self.input_len < self.input_buffer.slice_mut().len() && !self.input_eof { match self .input .read(&mut self.input_buffer.slice_mut()[self.input_len..]) { Err(e) => return Err(e), Ok(size) => { if size == 0 { self.input_eof = true; } else { self.input_len += size; avail_in = self.input_len - self.input_offset; } } } } let op: BrotliEncoderOperation; if avail_in == 0 { op = BrotliEncoderOperation::BROTLI_OPERATION_FINISH; } else { op = BrotliEncoderOperation::BROTLI_OPERATION_PROCESS; } let ret = self.state.0.compress_stream( op, &mut avail_in, self.input_buffer.slice_mut(), &mut self.input_offset, &mut avail_out, buf, &mut output_offset, &mut self.total_out, &mut nop_callback, ); if avail_in == 0 { self.copy_to_front(); } if !ret { return Err(self.error_if_invalid_data.take().unwrap()); } if self.state.0.is_finished() { break; } } Ok(output_offset) } } brotli-6.0.0/src/enc/singlethreading.rs000064400000000000000000000151141046102023000161750ustar 00000000000000use super::backward_references::UnionHasher; use alloc::{Allocator, SliceWrapper}; use core::marker::PhantomData; use core::mem; use enc::threading::{ BatchSpawnable, BatchSpawnableLite, BrotliEncoderThreadError, CompressMulti, CompressionThreadResult, InternalOwned, InternalSendAlloc, Joinable, Owned, OwnedRetriever, PoisonedThreadError, SendAlloc, }; use enc::BrotliAlloc; use enc::BrotliEncoderParams; pub struct SingleThreadedJoinable { result: Result, } impl Joinable for SingleThreadedJoinable { fn join(self) -> Result { self.result } } #[cfg(feature = "std")] pub struct SingleThreadedOwnedRetriever(std::sync::RwLock); #[cfg(feature = "std")] impl OwnedRetriever for SingleThreadedOwnedRetriever { fn view T>(&self, f: F) -> Result { Ok(f(&*self.0.read().unwrap())) } fn unwrap(self) -> Result { Ok(self.0.into_inner().unwrap()) } } #[cfg(feature = "std")] impl SingleThreadedOwnedRetriever { fn new(u: U) -> Self { SingleThreadedOwnedRetriever(std::sync::RwLock::new(u)) } } #[cfg(not(feature = "std"))] pub struct SingleThreadedOwnedRetriever(U); #[cfg(not(feature = "std"))] impl SingleThreadedOwnedRetriever { fn new(u: U) -> Self { SingleThreadedOwnedRetriever(u) } } #[cfg(not(feature = "std"))] impl OwnedRetriever for SingleThreadedOwnedRetriever { fn view T>(&self, f: F) -> Result { Ok(f(&self.0)) } fn unwrap(self) -> Result { Ok(self.0) } } #[derive(Default)] pub struct SingleThreadedSpawner {} impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > BatchSpawnable for SingleThreadedSpawner where >::AllocatedMemory: Send + 'static, { type JoinHandle = SingleThreadedJoinable; type FinalJoinHandle = SingleThreadedOwnedRetriever; fn make_spawner(&mut self, input: &mut Owned) -> Self::FinalJoinHandle { SingleThreadedOwnedRetriever::::new( mem::replace(input, Owned(InternalOwned::Borrowed)).unwrap(), ) } fn spawn ReturnValue + Send + 'static + Copy>( &mut self, handle: &mut Self::FinalJoinHandle, work: &mut SendAlloc, index: usize, num_threads: usize, f: F, ) { let (alloc, extra_input) = work.replace_with_default(); let ret = handle.view(|sub_view| f(extra_input, index, num_threads, sub_view, alloc)); *work = SendAlloc(InternalSendAlloc::Join(SingleThreadedJoinable { result: Ok(ret.unwrap()), })); } } impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > BatchSpawnableLite for SingleThreadedSpawner where >::AllocatedMemory: Send + 'static, { type JoinHandle = >::JoinHandle; type FinalJoinHandle = >::FinalJoinHandle; fn make_spawner(&mut self, input: &mut Owned) -> Self::FinalJoinHandle { >::make_spawner(self, input) } fn spawn( &mut self, handle: &mut Self::FinalJoinHandle, alloc_per_thread: &mut SendAlloc, index: usize, num_threads: usize, f: fn(ExtraInput, usize, usize, &U, Alloc) -> ReturnValue, ) { >::spawn( self, handle, alloc_per_thread, index, num_threads, f, ) } } pub fn compress_multi< Alloc: BrotliAlloc + Send + 'static, SliceW: SliceWrapper + Send + 'static + Sync, >( params: &BrotliEncoderParams, owned_input: &mut Owned, output: &mut [u8], alloc_per_thread: &mut [SendAlloc< CompressionThreadResult, UnionHasher, Alloc, , UnionHasher, Alloc, SliceW, >>::JoinHandle, >], ) -> Result where >::AllocatedMemory: Send, >::AllocatedMemory: Send, >::AllocatedMemory: Send, { CompressMulti( params, owned_input, output, alloc_per_thread, &mut SingleThreadedSpawner::default(), ) } pub struct WorkerPool { a: PhantomData, b: PhantomData, c: PhantomData, d: PhantomData, } pub fn new_work_pool(_num_threads: usize) -> WorkerPool { WorkerPool:: { a: PhantomData, b: PhantomData, c: PhantomData, d: PhantomData, } } pub fn compress_worker_pool< Alloc: BrotliAlloc + Send + 'static, SliceW: SliceWrapper + Send + 'static + Sync, >( params: &BrotliEncoderParams, owned_input: &mut Owned, output: &mut [u8], alloc_per_thread: &mut [SendAlloc< CompressionThreadResult, UnionHasher, Alloc, , UnionHasher, Alloc, SliceW, >>::JoinHandle, >], _worker_pool: &mut WorkerPool< CompressionThreadResult, UnionHasher, Alloc, (SliceW, BrotliEncoderParams), >, ) -> Result where >::AllocatedMemory: Send, >::AllocatedMemory: Send, >::AllocatedMemory: Send, { compress_multi(params, owned_input, output, alloc_per_thread) } brotli-6.0.0/src/enc/static_dict.rs000075500000000000000000001711441046102023000153310ustar 00000000000000use core::cmp::{max, min}; pub const kNumDistanceCacheEntries: usize = 4; use super::super::dictionary::{ kBrotliDictionary, kBrotliDictionaryOffsetsByLength, kBrotliDictionarySizeBitsByLength, }; use super::static_dict_lut::{ kDictHashMul32, kDictNumBits, kStaticDictionaryBuckets, kStaticDictionaryWords, DictWord, }; #[allow(unused)] static kUppercaseFirst: u8 = 10u8; #[allow(unused)] static kOmitLastNTransforms: [u8; 10] = [0, 12, 27, 23, 42, 63, 56, 48, 59, 64]; pub struct BrotliDictionary { pub size_bits_by_length: &'static [u8; 25], pub offsets_by_length: &'static [u32; 25], pub data: &'static [u8; 122784], } pub static kBrotliEncDictionary: BrotliDictionary = BrotliDictionary { size_bits_by_length: &kBrotliDictionarySizeBitsByLength, offsets_by_length: &kBrotliDictionaryOffsetsByLength, data: &kBrotliDictionary, }; #[inline(always)] pub fn BrotliGetDictionary() -> &'static BrotliDictionary { &kBrotliEncDictionary } #[inline(always)] pub fn BROTLI_UNALIGNED_LOAD32(sl: &[u8]) -> u32 { let mut p = [0u8; 4]; p[..].clone_from_slice(sl.split_at(4).0); (p[0] as u32) | ((p[1] as u32) << 8) | ((p[2] as u32) << 16) | ((p[3] as u32) << 24) } #[inline(always)] pub fn Hash(data: &[u8]) -> u32 { let h: u32 = BROTLI_UNALIGNED_LOAD32(data).wrapping_mul(kDictHashMul32); h >> (32i32 - kDictNumBits) } #[inline(always)] pub fn BROTLI_UNALIGNED_LOAD64(sl: &[u8]) -> u64 { let mut p = [0u8; 8]; p[..].clone_from_slice(sl.split_at(8).0); (p[0] as u64) | ((p[1] as u64) << 8) | ((p[2] as u64) << 16) | ((p[3] as u64) << 24) | ((p[4] as u64) << 32) | ((p[5] as u64) << 40) | ((p[6] as u64) << 48) | ((p[7] as u64) << 56) } #[inline(always)] pub fn BROTLI_UNALIGNED_STORE64(outp: &mut [u8], v: u64) { let p = [ (v & 0xff) as u8, ((v >> 8) & 0xff) as u8, ((v >> 16) & 0xff) as u8, ((v >> 24) & 0xff) as u8, ((v >> 32) & 0xff) as u8, ((v >> 40) & 0xff) as u8, ((v >> 48) & 0xff) as u8, ((v >> 56) & 0xff) as u8, ]; outp.split_at_mut(8).0.clone_from_slice(&p[..]); } macro_rules! sub_match { ($s1 : expr, $s2 : expr, $limit : expr, $matched : expr, $split_pair1 : expr, $split_pair2 : expr, $s1_lo : expr, $s2_lo : expr, $s1_as_64 : expr, $s2_as_64 : expr, $vec_len: expr) => { $split_pair1 = $s1.split_at($vec_len); $s1_lo[..$vec_len].clone_from_slice($split_pair1.0); $s1 = $split_pair1.1; $split_pair2 = $s2.split_at($vec_len); $s2_lo[..$vec_len].clone_from_slice($split_pair2.0); $s2 = $split_pair2.1; $limit -= $vec_len; for index in 0..($vec_len >> 3) { $s1_as_64 = BROTLI_UNALIGNED_LOAD64(&$s1_lo[(index << 3)..((index + 1) << 3)]); $s2_as_64 = BROTLI_UNALIGNED_LOAD64(&$s2_lo[(index << 3)..((index + 1) << 3)]); if $s2_as_64 == $s1_as_64 { $matched = $matched.wrapping_add(8) as u32 as usize; } else { $matched = $matched .wrapping_add((($s2_as_64 ^ $s1_as_64).trailing_zeros() >> 3) as usize) as u32 as usize; return $matched; } } }; } macro_rules! sub_match8 { ($s1 : expr, $s2 : expr, $limit : expr, $matched : expr, $s1_as_64 : expr, $s2_as_64 : expr) => { $limit -= 8; $s1_as_64 = BROTLI_UNALIGNED_LOAD64($s1); $s1 = $s1.split_at(8).1; $s2_as_64 = BROTLI_UNALIGNED_LOAD64($s2); $s2 = $s2.split_at(8).1; if $s2_as_64 == $s1_as_64 { $matched = $matched.wrapping_add(8) as u32 as usize; } else { $matched = $matched .wrapping_add((($s2_as_64 ^ $s1_as_64).trailing_zeros() >> 3) as usize) as u32 as usize; return $matched; } }; } // factor of 10 slower (example takes 158s, not 30, and for the 30 second run it took 15 of them) #[allow(unused)] pub fn SlowerFindMatchLengthWithLimit(s1: &[u8], s2: &[u8], limit: usize) -> usize { for index in 0..limit { if s1[index] != s2[index] { return index; } } limit } // factor of 5 slower (example takes 90 seconds) #[allow(unused)] pub fn FindMatchLengthWithLimit(s1: &[u8], s2: &[u8], limit: usize) -> usize { for (index, pair) in s1[..limit].iter().zip(s2[..limit].iter()).enumerate() { if *pair.0 != *pair.1 { return index; } } limit } #[allow(unused)] pub fn FindMatchLengthWithLimitMin4(s1: &[u8], s2: &[u8], limit: usize) -> usize { let (s1_start, s1_rest) = s1.split_at(5); let (s2_start, s2_rest) = s2.split_at(5); let v0 = BROTLI_UNALIGNED_LOAD32(s1_start); let v1 = BROTLI_UNALIGNED_LOAD32(s2_start); let beyond_ok = s1_start[4] != s2_start[4]; if v0 != v1 { return 0; } if limit <= 4 || beyond_ok { return min(limit, 4); } ComplexFindMatchLengthWithLimit(s1_rest, s2_rest, limit - 5) + 5 } #[inline] pub fn ComplexFindMatchLengthWithLimit(mut s1: &[u8], mut s2: &[u8], mut limit: usize) -> usize { let mut matched: usize = 0usize; let mut s1_as_64: u64; let mut s2_as_64: u64; if limit >= 8 { sub_match8!(s1, s2, limit, matched, s1_as_64, s2_as_64); if limit >= 16 { let mut split_pair1: (&[u8], &[u8]); let mut split_pair2: (&[u8], &[u8]); { let mut s1_lo = [0u8; 16]; let mut s1_hi = [0u8; 16]; sub_match!( s1, s2, limit, matched, split_pair1, split_pair2, s1_lo, s1_hi, s1_as_64, s2_as_64, 16 ); } if limit >= 32 { let mut s1_lo_a = [0u8; 128]; let mut s1_hi_a = [0u8; 128]; sub_match!( s1, s2, limit, matched, split_pair1, split_pair2, s1_lo_a, s1_hi_a, s1_as_64, s2_as_64, 32 ); if limit >= 64 { sub_match!( s1, s2, limit, matched, split_pair1, split_pair2, s1_lo_a, s1_hi_a, s1_as_64, s2_as_64, 64 ); while limit >= 128 { sub_match!( s1, s2, limit, matched, split_pair1, split_pair2, s1_lo_a, s1_hi_a, s1_as_64, s2_as_64, 128 ); } } } } while limit >= 8 { sub_match8!(s1, s2, limit, matched, s1_as_64, s2_as_64); } } assert!(s1.len() >= (limit & 7usize)); assert!(s2.len() >= (limit & 7usize)); for index in 0..(limit & 7usize) { if s1[index] != s2[index] { return matched + index; } } matched + (limit & 7usize) // made it through the loop } mod test { #[allow(unused)] fn construct_situation(seed: &[u8], mut output: &mut [u8], limit: usize, matchfor: usize) { output[..].clone_from_slice(seed); if matchfor >= limit { return; } output[matchfor] = output[matchfor].wrapping_add((matchfor as u8 % 253u8).wrapping_add(1)); } #[test] fn test_find_match_length() { let mut a = [91u8; 600000]; let mut b = [0u8; 600000]; for i in 1..a.len() { a[i] = (a[i - 1] % 19u8).wrapping_add(17); } construct_situation(&a[..], &mut b[..], a.len(), 0); assert_eq!(super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 0); construct_situation(&a[..], &mut b[..], a.len(), 1); assert_eq!(super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 1); construct_situation(&a[..], &mut b[..], a.len(), 10); assert_eq!(super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 10); construct_situation(&a[..], &mut b[..], a.len(), 9); assert_eq!(super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 9); construct_situation(&a[..], &mut b[..], a.len(), 7); assert_eq!(super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 7); construct_situation(&a[..], &mut b[..], a.len(), 8); assert_eq!(super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 8); construct_situation(&a[..], &mut b[..], a.len(), 48); assert_eq!(super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 48); construct_situation(&a[..], &mut b[..], a.len(), 49); assert_eq!(super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 49); construct_situation(&a[..], &mut b[..], a.len(), 63); assert_eq!(super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 63); construct_situation(&a[..], &mut b[..], a.len(), 222); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 222 ); construct_situation(&a[..], &mut b[..], a.len(), 1590); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 1590 ); construct_situation(&a[..], &mut b[..], a.len(), 12590); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 12590 ); construct_situation(&a[..], &mut b[..], a.len(), 52592); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 52592 ); construct_situation(&a[..], &mut b[..], a.len(), 152592); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 152592 ); construct_situation(&a[..], &mut b[..], a.len(), 252591); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 252591 ); construct_situation(&a[..], &mut b[..], a.len(), 131072); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 131072 ); construct_situation(&a[..], &mut b[..], a.len(), 131073); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 131073 ); construct_situation(&a[..], &mut b[..], a.len(), 131072 + 64 + 32 + 16 + 8); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 131072 + 64 + 32 + 16 + 8 ); construct_situation(&a[..], &mut b[..], a.len(), 272144 + 64 + 32 + 16 + 8 + 1); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 272144 + 64 + 32 + 16 + 8 + 1 ); construct_situation(&a[..], &mut b[..], a.len(), 2 * 272144 + 64 + 32 + 16 + 8); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), 2 * 272144 + 64 + 32 + 16 + 8 ); construct_situation(&a[..], &mut b[..], a.len(), a.len()); assert_eq!( super::FindMatchLengthWithLimit(&a[..], &b[..], a.len()), a.len() ); } } #[allow(unused)] pub fn slowFindMatchLengthWithLimit(s1: &[u8], s2: &[u8], limit: usize) -> usize { for (index, it) in s1[..limit].iter().zip(s2[..limit].iter()).enumerate() { if it.0 != it.1 { return index; } } limit } pub fn IsMatch(dictionary: &BrotliDictionary, w: DictWord, data: &[u8], max_length: usize) -> i32 { if w.l as usize > max_length { 0 } else { let offset: usize = (dictionary.offsets_by_length[w.l as usize] as usize) .wrapping_add((w.len() as usize).wrapping_mul(w.idx() as usize)); let dict = &dictionary.data.split_at(offset).1; if w.transform() as i32 == 0i32 { if FindMatchLengthWithLimit(dict, data, w.l as usize) == w.l as usize { 1 } else { 0 } } else if w.transform() as i32 == 10i32 { if dict[0] as i32 >= b'a' as i32 && (dict[0] as i32 <= b'z' as i32) && (dict[0] as i32 ^ 32i32 == data[0] as i32) && (FindMatchLengthWithLimit( dict.split_at(1).1, data.split_at(1).1, (w.len() as u32).wrapping_sub(1) as usize, ) == (w.len() as u32).wrapping_sub(1) as usize) { 1 } else { 0 } } else { for i in 0usize..w.len() as usize { if dict[i] as i32 >= b'a' as i32 && (dict[i] as i32 <= b'z' as i32) { if dict[i] as i32 ^ 32i32 != data[i] as i32 { return 0; } } else if dict[i] as i32 != data[i] as i32 { return 0; } } 1 } } } #[allow(unused)] fn AddMatch(distance: usize, len: usize, len_code: usize, mut matches: &mut [u32]) { let match_: u32 = (distance << 5).wrapping_add(len_code) as u32; matches[len] = min(matches[len], match_); } #[allow(unused)] fn DictMatchLength( dictionary: &BrotliDictionary, data: &[u8], id: usize, len: usize, maxlen: usize, ) -> usize { let offset: usize = (dictionary.offsets_by_length[len] as usize).wrapping_add(len.wrapping_mul(id)); FindMatchLengthWithLimit(dictionary.data.split_at(offset).1, data, min(len, maxlen)) } #[allow(unused)] pub fn BrotliFindAllStaticDictionaryMatches( dictionary: &BrotliDictionary, data: &[u8], min_length: usize, max_length: usize, mut matches: &mut [u32], ) -> i32 { let mut has_found_match: i32 = 0i32; { let mut offset: usize = kStaticDictionaryBuckets[Hash(data) as usize] as usize; let mut end: i32 = (offset == 0) as i32; while end == 0 { let mut w: DictWord = kStaticDictionaryWords[offset]; offset = offset.wrapping_add(1); let l: usize = (w.len() as i32 & 0x1fi32) as usize; let n: usize = 1usize << dictionary.size_bits_by_length[l] as i32; let id: usize = w.idx() as usize; end = !(w.len() as i32 & 0x80i32 == 0) as i32; w.l = l as u8; if w.transform() as i32 == 0i32 { let matchlen: usize = DictMatchLength(dictionary, data, id, l, max_length); let mut minlen: usize; let mut len: usize; if matchlen == l { //eprint!("Adding match {} {} {}\n", w.len(), w.transform(), w.idx()); AddMatch(id, l, l, matches); has_found_match = 1i32; } if matchlen >= l.wrapping_sub(1) { //eprint!("Bdding match {} {} {}\n", w.len(), w.transform(), w.idx()); AddMatch( id.wrapping_add((12usize).wrapping_mul(n)), l.wrapping_sub(1), l, matches, ); if l.wrapping_add(2) < max_length && (data[(l.wrapping_sub(1) as usize)] as i32 == b'i' as i32) && (data[(l as usize)] as i32 == b'n' as i32) && (data[(l.wrapping_add(1) as usize)] as i32 == b'g' as i32) && (data[(l.wrapping_add(2) as usize)] as i32 == b' ' as i32) { //eprint!("Cdding match {} {} {}\n", w.len(), w.transform(), w.idx()); AddMatch( id.wrapping_add((49usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } has_found_match = 1i32; } minlen = min_length; if l > 9usize { minlen = max(minlen, l.wrapping_sub(9)); } let maxlen: usize = min(matchlen, l.wrapping_sub(2)); for len in minlen..=maxlen { //eprint!("Ddding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add( (kOmitLastNTransforms[l.wrapping_sub(len)] as usize).wrapping_mul(n), ), len, l, matches, ); has_found_match = 1i32; } if matchlen < l || l.wrapping_add(6) >= max_length { continue; } let s: &[u8] = data.split_at(l as usize).1; if s[0] as i32 == b' ' as i32 { //eprint!("Edding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch(id.wrapping_add(n), l.wrapping_add(1), l, matches); if s[1] as i32 == b'a' as i32 { if s[2] as i32 == b' ' as i32 { //eprint!("Fdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((28usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } else if s[2] as i32 == b's' as i32 { if s[3] as i32 == b' ' as i32 { //eprint!("Gdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((46usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[2] as i32 == b't' as i32 { if s[3] as i32 == b' ' as i32 { //eprint!("Hdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((60usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[2] as i32 == b'n' as i32 && s[3] as i32 == b'd' as i32 && (s[4] as i32 == b' ' as i32) { //eprint!("Idding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((10usize).wrapping_mul(n)), l.wrapping_add(5), l, matches, ); } } else if s[1] as i32 == b'b' as i32 { if s[2] as i32 == b'y' as i32 && (s[3] as i32 == b' ' as i32) { //eprint!("Jdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((38usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[1] as i32 == b'i' as i32 { if s[2] as i32 == b'n' as i32 { if s[3] as i32 == b' ' as i32 { //eprint!("Kdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((16usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[2] as i32 == b's' as i32 && s[3] as i32 == b' ' as i32 { //eprint!("Ldding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((47usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[1] as i32 == b'f' as i32 { if s[2] as i32 == b'o' as i32 { if s[3] as i32 == b'r' as i32 && (s[4] as i32 == b' ' as i32) { //eprint!("Mdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((25usize).wrapping_mul(n)), l.wrapping_add(5), l, matches, ); } } else if s[2] as i32 == b'r' as i32 && s[3] as i32 == b'o' as i32 && (s[4] as i32 == b'm' as i32) && (s[5] as i32 == b' ' as i32) { //eprint!("Ndding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((37usize).wrapping_mul(n)), l.wrapping_add(6), l, matches, ); } } else if s[1] as i32 == b'o' as i32 { if s[2] as i32 == b'f' as i32 { if s[3] as i32 == b' ' as i32 { //eprint!("Odding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((8usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[2] as i32 == b'n' as i32 && s[3] as i32 == b' ' as i32 { //eprint!("Pdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((45usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[1] as i32 == b'n' as i32 { if s[2] as i32 == b'o' as i32 && (s[3] as i32 == b't' as i32) && (s[4] as i32 == b' ' as i32) { //eprint!("Qdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((80usize).wrapping_mul(n)), l.wrapping_add(5), l, matches, ); } } else if s[1] as i32 == b't' as i32 { if s[2] as i32 == b'h' as i32 { if s[3] as i32 == b'e' as i32 { if s[4] as i32 == b' ' as i32 { //eprint!("Rdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((5usize).wrapping_mul(n)), l.wrapping_add(5), l, matches, ); } } else if s[3] as i32 == b'a' as i32 && s[4] as i32 == b't' as i32 && (s[5] as i32 == b' ' as i32) { //eprint!("Sdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((29usize).wrapping_mul(n)), l.wrapping_add(6), l, matches, ); } } else if s[2] as i32 == b'o' as i32 && s[3] as i32 == b' ' as i32 { //eprint!("Tdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((17usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[1] as i32 == b'w' as i32 && s[2] as i32 == b'i' as i32 && (s[3] as i32 == b't' as i32) && (s[4] as i32 == b'h' as i32) && (s[5] as i32 == b' ' as i32) { //eprint!("Udding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((35usize).wrapping_mul(n)), l.wrapping_add(6), l, matches, ); } } else if s[0] as i32 == b'\"' as i32 { //eprint!("Vdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((19usize).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); if s[1] as i32 == b'>' as i32 { //eprint!("Wdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((21usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); } } else if s[0] as i32 == b'.' as i32 { //eprint!("Xdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((20usize).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); if s[1] as i32 == b' ' as i32 { //eprint!("Ydding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((31usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); if s[2] as i32 == b'T' as i32 && (s[3] as i32 == b'h' as i32) { if s[4] as i32 == b'e' as i32 { if s[5] as i32 == b' ' as i32 { //eprint!("Zdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((43usize).wrapping_mul(n)), l.wrapping_add(6), l, matches, ); } } else if s[4] as i32 == b'i' as i32 && s[5] as i32 == b's' as i32 && (s[6] as i32 == b' ' as i32) { //eprint!("AAdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((75usize).wrapping_mul(n)), l.wrapping_add(7), l, matches, ); } } } } else if s[0] as i32 == b',' as i32 { //eprint!("ABdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((76usize).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); if s[1] as i32 == b' ' as i32 { //eprint!("ACdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((14usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); } } else if s[0] as i32 == b'\n' as i32 { //eprint!("ADdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((22usize).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); if s[1] as i32 == b'\t' as i32 { //eprint!("AEdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((50usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); } } else if s[0] as i32 == b']' as i32 { //eprint!("AFdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((24usize).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); } else if s[0] as i32 == b'\'' as i32 { //eprint!("AGdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((36usize).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); } else if s[0] as i32 == b':' as i32 { //eprint!("AHdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((51usize).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); } else if s[0] as i32 == b'(' as i32 { //eprint!("AIdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((57usize).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); } else if s[0] as i32 == b'=' as i32 { if s[1] as i32 == b'\"' as i32 { //eprint!("AJdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((70usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); } else if s[1] as i32 == b'\'' as i32 { //eprint!("AKdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((86usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); } } else if s[0] as i32 == b'a' as i32 { if s[1] as i32 == b'l' as i32 && (s[2] as i32 == b' ' as i32) { //eprint!("ALdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((84usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } } else if s[0] as i32 == b'e' as i32 { if s[1] as i32 == b'd' as i32 { if s[2] as i32 == b' ' as i32 { //eprint!("AMdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((53usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } } else if s[1] as i32 == b'r' as i32 { if s[2] as i32 == b' ' as i32 { //eprint!("ANdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((82usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } } else if s[1] as i32 == b's' as i32 && s[2] as i32 == b't' as i32 && (s[3] as i32 == b' ' as i32) { //eprint!("AOdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((95usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[0] as i32 == b'f' as i32 { if s[1] as i32 == b'u' as i32 && (s[2] as i32 == b'l' as i32) && (s[3] as i32 == b' ' as i32) { //eprint!("APdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((90usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[0] as i32 == b'i' as i32 { if s[1] as i32 == b'v' as i32 { if s[2] as i32 == b'e' as i32 && (s[3] as i32 == b' ' as i32) { //eprint!("AQdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((92usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[1] as i32 == b'z' as i32 && s[2] as i32 == b'e' as i32 && (s[3] as i32 == b' ' as i32) { //eprint!("ARdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((100usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else if s[0] as i32 == b'l' as i32 { if s[1] as i32 == b'e' as i32 { if s[2] as i32 == b's' as i32 && (s[3] as i32 == b's' as i32) && (s[4] as i32 == b' ' as i32) { //eprint!("ASdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((93usize).wrapping_mul(n)), l.wrapping_add(5), l, matches, ); } } else if s[1] as i32 == b'y' as i32 && s[2] as i32 == b' ' as i32 { //eprint!("ATdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((61usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } } else if s[0] as i32 == b'o' as i32 && s[1] as i32 == b'u' as i32 && (s[2] as i32 == b's' as i32) && (s[3] as i32 == b' ' as i32) { //eprint!("AUdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), len); AddMatch( id.wrapping_add((106usize).wrapping_mul(n)), l.wrapping_add(4), l, matches, ); } } else { let is_all_caps = w.transform() != kUppercaseFirst; if IsMatch(dictionary, w, data, max_length) == 0 { continue; } //eprint!("AVdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((if is_all_caps { 44usize } else { 9usize }).wrapping_mul(n)), l, l, matches, ); has_found_match = 1i32; if l.wrapping_add(1) >= max_length { continue; } let s: &[u8] = data.split_at(l as usize).1; if s[0] as i32 == b' ' as i32 { //eprint!("AWdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 68usize } else { 4usize }).wrapping_mul(n), ), l.wrapping_add(1), l, matches, ); } else if s[0] as i32 == b'\"' as i32 { //eprint!("AXdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 87usize } else { 66usize }).wrapping_mul(n), ), l.wrapping_add(1), l, matches, ); if s[1] as i32 == b'>' as i32 { //eprint!("AYdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 97usize } else { 69usize }).wrapping_mul(n), ), l.wrapping_add(2), l, matches, ); } } else if s[0] as i32 == b'.' as i32 { //eprint!("AZdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 101usize } else { 79usize }).wrapping_mul(n), ), l.wrapping_add(1), l, matches, ); if s[1] as i32 == b' ' as i32 { //eprint!("BAdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 114usize } else { 88usize }).wrapping_mul(n), ), l.wrapping_add(2), l, matches, ); } } else if s[0] as i32 == b',' as i32 { //eprint!("BBdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 112usize } else { 99usize }).wrapping_mul(n), ), l.wrapping_add(1), l, matches, ); if s[1] as i32 == b' ' as i32 { //eprint!("BCdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 107usize } else { 58usize }).wrapping_mul(n), ), l.wrapping_add(2), l, matches, ); } } else if s[0] as i32 == b'\'' as i32 { //eprint!("BDdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 94usize } else { 74usize }).wrapping_mul(n), ), l.wrapping_add(1), l, matches, ); } else if s[0] as i32 == b'(' as i32 { //eprint!("BEdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 113usize } else { 78usize }).wrapping_mul(n), ), l.wrapping_add(1), l, matches, ); } else if s[0] as i32 == b'=' as i32 { if s[1] as i32 == b'\"' as i32 { //eprint!("BFdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 105usize } else { 104usize }).wrapping_mul(n), ), l.wrapping_add(2), l, matches, ); } else if s[1] as i32 == b'\'' as i32 { //eprint!("BGdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 116usize } else { 108usize }).wrapping_mul(n), ), l.wrapping_add(2), l, matches, ); } } } } } if max_length >= 5usize && (data[0] as i32 == b' ' as i32 || data[0] as i32 == b'.' as i32) { let is_space = data[0] == b' '; let mut offset: usize = kStaticDictionaryBuckets[Hash(data.split_at(1).1) as usize] as usize; let mut end: i32 = (offset == 0) as i32; while end == 0 { let mut w: DictWord = kStaticDictionaryWords[offset]; offset = offset.wrapping_add(1); let l: usize = (w.len() as i32 & 0x1fi32) as usize; let n: usize = 1usize << dictionary.size_bits_by_length[l] as i32; let id: usize = w.idx() as usize; end = !(w.len() as i32 & 0x80i32 == 0) as i32; w.l = l as u8; if w.transform() as i32 == 0i32 { if IsMatch( dictionary, w, data.split_at(1).1, max_length.wrapping_sub(1), ) == 0 { continue; } //eprint!("BHdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((if is_space { 6usize } else { 32usize }).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); has_found_match = 1i32; if l.wrapping_add(2) >= max_length { continue; } let s: &[u8] = data.split_at(l.wrapping_add(1) as usize).1; if s[0] as i32 == b' ' as i32 { //eprint!("BIdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((if is_space { 2usize } else { 77usize }).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); } else if s[0] as i32 == b'(' as i32 { //eprint!("BJdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((if is_space { 89usize } else { 67usize }).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); } else if is_space { if s[0] as i32 == b',' as i32 { //eprint!("BKdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((103usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); if s[1] as i32 == b' ' as i32 { //eprint!("BLdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((33usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } } else if s[0] as i32 == b'.' as i32 { //eprint!("BMdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((71usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); if s[1] as i32 == b' ' as i32 { //eprint!("BNdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((52usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } } else if s[0] as i32 == b'=' as i32 { if s[1] as i32 == b'\"' as i32 { //eprint!("BOdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((81usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } else if s[1] as i32 == b'\'' as i32 { //eprint!("BPdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((98usize).wrapping_mul(n)), l.wrapping_add(3), l, matches, ); } } } } else if is_space { let is_all_caps = w.transform() != kUppercaseFirst; if IsMatch( dictionary, w, data.split_at(1).1, max_length.wrapping_sub(1), ) == 0 { continue; } //eprint!("CAdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((if is_all_caps { 85usize } else { 30usize }).wrapping_mul(n)), l.wrapping_add(1), l, matches, ); has_found_match = 1i32; if l.wrapping_add(2) >= max_length { continue; } let s: &[u8] = data.split_at(l.wrapping_add(1)).1; if s[0] as i32 == b' ' as i32 { //eprint!("CBdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 83usize } else { 15usize }).wrapping_mul(n), ), l.wrapping_add(2), l, matches, ); } else if s[0] as i32 == b',' as i32 { if !is_all_caps { //eprint!("CCdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((109usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); } if s[1] as i32 == b' ' as i32 { //eprint!("CDdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 111usize } else { 65usize }).wrapping_mul(n), ), l.wrapping_add(3), l, matches, ); } } else if s[0] as i32 == b'.' as i32 { //eprint!("CEdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 115usize } else { 96usize }).wrapping_mul(n), ), l.wrapping_add(2), l, matches, ); if s[1] as i32 == b' ' as i32 { //eprint!("CFdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 117usize } else { 91usize }).wrapping_mul(n), ), l.wrapping_add(3), l, matches, ); } } else if s[0] as i32 == b'=' as i32 { if s[1] as i32 == b'\"' as i32 { //eprint!("CGdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 110usize } else { 118usize }).wrapping_mul(n), ), l.wrapping_add(3), l, matches, ); } else if s[1] as i32 == b'\'' as i32 { //eprint!("CHdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if is_all_caps { 119usize } else { 120usize }).wrapping_mul(n), ), l.wrapping_add(3), l, matches, ); } } } } } if max_length >= 6usize && (data[1] as i32 == b' ' as i32 && (data[0] as i32 == b'e' as i32 || data[0] as i32 == b's' as i32 || data[0] as i32 == b',' as i32) || data[0] as i32 == 0xc2i32 && (data[1] as i32 == 0xa0i32)) { let mut offset: usize = kStaticDictionaryBuckets[Hash(data.split_at(2).1) as usize] as usize; let mut end: i32 = (offset == 0) as i32; while end == 0 { let mut w: DictWord = kStaticDictionaryWords[offset]; offset = offset.wrapping_add(1); let l: usize = (w.len() as i32 & 0x1fi32) as usize; let n: usize = 1usize << dictionary.size_bits_by_length[l] as i32; let id: usize = w.idx() as usize; end = !(w.len() as i32 & 0x80i32 == 0) as i32; w.l = l as u8; if w.transform() as i32 == 0i32 && (IsMatch( dictionary, w, data.split_at(2).1, max_length.wrapping_sub(2), ) != 0) { if data[0] as i32 == 0xc2i32 { //eprint!("CIdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((102usize).wrapping_mul(n)), l.wrapping_add(2), l, matches, ); has_found_match = 1i32; } else if l.wrapping_add(2) < max_length && (data[(l.wrapping_add(2) as usize)] as i32 == b' ' as i32) { let t: usize = (if data[0] as i32 == b'e' as i32 { 18i32 } else if data[0] as i32 == b's' as i32 { 7i32 } else { 13i32 }) as usize; //eprint!("CJdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add(t.wrapping_mul(n)), l.wrapping_add(3), l, matches, ); has_found_match = 1i32; } } } } if max_length >= 9usize && (data[0] as i32 == b' ' as i32 && (data[1] as i32 == b't' as i32) && (data[2] as i32 == b'h' as i32) && (data[3] as i32 == b'e' as i32) && (data[4] as i32 == b' ' as i32) || data[0] as i32 == b'.' as i32 && (data[1] as i32 == b'c' as i32) && (data[2] as i32 == b'o' as i32) && (data[3] as i32 == b'm' as i32) && (data[4] as i32 == b'/' as i32)) { let mut offset: usize = kStaticDictionaryBuckets[Hash(data.split_at(5).1) as usize] as usize; let mut end: i32 = (offset == 0) as i32; while end == 0 { let mut w: DictWord = kStaticDictionaryWords[offset]; offset = offset.wrapping_add(1); let l: usize = (w.len() as i32 & 0x1fi32) as usize; let n: usize = 1usize << dictionary.size_bits_by_length[l] as i32; let id: usize = w.idx() as usize; end = !(w.len() as i32 & 0x80i32 == 0) as i32; w.l = l as u8; if w.transform() as i32 == 0i32 && (IsMatch( dictionary, w, data.split_at(5).1, max_length.wrapping_sub(5), ) != 0) { //eprint!("CKdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add( (if data[0] as i32 == b' ' as i32 { 41i32 } else { 72i32 } as usize) .wrapping_mul(n), ), l.wrapping_add(5), l, matches, ); has_found_match = 1i32; if l.wrapping_add(5) < max_length { let s: &[u8] = data.split_at(l.wrapping_add(5) as usize).1; if data[0] as i32 == b' ' as i32 && l.wrapping_add(8) < max_length && (s[0] as i32 == b' ' as i32) && (s[1] as i32 == b'o' as i32) && (s[2] as i32 == b'f' as i32) && (s[3] as i32 == b' ' as i32) { //eprint!("CLdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((62usize).wrapping_mul(n)), l.wrapping_add(9), l, matches, ); if l.wrapping_add(12) < max_length && (s[4] as i32 == b't' as i32) && (s[5] as i32 == b'h' as i32) && (s[6] as i32 == b'e' as i32) && (s[7] as i32 == b' ' as i32) { //eprint!("BQdding match {} {} {} {}\n", w.len(), w.transform(), w.idx(), 666); AddMatch( id.wrapping_add((73usize).wrapping_mul(n)), l.wrapping_add(13), l, matches, ); } } } } } } has_found_match } brotli-6.0.0/src/enc/static_dict_lut.rs000075500000000000000000071100701046102023000162130ustar 00000000000000#![allow(dead_code)] pub static kInvalidMatch: u32 = 0x0fff_ffff; pub static kDictNumBits: i32 = 15; pub static kDictHashMul32: u32 = 0x1e35_a7bd; pub static kStaticDictionaryBuckets: [u16; 32768] = [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 0, 0, 0, 0, 0, 20, 0, 0, 0, 21, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 25, 0, 29, 0, 53, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 61, 76, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 96, 0, 97, 0, 98, 0, 0, 0, 0, 0, 0, 0, 99, 101, 106, 108, 0, 0, 0, 0, 0, 110, 0, 111, 112, 0, 113, 118, 124, 0, 0, 0, 0, 0, 125, 128, 0, 0, 0, 0, 129, 0, 0, 131, 0, 0, 0, 0, 0, 0, 132, 0, 0, 135, 0, 0, 0, 137, 0, 0, 0, 0, 0, 138, 139, 0, 0, 0, 0, 0, 0, 0, 142, 143, 144, 0, 0, 0, 0, 0, 145, 0, 0, 0, 146, 149, 151, 152, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 160, 182, 0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 188, 189, 0, 0, 192, 0, 0, 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 197, 202, 209, 0, 0, 210, 0, 224, 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 232, 0, 240, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, 0, 246, 0, 0, 249, 251, 253, 0, 0, 0, 0, 0, 258, 0, 0, 261, 263, 0, 0, 0, 267, 0, 0, 268, 0, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 271, 0, 0, 0, 0, 0, 0, 272, 0, 273, 0, 277, 0, 278, 286, 0, 0, 0, 0, 287, 0, 289, 290, 291, 0, 0, 0, 295, 0, 0, 296, 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 298, 0, 0, 0, 299, 0, 0, 305, 0, 324, 0, 0, 0, 0, 0, 327, 0, 328, 329, 0, 0, 0, 0, 336, 0, 0, 340, 0, 341, 342, 343, 0, 0, 346, 0, 348, 0, 0, 0, 0, 0, 0, 349, 351, 0, 0, 355, 0, 363, 0, 364, 0, 368, 369, 0, 370, 0, 0, 0, 0, 0, 0, 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 373, 0, 375, 0, 0, 0, 0, 376, 377, 0, 0, 394, 395, 396, 0, 0, 398, 0, 0, 0, 0, 400, 0, 0, 408, 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, 421, 0, 0, 422, 423, 0, 0, 429, 435, 436, 442, 0, 0, 443, 0, 444, 445, 453, 456, 0, 457, 0, 0, 0, 0, 0, 458, 0, 0, 0, 459, 0, 0, 0, 460, 0, 462, 463, 465, 0, 0, 0, 0, 0, 0, 466, 469, 0, 0, 0, 0, 0, 0, 470, 0, 0, 0, 474, 0, 476, 0, 0, 0, 0, 483, 0, 485, 0, 0, 0, 486, 0, 0, 488, 491, 492, 0, 0, 497, 499, 500, 0, 501, 0, 0, 0, 505, 0, 0, 506, 0, 0, 0, 507, 0, 0, 0, 509, 0, 0, 0, 0, 511, 512, 519, 0, 0, 0, 0, 0, 0, 529, 530, 0, 0, 0, 534, 0, 0, 0, 0, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 553, 0, 0, 0, 0, 557, 560, 0, 0, 0, 0, 0, 0, 561, 0, 564, 0, 0, 0, 0, 0, 0, 565, 566, 0, 575, 0, 619, 0, 620, 0, 0, 623, 624, 0, 0, 0, 625, 0, 0, 626, 627, 0, 0, 628, 0, 0, 0, 0, 630, 0, 631, 0, 0, 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, 0, 0, 643, 656, 668, 0, 0, 0, 673, 0, 0, 0, 674, 0, 0, 0, 0, 0, 0, 0, 0, 682, 0, 687, 0, 690, 0, 693, 699, 700, 0, 0, 0, 0, 0, 0, 704, 705, 0, 0, 0, 0, 707, 710, 0, 711, 0, 0, 0, 0, 726, 0, 0, 729, 0, 0, 0, 730, 731, 0, 0, 0, 0, 0, 752, 0, 0, 0, 762, 0, 763, 0, 0, 767, 0, 0, 0, 770, 774, 0, 0, 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, 777, 783, 0, 0, 0, 785, 788, 0, 0, 0, 0, 790, 0, 0, 0, 793, 0, 0, 0, 0, 794, 0, 0, 804, 819, 821, 0, 827, 0, 0, 0, 834, 0, 0, 835, 0, 0, 0, 841, 0, 844, 0, 850, 851, 859, 0, 860, 0, 0, 0, 0, 0, 0, 0, 874, 0, 876, 0, 877, 890, 0, 0, 0, 0, 0, 0, 0, 0, 893, 894, 898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 899, 0, 0, 0, 900, 904, 906, 0, 0, 0, 907, 0, 908, 909, 0, 910, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 916, 0, 0, 0, 922, 925, 0, 930, 0, 934, 0, 0, 0, 0, 0, 943, 0, 0, 944, 0, 953, 954, 0, 0, 0, 0, 0, 0, 955, 0, 962, 963, 0, 0, 976, 0, 0, 977, 978, 979, 980, 0, 981, 0, 0, 0, 0, 984, 0, 0, 985, 0, 0, 987, 989, 991, 0, 0, 0, 0, 0, 0, 0, 0, 0, 992, 0, 0, 0, 993, 0, 0, 0, 0, 0, 0, 996, 0, 0, 0, 1000, 0, 0, 0, 0, 0, 1002, 0, 0, 0, 0, 1005, 1007, 0, 0, 0, 1009, 0, 0, 0, 1010, 0, 0, 0, 0, 0, 0, 1011, 0, 1012, 0, 0, 0, 0, 1014, 1016, 0, 0, 0, 1020, 0, 1021, 0, 0, 0, 0, 1022, 0, 0, 0, 1024, 0, 0, 0, 0, 0, 0, 1025, 0, 0, 1026, 1027, 0, 0, 0, 0, 0, 1031, 0, 1033, 0, 0, 0, 0, 1034, 0, 0, 0, 1037, 1040, 0, 0, 0, 1042, 1043, 0, 0, 1053, 0, 1054, 0, 0, 1057, 0, 0, 0, 1058, 0, 0, 1060, 0, 0, 0, 0, 0, 0, 0, 1061, 0, 0, 1062, 0, 0, 0, 0, 1063, 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, 1065, 0, 0, 0, 0, 1066, 1067, 0, 0, 0, 1069, 1070, 1072, 0, 0, 0, 0, 0, 0, 1073, 0, 1075, 0, 0, 0, 0, 0, 0, 1080, 1084, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 1094, 0, 1095, 0, 1107, 0, 0, 0, 1112, 1114, 0, 1119, 0, 1122, 0, 0, 1126, 0, 1129, 0, 1130, 0, 0, 0, 0, 0, 1132, 0, 0, 0, 0, 0, 0, 1144, 0, 0, 1145, 1146, 0, 1148, 1149, 0, 0, 1150, 1151, 0, 0, 0, 0, 1152, 0, 1153, 0, 0, 0, 0, 0, 1154, 0, 1163, 0, 0, 0, 1164, 0, 0, 0, 0, 0, 1165, 0, 1167, 0, 1170, 0, 0, 0, 0, 0, 1171, 1172, 0, 0, 0, 0, 0, 0, 0, 0, 1173, 1175, 1177, 0, 1186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1195, 0, 0, 1221, 0, 0, 1224, 0, 0, 1227, 0, 0, 0, 0, 0, 1228, 1229, 0, 0, 1230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1231, 0, 0, 0, 1233, 0, 0, 1243, 1244, 1246, 1248, 0, 0, 0, 0, 1254, 1255, 1258, 1259, 0, 0, 0, 1260, 0, 0, 1261, 0, 0, 0, 1262, 1264, 0, 0, 1265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1266, 0, 1267, 0, 0, 0, 0, 1273, 1274, 1276, 1289, 0, 0, 1291, 1292, 1293, 0, 0, 1294, 1295, 1296, 0, 0, 0, 0, 1302, 0, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1311, 1312, 0, 1314, 0, 1316, 1320, 1321, 0, 0, 0, 0, 0, 0, 0, 1322, 1323, 1324, 0, 1335, 0, 1336, 0, 0, 0, 0, 1341, 1342, 0, 1346, 0, 1357, 0, 0, 0, 1358, 1360, 0, 0, 0, 0, 0, 0, 1361, 0, 0, 0, 1362, 1365, 0, 1366, 0, 0, 0, 0, 0, 0, 0, 1379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1386, 0, 1388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1395, 0, 0, 0, 0, 1403, 0, 1405, 0, 0, 1407, 0, 0, 0, 0, 0, 1408, 1409, 0, 1410, 0, 0, 0, 1412, 1413, 1416, 0, 0, 1429, 1451, 0, 0, 1454, 0, 0, 0, 0, 0, 0, 0, 1455, 0, 0, 0, 0, 0, 0, 0, 1456, 0, 0, 0, 0, 1459, 1460, 1461, 1475, 0, 0, 0, 0, 0, 0, 1477, 0, 1480, 0, 1481, 0, 0, 1486, 0, 0, 1495, 0, 0, 0, 1496, 0, 0, 1498, 1499, 1501, 1520, 1521, 0, 0, 0, 1526, 0, 0, 0, 0, 1528, 1529, 0, 1533, 1536, 0, 0, 0, 1537, 1538, 1549, 0, 1550, 1558, 1559, 1572, 0, 1573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1575, 0, 0, 0, 0, 0, 1579, 0, 1599, 0, 1603, 0, 1604, 0, 1605, 0, 0, 0, 0, 0, 1608, 1610, 0, 0, 0, 0, 1611, 0, 1615, 0, 1616, 1618, 0, 1619, 0, 0, 1622, 0, 0, 0, 0, 1634, 0, 0, 0, 1635, 0, 0, 0, 1641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1643, 0, 0, 0, 1650, 0, 0, 1652, 0, 0, 0, 0, 0, 1653, 0, 0, 0, 1654, 0, 0, 0, 0, 1655, 0, 1662, 0, 0, 1663, 1664, 0, 0, 1668, 0, 0, 1669, 1670, 0, 1672, 1673, 0, 0, 0, 0, 0, 1674, 0, 0, 0, 1675, 1676, 1680, 0, 1682, 0, 0, 1687, 0, 0, 0, 0, 0, 1704, 0, 0, 1705, 0, 0, 1721, 0, 0, 0, 0, 1734, 1735, 0, 0, 0, 0, 1737, 0, 0, 0, 0, 1739, 0, 0, 1740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1741, 1743, 0, 0, 0, 0, 1745, 0, 0, 0, 1749, 0, 0, 0, 1751, 0, 0, 0, 0, 0, 0, 1760, 0, 0, 0, 0, 1765, 0, 0, 0, 0, 0, 1784, 0, 1785, 1787, 0, 0, 0, 0, 1788, 1789, 0, 0, 0, 0, 1790, 1791, 1793, 0, 1798, 1799, 0, 0, 0, 0, 1801, 0, 1803, 1805, 0, 0, 0, 1806, 1811, 0, 1812, 1814, 0, 1821, 0, 0, 0, 0, 0, 1822, 1833, 0, 0, 0, 0, 0, 0, 1848, 0, 0, 0, 0, 0, 0, 1857, 0, 0, 0, 1859, 0, 0, 0, 0, 1861, 0, 0, 0, 0, 0, 0, 0, 1866, 0, 1921, 1925, 0, 0, 0, 1929, 1930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1931, 0, 0, 0, 0, 1932, 0, 0, 0, 1934, 0, 0, 0, 0, 0, 0, 0, 0, 1946, 0, 0, 1948, 0, 0, 0, 0, 1950, 0, 1957, 0, 1958, 0, 0, 0, 0, 0, 1965, 1967, 0, 0, 0, 0, 1968, 0, 1969, 0, 1971, 1972, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1973, 0, 0, 0, 0, 1975, 0, 0, 0, 0, 1976, 1979, 0, 1982, 0, 0, 0, 0, 1984, 1988, 0, 0, 0, 0, 1990, 2004, 2008, 0, 0, 0, 2012, 2013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2015, 0, 2016, 2017, 0, 0, 0, 0, 2021, 0, 0, 2025, 0, 0, 0, 0, 0, 2029, 2036, 2040, 0, 2042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2043, 0, 0, 0, 0, 0, 2045, 0, 0, 0, 0, 0, 0, 0, 2046, 2047, 0, 2048, 2049, 0, 2059, 0, 0, 2063, 0, 2064, 2065, 0, 0, 2066, 0, 0, 0, 0, 0, 0, 2069, 0, 0, 0, 0, 2070, 0, 2071, 0, 2072, 0, 0, 0, 0, 2080, 2082, 2083, 0, 0, 0, 0, 0, 2085, 0, 2086, 2088, 2089, 2105, 0, 0, 0, 0, 2107, 0, 0, 2116, 2117, 0, 2120, 0, 0, 2122, 0, 0, 0, 0, 0, 2123, 0, 0, 2125, 2127, 2128, 0, 0, 0, 2130, 0, 0, 0, 2137, 2139, 2140, 2141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2144, 2145, 0, 0, 2146, 2149, 0, 0, 0, 0, 2150, 0, 0, 2151, 2158, 0, 2159, 0, 2160, 0, 0, 0, 0, 0, 0, 2161, 2162, 0, 0, 2194, 2202, 0, 0, 0, 0, 0, 0, 2205, 2217, 0, 2220, 0, 2221, 0, 2222, 2224, 0, 0, 0, 0, 2237, 0, 0, 0, 0, 0, 2238, 0, 2239, 2241, 0, 0, 2242, 0, 0, 0, 0, 0, 2243, 0, 0, 0, 0, 0, 0, 2252, 0, 0, 2253, 0, 0, 0, 2257, 2258, 0, 0, 0, 2260, 0, 0, 0, 0, 0, 0, 0, 2262, 0, 2264, 0, 0, 0, 0, 0, 2269, 2270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2271, 0, 2273, 0, 0, 0, 0, 2277, 0, 0, 0, 0, 2278, 0, 0, 0, 0, 2279, 0, 2280, 0, 2283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2287, 0, 0, 0, 0, 0, 0, 0, 2289, 2290, 0, 0, 0, 0, 2291, 0, 2292, 0, 0, 0, 2293, 2295, 2296, 0, 0, 0, 0, 0, 0, 0, 2298, 0, 0, 0, 0, 0, 2303, 0, 2305, 0, 0, 2306, 0, 2307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2313, 2314, 2315, 2316, 0, 0, 2318, 0, 2319, 0, 2322, 0, 0, 2323, 0, 2324, 0, 2326, 0, 0, 0, 0, 0, 0, 0, 2335, 0, 2336, 2338, 2339, 0, 2340, 0, 0, 0, 2355, 0, 2375, 0, 2382, 2386, 0, 2387, 0, 0, 2394, 0, 0, 0, 0, 2395, 0, 2397, 0, 0, 0, 0, 0, 2398, 0, 0, 0, 0, 0, 0, 0, 2399, 2402, 2404, 2408, 2411, 0, 0, 0, 2413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2415, 0, 0, 2416, 2417, 2419, 0, 2420, 0, 0, 0, 0, 0, 2425, 0, 0, 0, 2426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2427, 2428, 0, 2429, 0, 0, 2430, 2434, 0, 2436, 0, 0, 0, 0, 0, 0, 2441, 2442, 0, 2445, 0, 0, 2446, 2457, 0, 2459, 0, 0, 2462, 0, 2464, 0, 2477, 0, 2478, 2486, 0, 0, 0, 2491, 0, 0, 2493, 0, 0, 2494, 0, 2495, 0, 2513, 2523, 0, 0, 0, 0, 2524, 0, 0, 0, 0, 0, 0, 2528, 2529, 2530, 0, 0, 2531, 0, 2533, 0, 0, 2534, 2535, 0, 2536, 2537, 0, 2538, 0, 2539, 2540, 0, 0, 0, 2545, 2546, 0, 0, 0, 0, 0, 0, 0, 2548, 0, 0, 2549, 0, 2550, 2555, 0, 0, 0, 0, 0, 2557, 0, 2560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2561, 0, 2576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2577, 2578, 0, 0, 0, 2579, 0, 0, 0, 0, 0, 0, 0, 2580, 0, 0, 0, 0, 2581, 0, 0, 0, 0, 2583, 0, 2584, 0, 2588, 2590, 0, 0, 0, 2591, 0, 0, 0, 0, 2593, 2594, 0, 2595, 0, 2601, 2602, 0, 0, 2603, 0, 2605, 0, 0, 0, 2606, 2607, 2611, 0, 2615, 0, 0, 0, 2617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2619, 0, 0, 2620, 0, 0, 0, 2621, 0, 2623, 0, 2625, 0, 0, 2628, 2629, 0, 0, 2635, 2636, 2637, 0, 0, 2639, 0, 0, 0, 2642, 0, 0, 0, 0, 2643, 0, 2644, 0, 2649, 0, 0, 0, 0, 0, 0, 2655, 2656, 0, 0, 2657, 0, 0, 0, 0, 0, 2658, 0, 0, 0, 0, 0, 2659, 0, 0, 0, 0, 2664, 2685, 0, 2687, 0, 2688, 0, 0, 2689, 0, 0, 2694, 0, 2695, 0, 0, 2698, 0, 2701, 2706, 0, 0, 0, 2707, 0, 2709, 2710, 2711, 0, 0, 0, 2720, 2730, 2735, 0, 0, 0, 0, 2738, 2740, 0, 0, 0, 0, 2747, 0, 0, 0, 0, 0, 0, 2748, 0, 0, 2749, 0, 0, 0, 0, 0, 2750, 0, 0, 2752, 2754, 0, 0, 0, 0, 0, 2758, 0, 0, 0, 0, 2762, 0, 0, 0, 0, 2763, 0, 0, 0, 0, 0, 0, 0, 2764, 2767, 0, 0, 0, 0, 2768, 0, 0, 2770, 0, 0, 0, 0, 0, 0, 0, 2771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2772, 0, 0, 0, 0, 0, 2773, 2776, 0, 0, 2783, 0, 0, 2784, 0, 2789, 0, 2790, 0, 0, 0, 2792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2793, 2795, 0, 0, 0, 0, 0, 0, 2796, 0, 0, 0, 0, 0, 0, 2797, 2799, 0, 0, 0, 0, 2803, 0, 0, 0, 0, 2806, 0, 2807, 2808, 2817, 2819, 0, 0, 0, 0, 0, 2821, 0, 0, 0, 0, 2822, 2823, 0, 0, 0, 0, 0, 0, 0, 2824, 0, 0, 2828, 0, 2834, 0, 0, 0, 0, 0, 0, 2836, 0, 2838, 0, 0, 2839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2841, 0, 0, 0, 2842, 0, 0, 0, 0, 0, 2843, 2844, 0, 0, 0, 0, 2846, 0, 0, 2847, 0, 2849, 0, 2853, 0, 0, 0, 0, 0, 2857, 0, 0, 0, 0, 2858, 0, 2859, 0, 0, 2860, 0, 2862, 2868, 0, 0, 0, 0, 2875, 0, 2876, 0, 0, 2877, 2878, 2884, 2889, 2890, 0, 0, 2891, 0, 0, 2892, 0, 0, 0, 2906, 2912, 0, 2913, 0, 0, 0, 0, 0, 0, 0, 0, 2916, 0, 2934, 0, 0, 0, 0, 0, 2935, 0, 0, 0, 0, 2939, 0, 2940, 0, 0, 0, 0, 0, 0, 0, 2941, 0, 0, 0, 2946, 0, 2949, 0, 0, 2950, 2954, 2955, 0, 0, 0, 2959, 2961, 0, 0, 2962, 0, 2963, 0, 0, 0, 0, 0, 0, 2964, 2965, 2966, 2967, 0, 0, 0, 0, 0, 0, 0, 2969, 0, 0, 0, 0, 0, 2970, 2975, 0, 2982, 2983, 2984, 0, 0, 0, 0, 0, 2989, 0, 0, 2990, 0, 0, 0, 0, 0, 0, 0, 2991, 0, 0, 0, 0, 0, 0, 0, 0, 2998, 0, 3000, 3001, 0, 0, 3002, 0, 0, 0, 3003, 0, 0, 3012, 0, 0, 3022, 0, 0, 3024, 0, 0, 3025, 3027, 0, 0, 0, 3030, 0, 0, 0, 0, 3034, 3035, 0, 0, 3036, 0, 3039, 0, 3049, 0, 0, 3050, 0, 0, 0, 0, 0, 0, 3051, 0, 3053, 0, 0, 0, 0, 3057, 0, 3058, 0, 0, 0, 0, 0, 0, 0, 0, 3063, 0, 0, 3073, 3074, 3078, 3079, 0, 3080, 3086, 0, 0, 0, 0, 0, 0, 0, 0, 3087, 0, 3092, 0, 3095, 0, 3099, 0, 0, 0, 3100, 0, 3101, 3102, 0, 3122, 0, 0, 0, 3124, 0, 3125, 0, 0, 0, 0, 0, 0, 3132, 3134, 0, 0, 3136, 0, 0, 0, 0, 0, 0, 0, 3147, 0, 0, 3149, 0, 0, 0, 0, 0, 3150, 3151, 3152, 0, 0, 0, 0, 3158, 0, 0, 3160, 0, 0, 3161, 0, 0, 3162, 0, 3163, 3166, 3168, 0, 0, 3169, 3170, 0, 0, 3171, 0, 0, 0, 0, 0, 0, 0, 3182, 0, 3184, 0, 0, 3188, 0, 0, 3194, 0, 0, 0, 0, 0, 0, 3204, 0, 0, 0, 0, 3209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3216, 3217, 0, 0, 0, 0, 0, 0, 0, 3219, 0, 0, 3220, 3222, 0, 3223, 0, 0, 0, 0, 3224, 0, 3225, 3226, 0, 3228, 3233, 0, 3239, 3241, 3242, 0, 0, 3251, 3252, 3253, 3255, 0, 0, 0, 0, 0, 0, 0, 0, 3260, 0, 0, 3261, 0, 0, 0, 3267, 0, 0, 0, 0, 0, 0, 0, 0, 3271, 0, 0, 0, 3278, 0, 3282, 0, 0, 0, 3284, 0, 0, 0, 3285, 3286, 0, 0, 0, 0, 0, 0, 0, 3287, 3292, 0, 0, 0, 0, 3294, 3296, 0, 0, 3299, 3300, 3301, 0, 3302, 0, 0, 0, 0, 0, 3304, 3306, 0, 0, 0, 0, 0, 0, 3308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3311, 0, 0, 0, 0, 0, 0, 0, 0, 3312, 3314, 3315, 0, 3318, 0, 0, 0, 0, 0, 0, 0, 0, 3319, 0, 0, 0, 0, 0, 3321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3322, 0, 0, 3324, 3325, 0, 0, 3326, 0, 0, 3328, 3329, 3331, 0, 0, 3335, 0, 0, 3337, 0, 3338, 0, 0, 0, 0, 3343, 3347, 0, 0, 0, 3348, 0, 0, 3351, 0, 0, 0, 0, 0, 0, 3354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3355, 0, 0, 3365, 3366, 3367, 0, 0, 0, 0, 0, 0, 3368, 3369, 0, 3370, 0, 0, 3373, 0, 0, 3376, 0, 0, 3377, 0, 3379, 3387, 0, 0, 0, 0, 0, 3390, 0, 0, 0, 0, 0, 0, 0, 3402, 0, 3403, 3436, 3437, 3439, 0, 0, 3441, 0, 0, 0, 3442, 0, 0, 3449, 0, 0, 0, 3450, 0, 0, 0, 0, 0, 0, 0, 3451, 0, 0, 3452, 0, 3453, 3456, 0, 3457, 0, 0, 3458, 0, 3459, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3460, 0, 0, 3469, 3470, 0, 0, 3475, 0, 0, 0, 3480, 3487, 3489, 0, 3490, 0, 0, 3491, 3499, 0, 3500, 0, 0, 3501, 0, 0, 0, 3502, 0, 3514, 0, 0, 0, 3516, 3517, 0, 0, 0, 3518, 0, 0, 0, 0, 3520, 3521, 3522, 0, 0, 3526, 3530, 0, 0, 0, 0, 3531, 0, 0, 0, 0, 3536, 0, 0, 0, 0, 0, 0, 0, 3539, 3541, 0, 0, 3542, 3544, 0, 3547, 3548, 0, 0, 3550, 0, 3553, 0, 0, 0, 0, 0, 0, 0, 3554, 0, 3555, 0, 3558, 0, 3559, 0, 0, 0, 0, 0, 0, 0, 0, 3563, 0, 3581, 0, 0, 0, 3599, 0, 0, 0, 3600, 0, 3601, 0, 3602, 3603, 0, 0, 3606, 3608, 0, 3610, 3611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3612, 3616, 3619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3624, 3628, 0, 3629, 3634, 3635, 0, 0, 0, 0, 0, 0, 3636, 0, 3637, 0, 0, 3638, 3651, 0, 0, 0, 0, 0, 0, 3652, 3653, 0, 0, 0, 0, 3656, 3657, 0, 0, 0, 0, 0, 3658, 0, 0, 0, 0, 3659, 0, 3661, 3663, 3664, 0, 3665, 0, 3692, 0, 0, 0, 3694, 3696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3700, 0, 0, 3701, 0, 0, 0, 3708, 3709, 0, 0, 0, 3711, 3712, 0, 0, 0, 0, 0, 3723, 0, 3724, 3725, 0, 0, 3726, 0, 0, 0, 0, 0, 0, 3728, 3729, 0, 3734, 3735, 3737, 0, 0, 0, 3743, 0, 3745, 0, 0, 3746, 0, 0, 3747, 3748, 0, 3757, 0, 3759, 3766, 3767, 0, 3768, 0, 0, 0, 0, 3769, 0, 0, 3771, 0, 3774, 0, 0, 0, 0, 0, 0, 3775, 0, 0, 0, 0, 0, 0, 3776, 0, 3777, 3786, 0, 3788, 3789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3791, 0, 3811, 0, 0, 0, 0, 0, 3814, 3815, 3816, 3820, 0, 0, 0, 0, 0, 0, 0, 3821, 0, 0, 3825, 0, 0, 0, 0, 3835, 0, 0, 3848, 3849, 0, 0, 0, 0, 3850, 3851, 3853, 0, 0, 0, 0, 3859, 0, 3860, 3862, 0, 0, 0, 0, 0, 3863, 0, 0, 0, 0, 0, 0, 0, 0, 3873, 0, 3874, 0, 3875, 3886, 0, 3887, 0, 0, 0, 0, 3892, 3913, 0, 3914, 0, 0, 0, 3925, 3931, 0, 0, 0, 0, 3934, 3941, 3942, 0, 0, 0, 0, 3943, 0, 0, 0, 3944, 0, 0, 0, 0, 0, 3945, 0, 3947, 0, 0, 0, 3956, 3957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3958, 0, 3959, 3965, 0, 0, 0, 0, 3966, 0, 0, 0, 3967, 0, 0, 0, 3968, 3974, 0, 0, 0, 0, 0, 3975, 3977, 3978, 0, 0, 0, 0, 3980, 0, 3985, 0, 0, 0, 0, 0, 0, 0, 0, 3986, 4011, 0, 0, 4017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4018, 0, 0, 0, 0, 4019, 0, 4023, 0, 0, 0, 4027, 4028, 0, 0, 0, 0, 0, 0, 0, 0, 4031, 4034, 0, 0, 4035, 4037, 4039, 4040, 0, 0, 0, 0, 0, 4059, 0, 4060, 4061, 0, 4062, 4063, 4066, 0, 0, 4072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4088, 0, 0, 0, 0, 0, 4091, 0, 0, 0, 0, 4094, 4095, 0, 0, 4096, 0, 0, 0, 0, 0, 4098, 4099, 0, 0, 0, 4101, 0, 4104, 0, 0, 0, 4105, 4108, 0, 4113, 0, 0, 4115, 4116, 0, 4126, 0, 0, 4127, 0, 0, 0, 0, 0, 0, 0, 4128, 4132, 4133, 0, 4134, 0, 0, 0, 4137, 0, 0, 4141, 0, 0, 0, 0, 4144, 4146, 4147, 0, 0, 0, 0, 4148, 0, 0, 4311, 0, 0, 0, 4314, 4329, 0, 4331, 4332, 0, 4333, 0, 4334, 0, 0, 0, 4335, 0, 4336, 0, 0, 0, 4337, 0, 0, 0, 4342, 4345, 4346, 4350, 0, 4351, 4352, 0, 4354, 4355, 0, 0, 4364, 0, 0, 0, 0, 4369, 0, 0, 0, 4373, 0, 4374, 0, 0, 0, 0, 4377, 0, 0, 0, 0, 4378, 0, 0, 0, 4380, 0, 0, 0, 4381, 4382, 0, 0, 0, 0, 0, 0, 0, 4384, 0, 0, 0, 0, 4385, 0, 0, 0, 4386, 0, 0, 0, 4391, 4398, 0, 0, 0, 0, 4407, 4409, 0, 0, 0, 0, 4410, 0, 0, 4411, 0, 4414, 4415, 4418, 0, 4427, 4428, 4430, 0, 4431, 0, 4448, 0, 0, 0, 0, 0, 4449, 0, 0, 0, 4451, 4452, 0, 4453, 4454, 0, 4456, 0, 0, 0, 0, 0, 0, 0, 4459, 0, 4463, 0, 0, 0, 0, 0, 4466, 0, 4467, 0, 4469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4470, 4471, 0, 4473, 0, 0, 4475, 0, 0, 0, 0, 4477, 4478, 0, 0, 0, 4479, 4481, 0, 4482, 0, 4484, 0, 0, 0, 0, 0, 0, 0, 4486, 0, 0, 4488, 0, 0, 4497, 0, 4508, 0, 0, 4510, 4511, 0, 4520, 4523, 0, 4524, 0, 4525, 0, 4527, 0, 0, 4528, 0, 0, 0, 0, 4530, 0, 4531, 0, 0, 4532, 0, 0, 0, 4533, 0, 0, 0, 0, 0, 4535, 0, 0, 0, 4536, 0, 0, 0, 0, 0, 4541, 4543, 4544, 4545, 4547, 0, 4548, 0, 0, 0, 0, 4550, 4551, 0, 4553, 0, 0, 0, 0, 4562, 0, 0, 4571, 0, 0, 0, 4574, 0, 0, 0, 4575, 0, 4576, 0, 4577, 0, 0, 0, 4581, 0, 0, 0, 0, 0, 4582, 0, 0, 4586, 0, 0, 0, 4588, 0, 0, 4597, 0, 4598, 0, 0, 0, 0, 4616, 4617, 0, 4618, 0, 0, 0, 0, 4619, 0, 4620, 0, 0, 4621, 0, 4624, 0, 0, 0, 0, 0, 4625, 0, 0, 0, 0, 4657, 0, 4659, 0, 4667, 0, 0, 0, 4668, 4670, 0, 4672, 0, 0, 0, 0, 0, 4673, 4676, 0, 0, 0, 0, 4687, 0, 0, 0, 0, 4697, 0, 0, 0, 0, 4699, 0, 4701, 0, 0, 0, 0, 4702, 0, 0, 4706, 0, 0, 4713, 0, 0, 0, 4714, 4715, 4716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4717, 0, 0, 4720, 0, 4721, 4729, 4735, 0, 0, 0, 4737, 0, 0, 0, 4739, 0, 0, 0, 4740, 0, 0, 0, 4741, 0, 0, 0, 0, 0, 4742, 0, 4745, 4746, 4747, 0, 0, 0, 0, 0, 0, 0, 0, 4748, 0, 0, 0, 4749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4751, 4786, 0, 4787, 0, 4788, 4796, 0, 0, 4797, 4798, 0, 4799, 4806, 4807, 0, 0, 0, 0, 4809, 4810, 0, 0, 0, 0, 0, 0, 4811, 0, 0, 0, 0, 0, 4812, 0, 4813, 0, 0, 4815, 0, 4821, 4822, 0, 0, 0, 0, 4823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4824, 0, 0, 0, 0, 4826, 0, 0, 0, 4828, 0, 4829, 0, 0, 0, 4843, 0, 0, 4847, 0, 4853, 4855, 4858, 0, 0, 0, 0, 0, 4859, 0, 4864, 0, 0, 4879, 0, 0, 0, 0, 4880, 0, 0, 0, 0, 4881, 0, 4882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4883, 0, 0, 0, 0, 4884, 0, 0, 0, 0, 0, 4886, 4887, 4888, 4894, 4896, 0, 4902, 0, 0, 4905, 0, 0, 4915, 0, 0, 0, 0, 0, 0, 0, 4916, 4917, 4919, 4921, 0, 0, 0, 0, 0, 4926, 0, 0, 0, 0, 4927, 0, 0, 0, 0, 0, 0, 0, 0, 4929, 0, 4930, 4931, 0, 4938, 0, 4952, 0, 4953, 4957, 4960, 4964, 0, 0, 0, 0, 0, 0, 0, 5019, 5020, 5022, 0, 0, 0, 0, 0, 5023, 0, 0, 0, 5024, 0, 0, 0, 5025, 0, 0, 0, 0, 5028, 0, 0, 0, 0, 5029, 5030, 5031, 0, 5033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5034, 5035, 0, 5036, 0, 0, 5037, 0, 0, 0, 0, 5038, 0, 0, 5039, 0, 0, 0, 5041, 5042, 0, 0, 0, 0, 5044, 5049, 5054, 0, 5055, 0, 5057, 0, 0, 0, 5060, 0, 0, 0, 0, 0, 5063, 0, 5064, 5065, 0, 5067, 0, 0, 0, 5068, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5076, 0, 0, 0, 0, 0, 0, 0, 5077, 0, 0, 5078, 5080, 0, 0, 5083, 0, 0, 0, 0, 0, 0, 0, 0, 5085, 0, 0, 0, 0, 0, 0, 5098, 5099, 5101, 5105, 5107, 0, 5108, 0, 5109, 0, 0, 0, 0, 0, 0, 0, 5110, 0, 0, 0, 0, 0, 5117, 5118, 0, 5121, 0, 5122, 0, 0, 5130, 0, 0, 0, 5137, 0, 0, 0, 5148, 0, 0, 0, 0, 0, 0, 0, 5151, 5154, 0, 0, 0, 5155, 0, 0, 5156, 5159, 5161, 0, 0, 0, 0, 5162, 0, 0, 0, 0, 5163, 5164, 0, 5166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5167, 0, 0, 0, 5172, 0, 0, 0, 0, 0, 0, 5178, 5179, 0, 0, 5190, 0, 0, 5191, 5192, 5194, 0, 0, 5198, 5201, 0, 0, 0, 0, 0, 5203, 0, 5206, 5209, 0, 0, 0, 0, 0, 0, 5213, 0, 5214, 5216, 0, 0, 0, 0, 0, 5217, 0, 0, 0, 0, 0, 0, 0, 0, 5218, 5219, 0, 5231, 0, 0, 5244, 5249, 0, 5254, 0, 5255, 0, 0, 5257, 0, 0, 0, 0, 0, 5258, 0, 5260, 5270, 0, 5277, 0, 0, 0, 0, 0, 0, 5280, 5281, 5282, 5283, 0, 0, 0, 0, 0, 5284, 0, 5285, 0, 0, 0, 0, 0, 5287, 5288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5289, 5291, 0, 0, 5294, 0, 0, 5295, 0, 0, 0, 0, 0, 0, 0, 5304, 0, 0, 5306, 5307, 5308, 0, 5309, 0, 0, 5310, 0, 0, 0, 0, 5311, 5312, 0, 5313, 0, 0, 0, 0, 0, 5316, 0, 0, 0, 5317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5325, 0, 0, 0, 0, 0, 0, 5326, 0, 5327, 5329, 0, 5332, 0, 0, 0, 0, 5338, 0, 0, 0, 0, 0, 0, 0, 0, 5340, 0, 0, 5341, 0, 0, 0, 5342, 0, 5343, 5344, 0, 0, 5345, 0, 0, 0, 0, 0, 0, 5347, 5348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5349, 0, 5350, 0, 5354, 0, 0, 0, 0, 5358, 0, 0, 5359, 0, 0, 5361, 0, 0, 5365, 0, 5367, 0, 5373, 0, 0, 0, 5379, 0, 0, 0, 5380, 0, 0, 0, 5382, 0, 5384, 0, 0, 0, 0, 0, 0, 5385, 0, 0, 0, 0, 5387, 0, 0, 0, 0, 0, 0, 5388, 5390, 5393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5396, 0, 0, 0, 0, 5397, 5402, 0, 0, 0, 0, 0, 5403, 0, 0, 0, 5404, 5405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5406, 0, 0, 0, 0, 5410, 0, 0, 5411, 0, 5415, 0, 0, 0, 0, 5416, 5434, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5438, 0, 5440, 0, 0, 0, 0, 0, 0, 5441, 5442, 0, 0, 0, 5443, 5444, 5447, 0, 0, 5448, 5449, 5451, 0, 0, 0, 5456, 5457, 0, 0, 0, 5459, 0, 0, 0, 5461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5464, 0, 5466, 0, 0, 5467, 0, 5470, 0, 0, 5473, 0, 0, 5474, 0, 0, 5476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5477, 0, 0, 0, 0, 0, 0, 0, 5484, 0, 0, 5485, 5486, 0, 0, 0, 0, 0, 5488, 0, 0, 0, 0, 0, 0, 0, 5489, 0, 0, 0, 0, 0, 5507, 0, 0, 0, 5510, 0, 5511, 0, 0, 5512, 0, 0, 0, 5513, 0, 5515, 0, 0, 5516, 5517, 0, 5518, 0, 0, 5522, 0, 0, 0, 0, 0, 5534, 5535, 0, 0, 5536, 0, 5538, 0, 0, 5543, 0, 5544, 0, 0, 5545, 0, 5547, 0, 5557, 0, 0, 5558, 0, 5560, 5567, 0, 0, 0, 0, 5568, 0, 0, 0, 5571, 5573, 0, 5574, 0, 5575, 0, 0, 0, 0, 5577, 0, 0, 5598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5600, 5609, 0, 0, 0, 0, 5610, 0, 0, 5612, 0, 5624, 0, 5625, 0, 0, 0, 5629, 0, 5641, 0, 5642, 5643, 0, 0, 0, 0, 0, 0, 5651, 0, 0, 0, 5652, 5653, 0, 5661, 5662, 5678, 0, 5679, 0, 0, 0, 0, 5685, 5686, 0, 0, 0, 0, 0, 5690, 5692, 0, 5703, 0, 0, 0, 0, 0, 5706, 0, 0, 0, 0, 5707, 0, 0, 0, 0, 0, 0, 5708, 0, 0, 5709, 0, 5710, 0, 0, 0, 5712, 0, 5733, 0, 5734, 5735, 0, 0, 5744, 5751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5752, 0, 5754, 0, 0, 0, 0, 0, 0, 5757, 5758, 0, 5760, 5761, 0, 0, 0, 0, 5763, 5764, 5765, 0, 5766, 0, 5767, 5768, 0, 5770, 0, 0, 0, 0, 5776, 5780, 0, 0, 0, 0, 5782, 0, 0, 0, 0, 5784, 0, 0, 5788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5797, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5799, 0, 0, 5801, 0, 0, 0, 5811, 0, 0, 0, 0, 0, 0, 5816, 0, 0, 5827, 0, 0, 0, 0, 0, 0, 0, 0, 5830, 5831, 0, 0, 5832, 0, 0, 5833, 0, 5835, 5844, 5845, 0, 5846, 0, 0, 0, 0, 0, 5850, 0, 0, 0, 0, 0, 5852, 0, 5855, 5857, 0, 0, 5859, 0, 5861, 0, 0, 5863, 0, 5865, 0, 0, 0, 5873, 5875, 0, 0, 0, 5877, 0, 5879, 0, 0, 0, 5888, 0, 0, 5889, 5891, 0, 5894, 0, 0, 0, 0, 0, 0, 5895, 0, 5897, 0, 0, 0, 0, 0, 0, 5907, 0, 5911, 0, 0, 5912, 0, 5913, 5922, 5924, 0, 5927, 5928, 0, 0, 0, 0, 5929, 5930, 0, 5933, 0, 0, 0, 0, 5949, 0, 0, 5951, 0, 0, 0, 0, 0, 0, 0, 0, 5953, 0, 0, 5954, 0, 5959, 5960, 5961, 0, 5964, 0, 0, 0, 5976, 5978, 5987, 5990, 0, 0, 0, 0, 0, 5991, 0, 5992, 0, 0, 0, 5994, 5995, 0, 0, 5996, 0, 0, 6001, 6003, 0, 0, 0, 0, 6007, 0, 0, 0, 0, 0, 6008, 0, 0, 6009, 0, 6010, 0, 0, 0, 6011, 6015, 0, 6017, 0, 6019, 0, 6023, 0, 0, 0, 0, 0, 0, 0, 6025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6026, 0, 6030, 0, 0, 6032, 0, 0, 0, 6033, 6038, 6040, 0, 0, 0, 6041, 6045, 0, 0, 6046, 0, 0, 6053, 0, 0, 6054, 0, 6055, 0, 0, 0, 0, 0, 0, 6057, 0, 6063, 0, 0, 0, 6064, 0, 6066, 6071, 6072, 0, 0, 0, 0, 0, 0, 6075, 6076, 0, 0, 6077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6078, 6079, 0, 0, 0, 0, 0, 0, 0, 0, 6080, 0, 6083, 0, 0, 0, 0, 0, 6084, 0, 0, 6088, 0, 6089, 0, 0, 6093, 6105, 0, 0, 6107, 0, 6110, 0, 0, 0, 6111, 6125, 6126, 0, 0, 0, 6129, 0, 0, 0, 0, 6130, 0, 0, 0, 6131, 6134, 0, 0, 0, 0, 0, 0, 6142, 0, 0, 0, 0, 0, 6144, 0, 0, 6146, 6151, 6153, 0, 6156, 0, 6163, 0, 6180, 6181, 0, 0, 0, 0, 0, 6182, 0, 0, 0, 0, 6184, 6195, 0, 0, 6206, 0, 6208, 0, 0, 6212, 6213, 6214, 0, 6215, 0, 0, 0, 6228, 0, 0, 0, 6234, 0, 0, 0, 0, 0, 0, 6235, 6240, 0, 6242, 6243, 6244, 0, 6250, 6255, 0, 0, 0, 0, 0, 6257, 0, 0, 0, 6258, 6278, 0, 6284, 0, 0, 0, 6285, 0, 0, 0, 0, 0, 0, 0, 0, 6286, 0, 0, 0, 6320, 0, 0, 6322, 6332, 0, 0, 0, 0, 0, 0, 0, 0, 6334, 0, 0, 0, 0, 0, 0, 0, 6335, 0, 0, 6337, 0, 6338, 0, 6339, 6340, 0, 0, 6356, 6357, 6369, 0, 0, 0, 6370, 6371, 6372, 0, 6373, 0, 0, 0, 0, 0, 6376, 0, 0, 0, 0, 0, 6382, 6383, 6384, 0, 0, 0, 0, 6386, 0, 6389, 6397, 6400, 6411, 0, 6414, 0, 0, 0, 0, 0, 0, 0, 6415, 6416, 0, 0, 0, 0, 0, 0, 6417, 0, 0, 0, 0, 6418, 0, 0, 0, 0, 0, 0, 0, 6420, 0, 6421, 6423, 6425, 0, 6429, 6430, 0, 6433, 6438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6439, 6440, 0, 0, 6441, 0, 0, 6444, 0, 0, 0, 0, 6446, 0, 0, 0, 0, 6447, 6448, 0, 0, 6450, 0, 0, 0, 6454, 0, 0, 6455, 0, 6461, 0, 0, 0, 0, 0, 0, 6462, 0, 0, 6463, 0, 6464, 0, 6465, 6467, 0, 0, 0, 6468, 0, 6479, 6480, 0, 0, 0, 0, 0, 0, 0, 6481, 0, 0, 6485, 6487, 0, 0, 0, 0, 0, 0, 6493, 0, 0, 0, 0, 0, 0, 0, 0, 6494, 6495, 6496, 0, 0, 0, 0, 0, 6498, 0, 0, 0, 6507, 6508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6511, 6512, 0, 0, 0, 0, 6513, 0, 0, 0, 6514, 0, 0, 0, 0, 0, 6516, 0, 0, 6517, 6518, 0, 0, 0, 6519, 6520, 6521, 0, 6523, 0, 0, 0, 0, 6524, 6528, 0, 6530, 0, 0, 6532, 0, 6578, 0, 0, 0, 6583, 0, 6584, 0, 0, 0, 6587, 0, 0, 0, 6590, 0, 6591, 0, 0, 0, 0, 0, 6592, 0, 0, 0, 0, 6593, 6594, 0, 0, 0, 0, 0, 6599, 6600, 0, 0, 6601, 6602, 6604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6608, 0, 0, 0, 0, 0, 0, 0, 0, 6610, 6611, 0, 6615, 0, 6616, 6618, 6620, 0, 6637, 0, 0, 0, 0, 6639, 0, 0, 0, 0, 6641, 0, 6642, 0, 0, 0, 6647, 0, 6660, 6663, 0, 6664, 0, 6666, 6669, 0, 6675, 6676, 6677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6678, 0, 0, 0, 6679, 0, 6680, 0, 0, 0, 0, 0, 0, 0, 6693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6704, 6705, 6706, 0, 0, 6711, 6713, 0, 0, 0, 0, 0, 6716, 0, 0, 0, 6717, 0, 6719, 6724, 0, 0, 0, 0, 0, 0, 0, 0, 6725, 6726, 0, 0, 0, 0, 0, 6728, 6729, 6735, 0, 6737, 6742, 0, 0, 6743, 6750, 0, 6751, 0, 0, 6752, 6753, 0, 0, 0, 0, 0, 0, 6754, 0, 0, 0, 0, 0, 6756, 0, 0, 0, 0, 0, 0, 6763, 0, 0, 6764, 6765, 0, 0, 0, 6770, 0, 0, 0, 6776, 6780, 0, 6781, 0, 0, 0, 6783, 0, 6784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6785, 0, 0, 0, 6792, 0, 0, 0, 6793, 0, 0, 6802, 0, 0, 0, 0, 0, 6803, 0, 0, 0, 6804, 0, 0, 0, 6812, 0, 0, 6823, 0, 6824, 6839, 0, 0, 0, 0, 6852, 0, 0, 6854, 0, 6856, 6857, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6867, 0, 6868, 6870, 6872, 0, 0, 0, 6873, 6874, 0, 0, 0, 0, 0, 6875, 0, 0, 6877, 0, 0, 0, 0, 0, 0, 0, 6878, 0, 0, 0, 6879, 0, 6880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6887, 0, 6888, 6891, 6893, 0, 6895, 0, 0, 0, 0, 0, 0, 0, 0, 6899, 0, 0, 0, 0, 6901, 0, 0, 0, 0, 6910, 0, 6911, 0, 0, 6912, 0, 0, 6913, 6914, 0, 0, 0, 6915, 0, 0, 0, 6916, 6919, 0, 0, 0, 0, 0, 0, 6924, 0, 6925, 0, 0, 0, 6926, 6927, 6928, 0, 6929, 0, 6930, 0, 0, 6931, 6935, 0, 6936, 0, 0, 0, 0, 6939, 6940, 6941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6942, 6948, 6949, 0, 0, 0, 0, 0, 0, 0, 6952, 6954, 6963, 6965, 6966, 0, 0, 6967, 6968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6969, 0, 0, 6970, 6979, 0, 0, 6980, 0, 0, 6983, 0, 0, 0, 0, 0, 6984, 0, 0, 0, 0, 0, 0, 0, 6988, 6990, 6992, 0, 0, 0, 0, 0, 0, 0, 6995, 0, 0, 0, 7012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7019, 0, 0, 0, 0, 0, 0, 0, 0, 7021, 0, 0, 7022, 7023, 7028, 0, 7030, 7033, 0, 0, 0, 0, 0, 0, 7038, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7039, 0, 0, 0, 0, 0, 7046, 0, 7047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7048, 7052, 0, 0, 0, 0, 0, 7054, 0, 7060, 0, 0, 0, 0, 7061, 0, 7065, 0, 0, 0, 0, 7067, 7069, 0, 7070, 7071, 7072, 0, 0, 7078, 0, 7080, 7081, 0, 7083, 0, 0, 0, 7084, 7087, 7088, 0, 0, 7090, 0, 7093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7107, 0, 0, 7108, 0, 0, 0, 0, 0, 0, 0, 0, 7110, 0, 7114, 0, 0, 0, 0, 0, 0, 0, 7115, 0, 7116, 0, 0, 0, 0, 0, 7117, 0, 0, 7118, 0, 0, 7124, 0, 7125, 0, 0, 7126, 0, 0, 0, 0, 7128, 0, 0, 0, 0, 0, 7129, 0, 7130, 0, 7132, 7133, 0, 0, 7134, 0, 0, 7139, 0, 7148, 7150, 0, 0, 0, 0, 7152, 0, 0, 0, 7153, 7156, 7157, 0, 0, 0, 0, 0, 7158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7163, 7165, 7169, 0, 7171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7172, 0, 7173, 7181, 0, 0, 0, 0, 0, 7182, 7185, 0, 0, 0, 0, 7187, 0, 7201, 7204, 0, 0, 0, 0, 0, 7206, 7207, 0, 0, 0, 0, 7211, 7216, 0, 7218, 0, 0, 0, 0, 7226, 7228, 7230, 7232, 7233, 7235, 7237, 0, 0, 0, 0, 7238, 7241, 0, 7242, 0, 0, 7247, 0, 0, 0, 7266, 0, 0, 0, 0, 0, 0, 0, 7289, 0, 0, 7290, 7291, 0, 0, 7292, 0, 7297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7300, 0, 7301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7302, 0, 0, 0, 0, 7305, 0, 0, 0, 0, 7307, 0, 7308, 0, 7310, 0, 7335, 0, 0, 0, 0, 0, 0, 0, 7337, 0, 7343, 7347, 0, 0, 0, 0, 0, 7348, 0, 7349, 7350, 7352, 7354, 0, 0, 0, 0, 7357, 0, 7358, 7366, 0, 7367, 7368, 0, 0, 7373, 0, 0, 0, 7374, 0, 0, 0, 0, 0, 0, 0, 7376, 0, 0, 0, 7377, 0, 0, 0, 0, 0, 7378, 0, 7379, 7380, 0, 0, 0, 0, 0, 7383, 0, 0, 7386, 0, 0, 0, 0, 7398, 0, 0, 0, 7399, 7400, 0, 7401, 0, 0, 0, 0, 0, 0, 0, 7402, 0, 0, 0, 0, 0, 7405, 0, 0, 0, 0, 0, 7406, 0, 0, 0, 0, 0, 0, 0, 0, 7421, 7427, 7429, 0, 0, 0, 7435, 0, 0, 7436, 0, 0, 0, 7437, 0, 0, 0, 0, 0, 0, 7438, 7443, 0, 7446, 0, 7448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7456, 0, 0, 0, 0, 0, 7457, 0, 0, 7461, 0, 0, 0, 0, 0, 7462, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7463, 7466, 7472, 0, 7476, 0, 0, 7490, 0, 7491, 0, 0, 7493, 0, 0, 0, 7498, 7499, 0, 0, 7508, 0, 0, 0, 0, 0, 7512, 0, 0, 0, 7513, 7514, 7516, 0, 0, 0, 0, 7518, 0, 0, 7519, 7521, 7522, 0, 0, 0, 7526, 0, 0, 7529, 0, 0, 7531, 0, 7536, 0, 7538, 0, 7539, 0, 0, 7541, 7542, 7546, 0, 0, 0, 0, 0, 7547, 0, 7548, 0, 0, 0, 0, 0, 7550, 0, 0, 7552, 7553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7554, 7563, 0, 7573, 0, 0, 0, 0, 0, 0, 7574, 7576, 0, 7578, 7581, 7583, 0, 0, 0, 7584, 0, 7587, 0, 0, 0, 0, 0, 7589, 0, 0, 0, 7594, 0, 0, 7595, 0, 0, 7600, 7602, 7610, 0, 0, 0, 0, 0, 7612, 0, 7613, 7614, 0, 0, 7615, 0, 0, 7616, 0, 7620, 0, 7621, 7622, 0, 7623, 0, 0, 0, 0, 7626, 0, 0, 0, 0, 7627, 7629, 7631, 0, 0, 7633, 0, 0, 0, 0, 0, 7639, 0, 7640, 7642, 0, 0, 7643, 0, 0, 0, 0, 7644, 0, 0, 0, 0, 0, 0, 0, 7645, 0, 0, 0, 0, 0, 7661, 7662, 7663, 7665, 0, 7666, 0, 7667, 0, 7684, 7688, 7690, 0, 7691, 0, 0, 0, 0, 0, 0, 7692, 0, 0, 7700, 0, 7707, 0, 7708, 0, 7709, 0, 7721, 0, 0, 0, 7722, 0, 7724, 0, 0, 0, 0, 0, 0, 7729, 7731, 0, 7732, 0, 7733, 7735, 0, 0, 0, 0, 0, 0, 0, 7739, 0, 0, 7741, 7745, 0, 7748, 0, 0, 0, 7751, 0, 0, 0, 7752, 0, 0, 0, 0, 0, 0, 0, 7753, 0, 0, 7756, 0, 7757, 0, 7759, 0, 7760, 0, 0, 0, 0, 7761, 7768, 0, 0, 7769, 0, 0, 7770, 0, 0, 7771, 0, 0, 7772, 0, 0, 7773, 0, 0, 0, 0, 0, 7778, 7783, 0, 0, 0, 0, 0, 7784, 7785, 0, 7790, 0, 0, 0, 0, 7792, 0, 7798, 0, 0, 0, 0, 0, 7799, 0, 7810, 0, 0, 7813, 0, 7814, 0, 7816, 0, 7818, 7824, 7825, 7826, 0, 7828, 7830, 0, 0, 0, 7840, 0, 7842, 0, 7843, 0, 0, 0, 0, 7844, 0, 0, 0, 0, 0, 0, 0, 7846, 0, 0, 0, 0, 0, 7856, 7857, 7858, 7862, 0, 7865, 0, 0, 7866, 0, 0, 7913, 0, 0, 0, 0, 7914, 0, 0, 7915, 7917, 7918, 7919, 0, 7920, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7921, 7922, 0, 7924, 0, 0, 7925, 0, 0, 7927, 0, 7930, 7935, 0, 0, 7937, 0, 0, 0, 0, 0, 0, 7939, 0, 7940, 0, 0, 0, 0, 0, 7941, 0, 0, 0, 0, 7945, 0, 0, 0, 0, 7949, 0, 0, 0, 0, 0, 0, 0, 0, 7950, 0, 7953, 0, 0, 0, 0, 0, 0, 0, 7968, 0, 0, 0, 0, 7969, 7972, 7992, 0, 7993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7994, 0, 0, 0, 0, 8007, 8008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8010, 0, 0, 0, 8012, 0, 0, 0, 0, 0, 0, 0, 0, 8018, 0, 8028, 8029, 0, 0, 8030, 0, 0, 8032, 8033, 0, 0, 8034, 8036, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8037, 0, 0, 0, 8043, 8052, 8059, 8060, 0, 0, 8061, 0, 0, 0, 8062, 0, 8063, 0, 8064, 0, 8066, 8068, 0, 0, 0, 8080, 8081, 0, 8089, 0, 0, 0, 0, 0, 8092, 0, 0, 0, 0, 0, 0, 8093, 8110, 0, 0, 0, 0, 0, 0, 0, 8111, 0, 0, 0, 0, 0, 8112, 8115, 0, 8117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8120, 8121, 8122, 8128, 8129, 8130, 8131, 0, 0, 8139, 0, 0, 8144, 0, 0, 0, 0, 8145, 8146, 8153, 0, 0, 0, 0, 0, 0, 0, 0, 8154, 0, 8157, 8160, 8162, 0, 8164, 8165, 0, 0, 0, 0, 8166, 8167, 0, 0, 8179, 0, 0, 0, 8185, 0, 0, 0, 8186, 0, 0, 8187, 0, 0, 0, 8188, 0, 0, 0, 0, 0, 8204, 0, 0, 0, 0, 8210, 0, 0, 0, 0, 0, 8213, 0, 8214, 0, 0, 8215, 0, 0, 0, 0, 0, 0, 8218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8219, 0, 8221, 0, 0, 8222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8225, 0, 0, 0, 8233, 0, 0, 8242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8247, 0, 8248, 8252, 0, 8256, 8257, 0, 0, 8261, 0, 8264, 8265, 0, 0, 0, 0, 8267, 0, 0, 0, 8269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8270, 0, 0, 0, 8278, 0, 8279, 8283, 0, 0, 8285, 8286, 8289, 8292, 0, 0, 0, 0, 8293, 8295, 8299, 8300, 8301, 0, 0, 0, 0, 0, 0, 8304, 8307, 0, 0, 0, 0, 0, 0, 0, 8321, 0, 0, 0, 8322, 8323, 8325, 8326, 8327, 0, 0, 8332, 8338, 0, 0, 8340, 0, 0, 0, 0, 0, 8350, 0, 0, 8351, 0, 8354, 8355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8360, 8372, 0, 0, 0, 0, 0, 0, 0, 0, 8377, 0, 0, 0, 0, 8380, 0, 0, 0, 8383, 0, 8384, 0, 0, 0, 0, 8386, 8392, 0, 0, 8394, 0, 0, 0, 0, 0, 0, 0, 8396, 8397, 0, 8398, 0, 8399, 0, 0, 0, 0, 0, 8400, 0, 8401, 8410, 8411, 0, 8412, 8413, 8422, 0, 0, 0, 0, 8423, 0, 0, 0, 0, 8424, 0, 0, 8425, 0, 0, 0, 0, 0, 0, 0, 8441, 8442, 0, 0, 0, 0, 0, 0, 8443, 0, 0, 8444, 0, 8447, 0, 0, 0, 0, 8451, 0, 8458, 0, 8462, 0, 0, 8468, 0, 8469, 0, 0, 0, 8470, 0, 8473, 8479, 8480, 0, 0, 0, 0, 8481, 8483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, 0, 0, 8490, 0, 0, 0, 0, 0, 0, 8491, 8493, 8494, 0, 8528, 0, 0, 0, 0, 0, 0, 0, 8530, 0, 0, 0, 0, 0, 0, 0, 0, 8534, 8538, 8540, 0, 0, 8541, 0, 0, 8545, 0, 8557, 0, 0, 8569, 8570, 0, 0, 8571, 8574, 8575, 8579, 0, 8583, 0, 0, 0, 0, 8591, 0, 0, 0, 0, 0, 0, 0, 0, 8606, 0, 8607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8608, 0, 0, 8609, 0, 0, 0, 8610, 0, 0, 0, 8611, 0, 0, 8613, 8617, 8621, 0, 0, 8622, 0, 8623, 0, 8624, 8625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8637, 8638, 8639, 8650, 0, 0, 0, 0, 8652, 8654, 8655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8656, 0, 0, 0, 0, 0, 8657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8658, 0, 0, 8659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8660, 0, 0, 0, 0, 0, 0, 8661, 8663, 8664, 0, 0, 0, 0, 8665, 0, 8669, 0, 0, 0, 0, 0, 0, 0, 8671, 8674, 0, 8684, 0, 8686, 0, 0, 0, 8689, 0, 0, 0, 8690, 0, 8706, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8710, 0, 8711, 8713, 8714, 8724, 8727, 8728, 8733, 8736, 0, 8737, 8739, 0, 0, 0, 0, 8742, 8743, 8745, 8754, 0, 0, 0, 0, 8756, 0, 0, 0, 0, 0, 0, 8757, 8760, 0, 0, 0, 0, 0, 8762, 8763, 8764, 0, 8766, 8769, 8770, 8773, 0, 8774, 0, 8779, 0, 0, 0, 0, 8780, 0, 0, 8781, 0, 0, 8783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8784, 0, 0, 0, 0, 0, 0, 0, 0, 8785, 0, 0, 0, 0, 8786, 0, 0, 0, 0, 8788, 8790, 0, 0, 0, 8803, 0, 8813, 8814, 0, 0, 0, 0, 0, 8815, 8816, 0, 0, 0, 0, 8818, 0, 0, 0, 0, 8822, 8828, 8829, 0, 8831, 0, 0, 0, 0, 8833, 0, 0, 0, 8834, 0, 0, 0, 8835, 0, 8836, 0, 0, 0, 8837, 0, 0, 0, 0, 0, 0, 8838, 8839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8840, 0, 0, 0, 8841, 0, 8842, 0, 0, 0, 8846, 0, 0, 0, 0, 0, 0, 0, 8847, 0, 8848, 0, 0, 8864, 0, 0, 8866, 0, 0, 8870, 8872, 0, 0, 8873, 8874, 0, 0, 0, 0, 0, 0, 8875, 0, 8876, 0, 0, 0, 0, 8896, 8900, 0, 0, 0, 0, 8901, 0, 0, 0, 0, 0, 8904, 0, 8907, 0, 0, 0, 0, 8911, 8912, 8913, 0, 0, 0, 8914, 0, 8915, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8916, 0, 0, 0, 8929, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8930, 0, 8932, 0, 8943, 0, 0, 0, 8945, 8947, 0, 0, 0, 0, 8949, 0, 8950, 0, 8954, 8957, 0, 0, 8970, 0, 0, 0, 0, 8971, 0, 8996, 0, 0, 0, 0, 8997, 9000, 0, 0, 0, 0, 9001, 9002, 0, 9004, 9009, 9024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9027, 9082, 0, 0, 9083, 9089, 0, 0, 0, 0, 0, 0, 9090, 0, 0, 0, 9092, 0, 0, 9093, 0, 9095, 0, 0, 9096, 9097, 9101, 9102, 0, 0, 0, 0, 0, 0, 0, 0, 9112, 0, 0, 0, 0, 0, 0, 9114, 0, 0, 9120, 0, 9121, 9122, 0, 0, 0, 9123, 9124, 0, 0, 9125, 0, 0, 9126, 0, 9127, 0, 0, 9129, 9131, 0, 0, 0, 9132, 0, 0, 9136, 0, 9144, 0, 0, 9148, 0, 0, 0, 0, 0, 0, 9149, 0, 9152, 9163, 0, 0, 9165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9166, 0, 9169, 0, 0, 0, 0, 0, 0, 0, 9170, 0, 0, 0, 0, 9172, 0, 9174, 9175, 9176, 0, 9177, 0, 0, 0, 0, 0, 0, 0, 0, 9186, 0, 9187, 0, 0, 0, 9188, 9189, 0, 0, 9190, 0, 0, 0, 0, 9191, 0, 0, 0, 9193, 0, 0, 0, 0, 9197, 9198, 0, 0, 0, 9208, 9211, 0, 0, 0, 0, 9216, 9217, 0, 9220, 0, 0, 0, 0, 9221, 9222, 9223, 0, 9224, 9225, 0, 0, 9227, 0, 9228, 9229, 0, 0, 9230, 0, 9232, 0, 9233, 0, 0, 0, 0, 0, 9234, 9235, 0, 0, 9237, 0, 0, 0, 0, 0, 0, 0, 0, 9238, 9240, 0, 0, 9241, 0, 0, 0, 0, 9244, 0, 0, 0, 0, 9247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9248, 0, 0, 0, 9249, 0, 0, 0, 0, 0, 9250, 0, 0, 0, 0, 9251, 0, 0, 9252, 9255, 0, 0, 0, 9256, 0, 0, 0, 0, 0, 0, 0, 9257, 0, 0, 9258, 0, 0, 0, 0, 0, 0, 9259, 0, 0, 0, 0, 0, 9262, 9263, 0, 0, 9265, 9266, 0, 0, 0, 0, 0, 0, 0, 0, 9268, 9271, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9273, 0, 0, 0, 9276, 9277, 9279, 0, 0, 0, 0, 0, 0, 0, 9280, 0, 0, 9293, 0, 0, 0, 0, 0, 9297, 9301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9308, 9309, 9313, 9321, 9322, 0, 9326, 9327, 0, 0, 9477, 0, 9479, 0, 0, 0, 0, 9482, 0, 0, 0, 9483, 0, 9484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9485, 0, 0, 9486, 0, 0, 0, 9489, 0, 0, 0, 0, 9490, 9491, 0, 0, 0, 0, 9493, 0, 9495, 9496, 0, 0, 0, 0, 0, 0, 0, 0, 9500, 0, 9502, 0, 0, 0, 0, 0, 9504, 9507, 0, 9509, 0, 9511, 0, 0, 9513, 0, 0, 0, 0, 0, 0, 0, 0, 9515, 0, 0, 0, 0, 0, 0, 9516, 9517, 0, 0, 0, 0, 9532, 0, 0, 9533, 0, 0, 9538, 0, 9539, 9540, 0, 0, 0, 0, 9541, 0, 0, 0, 9542, 0, 0, 0, 0, 0, 0, 0, 0, 9544, 9545, 0, 9546, 0, 0, 0, 0, 0, 0, 9547, 9548, 0, 0, 0, 9550, 0, 9557, 0, 9558, 0, 9561, 0, 9563, 9570, 0, 9572, 9574, 9575, 0, 0, 0, 9577, 9592, 0, 0, 9596, 0, 0, 0, 9598, 0, 9600, 0, 9601, 0, 0, 0, 0, 0, 0, 9608, 0, 9638, 9639, 0, 0, 0, 0, 0, 0, 0, 9641, 0, 0, 9643, 9644, 9645, 9646, 0, 0, 0, 9648, 0, 0, 0, 0, 0, 0, 0, 9650, 9654, 0, 0, 0, 0, 0, 0, 0, 0, 9655, 0, 0, 0, 0, 0, 9656, 0, 9657, 0, 0, 0, 0, 9658, 0, 0, 9659, 0, 0, 9664, 0, 0, 9665, 0, 9667, 9669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9671, 0, 9673, 9681, 0, 0, 0, 0, 9682, 9683, 9684, 0, 0, 0, 0, 9686, 9698, 0, 0, 9700, 9701, 9702, 0, 9703, 9717, 0, 0, 0, 0, 9718, 0, 9726, 0, 0, 0, 0, 9727, 0, 0, 0, 9728, 0, 9742, 0, 9744, 0, 0, 0, 9750, 0, 9754, 9755, 0, 0, 0, 0, 0, 9756, 0, 9757, 9768, 0, 9769, 0, 0, 0, 9770, 9771, 0, 9773, 0, 9774, 0, 9775, 0, 0, 0, 9776, 9777, 9784, 0, 0, 0, 9786, 0, 9789, 0, 0, 0, 0, 9793, 9794, 0, 0, 0, 9808, 0, 0, 0, 0, 0, 9811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9812, 0, 9820, 0, 9823, 0, 9828, 0, 0, 0, 0, 9830, 0, 0, 9833, 9836, 0, 0, 0, 9840, 0, 0, 0, 9841, 0, 0, 9842, 0, 9845, 0, 0, 0, 9847, 9848, 0, 0, 9855, 0, 0, 0, 0, 0, 0, 9856, 9863, 9865, 0, 0, 0, 0, 0, 0, 0, 0, 9866, 9867, 9868, 9873, 9875, 0, 0, 0, 0, 0, 0, 9880, 0, 9886, 0, 0, 0, 9887, 0, 0, 9891, 0, 0, 0, 0, 0, 0, 0, 9906, 9907, 9908, 0, 0, 0, 9909, 0, 0, 0, 0, 0, 0, 9910, 0, 0, 0, 0, 9913, 0, 0, 0, 0, 9914, 0, 0, 0, 0, 0, 9922, 0, 0, 0, 0, 9923, 9925, 0, 0, 0, 0, 0, 0, 9930, 0, 0, 0, 9931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9932, 0, 9939, 0, 0, 9940, 9962, 9966, 0, 9969, 9970, 0, 0, 9974, 0, 9979, 9981, 9982, 0, 0, 0, 9985, 0, 0, 0, 0, 0, 0, 9987, 0, 0, 0, 0, 0, 0, 0, 9988, 9993, 0, 0, 9994, 0, 0, 0, 9997, 0, 10004, 0, 0, 0, 0, 0, 10007, 10019, 10020, 10022, 0, 0, 0, 10031, 0, 0, 0, 0, 0, 10032, 0, 0, 10034, 0, 10036, 0, 0, 0, 0, 10038, 0, 10039, 10040, 10041, 10042, 0, 0, 0, 0, 0, 10043, 0, 0, 0, 0, 0, 10045, 10054, 0, 0, 0, 0, 10055, 0, 0, 10057, 10058, 0, 0, 0, 0, 0, 0, 10059, 0, 0, 0, 0, 0, 0, 0, 10060, 0, 0, 0, 0, 0, 0, 0, 10063, 0, 10066, 0, 0, 0, 10070, 0, 10072, 0, 0, 10076, 10077, 0, 0, 10084, 0, 10087, 10090, 10091, 0, 0, 0, 10094, 10097, 0, 0, 0, 0, 0, 0, 10098, 0, 0, 0, 0, 0, 0, 10103, 0, 10104, 0, 10108, 0, 0, 0, 0, 0, 0, 0, 0, 10120, 0, 0, 0, 10122, 0, 0, 10125, 0, 0, 0, 0, 10127, 10128, 0, 0, 10134, 0, 10135, 10136, 0, 10137, 0, 0, 10147, 0, 10149, 10150, 0, 0, 10156, 0, 10158, 10159, 10160, 10168, 0, 0, 10171, 0, 10173, 0, 0, 0, 10176, 0, 0, 0, 0, 10177, 0, 0, 0, 0, 10178, 0, 0, 0, 0, 10194, 0, 10202, 0, 0, 10203, 10204, 0, 10205, 10206, 0, 10207, 0, 0, 0, 0, 10209, 0, 0, 0, 0, 0, 0, 0, 10213, 0, 0, 0, 0, 0, 0, 10217, 0, 10229, 0, 10230, 10231, 0, 0, 10232, 0, 0, 10237, 10238, 10244, 0, 0, 0, 0, 0, 10250, 0, 10252, 0, 0, 0, 0, 0, 0, 10255, 0, 0, 10257, 0, 0, 0, 0, 0, 0, 10258, 0, 10259, 0, 0, 0, 0, 0, 0, 0, 0, 10260, 0, 0, 0, 0, 0, 0, 0, 10284, 10288, 10289, 0, 0, 0, 10290, 0, 10296, 0, 0, 0, 0, 0, 10297, 0, 0, 0, 0, 0, 0, 10298, 0, 0, 0, 0, 10299, 10303, 0, 0, 0, 0, 0, 10306, 0, 0, 0, 10307, 0, 10308, 0, 0, 0, 0, 10311, 0, 0, 0, 0, 0, 0, 0, 10315, 10317, 0, 0, 0, 10318, 10319, 0, 10321, 0, 10326, 0, 10328, 0, 0, 0, 0, 10329, 0, 0, 10331, 0, 10332, 0, 0, 0, 0, 0, 0, 10334, 0, 0, 10335, 10338, 0, 0, 0, 0, 0, 10339, 10349, 0, 0, 0, 0, 0, 0, 10351, 0, 10353, 0, 0, 0, 0, 0, 0, 10362, 0, 10368, 0, 10369, 0, 0, 0, 10372, 10373, 0, 0, 0, 0, 0, 10374, 0, 0, 0, 10375, 0, 10376, 0, 0, 10386, 10388, 10390, 0, 0, 0, 0, 0, 0, 0, 10391, 0, 0, 10392, 10394, 0, 0, 10396, 0, 10397, 0, 10403, 0, 0, 0, 0, 0, 0, 0, 0, 10404, 0, 10405, 10410, 0, 0, 10411, 0, 10412, 0, 0, 0, 0, 0, 0, 0, 10421, 10422, 10423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10425, 0, 0, 10427, 0, 0, 10430, 0, 0, 0, 0, 0, 10432, 0, 10433, 10434, 0, 0, 0, 0, 10436, 10437, 0, 10438, 0, 10439, 0, 10444, 10446, 0, 0, 0, 0, 0, 10448, 0, 0, 0, 0, 0, 10449, 0, 0, 0, 0, 0, 0, 0, 10451, 0, 10453, 0, 0, 0, 10454, 10457, 0, 0, 10459, 0, 10469, 0, 0, 0, 0, 0, 10472, 10481, 0, 0, 0, 0, 0, 10482, 10483, 0, 10492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10499, 0, 0, 0, 10502, 0, 0, 10510, 0, 10521, 10524, 0, 0, 10525, 10526, 10528, 0, 0, 0, 0, 0, 0, 0, 0, 10530, 0, 0, 0, 0, 10533, 0, 10534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10535, 10536, 0, 0, 10544, 0, 10553, 10556, 0, 10557, 10559, 0, 0, 0, 0, 0, 10562, 10563, 10564, 0, 10565, 0, 0, 0, 10566, 0, 10567, 0, 0, 0, 0, 10575, 0, 0, 10576, 0, 10578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10585, 10586, 10587, 10589, 0, 10590, 0, 0, 10594, 0, 0, 0, 0, 0, 10598, 0, 0, 10601, 0, 0, 0, 10602, 0, 10603, 0, 10604, 0, 10605, 0, 0, 10607, 0, 10626, 0, 10627, 0, 0, 0, 0, 0, 10629, 10630, 10631, 0, 0, 0, 10646, 0, 0, 0, 10647, 0, 10650, 0, 10651, 0, 0, 0, 10652, 10653, 10655, 0, 10658, 0, 0, 10659, 0, 10667, 0, 0, 0, 0, 10669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10670, 0, 0, 0, 10671, 0, 0, 0, 0, 10672, 10673, 0, 10674, 0, 0, 0, 10676, 0, 0, 0, 0, 0, 0, 10678, 0, 10682, 0, 0, 10692, 0, 10697, 0, 0, 0, 0, 10698, 0, 0, 0, 10700, 0, 0, 0, 0, 0, 10703, 0, 10704, 0, 0, 0, 0, 0, 0, 0, 10705, 0, 10715, 10718, 10720, 0, 0, 10722, 0, 0, 0, 0, 0, 0, 0, 0, 10723, 0, 0, 0, 0, 10726, 0, 0, 0, 0, 0, 10727, 10730, 10743, 0, 0, 0, 0, 0, 0, 10744, 0, 0, 10745, 0, 0, 0, 0, 0, 0, 10748, 0, 0, 0, 0, 10750, 0, 0, 10752, 10753, 0, 0, 0, 10756, 0, 0, 0, 0, 0, 0, 10758, 0, 0, 0, 10759, 0, 10769, 0, 0, 10772, 0, 0, 0, 0, 0, 0, 10773, 0, 0, 0, 10777, 0, 0, 10779, 0, 0, 0, 0, 0, 0, 0, 0, 10780, 10784, 0, 0, 0, 10789, 0, 0, 0, 10791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10795, 0, 0, 10796, 0, 10808, 0, 10809, 0, 0, 0, 10810, 0, 0, 0, 10812, 0, 0, 10814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10815, 0, 0, 0, 0, 10816, 10817, 0, 0, 0, 0, 10819, 0, 10820, 0, 0, 0, 0, 10821, 10822, 10823, 0, 10826, 10849, 0, 0, 0, 0, 10850, 0, 0, 10852, 0, 10853, 0, 0, 10856, 0, 0, 10857, 10858, 10859, 10860, 0, 0, 0, 0, 0, 0, 10863, 0, 10866, 10867, 10872, 10890, 0, 0, 10891, 10892, 0, 0, 0, 0, 0, 10893, 0, 0, 0, 10896, 10899, 0, 0, 10900, 10902, 0, 0, 0, 0, 0, 10903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10905, 0, 10906, 0, 0, 0, 0, 10908, 10911, 0, 10912, 0, 0, 10916, 0, 0, 0, 0, 0, 10917, 0, 10918, 0, 0, 0, 10923, 0, 0, 0, 0, 0, 10924, 0, 0, 10928, 10929, 0, 0, 10930, 0, 0, 0, 10932, 0, 0, 0, 0, 10939, 0, 0, 10945, 0, 0, 0, 10947, 0, 0, 10948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10958, 0, 10960, 10962, 0, 0, 10964, 0, 0, 0, 10966, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10967, 0, 0, 0, 10968, 0, 0, 0, 10973, 0, 0, 0, 0, 0, 10975, 0, 0, 0, 10976, 10978, 0, 0, 10982, 10984, 10987, 0, 0, 10988, 0, 10989, 0, 0, 10991, 0, 0, 0, 0, 10992, 0, 0, 0, 10993, 0, 10995, 0, 0, 0, 10996, 10997, 0, 0, 0, 10998, 0, 10999, 0, 11001, 0, 0, 0, 0, 0, 0, 11010, 11012, 0, 11013, 11016, 11017, 0, 0, 11019, 11020, 11021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11022, 0, 0, 11023, 11029, 0, 0, 0, 0, 11031, 0, 0, 0, 11034, 0, 0, 0, 0, 11055, 0, 0, 0, 0, 0, 11056, 11060, 0, 0, 0, 0, 0, 0, 11061, 0, 0, 11064, 11065, 0, 11066, 0, 11069, 0, 11085, 0, 0, 0, 0, 0, 11086, 0, 0, 0, 11088, 0, 0, 0, 11094, 0, 0, 0, 11095, 11096, 0, 0, 0, 0, 0, 0, 11097, 11098, 0, 0, 0, 0, 0, 0, 11099, 0, 0, 11102, 11108, 0, 0, 0, 11109, 0, 11114, 11119, 0, 11131, 0, 0, 0, 11142, 0, 0, 11143, 0, 11146, 0, 11147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11148, 0, 11149, 11152, 11153, 11154, 0, 11156, 0, 11157, 0, 0, 0, 11158, 0, 0, 11159, 11160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11163, 0, 0, 11164, 11166, 0, 0, 0, 11172, 11174, 0, 0, 0, 11176, 0, 0, 0, 0, 0, 11182, 11183, 0, 0, 0, 11184, 11187, 0, 0, 11188, 11189, 0, 0, 0, 0, 0, 0, 11194, 0, 0, 0, 0, 0, 0, 0, 11200, 11202, 0, 0, 0, 0, 0, 0, 11203, 0, 11204, 0, 0, 0, 0, 0, 11205, 0, 0, 0, 11206, 0, 11207, 0, 0, 11209, 0, 11211, 0, 11214, 0, 0, 11231, 0, 0, 0, 11293, 11295, 0, 0, 11296, 11297, 11302, 0, 0, 0, 11307, 0, 0, 0, 0, 11309, 11310, 0, 11311, 0, 0, 0, 11313, 0, 11314, 0, 0, 0, 0, 11334, 0, 11338, 0, 0, 0, 11339, 0, 0, 0, 0, 0, 11340, 0, 11341, 11342, 0, 11344, 0, 11345, 0, 0, 0, 11348, 11349, 0, 0, 11350, 0, 0, 0, 11355, 0, 0, 0, 0, 0, 0, 11356, 0, 11357, 11370, 0, 0, 11371, 0, 11374, 11376, 0, 0, 0, 11377, 0, 0, 11378, 11383, 0, 11386, 11399, 0, 11400, 11406, 0, 0, 0, 11408, 0, 0, 11409, 11412, 0, 0, 0, 0, 11417, 0, 0, 0, 11418, 0, 11421, 0, 11426, 11429, 0, 0, 0, 0, 0, 11430, 0, 11437, 0, 11438, 0, 0, 0, 0, 0, 11440, 11453, 0, 0, 0, 0, 0, 0, 11454, 0, 0, 0, 0, 11455, 0, 0, 11456, 11460, 11461, 11463, 0, 11469, 0, 11473, 0, 0, 0, 0, 11474, 0, 0, 0, 11475, 0, 11476, 11477, 11480, 0, 0, 0, 0, 11481, 0, 0, 11484, 0, 0, 11487, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11497, 0, 0, 11502, 0, 11509, 0, 0, 11510, 11511, 11513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11515, 0, 0, 0, 0, 11516, 0, 11520, 11521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11529, 11530, 11531, 11534, 0, 0, 11543, 0, 0, 0, 0, 0, 11547, 0, 11548, 0, 0, 0, 0, 0, 11552, 11556, 0, 11557, 0, 0, 11559, 0, 11560, 0, 0, 0, 0, 0, 0, 11561, 0, 0, 11563, 11564, 0, 11565, 0, 0, 0, 0, 11567, 0, 0, 0, 11569, 0, 11574, 0, 11575, 0, 0, 0, 11577, 0, 11578, 0, 0, 0, 11580, 11581, 0, 0, 0, 11582, 11584, 0, 0, 0, 0, 0, 0, 0, 11587, 0, 11588, 11591, 0, 11595, 0, 0, 0, 0, 0, 0, 0, 0, 11596, 0, 11597, 0, 0, 0, 0, 11598, 11601, 0, 0, 0, 11602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11603, 11604, 0, 11606, 0, 0, 11608, 0, 0, 0, 0, 11610, 0, 0, 11611, 0, 0, 0, 0, 11613, 0, 11622, 0, 0, 0, 11623, 0, 0, 0, 0, 11625, 0, 0, 11626, 11627, 11628, 11630, 0, 0, 0, 0, 0, 0, 11639, 0, 0, 11646, 0, 11648, 11649, 0, 11650, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11651, 0, 0, 11652, 11653, 11656, 0, 0, 11677, 11679, 0, 0, 0, 0, 11680, 0, 0, 11681, 0, 11685, 0, 0, 0, 0, 0, 0, 0, 0, 11688, 0, 0, 0, 11716, 0, 11719, 0, 0, 0, 0, 0, 11721, 0, 0, 11724, 11743, 0, 0, 0, 0, 0, 0, 0, 0, 11745, 11748, 11750, 0, 0, 0, 0, 0, 11751, 0, 0, 0, 11752, 11754, 0, 11755, 0, 0, 0, 0, 0, 0, 0, 11759, 0, 0, 0, 0, 0, 0, 11760, 0, 0, 0, 11761, 0, 0, 0, 0, 0, 0, 11766, 11767, 0, 11772, 11773, 0, 11774, 0, 0, 11775, 0, 11777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11778, 11780, 0, 0, 0, 0, 0, 0, 0, 11783, 0, 11784, 0, 0, 0, 11785, 0, 0, 0, 11786, 0, 0, 0, 0, 11788, 0, 0, 11789, 11791, 11792, 0, 0, 0, 0, 11795, 11834, 11835, 11836, 0, 0, 11837, 0, 0, 0, 11838, 0, 0, 11846, 11851, 0, 11852, 0, 11869, 0, 0, 0, 11871, 0, 0, 0, 11872, 11874, 0, 0, 0, 0, 0, 0, 11875, 0, 11876, 11877, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11883, 0, 0, 0, 0, 0, 0, 0, 11884, 0, 11885, 0, 11886, 0, 0, 11887, 0, 11894, 11895, 11897, 11909, 11910, 0, 11912, 11918, 0, 0, 11920, 0, 11922, 11924, 11927, 11928, 0, 0, 0, 0, 11929, 0, 11934, 0, 0, 0, 0, 0, 11941, 11943, 11944, 0, 11945, 0, 0, 0, 0, 11948, 11949, 0, 0, 0, 0, 11953, 0, 11954, 0, 11955, 0, 11956, 0, 0, 0, 0, 0, 11957, 0, 0, 11959, 0, 0, 0, 0, 0, 0, 0, 0, 11961, 0, 0, 0, 0, 0, 11978, 0, 0, 0, 11979, 11980, 11986, 11987, 0, 11992, 0, 0, 0, 0, 0, 11993, 0, 0, 0, 11994, 0, 11999, 12004, 12005, 12006, 0, 0, 0, 0, 0, 12011, 0, 0, 12012, 12014, 0, 0, 12015, 0, 0, 12019, 12028, 0, 0, 12029, 0, 0, 12032, 12033, 0, 0, 0, 0, 12034, 0, 12041, 12043, 0, 0, 12044, 0, 0, 0, 0, 0, 0, 0, 12046, 0, 0, 0, 0, 0, 0, 0, 12054, 12055, 0, 12056, 0, 0, 0, 12060, 12064, 0, 0, 0, 0, 0, 12065, 12067, 12068, 0, 0, 0, 0, 0, 0, 0, 0, 12074, 0, 0, 0, 12075, 12076, 0, 0, 0, 12079, 0, 12081, 12086, 12087, 0, 0, 12088, 0, 0, 0, 0, 12089, 0, 12092, 0, 0, 0, 0, 12097, 0, 0, 0, 0, 0, 0, 0, 0, 12098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12102, 12103, 12104, 12111, 0, 0, 12114, 12116, 0, 0, 0, 12118, 0, 0, 0, 12119, 12120, 12128, 0, 0, 0, 0, 12130, 0, 0, 0, 0, 0, 0, 12131, 0, 0, 0, 12132, 12134, 0, 0, 0, 0, 12137, 0, 12139, 0, 12141, 0, 0, 12142, 0, 0, 0, 12144, 0, 0, 0, 0, 0, 12145, 0, 12148, 0, 12153, 0, 0, 0, 0, 12154, 12171, 12173, 0, 0, 0, 12175, 0, 0, 0, 0, 12178, 0, 0, 0, 0, 0, 0, 0, 12183, 0, 0, 0, 0, 0, 0, 0, 0, 12184, 0, 0, 0, 12186, 0, 0, 0, 0, 0, 12187, 12188, 0, 0, 12189, 0, 12196, 0, 12197, 0, 0, 12198, 0, 12201, 0, 0, 0, 0, 12203, 0, 12209, 0, 0, 0, 0, 12210, 12211, 12212, 12213, 0, 12217, 12218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12222, 0, 0, 0, 0, 0, 0, 0, 12223, 0, 0, 12229, 0, 0, 0, 0, 12233, 0, 0, 0, 0, 12234, 0, 0, 12236, 12242, 0, 0, 0, 12243, 0, 0, 0, 12244, 12253, 0, 12254, 12256, 0, 12257, 0, 0, 12275, 0, 0, 0, 0, 0, 12277, 0, 0, 0, 0, 0, 12278, 0, 12289, 0, 0, 12290, 0, 12292, 12293, 0, 0, 12294, 0, 12295, 0, 0, 12296, 0, 12297, 0, 12298, 0, 0, 0, 0, 12301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12309, 0, 12338, 12340, 0, 0, 0, 0, 12341, 0, 0, 0, 0, 0, 0, 0, 0, 12342, 12343, 0, 12344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12345, 0, 0, 0, 0, 0, 0, 0, 0, 12346, 0, 0, 0, 0, 12348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12351, 0, 12355, 12356, 12357, 0, 0, 12367, 12370, 12371, 0, 0, 0, 0, 0, 12372, 12376, 0, 0, 0, 0, 0, 0, 0, 0, 12379, 0, 12382, 0, 12383, 0, 0, 12384, 0, 0, 0, 0, 12393, 0, 0, 12394, 0, 0, 0, 0, 12398, 12403, 0, 0, 12404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12410, 0, 0, 0, 12411, 0, 0, 0, 12412, 0, 0, 0, 0, 12420, 0, 12421, 0, 0, 0, 0, 0, 12423, 0, 12425, 12429, 0, 0, 0, 12431, 12432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12434, 0, 0, 0, 0, 0, 12435, 12436, 0, 0, 0, 0, 0, 0, 0, 0, 12437, 0, 0, 0, 0, 0, 12438, 0, 0, 0, 0, 0, 0, 0, 0, 12445, 0, 0, 0, 12450, 12451, 0, 0, 0, 0, 0, 0, 0, 0, 12452, 12475, 0, 0, 12493, 12494, 0, 0, 0, 12495, 0, 0, 0, 0, 12496, 12502, 12509, 0, 0, 0, 0, 12510, 0, 12512, 12513, 0, 0, 0, 0, 12514, 0, 0, 0, 12515, 0, 12520, 0, 0, 0, 12524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12527, 0, 0, 0, 12528, 0, 0, 0, 12529, 0, 0, 0, 0, 0, 12530, 0, 12535, 0, 0, 12536, 0, 12538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12540, 0, 12548, 0, 0, 0, 0, 0, 12550, 0, 0, 0, 12551, 12552, 0, 0, 0, 12554, 0, 0, 0, 0, 0, 0, 0, 0, 12555, 0, 0, 12562, 0, 12565, 0, 12566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12569, 0, 0, 0, 12571, 12574, 0, 0, 0, 0, 0, 0, 0, 12577, 0, 0, 0, 0, 0, 0, 0, 12578, 12579, 12603, 0, 12608, 0, 0, 12611, 0, 12612, 0, 12615, 0, 12625, 0, 0, 0, 0, 12627, 12646, 0, 12648, 0, 0, 12657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12670, 0, 0, 12671, 0, 12673, 12677, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12679, 0, 12681, 0, 12682, 12693, 0, 12694, 0, 12697, 0, 12701, 0, 0, 0, 12703, 12704, 0, 0, 0, 0, 12707, 12737, 0, 0, 12739, 0, 0, 12740, 0, 0, 12742, 12743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12745, 0, 12746, 12747, 0, 12748, 0, 0, 12759, 12767, 0, 0, 0, 0, 12773, 0, 12774, 12778, 0, 0, 0, 0, 0, 0, 0, 12779, 0, 0, 0, 0, 0, 12780, 12793, 0, 12824, 0, 12825, 0, 12836, 0, 0, 0, 0, 12839, 0, 12842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12843, 12845, 0, 12846, 0, 0, 0, 0, 12847, 0, 0, 12850, 12852, 12853, 0, 0, 0, 12854, 0, 0, 0, 12855, 0, 12856, 0, 12858, 0, 0, 12859, 0, 12862, 0, 12863, 0, 0, 12866, 0, 12869, 12872, 12873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12875, 0, 12877, 0, 0, 12878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12884, 12885, 12888, 0, 12889, 0, 0, 0, 0, 12893, 0, 0, 0, 12895, 12896, 12898, 0, 0, 0, 0, 0, 0, 0, 12902, 0, 12909, 12910, 0, 12926, 0, 12928, 0, 0, 0, 12929, 0, 12930, 0, 0, 0, 0, 12931, 0, 12932, 12933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12934, 0, 12942, 0, 0, 0, 0, 12944, 0, 0, 0, 0, 0, 0, 0, 0, 12946, 0, 0, 12948, 0, 0, 12949, 0, 0, 0, 0, 12950, 0, 0, 0, 0, 12951, 0, 12952, 0, 12953, 0, 0, 0, 12954, 12958, 12959, 0, 0, 0, 0, 0, 12960, 12964, 0, 0, 0, 0, 0, 12966, 0, 0, 0, 0, 0, 0, 0, 0, 12970, 0, 12971, 0, 0, 0, 0, 0, 0, 12972, 0, 0, 12982, 0, 0, 0, 12984, 12985, 0, 12986, 12996, 12997, 13001, 13002, 0, 0, 0, 0, 13004, 0, 0, 13005, 0, 0, 13007, 13009, 0, 13017, 0, 0, 0, 13020, 0, 13021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13022, 0, 0, 0, 0, 0, 0, 0, 0, 13024, 13027, 0, 0, 0, 0, 0, 13028, 0, 0, 13029, 0, 0, 0, 0, 0, 0, 0, 13032, 0, 13037, 0, 0, 0, 0, 0, 0, 13040, 0, 0, 13041, 0, 0, 0, 13043, 13044, 13046, 0, 0, 0, 0, 13047, 0, 0, 0, 0, 0, 0, 0, 13049, 13054, 0, 13056, 0, 0, 13060, 13061, 0, 0, 0, 0, 0, 13067, 0, 0, 13068, 0, 13071, 0, 0, 0, 0, 0, 13077, 13078, 0, 0, 0, 0, 0, 13079, 13080, 13081, 0, 13082, 0, 0, 0, 13085, 0, 0, 0, 0, 0, 0, 0, 13086, 0, 13087, 13088, 0, 0, 0, 0, 0, 13094, 0, 13099, 0, 13100, 0, 0, 0, 13101, 0, 13125, 13126, 13128, 13129, 0, 0, 13130, 0, 13131, 0, 0, 0, 0, 0, 0, 13134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13150, 0, 13168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13169, 0, 0, 13170, 0, 0, 0, 0, 13174, 0, 0, 0, 13176, 0, 0, 0, 0, 0, 13177, 0, 13178, 13183, 13187, 0, 0, 0, 13189, 0, 0, 13190, 0, 0, 13191, 0, 0, 13206, 0, 0, 0, 13207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13212, 0, 0, 13219, 13232, 0, 0, 0, 13241, 0, 13249, 13253, 0, 0, 0, 0, 0, 13255, 13259, 0, 13260, 13261, 0, 13262, 0, 13272, 0, 0, 0, 0, 13276, 0, 0, 0, 0, 13277, 13299, 0, 0, 13301, 13302, 0, 0, 13303, 0, 0, 13305, 0, 13310, 0, 0, 0, 13311, 0, 0, 0, 0, 13325, 0, 13328, 0, 0, 0, 13329, 0, 0, 0, 0, 0, 0, 13330, 0, 0, 13331, 0, 13335, 0, 0, 13342, 0, 0, 0, 0, 0, 13343, 0, 13354, 0, 13362, 0, 13366, 13367, 13369, 0, 0, 13371, 13372, 0, 13373, 13374, 0, 13376, 0, 13380, 13381, 13386, 0, 13387, 13388, 0, 13389, 13391, 13395, 0, 0, 0, 0, 0, 13401, 13409, 0, 13410, 0, 0, 0, 0, 13420, 0, 0, 0, 0, 0, 13422, 0, 0, 0, 0, 13423, 0, 0, 0, 0, 13425, 0, 0, 0, 0, 0, 13427, 0, 0, 0, 13428, 0, 0, 13430, 13438, 0, 13439, 0, 13445, 0, 13448, 13449, 0, 0, 0, 0, 0, 0, 13451, 0, 13457, 0, 0, 0, 0, 13458, 13459, 0, 13460, 0, 0, 0, 0, 13464, 13465, 13466, 13470, 0, 13471, 13472, 13474, 13475, 0, 13476, 0, 0, 13478, 13479, 0, 13481, 0, 0, 0, 0, 13487, 0, 13490, 0, 13493, 0, 0, 13494, 0, 0, 13495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13496, 13497, 0, 13500, 0, 0, 13516, 13522, 0, 0, 13525, 13528, 0, 0, 0, 13530, 13535, 0, 13537, 13539, 0, 13540, 0, 13543, 0, 13544, 0, 0, 0, 0, 0, 0, 13545, 0, 0, 0, 0, 0, 0, 13547, 0, 0, 0, 13549, 13555, 0, 0, 0, 13556, 13557, 0, 0, 0, 0, 0, 0, 0, 13558, 0, 13563, 0, 0, 0, 0, 13564, 0, 0, 0, 0, 0, 0, 0, 0, 13566, 0, 0, 0, 0, 0, 0, 13569, 0, 0, 13571, 0, 0, 0, 0, 13573, 0, 0, 0, 0, 0, 0, 13578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13581, 0, 13586, 0, 13595, 0, 13600, 0, 0, 0, 0, 0, 0, 0, 0, 13601, 13603, 0, 13604, 13605, 13606, 13607, 0, 0, 13617, 13618, 0, 0, 0, 0, 0, 0, 0, 13623, 0, 13625, 13627, 0, 0, 0, 0, 0, 0, 0, 0, 13629, 0, 0, 0, 13634, 0, 0, 0, 13638, 0, 0, 0, 0, 0, 0, 0, 0, 13654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13656, 0, 13659, 0, 0, 13660, 0, 0, 13662, 0, 0, 0, 13663, 0, 13664, 0, 0, 0, 0, 0, 13668, 0, 13669, 13671, 0, 0, 13672, 0, 0, 0, 0, 0, 0, 13675, 13685, 0, 13686, 0, 0, 0, 13687, 0, 0, 0, 13692, 13694, 13697, 0, 0, 0, 13702, 0, 0, 0, 0, 0, 13705, 0, 0, 0, 0, 13707, 0, 0, 0, 13714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13715, 0, 13716, 13717, 0, 0, 13719, 13724, 13730, 13731, 0, 0, 0, 0, 0, 0, 0, 0, 13732, 0, 0, 0, 0, 0, 0, 0, 13734, 0, 13736, 0, 0, 13737, 13738, 13747, 0, 13751, 0, 0, 13752, 0, 0, 0, 13753, 0, 13757, 0, 0, 13762, 13763, 0, 13764, 13765, 0, 13766, 0, 0, 13767, 0, 0, 0, 13768, 0, 0, 0, 0, 0, 0, 0, 13769, 0, 0, 13772, 0, 13775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13776, 13778, 13787, 0, 0, 0, 13797, 0, 13798, 0, 13801, 0, 13804, 13806, 0, 0, 0, 0, 13816, 13817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13834, 0, 13836, 0, 0, 13838, 0, 0, 13839, 0, 13840, 0, 0, 0, 0, 13842, 0, 0, 0, 0, 0, 0, 13843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13845, 0, 0, 0, 0, 0, 13858, 0, 0, 13860, 0, 0, 13861, 0, 0, 13862, 13863, 0, 13868, 0, 13869, 13870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13872, 0, 0, 0, 0, 13873, 13878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13886, 0, 13888, 13889, 13890, 0, 0, 13891, 13894, 0, 13897, 13899, 13900, 13904, 0, 0, 13906, 0, 0, 0, 13909, 0, 0, 0, 13910, 0, 0, 0, 13911, 0, 0, 0, 0, 0, 13912, 13917, 0, 0, 0, 0, 13918, 0, 13919, 0, 0, 13920, 0, 0, 0, 13921, 0, 0, 13922, 0, 0, 0, 0, 0, 0, 0, 13924, 0, 13927, 0, 0, 0, 0, 0, 13932, 0, 13933, 0, 13934, 0, 0, 13935, 0, 13944, 0, 0, 0, 13954, 0, 0, 13955, 0, 0, 0, 0, 13956, 0, 13957, 0, 13967, 13969, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13970, 13990, 0, 13991, 13994, 0, 13995, 0, 0, 0, 0, 13996, 0, 0, 13999, 0, 0, 0, 14018, 0, 14019, 0, 14021, 0, 0, 0, 0, 0, 0, 14041, 0, 0, 0, 0, 0, 0, 0, 0, 14043, 0, 0, 0, 0, 14046, 0, 0, 0, 14048, 14049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14051, 0, 0, 14052, 14056, 0, 14063, 0, 14064, 14066, 0, 0, 14067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14068, 0, 0, 0, 14072, 0, 14074, 14075, 0, 14076, 14079, 14085, 14086, 14087, 14093, 0, 0, 0, 0, 14095, 0, 0, 0, 0, 0, 0, 14096, 14097, 0, 0, 0, 0, 0, 0, 0, 14098, 0, 14102, 0, 0, 0, 0, 0, 14103, 0, 0, 0, 14104, 0, 0, 14105, 0, 0, 0, 14107, 14108, 0, 0, 14109, 0, 0, 0, 0, 0, 0, 0, 0, 14117, 0, 0, 0, 0, 14118, 0, 0, 0, 0, 14119, 0, 0, 14120, 0, 0, 14121, 0, 14122, 14127, 0, 14128, 14136, 0, 0, 14138, 0, 14140, 0, 0, 0, 14141, 14142, 0, 0, 0, 0, 14146, 0, 0, 14149, 0, 14151, 0, 0, 0, 14152, 0, 0, 14153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14154, 0, 14156, 14157, 0, 0, 14159, 0, 14161, 0, 0, 0, 0, 14162, 0, 0, 0, 0, 0, 0, 14163, 0, 0, 14173, 0, 0, 0, 0, 0, 0, 14174, 0, 0, 14176, 0, 0, 14178, 0, 0, 14179, 14181, 0, 0, 14182, 14185, 14187, 0, 14190, 0, 0, 14197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14198, 0, 0, 0, 0, 0, 0, 14199, 14200, 0, 0, 0, 14204, 0, 0, 14208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14234, 0, 0, 14235, 0, 0, 0, 14240, 14241, 0, 0, 0, 14246, 0, 0, 0, 14247, 0, 14250, 0, 0, 14251, 0, 0, 14254, 0, 0, 14256, 0, 0, 0, 14260, 0, 14261, 0, 0, 0, 0, 14262, 14267, 14269, 0, 0, 14277, 0, 0, 14278, 0, 14279, 14282, 0, 0, 0, 14283, 0, 0, 0, 14284, 14285, 0, 0, 0, 0, 14286, 0, 0, 0, 14288, 0, 0, 0, 14289, 0, 14290, 0, 14293, 14301, 14302, 14304, 14305, 0, 14307, 0, 14308, 14309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14311, 14312, 0, 0, 14317, 0, 0, 0, 0, 0, 0, 0, 14318, 0, 0, 0, 0, 14320, 0, 0, 0, 0, 14321, 14322, 0, 0, 0, 0, 0, 14326, 14329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14330, 14331, 0, 0, 0, 0, 14332, 0, 0, 0, 14333, 0, 0, 14337, 14340, 0, 14341, 0, 0, 14342, 0, 14345, 14346, 0, 0, 14347, 0, 14362, 0, 0, 0, 0, 0, 14364, 14365, 14371, 0, 14373, 0, 0, 14374, 0, 14379, 0, 14400, 0, 0, 0, 0, 0, 14401, 0, 0, 14405, 0, 14406, 0, 14408, 14409, 0, 0, 0, 14417, 0, 0, 14424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14430, 0, 0, 0, 14431, 0, 0, 14435, 0, 14440, 0, 0, 0, 0, 0, 0, 14442, 0, 0, 14443, 0, 0, 0, 0, 0, 14446, 0, 0, 0, 0, 0, 0, 0, 14454, 0, 14457, 0, 14460, 0, 0, 14466, 0, 0, 0, 0, 0, 14467, 0, 0, 0, 0, 0, 0, 14469, 0, 14477, 0, 0, 0, 0, 0, 0, 14478, 14482, 0, 0, 0, 14483, 0, 0, 0, 14485, 14486, 0, 0, 0, 14487, 14488, 14489, 14492, 14493, 14494, 14495, 14496, 14497, 0, 14499, 0, 14501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14502, 0, 14507, 14512, 14513, 14514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14515, 14526, 14530, 0, 14537, 0, 14544, 0, 14547, 0, 0, 14548, 14550, 14551, 0, 0, 14552, 0, 0, 0, 14553, 0, 14554, 0, 0, 0, 0, 14556, 14564, 0, 0, 14565, 14566, 0, 0, 0, 0, 0, 0, 14568, 0, 0, 14569, 0, 0, 0, 14571, 14576, 0, 0, 14577, 14578, 14579, 0, 0, 14580, 0, 0, 0, 0, 14582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14583, 0, 0, 0, 0, 0, 14587, 0, 14588, 0, 0, 14600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14601, 0, 0, 14604, 14605, 14611, 0, 14613, 0, 0, 0, 0, 14615, 0, 0, 0, 0, 0, 0, 14627, 0, 14628, 0, 0, 0, 0, 14631, 0, 14633, 14634, 0, 0, 0, 0, 14635, 0, 0, 0, 0, 0, 0, 0, 0, 14636, 0, 0, 14639, 14642, 0, 0, 0, 0, 14644, 0, 0, 0, 0, 14645, 14646, 0, 14653, 0, 0, 14654, 0, 14658, 0, 14661, 0, 0, 0, 14665, 0, 0, 0, 14668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14669, 0, 0, 14670, 0, 0, 0, 14680, 0, 0, 14681, 0, 0, 0, 0, 0, 14682, 14683, 0, 0, 0, 0, 14686, 0, 0, 0, 0, 14687, 14697, 0, 0, 0, 0, 14699, 14705, 14711, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14712, 0, 0, 0, 14713, 0, 0, 0, 0, 14719, 0, 14720, 14721, 14726, 0, 0, 0, 14728, 14729, 0, 0, 0, 0, 14731, 0, 0, 0, 0, 0, 0, 0, 14733, 14736, 14737, 0, 0, 14740, 14742, 0, 0, 0, 14744, 14753, 0, 0, 0, 0, 14755, 14758, 14760, 0, 0, 0, 0, 0, 14761, 14762, 14765, 14771, 0, 14772, 0, 14773, 14774, 0, 0, 14775, 0, 0, 14776, 0, 0, 0, 0, 14777, 0, 14779, 0, 0, 14782, 0, 0, 14785, 14786, 14788, 0, 0, 0, 0, 0, 14795, 0, 0, 0, 0, 0, 0, 14798, 0, 14803, 14804, 14806, 0, 0, 0, 14809, 0, 0, 0, 0, 0, 0, 14810, 0, 0, 0, 0, 14811, 0, 14812, 0, 0, 0, 0, 0, 14815, 0, 0, 0, 0, 0, 0, 0, 0, 14816, 0, 14818, 0, 0, 0, 0, 0, 0, 14819, 0, 14820, 0, 14823, 0, 0, 0, 14824, 0, 0, 14826, 14827, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14830, 0, 0, 0, 0, 0, 14833, 0, 14845, 0, 0, 0, 0, 0, 14846, 0, 0, 14847, 14871, 0, 14873, 0, 14876, 0, 14877, 14878, 14880, 0, 0, 0, 0, 0, 14881, 0, 14882, 14894, 0, 0, 0, 0, 14895, 0, 14907, 0, 14908, 0, 0, 0, 0, 0, 0, 0, 14911, 0, 0, 0, 0, 14920, 0, 0, 14931, 0, 14932, 14934, 14935, 0, 0, 14936, 0, 14945, 0, 0, 0, 0, 0, 0, 0, 14947, 0, 0, 14948, 14949, 14951, 0, 0, 14952, 0, 0, 0, 14964, 14973, 0, 0, 14990, 0, 0, 0, 0, 14995, 0, 0, 14998, 15001, 0, 0, 15002, 15020, 0, 0, 0, 0, 0, 0, 15021, 0, 15022, 0, 0, 0, 0, 15023, 0, 0, 15025, 15029, 15033, 0, 0, 0, 15034, 0, 0, 0, 15035, 0, 0, 0, 0, 0, 15043, 15044, 0, 0, 0, 15045, 15046, 15048, 15050, 0, 15065, 0, 0, 0, 0, 15066, 0, 0, 15075, 15082, 15084, 0, 0, 15085, 15086, 0, 0, 0, 0, 0, 0, 0, 0, 15088, 0, 0, 0, 15089, 0, 0, 0, 0, 15094, 0, 15096, 0, 15097, 0, 15100, 0, 0, 15102, 0, 0, 0, 0, 0, 0, 0, 0, 15105, 0, 0, 15106, 0, 15109, 15113, 0, 0, 0, 15115, 0, 15118, 0, 0, 0, 0, 0, 0, 15119, 0, 0, 15120, 0, 0, 0, 0, 0, 15123, 15129, 0, 0, 0, 15130, 0, 15131, 0, 0, 15134, 0, 15135, 0, 0, 0, 15137, 15138, 0, 0, 0, 0, 0, 0, 15139, 0, 0, 0, 0, 0, 15140, 0, 0, 15154, 15162, 0, 15169, 15170, 0, 15175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15177, 0, 15178, 15179, 0, 0, 0, 0, 0, 15183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15185, 15187, 0, 15194, 15195, 15196, 0, 0, 0, 0, 0, 0, 0, 15204, 0, 0, 0, 0, 15206, 0, 0, 0, 0, 0, 15207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15213, 0, 15214, 0, 0, 0, 0, 0, 0, 0, 15232, 0, 0, 0, 0, 15234, 0, 15238, 15240, 0, 15248, 0, 0, 0, 0, 15250, 15251, 0, 0, 0, 0, 0, 0, 0, 15252, 0, 0, 0, 15255, 15262, 15266, 0, 0, 0, 15267, 0, 0, 0, 15277, 15279, 0, 0, 0, 15280, 15281, 15282, 0, 0, 0, 0, 0, 15285, 0, 0, 0, 0, 15289, 0, 0, 15291, 0, 0, 0, 0, 0, 0, 0, 15296, 15297, 0, 0, 15304, 0, 0, 0, 0, 15306, 0, 0, 0, 0, 0, 0, 15307, 15308, 0, 15309, 0, 0, 15311, 0, 0, 15312, 15313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15314, 15317, 0, 0, 0, 15318, 15319, 0, 0, 0, 0, 15320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15321, 0, 0, 0, 0, 0, 15324, 0, 15325, 15326, 0, 15330, 0, 0, 0, 0, 15334, 0, 15335, 0, 15341, 0, 0, 15342, 0, 0, 15343, 15344, 0, 0, 0, 0, 15345, 0, 0, 0, 0, 15347, 0, 0, 15348, 15349, 15350, 0, 15356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15357, 0, 15358, 0, 0, 0, 0, 0, 0, 0, 15359, 15360, 15364, 0, 15380, 0, 0, 0, 0, 0, 15392, 0, 0, 15393, 0, 15395, 0, 0, 0, 0, 0, 0, 0, 0, 15396, 0, 0, 15397, 15398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15399, 0, 15400, 0, 0, 0, 15402, 0, 15405, 15410, 0, 0, 0, 0, 15411, 0, 0, 0, 15412, 0, 15416, 0, 0, 0, 0, 0, 0, 0, 15428, 0, 15435, 0, 0, 15438, 0, 0, 0, 0, 15439, 0, 0, 0, 15440, 0, 0, 0, 15441, 15449, 15451, 0, 0, 0, 0, 0, 0, 0, 15452, 0, 0, 15455, 0, 0, 0, 15456, 0, 0, 15458, 0, 15460, 15461, 0, 0, 0, 0, 0, 15462, 15464, 0, 15465, 0, 0, 15466, 0, 0, 15467, 0, 0, 0, 0, 0, 15468, 0, 0, 0, 0, 15481, 0, 0, 15484, 0, 15485, 15486, 0, 0, 0, 15487, 0, 0, 0, 0, 0, 15488, 0, 15492, 15498, 0, 0, 0, 15499, 0, 0, 0, 15500, 0, 15501, 0, 0, 15512, 0, 15522, 0, 0, 0, 15524, 0, 15525, 15526, 0, 0, 15527, 0, 0, 15545, 15546, 0, 15548, 15552, 0, 15553, 0, 0, 0, 15554, 0, 15555, 0, 15557, 15565, 15573, 15577, 15578, 0, 15582, 0, 15583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15588, 0, 0, 0, 0, 0, 15589, 0, 0, 0, 0, 0, 0, 0, 15593, 15594, 0, 0, 0, 0, 15595, 0, 0, 0, 0, 0, 0, 15596, 0, 0, 0, 15597, 0, 0, 0, 0, 15600, 0, 0, 15601, 0, 0, 0, 0, 15602, 15603, 0, 0, 0, 0, 0, 0, 15604, 0, 15609, 0, 0, 15612, 0, 0, 15613, 0, 0, 15615, 15617, 15618, 0, 0, 15620, 0, 15636, 15637, 0, 0, 15649, 0, 0, 0, 0, 0, 0, 0, 15650, 0, 0, 15651, 0, 0, 0, 15656, 0, 15658, 0, 0, 0, 15664, 0, 0, 15665, 0, 0, 15668, 0, 0, 0, 0, 0, 15669, 0, 0, 15674, 0, 0, 15675, 0, 0, 0, 0, 15676, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15677, 0, 0, 0, 0, 15678, 0, 0, 0, 0, 0, 15679, 0, 0, 15681, 0, 15686, 0, 0, 0, 0, 15687, 0, 15688, 0, 0, 15690, 0, 0, 0, 15697, 0, 15699, 15700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15701, 0, 15702, 15703, 0, 15704, 0, 15705, 0, 15707, 0, 15709, 0, 15712, 15716, 0, 15717, 0, 15718, 15720, 0, 0, 0, 0, 0, 15724, 0, 0, 0, 15725, 0, 15726, 0, 0, 0, 15740, 0, 15745, 15746, 0, 0, 15747, 0, 15748, 0, 0, 0, 0, 0, 15749, 0, 0, 0, 15752, 0, 15753, 0, 0, 0, 0, 0, 0, 15759, 0, 0, 0, 15765, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15767, 0, 0, 0, 15771, 0, 0, 15784, 0, 0, 0, 0, 15785, 15790, 15791, 0, 0, 15792, 0, 0, 0, 15807, 0, 15811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15818, 0, 0, 0, 15819, 0, 0, 0, 0, 15821, 0, 0, 0, 0, 0, 15822, 15824, 0, 0, 15827, 0, 0, 15829, 15831, 0, 15832, 0, 0, 15833, 0, 15835, 15838, 15839, 15843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15844, 0, 0, 0, 0, 15845, 15851, 15856, 0, 0, 0, 0, 0, 0, 0, 15858, 15860, 0, 15861, 0, 0, 0, 15864, 0, 0, 0, 0, 15865, 0, 0, 0, 0, 0, 0, 15866, 0, 15872, 0, 0, 15876, 0, 0, 0, 0, 15877, 15878, 15883, 15885, 0, 0, 15888, 0, 0, 0, 0, 0, 15889, 15890, 0, 0, 0, 0, 0, 0, 0, 0, 15892, 0, 0, 0, 0, 0, 0, 0, 15893, 0, 0, 15894, 0, 0, 0, 15895, 0, 15896, 15897, 0, 15898, 15901, 15902, 0, 15911, 15915, 0, 15916, 0, 15924, 15935, 0, 15937, 0, 0, 0, 0, 0, 15950, 0, 0, 0, 0, 0, 0, 0, 15958, 0, 0, 0, 15961, 0, 0, 15966, 0, 15967, 0, 0, 15977, 0, 0, 15978, 0, 0, 15981, 15982, 15983, 0, 0, 0, 0, 0, 0, 0, 15986, 0, 0, 0, 15990, 0, 15991, 15995, 15998, 0, 15999, 0, 16000, 0, 0, 0, 0, 16008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16009, 16011, 0, 16013, 0, 0, 0, 0, 0, 0, 0, 0, 16014, 0, 0, 16015, 16023, 16024, 16025, 0, 0, 16026, 0, 16030, 0, 16032, 0, 16033, 0, 0, 0, 0, 0, 0, 16035, 16036, 16037, 0, 0, 0, 0, 0, 16039, 0, 0, 0, 0, 16041, 0, 0, 0, 0, 0, 16043, 16044, 0, 0, 16047, 0, 0, 0, 16048, 0, 0, 16049, 16050, 16052, 0, 0, 0, 0, 0, 16055, 0, 0, 0, 0, 0, 0, 0, 0, 16056, 0, 0, 0, 0, 0, 0, 0, 16058, 16060, 16061, 0, 0, 16063, 0, 0, 16064, 0, 0, 0, 16067, 16068, 0, 0, 16069, 16078, 0, 0, 0, 16079, 0, 0, 0, 16080, 0, 16081, 0, 0, 0, 16088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16089, 16093, 0, 16097, 0, 16103, 0, 16104, 16105, 0, 0, 16256, 0, 0, 16259, 0, 0, 0, 0, 0, 0, 0, 16260, 16261, 0, 0, 16262, 0, 0, 16263, 0, 16268, 0, 0, 0, 0, 0, 0, 0, 16269, 0, 0, 16270, 16273, 0, 16274, 0, 0, 0, 0, 16275, 16276, 16277, 16280, 0, 0, 0, 16281, 16284, 0, 0, 0, 16286, 0, 16289, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16290, 0, 0, 0, 0, 16291, 0, 0, 0, 0, 0, 0, 0, 16292, 0, 0, 0, 0, 0, 0, 0, 0, 16293, 16295, 16297, 0, 16302, 0, 16304, 0, 16305, 0, 16306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16307, 16308, 16312, 0, 0, 0, 0, 0, 0, 16313, 16315, 0, 16318, 0, 0, 0, 16321, 0, 0, 0, 0, 0, 0, 0, 16326, 16333, 16336, 0, 0, 0, 0, 16337, 16340, 0, 0, 0, 0, 0, 16345, 0, 0, 16346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16347, 0, 0, 16348, 0, 0, 0, 0, 16349, 0, 0, 0, 16350, 0, 16357, 0, 0, 0, 0, 16359, 16360, 0, 0, 0, 0, 16362, 16363, 16364, 16365, 0, 0, 16366, 0, 0, 0, 0, 16367, 16368, 0, 16369, 16374, 0, 0, 0, 0, 0, 0, 0, 16376, 0, 0, 0, 0, 16378, 16379, 0, 16380, 0, 0, 0, 16381, 16383, 0, 0, 0, 0, 0, 16390, 0, 0, 0, 16399, 0, 16402, 16404, 16406, 16407, 0, 0, 0, 16409, 16411, 0, 0, 0, 0, 16412, 0, 16413, 16415, 16423, 0, 0, 0, 0, 0, 16424, 0, 0, 0, 16428, 16434, 16435, 16449, 0, 16450, 16451, 0, 0, 0, 16453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16454, 0, 0, 16456, 16458, 0, 0, 16459, 0, 0, 16460, 0, 0, 0, 0, 16462, 0, 16463, 0, 0, 16466, 0, 0, 0, 0, 0, 16479, 0, 0, 16480, 0, 16481, 16484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16485, 0, 0, 0, 0, 0, 0, 16489, 0, 0, 0, 0, 0, 16491, 0, 0, 16498, 0, 0, 16503, 0, 16505, 0, 0, 0, 0, 0, 0, 0, 0, 16506, 0, 0, 0, 16508, 16509, 0, 0, 0, 0, 0, 0, 0, 0, 16511, 16513, 0, 0, 0, 16516, 0, 16517, 0, 16519, 0, 16529, 0, 0, 16531, 0, 0, 0, 0, 0, 0, 16534, 0, 0, 16541, 16542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16543, 16547, 16548, 0, 0, 0, 16551, 0, 16552, 0, 0, 0, 16553, 0, 0, 16558, 0, 0, 16562, 16565, 0, 0, 0, 16570, 0, 0, 0, 16573, 16585, 0, 0, 0, 16586, 16587, 16595, 0, 16596, 0, 16598, 0, 0, 0, 16600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16601, 0, 0, 0, 0, 16603, 0, 0, 0, 0, 0, 0, 0, 16604, 16612, 0, 0, 0, 0, 16613, 0, 16618, 0, 0, 0, 16640, 0, 0, 16641, 0, 0, 0, 0, 0, 0, 16645, 0, 0, 0, 0, 16646, 0, 0, 0, 0, 0, 0, 16651, 0, 0, 0, 0, 16653, 16654, 0, 0, 0, 16655, 0, 0, 16656, 16667, 0, 0, 0, 0, 16671, 0, 16672, 0, 0, 0, 16673, 0, 0, 0, 0, 0, 16676, 0, 16686, 0, 0, 0, 0, 16689, 0, 16690, 0, 16692, 0, 16693, 0, 16694, 0, 16696, 0, 0, 0, 16705, 0, 0, 0, 0, 0, 0, 16707, 0, 0, 0, 16709, 0, 0, 0, 0, 16711, 0, 16712, 16713, 0, 0, 0, 16715, 0, 0, 0, 0, 16716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16718, 16724, 0, 0, 16726, 16727, 0, 0, 0, 0, 0, 0, 0, 16728, 0, 16729, 0, 0, 16730, 0, 0, 0, 0, 0, 16731, 0, 0, 0, 16732, 0, 0, 0, 0, 16734, 16738, 0, 0, 0, 0, 0, 0, 0, 0, 16743, 0, 0, 16745, 0, 0, 0, 0, 0, 16749, 0, 16752, 0, 0, 0, 0, 16756, 0, 0, 16758, 0, 16759, 0, 0, 0, 0, 0, 16760, 0, 0, 0, 0, 0, 0, 0, 16762, 0, 16769, 0, 16770, 0, 16772, 0, 0, 0, 16777, 16780, 0, 0, 0, 0, 0, 0, 16781, 0, 0, 16782, 0, 16784, 0, 0, 16785, 16787, 16792, 0, 0, 16794, 0, 0, 0, 16798, 0, 0, 16809, 0, 0, 16814, 16816, 16817, 0, 16819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16820, 0, 0, 16836, 16839, 0, 0, 16841, 16851, 16857, 0, 0, 16858, 16859, 0, 0, 16860, 0, 0, 0, 0, 0, 0, 0, 0, 16862, 0, 16863, 0, 0, 0, 0, 0, 0, 0, 16864, 0, 0, 0, 0, 0, 0, 0, 16876, 0, 16881, 16882, 0, 16885, 16886, 0, 16887, 0, 0, 0, 16889, 16891, 0, 0, 0, 0, 0, 16894, 16895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16897, 0, 16898, 0, 0, 0, 0, 0, 16913, 0, 0, 16924, 16925, 16926, 0, 0, 16927, 0, 0, 0, 16937, 16938, 0, 0, 0, 16940, 16941, 0, 0, 0, 16942, 16945, 0, 16946, 16949, 16950, 0, 0, 0, 16952, 16955, 0, 0, 0, 16965, 0, 16969, 0, 0, 16975, 0, 0, 16976, 0, 0, 0, 0, 16978, 0, 0, 16981, 0, 16983, 16989, 0, 0, 0, 0, 16990, 0, 0, 16991, 0, 0, 0, 16993, 0, 16994, 16996, 17000, 0, 0, 0, 0, 0, 17002, 17004, 0, 17006, 0, 0, 17007, 0, 0, 0, 0, 17008, 17013, 17014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17021, 0, 17031, 0, 0, 0, 0, 0, 17033, 17036, 0, 17038, 0, 0, 17039, 0, 17045, 0, 0, 17046, 17047, 0, 0, 0, 0, 17048, 0, 17049, 17050, 0, 17051, 17053, 0, 17054, 0, 17055, 0, 0, 0, 0, 0, 17063, 0, 0, 17064, 0, 0, 0, 0, 0, 0, 0, 17065, 0, 0, 17068, 0, 0, 0, 0, 0, 17072, 0, 0, 0, 0, 0, 0, 17073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17074, 0, 17080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17081, 17083, 17084, 0, 0, 0, 17085, 0, 0, 0, 0, 17092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17093, 0, 17095, 17102, 0, 0, 0, 0, 0, 0, 17103, 0, 0, 17105, 0, 17107, 0, 0, 0, 0, 17114, 0, 0, 0, 0, 0, 17115, 17125, 17127, 0, 0, 17128, 0, 0, 0, 17129, 17130, 0, 17131, 0, 0, 0, 0, 0, 17132, 17135, 17145, 0, 0, 0, 0, 0, 0, 0, 0, 17146, 0, 17147, 0, 17148, 0, 0, 0, 0, 0, 0, 17149, 17150, 0, 17151, 17153, 0, 17155, 0, 0, 0, 0, 17163, 17171, 0, 17174, 0, 0, 0, 0, 17179, 0, 0, 17182, 17185, 0, 0, 0, 0, 0, 17186, 0, 0, 17188, 0, 0, 0, 0, 0, 0, 0, 17189, 17191, 0, 17194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17195, 17196, 17203, 17204, 0, 0, 17205, 17217, 0, 0, 0, 0, 0, 17218, 0, 0, 0, 0, 17219, 0, 17220, 0, 17221, 0, 0, 17230, 0, 0, 0, 0, 0, 17236, 0, 17238, 17239, 0, 0, 0, 17241, 17244, 0, 0, 17245, 0, 17248, 0, 0, 17251, 0, 17252, 0, 0, 17264, 0, 17266, 0, 0, 0, 17268, 0, 0, 0, 0, 17271, 17272, 0, 17273, 0, 17295, 0, 17302, 0, 17305, 0, 0, 0, 17306, 0, 0, 0, 0, 0, 0, 0, 17308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17309, 0, 17310, 17313, 0, 0, 0, 0, 17314, 17315, 0, 17317, 0, 0, 0, 0, 17318, 0, 0, 0, 0, 0, 0, 0, 17320, 0, 0, 0, 0, 0, 0, 17334, 0, 17344, 17348, 0, 0, 0, 17350, 17351, 0, 0, 17353, 0, 0, 17354, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17355, 0, 0, 0, 0, 0, 0, 17356, 17357, 0, 0, 17359, 0, 0, 0, 17371, 0, 17372, 0, 0, 0, 17393, 0, 0, 0, 0, 17394, 0, 0, 0, 0, 0, 17395, 0, 0, 17399, 0, 0, 0, 17401, 17417, 0, 17418, 0, 17419, 0, 0, 0, 0, 0, 17422, 17423, 0, 0, 0, 0, 0, 17424, 0, 0, 0, 0, 0, 17428, 17429, 17433, 0, 0, 0, 17437, 0, 0, 17441, 0, 0, 17442, 0, 0, 17453, 0, 0, 0, 0, 0, 0, 0, 0, 17454, 17456, 17462, 0, 0, 17466, 0, 0, 17468, 0, 0, 17469, 0, 0, 0, 0, 17470, 0, 17475, 0, 0, 0, 0, 0, 17479, 0, 0, 0, 17483, 17484, 0, 17485, 0, 17486, 0, 17491, 17492, 0, 0, 17493, 0, 17494, 17495, 0, 0, 0, 17496, 0, 0, 0, 17497, 0, 0, 0, 17502, 0, 0, 0, 0, 0, 17503, 0, 17505, 0, 17507, 0, 0, 0, 17512, 17513, 17514, 0, 0, 17515, 0, 0, 0, 17519, 0, 0, 0, 17522, 0, 0, 17523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17527, 0, 0, 0, 17528, 0, 0, 0, 17534, 0, 0, 0, 0, 17536, 0, 0, 0, 17539, 0, 17540, 17543, 17549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17556, 0, 0, 17558, 0, 17559, 0, 0, 17560, 0, 0, 0, 17563, 0, 0, 0, 0, 0, 0, 17564, 0, 0, 17565, 17566, 0, 17567, 0, 0, 0, 0, 0, 0, 17569, 17570, 0, 17575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17581, 0, 0, 0, 17582, 17583, 0, 17586, 0, 0, 17587, 0, 0, 0, 0, 0, 0, 0, 17588, 0, 0, 0, 0, 17596, 17597, 0, 0, 17598, 17600, 0, 0, 0, 0, 0, 0, 17601, 0, 0, 0, 17604, 0, 0, 17605, 0, 0, 17607, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17612, 0, 0, 17618, 0, 17621, 17622, 0, 0, 0, 0, 17623, 0, 0, 17624, 0, 0, 17630, 0, 0, 17631, 17633, 17634, 0, 0, 0, 0, 0, 0, 0, 17635, 0, 0, 17636, 0, 0, 17637, 0, 17638, 0, 17640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17643, 0, 0, 0, 0, 17645, 0, 0, 0, 0, 0, 0, 0, 0, 17646, 17662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17663, 17664, 0, 17665, 17666, 0, 0, 0, 17669, 17671, 17673, 0, 17679, 0, 0, 0, 0, 0, 0, 0, 17684, 0, 0, 0, 17686, 0, 17714, 0, 0, 17720, 17722, 17726, 0, 0, 17728, 0, 0, 17729, 0, 0, 0, 17732, 0, 17733, 0, 17734, 0, 0, 0, 17735, 0, 0, 0, 0, 17737, 0, 0, 0, 0, 17739, 0, 0, 0, 17741, 17742, 0, 0, 0, 0, 17743, 17744, 17745, 0, 0, 0, 17749, 0, 17750, 17751, 17752, 17754, 17761, 17762, 0, 17763, 0, 17766, 0, 17772, 0, 0, 0, 0, 0, 17775, 0, 0, 0, 0, 0, 0, 0, 17776, 0, 0, 17777, 0, 0, 17778, 17779, 0, 17782, 17783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17784, 0, 0, 0, 0, 0, 0, 0, 17821, 0, 0, 0, 17822, 0, 0, 0, 17823, 17825, 0, 0, 0, 0, 0, 17826, 17831, 17832, 17833, 0, 0, 17845, 0, 0, 0, 17846, 0, 0, 0, 17848, 17850, 17854, 0, 17855, 0, 0, 17859, 0, 0, 0, 0, 0, 0, 17860, 17861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17870, 17871, 0, 0, 0, 0, 0, 0, 17872, 0, 0, 0, 17879, 0, 0, 0, 17881, 17883, 0, 17884, 0, 17885, 0, 0, 17886, 0, 0, 17887, 17891, 17953, 0, 0, 0, 0, 17954, 0, 0, 17955, 0, 17968, 0, 0, 17972, 0, 0, 0, 0, 0, 17974, 0, 0, 0, 0, 17976, 17978, 0, 0, 17983, 0, 0, 0, 0, 18003, 0, 0, 0, 0, 0, 18007, 0, 0, 0, 0, 0, 18009, 0, 0, 0, 0, 0, 0, 0, 18010, 0, 0, 0, 0, 0, 0, 18012, 0, 0, 18014, 0, 0, 0, 18015, 0, 0, 0, 18016, 0, 18017, 0, 0, 0, 18030, 0, 0, 0, 0, 0, 0, 0, 18031, 0, 0, 18036, 18037, 18038, 0, 0, 18049, 18056, 0, 18057, 18058, 0, 18059, 0, 0, 0, 0, 0, 0, 0, 0, 18062, 0, 0, 0, 0, 18064, 0, 0, 0, 0, 0, 0, 0, 0, 18067, 0, 0, 0, 18068, 0, 0, 18075, 0, 0, 18078, 18093, 18094, 0, 0, 0, 0, 0, 0, 0, 0, 18097, 0, 0, 0, 0, 0, 18098, 18100, 0, 0, 0, 18108, 0, 18111, 0, 0, 18112, 0, 18113, 0, 0, 18115, 18116, 0, 18118, 0, 0, 0, 0, 18121, 0, 0, 0, 0, 18123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18124, 0, 0, 0, 0, 18125, 18126, 0, 18127, 0, 0, 18128, 18135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18150, 0, 0, 0, 0, 0, 18151, 18152, 0, 0, 18156, 18164, 0, 18166, 18171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18172, 18183, 0, 18184, 0, 0, 0, 0, 18185, 0, 18187, 0, 0, 0, 0, 0, 18188, 0, 0, 0, 0, 0, 0, 0, 0, 18189, 0, 0, 18190, 0, 0, 18191, 18192, 0, 0, 18194, 18195, 18196, 0, 0, 0, 18197, 0, 18203, 0, 18204, 0, 0, 0, 0, 18205, 0, 0, 0, 18207, 18208, 0, 0, 18214, 0, 0, 0, 18215, 18216, 0, 0, 0, 18220, 0, 0, 18222, 0, 0, 0, 0, 0, 18223, 0, 18225, 18231, 0, 18234, 0, 18235, 0, 0, 0, 0, 18240, 0, 0, 18241, 18242, 0, 0, 0, 0, 0, 18243, 18251, 0, 18253, 0, 18254, 0, 0, 0, 18266, 0, 0, 0, 0, 0, 0, 18269, 18270, 18271, 18273, 18281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18282, 0, 18283, 0, 18284, 0, 0, 0, 0, 0, 0, 18285, 0, 18287, 18289, 0, 0, 18290, 0, 0, 0, 0, 18308, 0, 0, 0, 18310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18311, 0, 18312, 18313, 0, 18315, 0, 0, 18316, 18320, 0, 18331, 0, 18332, 0, 18336, 0, 0, 0, 0, 18337, 0, 18340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18341, 0, 18344, 18345, 0, 18346, 0, 0, 0, 0, 0, 18348, 0, 18351, 0, 0, 18356, 0, 0, 0, 0, 0, 0, 18357, 0, 0, 0, 0, 0, 18367, 0, 0, 0, 18368, 0, 18369, 0, 18370, 18371, 0, 0, 0, 18437, 18444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18445, 18450, 0, 0, 0, 0, 18451, 0, 18452, 0, 0, 0, 18453, 0, 0, 0, 0, 0, 18455, 0, 0, 0, 18456, 0, 18457, 0, 18460, 0, 0, 18461, 0, 0, 0, 0, 0, 0, 0, 0, 18466, 0, 0, 18467, 0, 0, 0, 0, 18473, 0, 0, 0, 18476, 0, 18477, 0, 0, 0, 18478, 18479, 18480, 0, 0, 0, 18485, 0, 0, 0, 18486, 0, 0, 0, 0, 0, 0, 18488, 18490, 0, 0, 0, 0, 0, 0, 18491, 0, 0, 0, 0, 0, 18495, 0, 0, 18496, 0, 0, 0, 0, 0, 0, 18505, 0, 18521, 0, 18522, 18523, 0, 0, 0, 18525, 18526, 0, 0, 0, 0, 0, 18527, 0, 0, 0, 0, 18532, 18533, 0, 18534, 0, 0, 0, 0, 0, 0, 18535, 18537, 0, 18538, 0, 0, 0, 0, 0, 0, 18540, 18541, 18542, 18543, 0, 18546, 0, 0, 0, 0, 18553, 18556, 0, 0, 18558, 0, 0, 18569, 18571, 0, 0, 0, 18572, 0, 18574, 0, 0, 0, 0, 18586, 0, 0, 0, 0, 0, 18588, 0, 0, 18589, 0, 0, 0, 0, 0, 0, 18590, 0, 18592, 0, 0, 0, 0, 18594, 0, 0, 0, 18596, 0, 0, 18597, 18598, 0, 0, 18601, 0, 0, 0, 0, 18602, 0, 0, 0, 18603, 18604, 0, 18605, 0, 0, 0, 0, 18608, 0, 0, 18611, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18612, 0, 18616, 0, 0, 18617, 18619, 0, 0, 0, 18628, 0, 0, 0, 18629, 0, 0, 18630, 0, 0, 0, 0, 0, 0, 0, 18631, 0, 18632, 0, 0, 18635, 18637, 0, 0, 0, 0, 0, 0, 18641, 18643, 18648, 0, 18652, 0, 0, 18653, 0, 18655, 18656, 0, 0, 0, 18657, 0, 0, 18666, 18674, 0, 0, 0, 0, 18677, 18684, 18685, 0, 0, 18686, 0, 0, 18690, 0, 0, 0, 0, 0, 0, 0, 18695, 18696, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18697, 0, 0, 18700, 0, 0, 0, 0, 0, 0, 18702, 0, 18708, 0, 0, 18709, 0, 18710, 0, 0, 18711, 0, 18714, 0, 0, 18718, 0, 0, 0, 0, 0, 0, 18719, 0, 0, 18722, 0, 18726, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18731, 0, 0, 0, 0, 0, 18739, 18741, 0, 0, 18742, 0, 18743, 18744, 18746, 18748, 0, 18752, 18753, 0, 0, 18754, 18763, 0, 18765, 0, 0, 0, 18766, 0, 0, 0, 18769, 0, 0, 0, 0, 0, 18773, 18778, 18779, 18781, 0, 0, 18784, 18787, 0, 18788, 0, 18793, 0, 0, 0, 0, 0, 0, 18795, 0, 0, 18800, 0, 0, 0, 0, 0, 18801, 18804, 0, 0, 0, 0, 0, 0, 0, 18806, 0, 0, 0, 18811, 18815, 18816, 0, 0, 0, 0, 18825, 0, 0, 18827, 18829, 0, 0, 18830, 0, 0, 0, 0, 18831, 0, 0, 18832, 0, 0, 0, 0, 18833, 0, 18840, 0, 18841, 0, 18842, 0, 0, 0, 0, 18843, 0, 18844, 0, 0, 0, 0, 0, 0, 18845, 18846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18848, 0, 0, 0, 18853, 18860, 0, 0, 18862, 18866, 0, 0, 18867, 18869, 0, 0, 18874, 18881, 18891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18892, 0, 0, 0, 0, 0, 0, 0, 0, 18895, 0, 18896, 0, 0, 0, 18900, 0, 0, 0, 18901, 0, 18902, 18915, 18916, 0, 0, 0, 0, 0, 0, 0, 0, 18919, 0, 0, 0, 0, 0, 18920, 0, 0, 0, 18921, 18929, 0, 0, 0, 0, 18930, 0, 0, 0, 0, 0, 0, 18932, 0, 0, 0, 0, 18934, 18942, 0, 0, 0, 18951, 18957, 0, 0, 0, 0, 18958, 0, 0, 0, 0, 18959, 18960, 0, 0, 18961, 0, 0, 18962, 0, 0, 0, 0, 18963, 18964, 0, 0, 0, 18965, 0, 18967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18968, 0, 18969, 0, 18970, 18973, 18976, 0, 0, 0, 0, 0, 0, 18977, 0, 0, 0, 18981, 0, 0, 0, 18990, 0, 18998, 0, 0, 0, 0, 0, 18999, 19003, 0, 0, 19005, 0, 0, 0, 19006, 0, 0, 0, 0, 0, 0, 19008, 19011, 0, 0, 19018, 0, 0, 19019, 0, 19024, 0, 19031, 19032, 0, 19039, 0, 19041, 19050, 0, 0, 0, 19051, 19055, 19056, 0, 19059, 19063, 19064, 0, 0, 19088, 0, 0, 0, 19093, 19094, 0, 0, 0, 0, 19095, 0, 19096, 0, 0, 0, 19097, 0, 0, 19098, 0, 19099, 19100, 0, 0, 19103, 0, 0, 0, 0, 0, 0, 0, 19111, 0, 0, 0, 0, 0, 0, 19112, 0, 0, 0, 19116, 19117, 0, 19121, 19122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19123, 19124, 0, 0, 0, 0, 0, 0, 0, 19125, 19126, 0, 19128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19129, 19130, 19131, 19132, 0, 0, 19146, 0, 0, 19147, 19156, 19158, 0, 0, 0, 0, 0, 0, 0, 0, 19182, 19185, 0, 0, 19187, 0, 0, 0, 19193, 0, 0, 0, 0, 0, 19194, 0, 19197, 0, 0, 0, 0, 19198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19203, 0, 19205, 19210, 0, 0, 0, 19213, 0, 19218, 0, 0, 0, 19223, 19229, 0, 0, 19230, 0, 0, 19231, 19232, 19233, 19239, 0, 0, 0, 0, 0, 19240, 0, 19248, 19249, 0, 0, 0, 0, 19254, 0, 19256, 19258, 19259, 0, 0, 19261, 0, 19266, 0, 0, 0, 19272, 0, 19278, 19281, 19282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19283, 0, 0, 19284, 0, 0, 19285, 19287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19288, 19291, 0, 19292, 0, 0, 0, 0, 19297, 0, 19298, 0, 0, 0, 0, 19302, 19303, 0, 0, 0, 0, 19304, 19305, 0, 0, 0, 0, 19314, 0, 0, 19315, 0, 0, 19321, 0, 0, 0, 0, 0, 0, 0, 19322, 0, 19333, 0, 19334, 19335, 0, 19336, 19337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19346, 0, 0, 19353, 0, 19354, 19362, 0, 19366, 19367, 0, 0, 19369, 0, 19375, 0, 19377, 19380, 19388, 0, 0, 0, 0, 0, 19389, 19390, 0, 0, 0, 0, 19392, 0, 0, 0, 0, 0, 19402, 0, 0, 0, 0, 0, 0, 0, 0, 19412, 0, 0, 19413, 19422, 0, 19424, 0, 0, 0, 19425, 0, 0, 0, 19428, 0, 0, 0, 0, 19431, 0, 0, 0, 0, 0, 19432, 0, 0, 0, 0, 0, 19448, 19459, 0, 0, 19461, 0, 19462, 19463, 0, 19467, 19474, 19482, 0, 0, 0, 0, 19494, 0, 0, 0, 0, 19501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19502, 19504, 0, 0, 0, 0, 0, 0, 0, 19505, 0, 0, 0, 0, 19506, 19507, 0, 0, 0, 19508, 0, 0, 19511, 0, 0, 19514, 0, 19515, 0, 19516, 0, 19518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19530, 0, 19537, 19538, 0, 19543, 19546, 0, 19547, 19551, 0, 0, 0, 0, 0, 0, 19552, 19553, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19555, 0, 0, 19556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19560, 19561, 0, 0, 19562, 0, 0, 0, 0, 0, 0, 19565, 19567, 0, 19568, 0, 0, 0, 19569, 19570, 0, 19578, 0, 0, 0, 0, 19580, 0, 0, 0, 0, 19581, 19584, 0, 0, 0, 0, 0, 0, 0, 19585, 19586, 0, 0, 0, 19587, 19588, 0, 19589, 0, 0, 0, 0, 0, 0, 19592, 19593, 19599, 0, 19600, 0, 0, 19604, 0, 0, 19605, 0, 19606, 19608, 19610, 0, 19613, 19614, 0, 0, 0, 0, 0, 0, 19616, 19617, 0, 0, 19618, 0, 0, 19619, 0, 0, 0, 19620, 19621, 19631, 0, 0, 19632, 19634, 19636, 0, 19643, 0, 0, 19644, 19658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19675, 19677, 0, 0, 0, 0, 19679, 0, 19683, 0, 19684, 0, 0, 0, 0, 0, 0, 19687, 0, 0, 0, 0, 0, 0, 0, 0, 19688, 19689, 19692, 0, 0, 0, 0, 0, 0, 0, 19695, 19697, 0, 0, 0, 0, 0, 19698, 19699, 0, 0, 19700, 0, 19702, 0, 0, 19703, 0, 0, 0, 0, 0, 0, 19704, 19708, 0, 19710, 0, 19713, 0, 0, 0, 19715, 0, 0, 0, 0, 19718, 0, 0, 0, 0, 0, 0, 0, 19720, 0, 19722, 0, 0, 19725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19730, 0, 0, 0, 0, 0, 19731, 0, 19734, 19735, 19739, 0, 0, 19740, 0, 19741, 0, 0, 0, 19746, 0, 0, 19747, 0, 19771, 0, 0, 0, 0, 0, 0, 0, 0, 19772, 19775, 0, 0, 0, 0, 0, 0, 19778, 0, 0, 0, 0, 0, 19779, 0, 0, 19780, 19790, 0, 19791, 0, 0, 19792, 0, 0, 0, 19793, 0, 0, 19796, 19797, 0, 0, 0, 19799, 0, 0, 0, 19801, 0, 0, 0, 0, 19803, 0, 19804, 0, 19805, 0, 0, 19807, 0, 0, 0, 19808, 0, 0, 0, 0, 0, 0, 19809, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19816, 0, 19821, 0, 19822, 19830, 19831, 0, 0, 0, 19833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19838, 0, 0, 0, 0, 19839, 0, 0, 19843, 0, 0, 0, 0, 19845, 0, 0, 0, 0, 19847, 0, 0, 19848, 0, 19849, 0, 0, 0, 0, 0, 0, 0, 19851, 0, 0, 0, 19854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19864, 0, 19865, 0, 19866, 0, 0, 0, 0, 0, 0, 0, 19868, 0, 0, 19870, 0, 0, 19871, 0, 0, 19872, 19873, 19875, 0, 19880, 19882, 19884, 0, 0, 19885, 19886, 19888, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19890, 19892, 19893, 0, 0, 19894, 0, 0, 0, 19895, 0, 19896, 19902, 0, 0, 19903, 0, 0, 19905, 0, 0, 0, 19906, 0, 19908, 0, 19909, 19911, 0, 0, 0, 19913, 19920, 0, 19938, 19939, 19940, 0, 0, 0, 0, 0, 0, 0, 19942, 0, 19943, 0, 19945, 0, 0, 0, 19951, 19952, 19954, 19960, 0, 19965, 0, 19971, 0, 0, 0, 0, 0, 19975, 0, 19976, 0, 19990, 0, 0, 19991, 0, 19993, 0, 19995, 0, 0, 0, 19998, 19999, 20001, 0, 20003, 20005, 0, 20011, 20012, 0, 0, 0, 0, 0, 0, 20014, 0, 20020, 0, 0, 0, 0, 20021, 0, 0, 0, 0, 0, 20023, 20024, 0, 0, 0, 0, 0, 20025, 0, 0, 20027, 0, 0, 20029, 0, 0, 20032, 0, 0, 0, 0, 20044, 20045, 0, 20048, 20049, 0, 0, 20050, 0, 20052, 0, 0, 20054, 20057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20059, 0, 0, 20061, 0, 20062, 0, 20064, 0, 0, 20066, 0, 0, 20067, 0, 0, 0, 0, 20069, 0, 0, 0, 0, 0, 0, 20070, 20071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20072, 0, 0, 20073, 20074, 0, 0, 0, 0, 0, 20075, 0, 20078, 0, 0, 0, 0, 20080, 0, 20081, 0, 0, 0, 0, 0, 0, 20095, 0, 20098, 0, 0, 0, 0, 0, 0, 0, 20107, 0, 0, 0, 0, 0, 0, 0, 0, 20112, 0, 0, 0, 20113, 20114, 0, 0, 0, 20115, 20123, 20124, 0, 0, 0, 20131, 20133, 20134, 0, 0, 0, 0, 20136, 0, 0, 20137, 20138, 20150, 0, 20152, 0, 0, 0, 20153, 0, 0, 20154, 0, 0, 0, 20158, 0, 20163, 0, 0, 20164, 0, 0, 0, 0, 0, 0, 0, 20166, 0, 20168, 0, 20170, 0, 20175, 0, 0, 20178, 0, 0, 0, 0, 20223, 0, 0, 0, 0, 20224, 0, 20226, 0, 0, 20230, 0, 20231, 0, 0, 0, 0, 20232, 0, 0, 20233, 20234, 0, 20244, 0, 20247, 0, 0, 0, 0, 0, 0, 20249, 0, 0, 0, 20250, 0, 0, 0, 0, 20251, 0, 20253, 0, 20254, 0, 0, 0, 0, 20256, 0, 0, 20264, 0, 0, 0, 0, 20266, 0, 0, 0, 20278, 0, 0, 20279, 20282, 0, 0, 0, 0, 0, 20283, 0, 20284, 0, 20285, 0, 20287, 20290, 0, 0, 0, 0, 20292, 0, 0, 0, 0, 20293, 20297, 0, 0, 0, 0, 0, 0, 20299, 0, 20300, 20303, 0, 0, 0, 0, 0, 0, 20307, 0, 0, 20308, 0, 20309, 0, 20310, 0, 0, 0, 0, 0, 0, 20312, 0, 0, 0, 20314, 0, 0, 0, 0, 20315, 20316, 0, 20322, 0, 0, 0, 0, 0, 0, 20339, 0, 0, 0, 20342, 0, 0, 0, 0, 20352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20362, 0, 0, 20365, 0, 20375, 20377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20378, 20379, 0, 20380, 0, 0, 20381, 0, 20382, 0, 20383, 0, 20388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20390, 20392, 20393, 0, 0, 20395, 0, 0, 0, 0, 0, 20396, 0, 0, 0, 0, 0, 0, 0, 0, 20398, 20415, 0, 0, 0, 20417, 0, 0, 20420, 0, 0, 20426, 20428, 0, 20431, 0, 0, 20432, 0, 20433, 20434, 20435, 0, 0, 0, 0, 20440, 0, 0, 0, 0, 0, 20442, 0, 20443, 0, 20446, 0, 0, 0, 0, 20448, 0, 20451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20452, 20453, 0, 0, 20454, 0, 0, 0, 0, 0, 0, 20457, 0, 20458, 0, 0, 0, 20465, 0, 0, 0, 0, 0, 20469, 0, 0, 0, 20473, 0, 20476, 0, 0, 0, 0, 0, 0, 0, 0, 20477, 0, 0, 20485, 0, 0, 20486, 0, 0, 20487, 0, 20496, 0, 20497, 0, 0, 20498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20499, 20500, 0, 20501, 0, 0, 0, 0, 0, 20520, 20527, 0, 20529, 0, 0, 0, 0, 20539, 0, 0, 20540, 0, 0, 0, 20543, 0, 0, 0, 20546, 0, 0, 0, 0, 0, 20548, 0, 0, 20563, 0, 0, 20564, 0, 20566, 0, 0, 0, 0, 0, 20589, 0, 0, 0, 0, 20590, 0, 0, 20593, 20594, 0, 0, 0, 0, 20595, 0, 20597, 20598, 0, 0, 0, 20618, 20620, 0, 0, 0, 0, 20621, 0, 0, 0, 0, 20627, 0, 0, 0, 0, 0, 20628, 0, 0, 0, 20629, 0, 20630, 0, 0, 20639, 0, 0, 0, 0, 0, 20707, 0, 0, 20709, 0, 0, 0, 20713, 20714, 0, 0, 0, 0, 0, 20724, 20725, 0, 0, 0, 0, 20726, 20728, 20729, 0, 20733, 0, 20734, 0, 20735, 20736, 0, 20737, 0, 0, 20744, 0, 20745, 0, 20748, 0, 0, 20749, 0, 0, 0, 0, 0, 0, 0, 0, 20750, 0, 0, 0, 0, 20754, 0, 0, 0, 20761, 0, 0, 20763, 0, 0, 0, 0, 0, 0, 0, 20766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20767, 0, 0, 0, 0, 20768, 0, 20769, 20777, 0, 0, 0, 0, 0, 0, 20785, 0, 0, 0, 20786, 20795, 20801, 0, 20802, 0, 20807, 0, 0, 20808, 0, 0, 20810, 0, 0, 20811, 0, 20812, 0, 0, 0, 0, 0, 20813, 0, 0, 20818, 20820, 20821, 0, 0, 0, 20822, 0, 20823, 0, 0, 0, 20826, 0, 0, 0, 0, 0, 0, 0, 20829, 20830, 20831, 0, 20832, 20836, 0, 0, 20839, 0, 0, 20840, 20842, 0, 20843, 0, 20844, 0, 20854, 0, 0, 0, 20855, 0, 0, 0, 0, 20856, 0, 0, 0, 20869, 0, 0, 20871, 0, 0, 0, 0, 0, 0, 0, 20873, 0, 0, 0, 0, 0, 20876, 0, 0, 0, 0, 0, 20880, 0, 0, 20882, 0, 0, 0, 0, 20883, 20884, 0, 0, 20890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20891, 0, 0, 0, 0, 0, 20905, 0, 20906, 20910, 0, 0, 20912, 20915, 0, 0, 0, 0, 0, 20916, 0, 20917, 0, 20919, 20920, 20922, 0, 20927, 0, 20928, 20929, 20930, 0, 0, 20935, 0, 0, 20939, 0, 0, 20941, 0, 0, 0, 20943, 0, 0, 0, 20946, 20947, 0, 0, 0, 0, 0, 20950, 0, 20954, 0, 0, 20955, 20964, 0, 0, 20967, 0, 0, 0, 0, 0, 20973, 20975, 0, 0, 0, 20984, 0, 20987, 20988, 0, 0, 0, 0, 0, 20989, 0, 0, 0, 20995, 0, 20998, 0, 20999, 0, 0, 0, 0, 21000, 21001, 0, 0, 0, 0, 21008, 0, 21010, 0, 21016, 0, 0, 0, 21017, 21018, 0, 0, 0, 0, 0, 21021, 21026, 21027, 21028, 0, 0, 21029, 0, 0, 0, 0, 0, 21030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21031, 21032, 0, 0, 0, 0, 0, 21037, 0, 0, 21038, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21039, 0, 21041, 0, 21046, 21047, 0, 0, 0, 21049, 21053, 0, 0, 21057, 21064, 21065, 0, 0, 21066, 21067, 0, 0, 0, 21069, 0, 0, 0, 21071, 21072, 0, 0, 21073, 0, 21074, 0, 0, 21078, 0, 0, 0, 0, 21079, 0, 0, 21080, 21081, 0, 0, 21086, 21087, 0, 21089, 0, 0, 0, 0, 0, 0, 0, 21091, 0, 21093, 0, 21094, 0, 0, 0, 0, 0, 0, 0, 0, 21095, 0, 0, 0, 0, 0, 21096, 0, 21098, 0, 0, 0, 0, 0, 0, 0, 21099, 0, 0, 21100, 21101, 21102, 0, 0, 0, 0, 0, 21103, 0, 21104, 0, 0, 0, 0, 0, 21105, 21108, 21109, 0, 0, 21112, 21113, 0, 0, 0, 0, 0, 0, 21115, 21122, 21123, 0, 0, 0, 0, 0, 21125, 0, 0, 0, 0, 0, 0, 0, 0, 21129, 21131, 0, 0, 21134, 0, 0, 0, 21137, 21142, 0, 21143, 0, 0, 21144, 0, 21145, 21146, 0, 21152, 21154, 21155, 21156, 0, 0, 0, 21160, 0, 0, 0, 0, 0, 0, 21161, 0, 21164, 0, 21166, 0, 0, 0, 0, 21170, 0, 0, 0, 0, 21171, 0, 0, 21172, 0, 21174, 0, 21175, 0, 0, 0, 0, 0, 21176, 21179, 21188, 0, 0, 0, 21189, 0, 0, 21190, 0, 0, 0, 21192, 0, 0, 21193, 0, 0, 0, 21198, 0, 21212, 0, 0, 21213, 0, 0, 0, 0, 0, 0, 21215, 21216, 0, 0, 21223, 21225, 0, 21226, 0, 0, 0, 0, 21227, 21228, 0, 0, 21229, 0, 0, 0, 0, 21230, 21236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21237, 0, 0, 21238, 21239, 0, 0, 0, 0, 21256, 0, 0, 0, 0, 0, 21257, 0, 0, 0, 0, 0, 0, 0, 21259, 0, 0, 0, 21263, 0, 21272, 0, 21274, 0, 21282, 0, 0, 0, 0, 0, 0, 0, 0, 21283, 0, 0, 0, 0, 0, 0, 0, 0, 21294, 0, 0, 21297, 0, 0, 0, 0, 21298, 0, 0, 0, 21299, 0, 21300, 21302, 0, 21316, 0, 21318, 21322, 21323, 0, 21324, 0, 21326, 0, 0, 0, 21327, 21328, 0, 0, 0, 21352, 0, 0, 21354, 21361, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21362, 0, 0, 0, 21363, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21366, 0, 0, 21367, 21372, 21374, 0, 0, 0, 21375, 21377, 0, 21378, 0, 0, 0, 21380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21381, 0, 0, 0, 0, 0, 0, 21382, 0, 21383, 0, 0, 21384, 0, 0, 21385, 0, 0, 0, 0, 21389, 21390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21397, 21398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21399, 0, 21400, 0, 0, 0, 0, 21402, 0, 0, 0, 21403, 21404, 0, 21405, 21406, 0, 0, 0, 21407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21408, 0, 0, 0, 0, 21409, 0, 21421, 0, 21422, 0, 0, 0, 21425, 21428, 0, 0, 0, 0, 21429, 0, 0, 0, 0, 0, 21433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21434, 0, 21443, 0, 21444, 21449, 0, 21452, 0, 21453, 21454, 0, 0, 0, 21457, 0, 0, 21458, 0, 0, 0, 21460, 21461, 0, 0, 21464, 0, 0, 0, 21473, 21478, 0, 0, 21479, 0, 0, 21481, 21483, 0, 0, 0, 0, 0, 0, 0, 0, 21484, 0, 0, 21485, 21486, 0, 0, 21488, 0, 0, 0, 0, 0, 0, 21523, 0, 0, 21525, 0, 0, 0, 0, 0, 0, 0, 21526, 0, 0, 0, 0, 0, 0, 21529, 21530, 0, 0, 21531, 0, 0, 21533, 0, 0, 21539, 21564, 0, 21567, 0, 0, 0, 0, 0, 0, 0, 0, 21575, 0, 0, 0, 0, 21577, 0, 0, 0, 0, 0, 21591, 0, 0, 21604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21605, 0, 21606, 0, 0, 21617, 21618, 21619, 21620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21623, 0, 0, 0, 0, 21631, 0, 21635, 0, 0, 0, 0, 21639, 21646, 21653, 21662, 0, 0, 21663, 21664, 0, 21666, 0, 0, 21667, 0, 21670, 21672, 21673, 0, 21674, 21683, 0, 0, 0, 0, 0, 21684, 0, 21694, 0, 0, 0, 0, 21695, 21700, 0, 21703, 0, 21704, 0, 0, 21709, 0, 0, 0, 21710, 0, 0, 0, 0, 0, 0, 0, 0, 21711, 0, 0, 0, 21712, 0, 21717, 0, 21730, 0, 0, 0, 21731, 21733, 0, 0, 0, 0, 21737, 21741, 21742, 0, 21747, 0, 0, 0, 21749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21750, 0, 0, 0, 0, 0, 21752, 0, 0, 0, 0, 21753, 0, 0, 0, 0, 0, 0, 21755, 21756, 0, 21757, 0, 0, 0, 0, 0, 0, 21760, 0, 0, 21763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21764, 0, 0, 21766, 0, 0, 21767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21773, 0, 21774, 0, 0, 21775, 0, 0, 0, 0, 21776, 0, 0, 21777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21780, 21787, 21788, 21791, 0, 0, 0, 21797, 0, 0, 0, 0, 0, 21805, 0, 0, 0, 0, 21806, 0, 21807, 21809, 0, 21810, 21811, 0, 21817, 21819, 21820, 0, 21823, 0, 21824, 0, 0, 21825, 0, 0, 21826, 21832, 0, 0, 0, 0, 0, 21833, 21848, 21849, 0, 0, 21867, 21870, 21871, 21873, 0, 0, 0, 21874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21875, 0, 21878, 0, 0, 0, 21879, 0, 21881, 21886, 0, 0, 0, 0, 21887, 0, 0, 21888, 21894, 21895, 21897, 0, 21901, 0, 21904, 0, 0, 21906, 0, 0, 0, 21909, 21910, 21911, 0, 0, 21912, 0, 0, 21913, 21914, 21915, 0, 21919, 0, 0, 0, 0, 0, 0, 0, 21921, 0, 0, 21922, 21933, 21939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21944, 0, 0, 0, 0, 0, 21945, 0, 21947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21949, 0, 0, 0, 21950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21951, 0, 21952, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21954, 21957, 0, 0, 0, 0, 21958, 0, 21959, 0, 0, 0, 0, 0, 0, 21962, 21963, 0, 0, 0, 0, 0, 0, 0, 0, 21964, 21965, 0, 0, 21969, 21970, 0, 0, 0, 21974, 0, 0, 21980, 21981, 0, 21982, 0, 0, 0, 0, 0, 21985, 0, 21988, 0, 21992, 0, 21999, 0, 0, 0, 0, 0, 0, 22001, 0, 22002, 0, 0, 0, 0, 0, 0, 22003, 0, 0, 0, 0, 0, 22004, 0, 0, 0, 22008, 0, 22009, 22015, 0, 0, 22016, 0, 0, 0, 22017, 22019, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22020, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22021, 22037, 0, 22039, 0, 0, 0, 22040, 0, 0, 0, 22048, 22049, 0, 0, 22053, 22055, 22056, 22059, 0, 0, 22060, 22061, 0, 0, 22064, 0, 0, 0, 0, 22066, 0, 0, 0, 0, 0, 0, 0, 22073, 0, 0, 0, 22074, 22075, 0, 0, 0, 0, 0, 0, 0, 22076, 0, 0, 0, 0, 22077, 22084, 22099, 0, 0, 0, 0, 0, 0, 0, 22104, 0, 0, 22107, 0, 22108, 0, 22109, 0, 22110, 0, 0, 0, 0, 0, 0, 0, 22111, 22119, 0, 22120, 22122, 0, 0, 0, 0, 22125, 0, 0, 0, 22128, 22129, 0, 0, 0, 0, 0, 0, 22141, 0, 0, 0, 22142, 0, 0, 22144, 22146, 0, 22148, 22149, 22151, 22154, 0, 0, 0, 22162, 0, 0, 0, 0, 22164, 22177, 0, 0, 0, 0, 22179, 0, 22182, 22183, 0, 0, 22184, 22188, 0, 0, 0, 0, 0, 0, 0, 0, 22190, 0, 22194, 22201, 0, 0, 22208, 0, 22209, 0, 22212, 0, 0, 22215, 0, 22223, 22231, 0, 0, 22232, 0, 22234, 0, 0, 22235, 22236, 0, 22237, 0, 22240, 0, 0, 0, 0, 0, 22241, 0, 0, 0, 22242, 22246, 22247, 0, 0, 0, 22259, 22268, 0, 22269, 0, 0, 0, 0, 0, 0, 0, 22270, 0, 0, 0, 0, 22271, 0, 22272, 0, 22277, 0, 0, 0, 0, 0, 22278, 22280, 22283, 22286, 0, 0, 22287, 22289, 0, 0, 22290, 0, 22293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22295, 0, 22301, 22302, 0, 0, 0, 22305, 0, 22308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22315, 0, 0, 0, 22317, 0, 22334, 0, 0, 0, 22335, 0, 0, 0, 0, 0, 22336, 0, 22338, 22344, 0, 22347, 22349, 0, 22350, 0, 0, 0, 0, 0, 0, 0, 22357, 0, 0, 0, 0, 0, 22358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22359, 22360, 0, 0, 0, 0, 0, 0, 0, 0, 22361, 22366, 0, 0, 22369, 0, 22370, 22373, 0, 0, 0, 0, 0, 22375, 0, 22377, 0, 0, 0, 0, 0, 22378, 0, 0, 0, 0, 22381, 0, 0, 0, 0, 22382, 0, 22383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22391, 0, 0, 22392, 22395, 22396, 22402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22405, 0, 0, 22406, 0, 0, 22408, 0, 0, 22409, 22410, 0, 0, 0, 0, 0, 0, 22424, 0, 0, 0, 0, 22426, 0, 0, 0, 22427, 0, 22428, 0, 22432, 0, 22435, 22442, 22443, 0, 0, 0, 0, 22444, 0, 0, 0, 0, 0, 22446, 0, 22454, 0, 22455, 0, 0, 0, 22465, 0, 22470, 0, 22471, 0, 0, 0, 0, 22472, 22473, 0, 22487, 0, 0, 0, 22488, 0, 0, 0, 0, 22489, 0, 0, 22499, 0, 0, 0, 0, 0, 0, 22514, 0, 0, 22515, 0, 0, 0, 0, 0, 0, 0, 22516, 0, 0, 0, 22517, 22520, 0, 0, 0, 22534, 0, 0, 22535, 0, 0, 22536, 0, 22540, 22553, 0, 22555, 0, 0, 0, 0, 22561, 0, 0, 22562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22566, 0, 0, 0, 0, 22567, 22568, 0, 0, 22575, 0, 22579, 0, 22582, 22583, 22585, 0, 0, 0, 0, 0, 22586, 0, 0, 22587, 0, 0, 22590, 0, 0, 0, 0, 0, 22591, 0, 22592, 0, 0, 0, 0, 0, 22593, 0, 22602, 0, 0, 22604, 0, 0, 22609, 0, 0, 22618, 0, 0, 0, 0, 0, 0, 22619, 0, 22624, 22625, 0, 0, 22638, 0, 0, 0, 0, 0, 22639, 0, 0, 22640, 0, 0, 0, 0, 0, 0, 0, 22644, 0, 22645, 22647, 0, 0, 0, 0, 22652, 22653, 0, 0, 0, 22654, 0, 22655, 0, 0, 0, 22656, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22673, 22675, 22676, 0, 0, 22678, 22679, 0, 22691, 0, 0, 0, 0, 0, 0, 0, 22693, 0, 0, 22696, 0, 22699, 22707, 22708, 0, 0, 0, 0, 0, 0, 0, 0, 22718, 0, 22719, 0, 0, 0, 0, 22723, 0, 0, 0, 22724, 22725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22726, 22728, 0, 0, 0, 0, 0, 0, 0, 0, 22729, 0, 0, 22731, 0, 0, 0, 0, 22732, 22735, 22736, 0, 0, 0, 0, 22739, 0, 22749, 0, 0, 22751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22758, 0, 0, 0, 0, 0, 22760, 0, 0, 0, 0, 0, 22764, 22765, 22766, 0, 22768, 0, 0, 0, 0, 0, 22769, 22770, 0, 0, 0, 0, 0, 0, 22771, 0, 0, 22772, 22775, 0, 22776, 22777, 22780, 0, 0, 22782, 22784, 0, 22787, 0, 22789, 22796, 0, 0, 0, 0, 0, 22798, 0, 0, 0, 0, 0, 0, 22802, 0, 22803, 22804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22805, 0, 0, 22810, 22811, 22814, 22816, 0, 22825, 22826, 0, 22831, 22833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22834, 0, 22836, 22838, 0, 22839, 0, 0, 0, 0, 0, 22840, 0, 22847, 0, 0, 0, 0, 0, 22856, 22857, 0, 22858, 22859, 0, 0, 22862, 0, 0, 22864, 0, 0, 0, 0, 22865, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22866, 0, 22867, 22868, 0, 0, 0, 0, 22869, 0, 22871, 0, 22872, 0, 22873, 22881, 22882, 22884, 22885, 0, 0, 0, 0, 0, 0, 0, 22886, 22887, 0, 22894, 0, 22895, 0, 0, 0, 22900, 0, 22901, 0, 0, 0, 0, 22904, 0, 0, 0, 0, 22905, 22907, 0, 0, 0, 22915, 22917, 0, 0, 22918, 0, 0, 0, 22920, 0, 0, 0, 22929, 22930, 0, 0, 0, 22941, 22942, 0, 0, 0, 22943, 0, 0, 0, 22944, 0, 0, 0, 0, 0, 0, 0, 22946, 0, 22947, 0, 0, 22954, 0, 22956, 0, 0, 22962, 0, 0, 0, 0, 0, 0, 0, 22963, 0, 0, 22964, 0, 0, 0, 0, 0, 0, 0, 22965, 0, 22968, 0, 0, 0, 22969, 0, 0, 0, 0, 0, 22970, 0, 22971, 0, 0, 0, 0, 0, 22978, 0, 0, 22979, 0, 22987, 0, 0, 22989, 0, 0, 0, 0, 0, 0, 22990, 0, 23005, 0, 0, 0, 0, 0, 0, 0, 23006, 23007, 23008, 0, 0, 23023, 23024, 23029, 0, 0, 0, 0, 23030, 0, 0, 0, 0, 0, 23032, 0, 0, 0, 0, 0, 23035, 0, 0, 0, 0, 23038, 0, 0, 0, 23048, 0, 23049, 23052, 23053, 23060, 23061, 0, 23063, 0, 0, 0, 0, 23067, 23068, 0, 0, 0, 23069, 23073, 0, 0, 0, 23127, 0, 23128, 0, 0, 0, 0, 0, 23129, 0, 23138, 23141, 0, 23149, 0, 0, 23150, 0, 0, 0, 23152, 0, 0, 0, 0, 0, 0, 0, 0, 23154, 0, 0, 0, 0, 23157, 23159, 23160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23180, 0, 0, 0, 0, 23181, 0, 0, 23188, 0, 23189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23195, 0, 0, 23196, 23199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23202, 0, 23204, 0, 23207, 0, 23209, 23210, 0, 0, 0, 0, 0, 0, 23227, 23229, 0, 0, 23230, 23234, 23238, 0, 0, 0, 23245, 23246, 23248, 0, 0, 0, 0, 23249, 23254, 0, 0, 0, 23265, 0, 0, 0, 0, 0, 0, 0, 23268, 0, 23276, 0, 0, 0, 0, 23277, 0, 23297, 0, 23298, 0, 0, 0, 0, 23299, 0, 23302, 0, 0, 23303, 23312, 0, 0, 23314, 0, 23320, 0, 0, 0, 0, 23324, 0, 23325, 0, 23328, 0, 23334, 0, 0, 0, 23337, 0, 0, 0, 0, 23343, 23344, 23346, 0, 23348, 0, 0, 0, 0, 0, 0, 0, 0, 23353, 0, 0, 0, 0, 23355, 0, 23356, 23358, 0, 0, 0, 23359, 23360, 0, 23361, 0, 23367, 0, 23369, 0, 0, 23373, 0, 23378, 23379, 0, 23382, 23383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23387, 0, 0, 0, 0, 0, 0, 23388, 23390, 0, 0, 23393, 23398, 0, 0, 0, 23399, 0, 0, 0, 23400, 0, 0, 0, 0, 23401, 0, 0, 0, 23415, 0, 0, 0, 0, 0, 0, 0, 0, 23416, 0, 23422, 0, 23443, 23444, 0, 0, 0, 0, 23448, 0, 23454, 0, 0, 0, 0, 0, 0, 23456, 0, 0, 23458, 23464, 0, 0, 0, 0, 0, 0, 23465, 0, 0, 0, 23470, 23471, 0, 0, 23472, 0, 0, 0, 23473, 23496, 0, 0, 0, 0, 0, 0, 0, 0, 23497, 0, 23499, 0, 0, 23502, 0, 0, 23503, 0, 0, 23513, 0, 0, 23515, 0, 0, 0, 23517, 0, 0, 0, 0, 23518, 23519, 23521, 23524, 0, 23525, 23528, 23539, 0, 0, 0, 0, 0, 23541, 0, 0, 23544, 0, 0, 23556, 0, 0, 23557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23559, 0, 23560, 0, 0, 23561, 0, 0, 23566, 0, 0, 0, 0, 0, 23568, 23569, 23570, 0, 0, 0, 0, 23571, 0, 23574, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23575, 0, 23579, 0, 0, 23581, 0, 0, 0, 0, 0, 0, 23587, 0, 0, 0, 0, 0, 0, 0, 23596, 23598, 0, 0, 0, 0, 23602, 23606, 0, 0, 23607, 0, 23608, 0, 0, 0, 23614, 23616, 0, 0, 0, 0, 0, 23618, 0, 0, 23619, 0, 0, 0, 0, 23621, 23626, 0, 23627, 0, 0, 0, 0, 0, 0, 0, 23629, 0, 23630, 0, 0, 0, 0, 23634, 0, 23636, 0, 0, 0, 0, 0, 0, 23638, 0, 0, 0, 0, 23640, 23667, 0, 23669, 0, 0, 0, 23681, 0, 0, 0, 0, 0, 0, 0, 23682, 0, 23683, 0, 0, 0, 0, 0, 23684, 0, 0, 0, 23685, 23689, 0, 23693, 23694, 23700, 0, 23702, 0, 23709, 0, 0, 0, 0, 0, 0, 0, 23712, 0, 0, 0, 0, 0, 23714, 0, 0, 23715, 0, 0, 0, 0, 23718, 0, 0, 23720, 0, 0, 0, 0, 23722, 0, 0, 0, 23726, 23729, 0, 23741, 23746, 0, 23748, 0, 0, 0, 0, 23749, 0, 0, 0, 0, 0, 23750, 0, 0, 0, 0, 23751, 0, 23753, 0, 0, 0, 0, 23757, 23765, 0, 0, 0, 23770, 0, 0, 0, 0, 0, 0, 0, 23771, 0, 23772, 23781, 0, 0, 23796, 0, 0, 0, 0, 23798, 0, 23799, 0, 0, 0, 23802, 0, 0, 23806, 0, 23807, 0, 0, 23808, 0, 23809, 0, 23819, 0, 0, 0, 23821, 0, 23827, 0, 0, 0, 23829, 0, 0, 0, 0, 0, 0, 0, 23830, 0, 0, 0, 0, 0, 0, 23832, 23833, 23834, 23835, 0, 0, 0, 0, 23837, 23838, 0, 0, 0, 0, 0, 23846, 0, 0, 0, 0, 0, 0, 23847, 0, 0, 0, 0, 0, 23879, 23881, 0, 0, 23882, 23883, 23895, 0, 23899, 0, 0, 0, 0, 23901, 0, 0, 0, 0, 0, 0, 23902, 0, 0, 0, 0, 0, 23903, 23905, 0, 23906, 0, 23907, 23918, 23919, 23920, 0, 23922, 0, 23924, 0, 23927, 0, 23934, 0, 23937, 23941, 0, 23942, 23946, 0, 0, 0, 0, 0, 23955, 23956, 23958, 0, 0, 0, 0, 0, 0, 23959, 0, 23962, 23965, 0, 23966, 0, 0, 0, 0, 23967, 23968, 0, 0, 23973, 0, 0, 23974, 0, 0, 0, 0, 23975, 0, 23976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23977, 0, 0, 0, 0, 0, 0, 0, 0, 23980, 0, 0, 23984, 0, 23985, 0, 0, 23987, 0, 0, 23988, 23990, 23991, 0, 0, 0, 0, 0, 0, 23992, 0, 0, 0, 0, 0, 0, 0, 0, 23994, 0, 0, 0, 23998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23999, 0, 0, 24003, 0, 24004, 0, 24006, 0, 0, 0, 24007, 0, 0, 24008, 0, 0, 0, 0, 0, 0, 0, 24009, 0, 0, 24010, 0, 0, 24011, 0, 0, 24013, 24014, 0, 0, 24015, 24016, 24027, 0, 24028, 24029, 0, 24030, 0, 0, 0, 0, 0, 24033, 24034, 0, 24035, 0, 0, 24036, 0, 0, 24044, 0, 24048, 24049, 24063, 24067, 0, 24068, 24070, 0, 0, 24071, 24078, 24087, 0, 24090, 0, 0, 0, 24095, 0, 24098, 24101, 24104, 24106, 0, 24107, 0, 0, 0, 24108, 0, 0, 0, 0, 24110, 24111, 0, 24113, 0, 0, 24115, 24120, 0, 0, 0, 0, 0, 0, 24124, 0, 24125, 0, 24126, 0, 24127, 0, 0, 0, 0, 0, 24135, 0, 0, 24136, 0, 24137, 24142, 0, 0, 0, 24146, 0, 0, 24147, 24149, 24154, 0, 24163, 0, 0, 0, 24165, 24166, 24167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24169, 24170, 24175, 0, 0, 0, 24178, 0, 0, 24179, 0, 0, 24181, 0, 24184, 24197, 0, 24201, 24204, 0, 0, 0, 0, 0, 0, 24206, 24212, 24220, 0, 0, 0, 24224, 0, 0, 0, 0, 0, 0, 0, 0, 24226, 0, 24234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24235, 0, 24236, 0, 0, 0, 0, 0, 24239, 24240, 24241, 0, 0, 24248, 0, 0, 24249, 0, 24251, 0, 0, 0, 0, 0, 0, 24253, 0, 24268, 0, 0, 0, 24269, 0, 24271, 24272, 0, 0, 0, 0, 24273, 0, 0, 24274, 0, 0, 24279, 0, 0, 0, 0, 0, 0, 0, 24280, 0, 24293, 24294, 0, 0, 0, 0, 0, 0, 24296, 0, 0, 24323, 0, 0, 0, 24329, 24330, 24331, 24339, 0, 24351, 0, 0, 24369, 24370, 0, 0, 0, 24371, 0, 0, 0, 0, 24372, 24373, 24374, 0, 0, 0, 0, 0, 24378, 0, 0, 0, 0, 24379, 0, 24381, 0, 24383, 24389, 0, 24390, 0, 0, 24394, 24395, 24400, 0, 0, 0, 24401, 24402, 0, 24406, 0, 0, 0, 24411, 0, 0, 0, 24415, 0, 24416, 0, 0, 0, 0, 0, 24417, 0, 24419, 0, 24422, 0, 24423, 24428, 0, 24435, 0, 0, 0, 24439, 0, 0, 0, 24440, 24442, 24446, 0, 0, 0, 24447, 24448, 24449, 24452, 0, 0, 0, 0, 24453, 24457, 0, 0, 24458, 24459, 24460, 0, 24465, 0, 0, 0, 0, 0, 0, 0, 24470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24471, 0, 24473, 24474, 24475, 24476, 0, 24478, 0, 0, 0, 0, 24480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24481, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24482, 24485, 0, 0, 0, 0, 24486, 0, 0, 0, 24488, 0, 0, 0, 24494, 0, 0, 0, 0, 24497, 0, 0, 24498, 0, 0, 0, 24499, 24506, 0, 0, 0, 24507, 0, 0, 24511, 0, 0, 24513, 24514, 0, 0, 0, 0, 0, 24517, 0, 24518, 0, 24520, 0, 24521, 24524, 24525, 0, 0, 0, 0, 0, 24527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24537, 24539, 0, 24540, 0, 0, 0, 24548, 0, 0, 0, 0, 0, 24549, 24550, 0, 0, 0, 24553, 24554, 0, 24555, 0, 24556, 0, 24558, 0, 0, 0, 0, 0, 24560, 0, 0, 0, 24561, 0, 0, 0, 0, 0, 24562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24567, 0, 0, 0, 0, 0, 24569, 0, 0, 0, 24574, 0, 24575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24577, 24581, 0, 24584, 0, 0, 0, 0, 0, 24585, 0, 0, 0, 0, 0, 24586, 0, 0, 24587, 0, 24588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24590, 24591, 0, 0, 0, 0, 24592, 0, 0, 0, 0, 0, 0, 0, 24594, 0, 0, 0, 0, 0, 0, 0, 24596, 24597, 0, 0, 0, 0, 24602, 24603, 0, 0, 0, 0, 24604, 0, 0, 24605, 0, 24610, 0, 0, 24611, 0, 0, 0, 0, 24612, 24615, 24616, 24624, 0, 0, 0, 24627, 0, 24638, 24639, 0, 0, 0, 0, 24640, 0, 0, 0, 24655, 24656, 24657, 0, 0, 0, 0, 0, 0, 0, 0, 24662, 0, 24663, 24664, 0, 0, 0, 0, 0, 24665, 0, 0, 0, 0, 24667, 0, 0, 0, 0, 0, 0, 24668, 24669, 0, 24670, 24674, 0, 0, 0, 24675, 0, 24678, 0, 0, 24679, 0, 0, 0, 24681, 0, 24683, 0, 0, 0, 0, 24684, 0, 24685, 0, 0, 24686, 0, 0, 24688, 24689, 0, 0, 0, 0, 24690, 24691, 0, 0, 0, 0, 0, 0, 0, 24697, 0, 24698, 0, 0, 0, 0, 0, 0, 0, 0, 24709, 0, 0, 0, 0, 0, 24710, 0, 24712, 0, 0, 0, 0, 0, 0, 24713, 24714, 0, 24715, 0, 24716, 24718, 0, 24719, 0, 0, 0, 0, 24720, 0, 0, 24725, 0, 0, 24738, 0, 24749, 24750, 0, 0, 0, 24752, 0, 0, 0, 24753, 0, 0, 0, 24758, 0, 0, 0, 0, 0, 24762, 0, 24763, 0, 0, 0, 0, 0, 0, 0, 24764, 0, 0, 0, 0, 0, 24765, 24767, 24768, 0, 24772, 0, 0, 0, 0, 24773, 0, 0, 0, 0, 24777, 0, 0, 0, 0, 0, 24785, 0, 24786, 24788, 0, 0, 0, 24789, 0, 0, 0, 0, 24794, 24798, 0, 24799, 24800, 0, 0, 0, 24803, 0, 24804, 24806, 0, 24807, 0, 0, 0, 24810, 0, 0, 0, 0, 0, 0, 24827, 24828, 0, 24835, 0, 0, 0, 0, 0, 0, 24836, 0, 0, 0, 0, 0, 24839, 0, 24843, 24844, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24847, 0, 0, 24848, 0, 0, 0, 0, 0, 0, 24849, 0, 24850, 24851, 0, 0, 0, 24852, 0, 24853, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24854, 0, 24855, 0, 0, 24868, 0, 0, 0, 24883, 0, 0, 0, 24884, 0, 24895, 24897, 0, 0, 0, 0, 0, 24899, 0, 0, 0, 0, 0, 24900, 0, 24913, 0, 0, 0, 0, 0, 0, 24914, 0, 0, 24917, 24930, 24931, 0, 0, 0, 24932, 0, 0, 24939, 0, 0, 24942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24945, 24950, 0, 24951, 0, 0, 24953, 0, 0, 0, 24954, 0, 24959, 0, 0, 0, 24961, 0, 0, 24962, 0, 24964, 24968, 24970, 24972, 0, 0, 0, 0, 0, 24976, 0, 0, 0, 24977, 0, 24982, 0, 0, 24983, 0, 0, 24984, 0, 0, 0, 24993, 0, 0, 0, 24994, 0, 0, 25001, 0, 0, 0, 25003, 0, 0, 25018, 0, 0, 25023, 0, 0, 0, 25034, 0, 0, 25035, 25036, 0, 25037, 0, 0, 0, 0, 0, 0, 0, 25039, 0, 0, 0, 0, 0, 25040, 0, 0, 0, 0, 0, 0, 0, 25042, 0, 0, 25043, 25045, 0, 0, 0, 0, 0, 0, 25049, 0, 0, 25051, 0, 25052, 25053, 0, 0, 25054, 0, 0, 0, 25055, 0, 0, 0, 0, 25057, 25059, 0, 0, 25060, 25064, 0, 25065, 25069, 25070, 0, 0, 0, 0, 25072, 0, 25073, 0, 25090, 0, 0, 25092, 25093, 25101, 0, 0, 0, 0, 0, 0, 25105, 25108, 0, 0, 25113, 0, 0, 25115, 25116, 0, 0, 0, 0, 0, 0, 25117, 0, 0, 0, 25120, 25121, 0, 0, 0, 0, 0, 0, 0, 25125, 0, 0, 0, 25126, 0, 25130, 25134, 0, 25139, 0, 25143, 0, 0, 0, 25151, 0, 25161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25163, 0, 0, 0, 0, 0, 0, 0, 25174, 0, 25175, 0, 25207, 0, 0, 0, 25209, 0, 0, 0, 0, 25213, 0, 25219, 0, 25223, 0, 25225, 0, 0, 0, 25227, 0, 0, 0, 25228, 0, 0, 0, 25229, 0, 0, 0, 0, 0, 0, 0, 25231, 25233, 0, 0, 0, 0, 25237, 25239, 0, 0, 0, 25243, 0, 0, 0, 25252, 0, 25257, 25258, 0, 0, 0, 0, 25260, 25265, 0, 25268, 0, 0, 25273, 25324, 0, 25325, 0, 25326, 0, 0, 0, 0, 0, 0, 0, 0, 25327, 0, 0, 0, 0, 0, 25328, 0, 0, 0, 0, 0, 0, 25332, 0, 0, 0, 25333, 0, 0, 0, 25336, 25337, 25338, 0, 0, 25343, 0, 25350, 0, 0, 0, 0, 0, 0, 0, 25352, 0, 25354, 0, 25375, 0, 25379, 0, 0, 0, 0, 25384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25386, 0, 25388, 0, 25390, 0, 0, 25399, 0, 0, 25401, 0, 0, 0, 25402, 0, 0, 0, 25407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25413, 25415, 0, 0, 25417, 0, 0, 0, 0, 0, 0, 0, 25419, 0, 0, 0, 25421, 0, 0, 0, 25424, 0, 0, 0, 0, 25433, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25435, 0, 0, 0, 0, 0, 0, 25436, 0, 0, 0, 25437, 0, 0, 25440, 0, 0, 0, 0, 0, 0, 25442, 0, 0, 25443, 0, 25446, 0, 0, 25449, 0, 0, 0, 25450, 0, 0, 0, 0, 25452, 0, 25453, 25454, 25455, 0, 0, 0, 25456, 0, 25457, 0, 0, 0, 25459, 0, 25461, 0, 25468, 0, 0, 0, 0, 0, 0, 0, 0, 25469, 0, 0, 0, 0, 0, 25471, 0, 0, 0, 0, 0, 25474, 0, 0, 0, 0, 0, 0, 0, 0, 25475, 0, 0, 0, 0, 25477, 0, 0, 0, 0, 25483, 0, 0, 0, 0, 0, 25484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25485, 0, 25497, 0, 0, 25498, 0, 25504, 0, 25510, 0, 25512, 0, 0, 25513, 25514, 0, 0, 0, 0, 0, 0, 25517, 25518, 25519, 0, 25520, 0, 0, 0, 0, 0, 0, 0, 25521, 0, 25522, 25527, 25534, 0, 25536, 0, 25537, 0, 0, 25548, 25550, 0, 0, 25551, 0, 25552, 0, 0, 0, 0, 0, 25554, 0, 25555, 0, 25556, 25557, 25568, 0, 0, 0, 25570, 25571, 0, 0, 0, 0, 0, 0, 25574, 0, 0, 0, 0, 25579, 0, 0, 0, 25581, 0, 0, 0, 25582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25588, 0, 0, 0, 0, 25589, 0, 0, 0, 0, 25590, 0, 25591, 25592, 25593, 0, 25594, 0, 0, 0, 25596, 0, 25597, 25615, 0, 0, 0, 0, 0, 25618, 0, 0, 0, 0, 25619, 25623, 0, 0, 25629, 0, 0, 25631, 0, 0, 0, 25635, 25636, 0, 0, 25649, 0, 0, 0, 0, 25654, 0, 0, 0, 25661, 25663, 0, 0, 25671, 0, 0, 25678, 25698, 0, 25699, 25702, 25703, 0, 0, 0, 0, 0, 0, 0, 0, 25704, 0, 0, 0, 0, 0, 25706, 0, 0, 25710, 0, 25711, 0, 25712, 0, 25715, 25716, 25717, 0, 0, 25718, 25728, 25732, 0, 0, 0, 25734, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25737, 0, 0, 25739, 0, 0, 0, 25740, 0, 25741, 25745, 0, 25746, 0, 25748, 25772, 25778, 0, 0, 0, 0, 0, 25780, 0, 0, 0, 0, 25781, 0, 25782, 25784, 25785, 0, 0, 0, 25789, 0, 0, 0, 0, 0, 0, 25797, 25801, 0, 0, 0, 25808, 25809, 0, 0, 25811, 25814, 25815, 0, 0, 25817, 0, 0, 0, 0, 0, 0, 0, 0, 25820, 0, 0, 0, 0, 25832, 25833, 0, 0, 0, 25846, 0, 0, 0, 25847, 25848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25849, 25850, 0, 0, 25851, 0, 0, 25852, 0, 25862, 0, 0, 0, 25863, 25865, 0, 0, 0, 0, 0, 0, 0, 25867, 25868, 0, 25869, 25874, 0, 25875, 0, 25876, 25877, 0, 0, 0, 0, 25878, 25902, 0, 0, 0, 0, 0, 0, 0, 25903, 25904, 25905, 0, 0, 0, 25908, 25909, 0, 0, 0, 0, 25910, 0, 0, 0, 0, 0, 0, 0, 25912, 0, 25913, 0, 0, 0, 0, 0, 0, 0, 0, 25914, 0, 0, 25916, 0, 0, 0, 0, 0, 25917, 25927, 0, 0, 0, 0, 25928, 0, 0, 25930, 0, 0, 0, 25933, 0, 0, 25938, 25942, 0, 0, 0, 0, 0, 0, 0, 25945, 0, 25950, 0, 25956, 0, 0, 25961, 25962, 0, 0, 25963, 0, 25964, 25965, 25966, 0, 0, 0, 0, 0, 25967, 0, 0, 0, 0, 25968, 0, 0, 0, 25969, 25971, 0, 0, 0, 0, 0, 25973, 25975, 0, 0, 0, 0, 0, 0, 0, 25978, 0, 25981, 0, 0, 0, 25982, 0, 0, 0, 25984, 0, 0, 0, 0, 0, 0, 0, 25993, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26002, 0, 0, 0, 26005, 0, 0, 0, 26006, 26007, 0, 0, 26014, 26015, 26016, 0, 0, 0, 0, 0, 0, 26017, 26018, 26020, 0, 26022, 26023, 0, 0, 0, 26024, 26028, 0, 26029, 26033, 26034, 26044, 0, 0, 0, 0, 0, 26046, 0, 0, 26047, 0, 0, 26049, 0, 26050, 0, 26051, 0, 0, 0, 0, 0, 26053, 0, 0, 0, 0, 26054, 26059, 0, 0, 0, 0, 0, 0, 26060, 0, 26066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26067, 0, 26069, 0, 0, 26071, 0, 0, 0, 26073, 0, 26074, 26077, 0, 0, 0, 0, 26078, 0, 0, 0, 26079, 0, 26090, 0, 0, 26094, 0, 0, 0, 0, 0, 0, 0, 0, 26095, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26096, 26101, 0, 26107, 26122, 0, 26124, 0, 0, 26125, 0, 0, 0, 0, 0, 0, 26136, 26141, 26155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26164, 26166, 0, 0, 0, 26167, 0, 26170, 26171, 0, 0, 26172, 0, 0, 26174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26175, 0, 0, 0, 26176, 26177, 0, 26321, 26322, 0, 26323, 0, 0, 26324, 0, 0, 0, 0, 0, 0, 0, 26325, 0, 26331, 0, 0, 0, 0, 0, 0, 26335, 0, 0, 0, 26350, 0, 0, 0, 26379, 0, 0, 26382, 26383, 26385, 0, 0, 26392, 26406, 0, 0, 0, 0, 26411, 0, 0, 0, 0, 0, 26412, 0, 0, 26420, 0, 0, 26423, 0, 26424, 26426, 26432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26435, 0, 26436, 0, 0, 0, 0, 0, 26441, 0, 26444, 0, 0, 0, 26446, 0, 0, 0, 0, 26447, 0, 0, 0, 0, 26449, 0, 26450, 26452, 0, 26453, 26454, 0, 0, 0, 26455, 0, 0, 0, 26456, 0, 0, 26458, 0, 0, 26460, 0, 26463, 0, 0, 0, 0, 0, 0, 0, 0, 26464, 26470, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26473, 0, 0, 26474, 0, 0, 0, 0, 0, 0, 0, 26475, 0, 0, 0, 0, 0, 0, 0, 26477, 0, 26485, 0, 0, 26486, 0, 26487, 0, 0, 26488, 26493, 26494, 0, 0, 26495, 0, 26497, 26504, 26506, 0, 0, 0, 0, 0, 26507, 0, 0, 0, 0, 0, 26509, 0, 0, 26510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26512, 0, 26513, 26515, 0, 0, 0, 26518, 0, 0, 0, 26519, 0, 26524, 26526, 0, 0, 0, 26527, 0, 26532, 0, 26533, 26537, 26558, 0, 0, 0, 26559, 0, 0, 0, 26571, 0, 0, 26573, 0, 26588, 0, 26593, 0, 0, 0, 0, 0, 0, 26603, 0, 26604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26606, 0, 0, 0, 0, 0, 0, 0, 26607, 26609, 26611, 26614, 0, 0, 0, 26616, 26620, 0, 26621, 0, 0, 0, 0, 0, 26627, 0, 26629, 0, 0, 26630, 0, 0, 26632, 26643, 0, 0, 0, 26644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26646, 26647, 0, 0, 0, 26650, 0, 0, 26656, 0, 0, 0, 0, 26663, 26670, 26671, 0, 0, 0, 26685, 26686, 26687, 0, 26689, 0, 0, 0, 0, 26744, 0, 26745, 0, 26747, 26748, 0, 26749, 26750, 26751, 0, 0, 0, 0, 26752, 26755, 0, 0, 0, 26756, 26769, 0, 0, 0, 26774, 0, 0, 0, 0, 0, 26775, 0, 26777, 26778, 0, 26786, 0, 0, 0, 26787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26788, 0, 0, 26789, 0, 0, 0, 0, 0, 26791, 0, 26792, 26793, 0, 0, 0, 26794, 0, 26797, 26798, 0, 0, 0, 26800, 0, 0, 26803, 0, 26804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26805, 0, 0, 26808, 0, 0, 26809, 0, 0, 0, 0, 0, 0, 0, 26812, 0, 26825, 0, 0, 0, 0, 0, 0, 0, 26826, 0, 0, 26827, 26829, 26834, 0, 0, 0, 0, 26835, 0, 0, 26849, 0, 26851, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26852, 0, 26853, 26857, 0, 26858, 0, 26859, 0, 0, 0, 0, 0, 0, 0, 26876, 0, 26878, 26882, 26883, 0, 0, 0, 0, 26890, 26894, 0, 0, 0, 0, 26895, 26896, 0, 0, 0, 0, 0, 26900, 0, 0, 0, 0, 0, 0, 0, 26911, 26913, 26914, 26915, 26916, 26919, 0, 0, 0, 26921, 26922, 0, 0, 26925, 0, 0, 0, 26928, 0, 0, 26929, 26930, 0, 0, 0, 26931, 0, 26932, 0, 0, 0, 0, 0, 26933, 0, 0, 0, 0, 0, 0, 26937, 0, 0, 26943, 0, 0, 26944, 0, 0, 0, 26946, 0, 0, 0, 0, 0, 0, 0, 26956, 0, 26958, 0, 0, 26963, 0, 0, 0, 0, 0, 0, 0, 26965, 0, 26969, 26970, 26972, 0, 0, 0, 0, 0, 26973, 0, 26974, 0, 26978, 0, 26980, 0, 0, 0, 0, 0, 0, 26982, 0, 26986, 26987, 0, 26990, 0, 0, 0, 0, 27003, 27006, 0, 0, 27007, 27010, 27012, 27013, 0, 0, 0, 0, 0, 0, 0, 0, 27014, 27015, 27018, 0, 27019, 0, 0, 0, 0, 0, 27025, 0, 0, 0, 27026, 0, 0, 0, 0, 27029, 27030, 27031, 27034, 0, 0, 27036, 27037, 0, 0, 0, 27038, 27042, 0, 0, 0, 27044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27045, 0, 0, 0, 0, 0, 0, 0, 27046, 0, 0, 0, 0, 0, 0, 0, 27047, 27049, 0, 27050, 0, 0, 0, 27051, 27052, 0, 27055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27056, 27058, 27059, 0, 27061, 0, 27064, 0, 0, 0, 0, 0, 27069, 0, 0, 27070, 0, 0, 0, 0, 0, 0, 0, 27072, 0, 0, 0, 0, 0, 0, 0, 0, 27076, 0, 0, 0, 0, 0, 27078, 0, 27079, 0, 0, 0, 27081, 0, 0, 0, 0, 0, 0, 27082, 0, 27083, 27086, 0, 0, 0, 0, 27087, 0, 0, 0, 0, 0, 27088, 27090, 0, 27094, 0, 0, 27095, 0, 27099, 27102, 0, 0, 0, 27103, 0, 0, 0, 0, 27105, 0, 0, 0, 27106, 0, 0, 0, 0, 0, 0, 27107, 0, 0, 0, 0, 27108, 27117, 0, 0, 0, 0, 27118, 0, 0, 27124, 0, 27126, 0, 0, 27130, 27131, 0, 0, 0, 0, 0, 0, 27147, 0, 0, 0, 0, 27148, 27149, 0, 0, 0, 0, 27150, 27151, 0, 27152, 0, 27159, 0, 0, 0, 27164, 0, 0, 0, 0, 0, 0, 0, 27175, 0, 27189, 0, 0, 27191, 0, 27193, 0, 27195, 0, 27198, 0, 0, 0, 0, 0, 27200, 0, 0, 0, 0, 27202, 0, 0, 0, 0, 27203, 0, 0, 27204, 0, 0, 27206, 0, 27207, 0, 0, 0, 0, 27209, 0, 0, 0, 27213, 0, 0, 27216, 27219, 27220, 27222, 27223, 0, 27224, 0, 27225, 27226, 0, 0, 27233, 0, 0, 0, 0, 27235, 0, 27237, 0, 27238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27239, 0, 27242, 27243, 0, 27250, 0, 0, 0, 27251, 0, 27253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27254, 27255, 27258, 0, 0, 0, 27259, 0, 0, 0, 0, 0, 0, 27267, 0, 27276, 27278, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27296, 27297, 27301, 0, 0, 0, 0, 0, 0, 27302, 0, 0, 0, 0, 0, 0, 27312, 27313, 0, 0, 0, 0, 0, 27318, 0, 27320, 0, 27329, 0, 27330, 27331, 0, 27332, 0, 0, 0, 0, 27340, 0, 0, 0, 27348, 0, 0, 0, 0, 0, 0, 27350, 0, 27351, 0, 0, 0, 0, 27355, 0, 0, 27358, 27359, 27361, 0, 0, 0, 27365, 0, 27367, 0, 27376, 27378, 0, 0, 27379, 0, 0, 0, 0, 0, 0, 27396, 0, 27397, 27404, 0, 0, 0, 0, 0, 27408, 0, 0, 0, 0, 27453, 0, 0, 0, 27456, 0, 0, 0, 27458, 0, 0, 0, 0, 0, 0, 0, 27459, 0, 0, 0, 27460, 0, 0, 27461, 0, 27465, 27467, 0, 0, 27469, 0, 27470, 0, 27471, 0, 27477, 27482, 0, 0, 0, 0, 0, 0, 27484, 0, 0, 0, 0, 0, 0, 27485, 0, 0, 0, 0, 0, 27493, 0, 27494, 27502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27511, 27532, 0, 0, 0, 27533, 27545, 0, 0, 0, 27546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27547, 0, 0, 27549, 27550, 0, 27551, 0, 0, 0, 0, 0, 0, 0, 27555, 0, 0, 27571, 0, 27573, 27574, 27575, 27577, 0, 27578, 0, 0, 27579, 27585, 0, 0, 0, 0, 0, 27586, 0, 0, 27588, 27589, 0, 0, 0, 0, 27596, 0, 0, 27600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27610, 0, 0, 0, 27618, 0, 0, 27620, 0, 0, 0, 27631, 0, 0, 27632, 27634, 0, 27636, 27638, 0, 0, 0, 27643, 0, 27644, 27649, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27651, 27660, 0, 27661, 0, 0, 0, 0, 0, 0, 0, 27662, 0, 0, 27664, 0, 27665, 0, 0, 0, 27669, 0, 27671, 0, 0, 0, 27673, 27674, 0, 0, 0, 27682, 0, 0, 0, 27711, 0, 27712, 27713, 27719, 27720, 0, 0, 27728, 0, 27729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27731, 0, 0, 27732, 0, 27733, 0, 27738, 0, 0, 0, 27742, 0, 0, 0, 27743, 27744, 0, 0, 0, 0, 0, 0, 27745, 27746, 0, 0, 0, 27747, 27748, 27751, 27752, 0, 0, 0, 27768, 27770, 0, 0, 0, 27774, 27775, 0, 27776, 27777, 0, 0, 27781, 0, 27784, 0, 27786, 0, 0, 27791, 0, 27792, 27793, 27804, 0, 27812, 27813, 0, 0, 0, 0, 0, 0, 0, 0, 27814, 0, 27825, 0, 27827, 0, 0, 0, 0, 27828, 27861, 27862, 0, 0, 0, 27864, 0, 0, 0, 27865, 27884, 0, 27889, 0, 0, 0, 0, 0, 27890, 0, 27891, 0, 0, 0, 27892, 0, 0, 0, 0, 0, 27897, 27898, 0, 0, 27899, 0, 0, 0, 27901, 27905, 0, 0, 27920, 0, 0, 27921, 0, 27922, 0, 0, 0, 27931, 27934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27941, 0, 27942, 0, 27945, 0, 27947, 27954, 0, 0, 0, 0, 27960, 27963, 0, 0, 0, 0, 0, 0, 0, 0, 27964, 27965, 0, 0, 0, 27967, 0, 27969, 27975, 0, 27976, 27977, 0, 27981, 0, 27983, 28051, 28052, 0, 0, 0, 0, 0, 28056, 0, 0, 0, 0, 0, 0, 28058, 28059, 0, 0, 28061, 0, 0, 0, 0, 0, 0, 0, 28063, 0, 0, 0, 0, 0, 0, 28066, 0, 0, 0, 0, 0, 0, 28069, 28070, 28072, 0, 28073, 0, 0, 28074, 0, 0, 0, 0, 28075, 0, 0, 0, 0, 0, 0, 0, 28078, 0, 0, 0, 0, 28085, 0, 0, 0, 0, 28086, 0, 0, 0, 0, 0, 0, 28088, 0, 0, 0, 0, 0, 0, 0, 0, 28090, 0, 28097, 28114, 28115, 0, 0, 0, 0, 0, 0, 0, 28116, 0, 0, 0, 0, 0, 28118, 0, 28129, 0, 28131, 0, 0, 28135, 0, 0, 0, 28140, 28141, 0, 0, 0, 28146, 0, 0, 0, 0, 28152, 0, 0, 0, 0, 28155, 28157, 28161, 0, 0, 0, 0, 28166, 0, 28167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28172, 0, 0, 0, 0, 0, 0, 28173, 0, 0, 28175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28178, 28188, 0, 28190, 0, 0, 0, 0, 0, 28191, 0, 28193, 28206, 0, 0, 28207, 28209, 0, 28211, 0, 28213, 0, 0, 0, 28215, 28216, 28217, 0, 28222, 0, 28223, 28225, 0, 0, 0, 28226, 0, 28227, 28229, 28232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28235, 0, 28241, 0, 0, 28242, 0, 0, 0, 0, 28243, 0, 0, 0, 28245, 0, 0, 0, 28248, 28250, 0, 28251, 28252, 0, 0, 0, 0, 0, 0, 28253, 0, 0, 28254, 28255, 0, 0, 28256, 0, 0, 28258, 0, 0, 0, 0, 0, 28259, 0, 0, 28260, 0, 0, 28261, 0, 0, 0, 0, 28262, 28263, 0, 0, 28264, 0, 0, 0, 28266, 0, 28268, 28269, 0, 28270, 28272, 28274, 0, 28277, 28278, 0, 0, 0, 28279, 0, 28280, 28281, 28283, 0, 28292, 0, 28294, 0, 28297, 0, 0, 0, 0, 28299, 0, 0, 0, 0, 0, 28300, 0, 0, 0, 0, 0, 0, 0, 28301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28302, 28303, 0, 0, 0, 0, 28304, 0, 0, 28305, 0, 28312, 0, 28313, 28314, 0, 0, 0, 0, 0, 0, 28315, 0, 0, 0, 28320, 28321, 0, 0, 28328, 0, 0, 0, 28329, 28338, 0, 28339, 0, 0, 28344, 0, 0, 0, 0, 0, 0, 0, 0, 28347, 0, 0, 0, 0, 0, 0, 0, 0, 28348, 0, 0, 0, 0, 0, 28411, 0, 28412, 28413, 0, 28416, 0, 0, 0, 28420, 0, 0, 0, 0, 0, 28421, 0, 0, 0, 0, 28423, 0, 0, 0, 28424, 0, 0, 28428, 0, 0, 0, 0, 0, 28429, 0, 0, 0, 28431, 28434, 0, 28458, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28464, 0, 0, 0, 0, 28465, 0, 28467, 0, 0, 0, 0, 0, 0, 28471, 0, 0, 0, 0, 28474, 0, 28480, 0, 28481, 0, 0, 28485, 0, 0, 0, 0, 28486, 28488, 0, 0, 28489, 0, 0, 0, 0, 28492, 0, 0, 0, 28495, 0, 28497, 0, 28499, 0, 0, 0, 0, 28500, 0, 0, 28502, 28503, 0, 0, 0, 28508, 0, 0, 0, 28510, 0, 0, 28512, 28513, 28514, 28521, 0, 28526, 0, 28527, 28528, 0, 0, 0, 0, 28529, 0, 0, 28532, 0, 0, 28537, 28538, 0, 0, 0, 28539, 0, 28548, 0, 28553, 28554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28560, 28563, 0, 0, 28564, 0, 0, 0, 0, 28565, 0, 0, 0, 0, 0, 0, 0, 28566, 28568, 0, 0, 0, 0, 0, 0, 28569, 0, 0, 0, 28570, 0, 28572, 28573, 0, 0, 0, 0, 28575, 0, 0, 0, 0, 28576, 28581, 28588, 0, 0, 28589, 0, 0, 0, 28590, 28595, 0, 28598, 0, 0, 28601, 0, 0, 28605, 0, 0, 0, 0, 28614, 28615, 28619, 0, 0, 0, 0, 0, 0, 28620, 0, 28626, 0, 0, 28628, 0, 28631, 0, 28632, 0, 0, 0, 0, 0, 0, 28635, 0, 0, 0, 28637, 28638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28639, 0, 28643, 0, 0, 28652, 0, 0, 0, 28662, 0, 28670, 28671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28672, 28673, 28675, 28676, 0, 0, 0, 0, 0, 0, 0, 28691, 0, 0, 0, 28695, 0, 0, 0, 28696, 0, 28697, 28698, 0, 28705, 0, 28707, 28708, 28710, 0, 0, 0, 0, 0, 0, 0, 28711, 28728, 0, 0, 0, 28736, 0, 0, 0, 28737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28738, 0, 28739, 0, 28741, 0, 0, 28742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28745, 0, 0, 0, 0, 0, 0, 28749, 28750, 28752, 28754, 28756, 0, 28757, 0, 0, 0, 0, 28759, 28760, 0, 0, 0, 0, 0, 0, 28762, 0, 0, 0, 28764, 0, 0, 0, 0, 0, 0, 28766, 0, 28767, 28768, 0, 0, 0, 0, 28769, 28770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28772, 0, 28773, 0, 28782, 0, 0, 0, 0, 0, 0, 28784, 0, 28785, 0, 28786, 0, 0, 0, 28787, 0, 0, 0, 28797, 0, 0, 0, 0, 0, 0, 28799, 0, 0, 28801, 0, 0, 0, 0, 28802, 0, 28805, 0, 0, 28806, 0, 0, 28807, 0, 0, 0, 0, 0, 0, 0, 28808, 0, 0, 0, 0, 0, 28810, 28812, 0, 0, 28816, 28819, 0, 0, 28821, 0, 28826, 0, 0, 0, 28842, 28852, 0, 0, 28853, 0, 28854, 28855, 0, 0, 0, 28857, 0, 0, 0, 28858, 0, 28867, 28868, 28869, 0, 0, 0, 28874, 28880, 28882, 28890, 28892, 0, 0, 0, 0, 0, 0, 0, 28895, 0, 0, 0, 28898, 28899, 0, 0, 0, 28900, 0, 0, 28904, 0, 28906, 0, 0, 0, 0, 28907, 0, 0, 0, 0, 0, 0, 28908, 0, 0, 0, 28910, 0, 28914, 0, 0, 0, 0, 0, 0, 0, 28915, 28916, 28919, 0, 0, 28920, 0, 28921, 0, 0, 0, 0, 0, 0, 0, 0, 28924, 0, 0, 0, 0, 28926, 28929, 0, 0, 0, 28930, 0, 28936, 0, 28939, 0, 0, 0, 0, 28942, 0, 0, 0, 0, 0, 0, 28956, 0, 0, 0, 28966, 0, 0, 0, 0, 28967, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28968, 0, 28971, 0, 28975, 28976, 0, 28982, 28983, 0, 0, 28984, 28989, 28996, 28997, 28998, 0, 0, 0, 0, 0, 0, 28999, 0, 0, 0, 0, 0, 29000, 0, 29001, 0, 0, 0, 29009, 0, 0, 29011, 0, 0, 29021, 0, 0, 0, 0, 29024, 0, 29025, 0, 0, 0, 0, 0, 29026, 0, 0, 0, 29036, 0, 0, 0, 29037, 0, 0, 0, 0, 29038, 0, 29045, 0, 29047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29051, 0, 0, 0, 29054, 29056, 29062, 0, 29070, 29082, 0, 0, 0, 29083, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29084, 0, 0, 0, 0, 29085, 29088, 0, 0, 0, 0, 0, 0, 0, 29090, 29097, 0, 0, 0, 29103, 0, 0, 0, 0, 0, 0, 0, 0, 29105, 0, 0, 0, 0, 0, 29107, 0, 29109, 0, 0, 0, 29115, 0, 0, 29120, 0, 0, 29138, 29140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29152, 0, 29160, 29174, 0, 29176, 0, 0, 29180, 0, 29181, 0, 0, 0, 0, 0, 0, 0, 0, 29228, 0, 0, 29229, 0, 0, 29230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29234, 0, 0, 0, 29241, 0, 29245, 0, 29248, 0, 29250, 29256, 29280, 0, 29282, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29285, 0, 0, 29286, 29291, 29292, 0, 0, 0, 0, 29294, 0, 29295, 0, 0, 0, 0, 0, 29296, 29297, 29298, 29300, 0, 29302, 0, 0, 29304, 29307, 0, 29312, 0, 0, 0, 29322, 0, 0, 29323, 0, 0, 29324, 29326, 29328, 0, 29335, 0, 0, 0, 0, 0, 0, 0, 29338, 29339, 0, 0, 0, 0, 0, 29341, 29343, 0, 0, 0, 0, 29344, 0, 0, 0, 0, 0, 29345, 0, 0, 0, 0, 29346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29347, 29348, 29349, 0, 0, 29354, 0, 0, 29355, 0, 0, 0, 0, 0, 0, 0, 0, 29357, 0, 0, 0, 0, 29364, 0, 29365, 0, 0, 0, 0, 0, 0, 0, 29366, 0, 0, 29368, 0, 0, 0, 0, 0, 0, 0, 0, 29378, 0, 29381, 0, 0, 0, 0, 0, 0, 0, 0, 29386, 0, 0, 0, 0, 0, 0, 29389, 0, 0, 0, 29390, 0, 0, 29391, 29397, 0, 29398, 29412, 29414, 29418, 29419, 0, 0, 0, 0, 0, 0, 0, 29420, 0, 0, 0, 0, 0, 0, 0, 29423, 0, 0, 0, 29435, 0, 0, 0, 29437, 0, 0, 29439, 0, 29441, 0, 0, 0, 0, 29443, 0, 29446, 29450, 29452, 0, 0, 0, 0, 0, 29456, 0, 0, 0, 0, 0, 29461, 0, 0, 0, 29464, 0, 0, 0, 0, 0, 0, 0, 0, 29468, 0, 29473, 0, 0, 0, 29486, 0, 0, 0, 29490, 0, 0, 0, 29491, 29492, 0, 0, 29497, 0, 0, 0, 29498, 0, 29499, 0, 29502, 29505, 0, 29509, 0, 0, 0, 29510, 0, 0, 0, 29512, 0, 0, 0, 29516, 0, 0, 0, 0, 0, 0, 0, 0, 29518, 0, 29519, 0, 0, 0, 0, 0, 29520, 29521, 29529, 0, 0, 0, 0, 0, 0, 0, 0, 29530, 0, 0, 29531, 29538, 0, 29540, 0, 0, 0, 29542, 0, 29543, 29544, 29547, 0, 0, 29548, 0, 0, 0, 29549, 0, 0, 0, 29550, 0, 0, 29552, 0, 0, 0, 0, 29558, 29561, 0, 29562, 29564, 0, 0, 29565, 0, 0, 29566, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29578, 29584, 29586, 29591, 0, 0, 0, 0, 29593, 29594, 0, 0, 29597, 0, 0, 29613, 0, 29614, 0, 29615, 0, 0, 0, 0, 29616, 29617, 0, 0, 29625, 0, 0, 0, 29632, 0, 0, 0, 0, 0, 0, 0, 29633, 0, 0, 0, 0, 0, 29634, 29635, 29637, 0, 29638, 0, 29641, 29643, 0, 0, 0, 0, 0, 0, 29644, 0, 29645, 0, 29649, 0, 0, 0, 29650, 0, 29653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29656, 29659, 0, 0, 29660, 0, 0, 0, 29661, 0, 0, 0, 0, 0, 29664, 0, 0, 0, 29671, 29673, 0, 0, 0, 0, 0, 0, 0, 29675, 0, 29677, 29679, 0, 0, 29684, 0, 0, 0, 0, 0, 29685, 0, 0, 0, 29687, 0, 0, 0, 29688, 0, 29689, 29690, 29700, 0, 29701, 0, 0, 0, 29702, 0, 29706, 0, 0, 0, 0, 0, 0, 0, 29720, 0, 29721, 0, 29727, 0, 29733, 29734, 0, 29750, 29761, 0, 29763, 0, 0, 0, 0, 0, 29764, 0, 0, 29765, 0, 0, 0, 29771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29772, 0, 0, 0, 29773, 29774, 29775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29822, 0, 0, 0, 29824, 0, 29825, 0, 0, 0, 0, 0, 29827, 0, 0, 0, 0, 0, 0, 0, 0, 29829, 0, 29832, 29834, 0, 0, 29835, 0, 0, 29837, 29838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29843, 0, 0, 0, 0, 29844, 29845, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29849, 0, 0, 29869, 29872, 29890, 29905, 0, 0, 0, 0, 0, 29907, 29921, 0, 29922, 0, 0, 29923, 29926, 29944, 29946, 0, 0, 0, 0, 0, 0, 0, 29947, 29948, 0, 0, 0, 29951, 0, 0, 0, 0, 0, 29953, 0, 0, 29956, 0, 29957, 0, 0, 29962, 0, 0, 0, 0, 29971, 0, 0, 0, 29972, 0, 0, 0, 0, 0, 29978, 0, 29979, 29992, 30007, 30008, 30010, 0, 0, 0, 30013, 0, 0, 0, 0, 30014, 30016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30017, 0, 0, 0, 0, 0, 30023, 30031, 0, 0, 30033, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30034, 0, 30038, 0, 30039, 0, 30040, 0, 0, 0, 0, 0, 0, 30067, 30068, 0, 0, 0, 30069, 0, 30072, 0, 0, 0, 30073, 0, 0, 0, 0, 30075, 0, 0, 0, 0, 0, 0, 30079, 0, 0, 30080, 0, 0, 0, 0, 0, 30082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30084, 30090, 0, 0, 30091, 0, 0, 0, 0, 30098, 30118, 0, 30119, 0, 30121, 30130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30131, 30132, 30133, 0, 0, 0, 0, 0, 0, 30135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30136, 0, 0, 30137, 30138, 0, 0, 0, 30139, 30146, 0, 0, 0, 0, 0, 30147, 0, 0, 30148, 30151, 0, 0, 0, 30168, 0, 30172, 30173, 0, 0, 0, 0, 0, 0, 0, 0, 30180, 30181, 0, 30192, 0, 0, 0, 0, 0, 0, 0, 30194, 30196, 0, 0, 30199, 0, 0, 30202, 0, 0, 0, 0, 30203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30213, 0, 0, 0, 30216, 0, 0, 30217, 0, 0, 0, 30218, 0, 0, 0, 0, 30219, 0, 30220, 0, 30222, 30227, 0, 0, 0, 0, 0, 30231, 0, 0, 30233, 30235, 0, 0, 0, 0, 30238, 0, 30240, 30243, 30245, 0, 30250, 30252, 0, 0, 0, 30269, 0, 0, 30271, 30272, 0, 0, 0, 30278, 30280, 0, 0, 30282, 0, 30284, 0, 30294, 0, 0, 0, 0, 30295, 30296, 0, 0, 0, 0, 0, 30298, 30299, 30302, 30304, 30306, 0, 0, 0, 0, 0, 0, 30316, 30317, 0, 0, 0, 30318, 0, 0, 0, 30319, 0, 30320, 30322, 30326, 0, 0, 0, 0, 0, 30327, 0, 30332, 30348, 30349, 0, 0, 30356, 0, 0, 0, 0, 0, 0, 0, 0, 30357, 0, 30358, 0, 30359, 30360, 0, 0, 30365, 30366, 30378, 0, 0, 0, 0, 30379, 0, 0, 30381, 0, 30385, 0, 30388, 30397, 0, 0, 0, 30401, 0, 0, 0, 0, 30403, 0, 0, 0, 0, 0, 30404, 0, 0, 30405, 0, 30406, 30408, 0, 30409, 0, 30410, 0, 0, 0, 30417, 0, 0, 30418, 30419, 0, 30420, 0, 30424, 0, 0, 0, 30427, 30430, 30432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30433, 0, 0, 0, 0, 0, 0, 0, 30436, 0, 30437, 30438, 0, 30441, 30442, 0, 0, 0, 30445, 0, 0, 0, 0, 30452, 30456, 30457, 0, 0, 0, 30458, 0, 30464, 0, 0, 0, 0, 0, 0, 30467, 0, 30469, 0, 0, 0, 0, 0, 30477, 0, 0, 30484, 0, 0, 0, 0, 0, 30485, 0, 0, 0, 0, 0, 30486, 30487, 30497, 30498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30505, 0, 30508, 0, 0, 0, 30509, 30510, 0, 30514, 30516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30523, 0, 30524, 0, 30525, 0, 0, 0, 0, 30537, 0, 0, 30538, 0, 0, 0, 0, 0, 30553, 0, 0, 30555, 30556, 30558, 30559, 30560, 0, 0, 30561, 0, 30562, 0, 0, 0, 0, 0, 0, 0, 0, 30563, 30570, 30571, 0, 30586, 30587, 0, 0, 30590, 0, 0, 30594, 0, 0, 0, 0, 30611, 30612, 30623, 30634, 0, 0, 30636, 30640, 30655, 30656, 0, 30657, 0, 0, 30658, 30669, 0, 30670, 0, 30676, 30678, 0, 0, 0, 0, 0, 0, 0, 30679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30695, 0, 0, 30698, 0, 0, 0, 0, 30700, 0, 0, 0, 0, 30701, 0, 30702, 30703, 0, 0, 0, 0, 30707, 0, 0, 0, 30709, 0, 0, 30710, 30719, 30729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30731, 0, 0, 30733, 0, 0, 0, 30734, 0, 0, 0, 0, 0, 30736, 30737, 0, 0, 0, 30740, 0, 0, 0, 30743, 0, 30746, 0, 30747, 30748, 0, 0, 30751, 30752, 30753, 0, 0, 0, 30754, 0, 0, 30760, 0, 0, 0, 0, 0, 0, 0, 30763, 0, 30764, 0, 0, 30766, 0, 30769, 30770, 30771, 30774, 30777, 0, 0, 30779, 30780, 30781, 0, 0, 0, 0, 30790, 0, 0, 0, 30792, 0, 0, 0, 0, 30810, 0, 0, 0, 0, 0, 0, 0, 30812, 30819, 0, 0, 30823, 30824, 0, 30825, 0, 30827, 0, 0, 0, 0, 0, 0, 30828, 0, 0, 30830, 0, 0, 0, 30834, 0, 30835, 0, 30837, 30838, 0, 30845, 0, 0, 0, 0, 0, 30846, 30847, 0, 0, 30849, 0, 30851, 0, 0, 0, 0, 0, 30852, 30858, 0, 0, 30859, 0, 30865, 0, 0, 30866, 0, 0, 30868, 0, 0, 30869, 0, 0, 0, 30881, 30883, 0, 0, 0, 0, 0, 30889, 0, 30891, 0, 0, 0, 0, 30894, 0, 30895, 0, 30897, 0, 30898, 0, 0, 0, 30904, 30906, 0, 30909, 0, 0, 0, 0, 0, 0, 30910, 0, 0, 0, 30915, 30933, 30942, 0, 0, 0, 0, 30943, 0, 0, 30945, 0, 0, 0, 0, 0, 0, 30946, 0, 0, 30947, 0, 0, 30955, 30956, 0, 0, 30960, 0, 0, 30961, 30962, 30966, 0, 0, 30969, 30974, 0, 0, 0, 30976, 0, 0, 30977, 0, 30978, 30982, 0, 0, 0, 0, 0, 0, 0, 30994, 30995, 30998, 0, 31000, 0, 0, 31001, 0, 0, 31003, 31005, 0, 0, 31006, 31011, 0, 0, 31014, 0, 31016, 0, 0, 0, 0, 31018, 0, 0, 31020, 31023, 31024, 31025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31027, 31028, 31029, 0, 0, 0, 0, 0, 0, 31032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31036, 31037, 31038, 0, 0, 0, 31041, 31043, 31045, 0, 31047, 0, 0, 0, 31048, 0, 31049, 0, 0, 0, 31053, 31054, 31055, 0, 0, 31063, 0, 0, 0, 0, 0, 31066, 0, 31068, 31071, 0, 0, 0, 31072, 31073, 0, 0, 0, 0, 31075, 0, 0, 31076, 0, 0, 0, 31077, 31079, 0, 31080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31087, 0, 31142, 0, 31144, 0, 0, 31145, 31146, 31147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31149, 0, 31151, 31152, 0, 0, 0, 0, 0, 0, 0, 31162, 31171, 31174, 31175, 0, 0, 0, 31176, 0, 0, 0, 0, 0, 0, 0, 31179, 0, 0, 0, 31186, 0, 0, 0, 31192, 31195, 0, 0, 31196, 0, 0, 0, 0, 0, 0, 0, 0, 31198, 0, 0, 0, 0, 0, 31199, 0, 0, 0, 31205, 0, 0, 0, 0, 31211, 31215, 0, 0, 0, 0, 31231, 0, 31232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31233, 31236, 31253, 0, 31254, 0, 0, 0, 0, 0, 0, 31255, 0, 0, 31257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31258, 31259, 0, 0, 31260, 0, 31261, 0, 0, 0, 0, 0, 31262, 31263, 0, 0, 31264, 0, 31266, 0, 31267, 0, 0, 0, 0, 0, 31281, 0, 31282, 0, 31284, 0, 0, 31285, 31287, 31288, 0, 0, 31290, 0, 0, 0, 31292, 31295, 0, 31299, 0, 31300, 0, 0, 0, 0, 0, 31302, 0, 0, 0, 0, 31303, 0, 0, 0, 0, 0, 0, 31304, 0, 0, 0, 0, 0, 31305, 31308, 31309, 31315, 0, 31317, 0, 0, 0, 0, 0, 31323, 0, 31324, 0, 0, 0, 0, 0, 31325, 31327, 0, 0, 31331, 0, 0, 0, 0, 0, 31333, 0, 0, 0, 0, 0, 31336, 0, 0, 31337, 0, 0, 0, 0, 0, 0, 31338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31339, 0, 0, 0, 0, 0, 0, 0, 31342, 0, 0, 0, 0, 31345, 0, 0, 0, 0, 0, 0, 0, 0, 31347, 0, 0, 0, 0, 0, 0, 31348, 0, 0, 31350, 31351, 0, 31352, 0, 0, 31354, 0, 0, 0, 0, 31355, 0, 0, 31356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31363, 0, 31372, 0, 0, 31373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31376, 0, 31388, 0, 31389, 0, 31392, 0, 31401, 0, 31405, 31407, 31408, 0, 31409, 0, 0, 0, 0, 0, 0, 31413, 31415, 0, 0, 0, 31416, 31418, 0, 0, 0, 0, 0, 0, 31422, 31423, 0, 0, 31424, 0, 31425, 31432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31433, 0, 0, 0, 0, 0, 0, 0, 0, 31434, 0, 0, 0, 0, 0, 0, 31435, 0, 0, 0, 0, 31438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31442, 0, 31444, 0, 31448, 0, 0, 31451, 0, 0, 0, 0, 31452, 0, 31461, 31465, 0, 0, 31466, 0, 0, 31467, 0, 0, 31468, 0, 0, 0, 31469, 31473, 0, 31476, 0, 0, 0, 0, 31489, 31490, 0, 0, 0, 0, 0, 0, 0, 31492, 31493, 31494, 0, 0, 0, 0, 31501, 31504, 31505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31509, 0, 0, 0, 0, 31510, 0, 0, 31511, 0, 0, 31513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31514, 0, 31522, 31536, 31539, 31540, 0, 31541, 0, 0, 0, 0, 0, 0, 31546, 31553, 31559, 0, 0, 0, 31560, 31561, 31562, 0, 0, 31564, 31567, 0, 31569, 0, 0, 0, 31570, 0, 0, 0, 0, 31571, 0, 0, 0, 0, 0, 0, 31572, 31574, 31580, 31581, 0, 0, 31582, 31584, 31585, 31586, 31595, 0, 31596, 0, 0, 0, 0, 31597, 0, 31599, 0, 31600, 31601, 0, 0, 31603, 31604, 0, 0, 31608, 31610, 0, 0, 0, 31611, 0, 31615, 0, 0, 0, 0, 31616, 0, 0, 0, 0, 0, 0, 31617, 0, 0, 0, 0, 0, 31618, 0, 0, 0, 0, 0, 0, 31621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31622, 31625, 0, 0, 0, 0, 31627, 0, 31641, 0, 0, 31642, 0, 0, 31643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31644, 0, 31646, 0, 0, 0, 0, 31648, 0, 0, 0, 31652, 0, 0, 0, 31657, 0, 0, 31676, 0, 0, 0, 0, 0, 0, 0, 31689, 31691, 31692, 0, 31694, 0, 0, 0, 31696, 0, 31702, 0, 31703, 0, ]; #[derive(Clone, Copy)] #[repr(C)] pub struct DictWord { pub l: u8, pub t: u8, pub i: u16, } impl DictWord { #[inline(always)] pub fn len(self) -> u8 { self.l } #[inline(always)] pub fn transform(self) -> u8 { self.t } #[inline(always)] pub fn idx(self) -> u16 { self.i } } type D = DictWord; pub static kStaticDictionaryWords: [DictWord; 31705] = [ D { l: 0, t: 0, i: 0 }, D { l: 8, t: 0, i: 1002, }, D { l: 136, t: 0, i: 1015, }, D { l: 4, t: 0, i: 683 }, D { l: 4, t: 10, i: 325, }, D { l: 138, t: 10, i: 125, }, D { l: 7, t: 11, i: 572, }, D { l: 9, t: 11, i: 592, }, D { l: 11, t: 11, i: 680, }, D { l: 11, t: 11, i: 842, }, D { l: 11, t: 11, i: 924, }, D { l: 12, t: 11, i: 356, }, D { l: 12, t: 11, i: 550, }, D { l: 13, t: 11, i: 317, }, D { l: 13, t: 11, i: 370, }, D { l: 13, t: 11, i: 469, }, D { l: 13, t: 11, i: 471, }, D { l: 14, t: 11, i: 397, }, D { l: 18, t: 11, i: 69, }, D { l: 146, t: 11, i: 145, }, D { l: 134, t: 0, i: 1265, }, D { l: 136, t: 11, i: 534, }, D { l: 134, t: 0, i: 1431, }, D { l: 11, t: 0, i: 138, }, D { l: 140, t: 0, i: 40, }, D { l: 4, t: 0, i: 155 }, D { l: 7, t: 0, i: 1689, }, D { l: 4, t: 10, i: 718, }, D { l: 135, t: 10, i: 1216, }, D { l: 4, t: 0, i: 245 }, D { l: 5, t: 0, i: 151 }, D { l: 5, t: 0, i: 741 }, D { l: 6, t: 0, i: 1147, }, D { l: 7, t: 0, i: 498 }, D { l: 7, t: 0, i: 870 }, D { l: 7, t: 0, i: 1542, }, D { l: 12, t: 0, i: 213, }, D { l: 14, t: 0, i: 36 }, D { l: 14, t: 0, i: 391, }, D { l: 17, t: 0, i: 111, }, D { l: 18, t: 0, i: 6 }, D { l: 18, t: 0, i: 46 }, D { l: 18, t: 0, i: 151, }, D { l: 19, t: 0, i: 36 }, D { l: 20, t: 0, i: 32 }, D { l: 20, t: 0, i: 56 }, D { l: 20, t: 0, i: 69 }, D { l: 20, t: 0, i: 102, }, D { l: 21, t: 0, i: 4 }, D { l: 22, t: 0, i: 8 }, D { l: 22, t: 0, i: 10 }, D { l: 22, t: 0, i: 14 }, D { l: 150, t: 0, i: 31, }, D { l: 4, t: 0, i: 624 }, D { l: 135, t: 0, i: 1752, }, D { l: 5, t: 10, i: 124, }, D { l: 5, t: 10, i: 144, }, D { l: 6, t: 10, i: 548, }, D { l: 7, t: 10, i: 15 }, D { l: 7, t: 10, i: 153, }, D { l: 137, t: 10, i: 629, }, D { l: 6, t: 0, i: 503 }, D { l: 9, t: 0, i: 586 }, D { l: 13, t: 0, i: 468, }, D { l: 14, t: 0, i: 66 }, D { l: 16, t: 0, i: 58 }, D { l: 7, t: 10, i: 1531, }, D { l: 8, t: 10, i: 416, }, D { l: 9, t: 10, i: 275, }, D { l: 10, t: 10, i: 100, }, D { l: 11, t: 10, i: 658, }, D { l: 11, t: 10, i: 979, }, D { l: 12, t: 10, i: 86, }, D { l: 14, t: 10, i: 207, }, D { l: 15, t: 10, i: 20, }, D { l: 143, t: 10, i: 25, }, D { l: 5, t: 0, i: 603 }, D { l: 7, t: 0, i: 1212, }, D { l: 9, t: 0, i: 565 }, D { l: 14, t: 0, i: 301, }, D { l: 5, t: 10, i: 915, }, D { l: 6, t: 10, i: 1783, }, D { l: 7, t: 10, i: 211, }, D { l: 7, t: 10, i: 1353, }, D { l: 9, t: 10, i: 83 }, D { l: 10, t: 10, i: 376, }, D { l: 10, t: 10, i: 431, }, D { l: 11, t: 10, i: 543, }, D { l: 12, t: 10, i: 664, }, D { l: 13, t: 10, i: 280, }, D { l: 13, t: 10, i: 428, }, D { l: 14, t: 10, i: 128, }, D { l: 17, t: 10, i: 52, }, D { l: 145, t: 10, i: 81, }, D { l: 4, t: 0, i: 492 }, D { l: 133, t: 0, i: 451, }, D { l: 135, t: 0, i: 835, }, D { l: 141, t: 0, i: 70, }, D { l: 132, t: 0, i: 539, }, D { l: 7, t: 11, i: 748, }, D { l: 139, t: 11, i: 700, }, D { l: 7, t: 11, i: 1517, }, D { l: 11, t: 11, i: 597, }, D { l: 14, t: 11, i: 76, }, D { l: 14, t: 11, i: 335, }, D { l: 148, t: 11, i: 33, }, D { l: 6, t: 0, i: 113 }, D { l: 135, t: 0, i: 436, }, D { l: 4, t: 10, i: 338, }, D { l: 133, t: 10, i: 400, }, D { l: 136, t: 0, i: 718, }, D { l: 133, t: 11, i: 127, }, D { l: 133, t: 11, i: 418, }, D { l: 6, t: 0, i: 1505, }, D { l: 7, t: 0, i: 520 }, D { l: 6, t: 11, i: 198, }, D { l: 11, t: 10, i: 892, }, D { l: 140, t: 11, i: 83, }, D { l: 4, t: 10, i: 221, }, D { l: 5, t: 10, i: 659, }, D { l: 5, t: 10, i: 989, }, D { l: 7, t: 10, i: 697, }, D { l: 7, t: 10, i: 1211, }, D { l: 138, t: 10, i: 284, }, D { l: 135, t: 0, i: 1070, }, D { l: 5, t: 11, i: 276, }, D { l: 6, t: 11, i: 55 }, D { l: 135, t: 11, i: 1369, }, D { l: 134, t: 0, i: 1515, }, D { l: 6, t: 11, i: 1752, }, D { l: 136, t: 11, i: 726, }, D { l: 138, t: 10, i: 507, }, D { l: 15, t: 0, i: 78 }, D { l: 4, t: 10, i: 188, }, D { l: 135, t: 10, i: 805, }, D { l: 5, t: 10, i: 884, }, D { l: 139, t: 10, i: 991, }, D { l: 133, t: 11, i: 764, }, D { l: 134, t: 10, i: 1653, }, D { l: 6, t: 11, i: 309, }, D { l: 7, t: 11, i: 331, }, D { l: 138, t: 11, i: 550, }, D { l: 135, t: 11, i: 1861, }, D { l: 132, t: 11, i: 348, }, D { l: 135, t: 11, i: 986, }, D { l: 135, t: 11, i: 1573, }, D { l: 12, t: 0, i: 610, }, D { l: 13, t: 0, i: 431, }, D { l: 144, t: 0, i: 59, }, D { l: 9, t: 11, i: 799, }, D { l: 140, t: 10, i: 166, }, D { l: 134, t: 0, i: 1530, }, D { l: 132, t: 0, i: 750, }, D { l: 132, t: 0, i: 307, }, D { l: 133, t: 0, i: 964, }, D { l: 6, t: 11, i: 194, }, D { l: 7, t: 11, i: 133, }, D { l: 10, t: 11, i: 493, }, D { l: 10, t: 11, i: 570, }, D { l: 139, t: 11, i: 664, }, D { l: 5, t: 11, i: 24 }, D { l: 5, t: 11, i: 569, }, D { l: 6, t: 11, i: 3 }, D { l: 6, t: 11, i: 119, }, D { l: 6, t: 11, i: 143, }, D { l: 6, t: 11, i: 440, }, D { l: 7, t: 11, i: 295, }, D { l: 7, t: 11, i: 599, }, D { l: 7, t: 11, i: 1686, }, D { l: 7, t: 11, i: 1854, }, D { l: 8, t: 11, i: 424, }, D { l: 9, t: 11, i: 43 }, D { l: 9, t: 11, i: 584, }, D { l: 9, t: 11, i: 760, }, D { l: 10, t: 11, i: 148, }, D { l: 10, t: 11, i: 328, }, D { l: 11, t: 11, i: 159, }, D { l: 11, t: 11, i: 253, }, D { l: 11, t: 11, i: 506, }, D { l: 12, t: 11, i: 487, }, D { l: 12, t: 11, i: 531, }, D { l: 144, t: 11, i: 33, }, D { l: 136, t: 10, i: 760, }, D { l: 5, t: 11, i: 14 }, D { l: 5, t: 11, i: 892, }, D { l: 6, t: 11, i: 283, }, D { l: 7, t: 11, i: 234, }, D { l: 136, t: 11, i: 537, }, D { l: 135, t: 11, i: 1251, }, D { l: 4, t: 11, i: 126, }, D { l: 8, t: 11, i: 635, }, D { l: 147, t: 11, i: 34, }, D { l: 4, t: 11, i: 316, }, D { l: 135, t: 11, i: 1561, }, D { l: 6, t: 0, i: 999 }, D { l: 6, t: 0, i: 1310, }, D { l: 137, t: 11, i: 861, }, D { l: 4, t: 11, i: 64 }, D { l: 5, t: 11, i: 352, }, D { l: 5, t: 11, i: 720, }, D { l: 6, t: 11, i: 368, }, D { l: 139, t: 11, i: 359, }, D { l: 4, t: 0, i: 75 }, D { l: 5, t: 0, i: 180 }, D { l: 6, t: 0, i: 500 }, D { l: 7, t: 0, i: 58 }, D { l: 7, t: 0, i: 710 }, D { l: 10, t: 0, i: 645, }, D { l: 136, t: 10, i: 770, }, D { l: 133, t: 0, i: 649, }, D { l: 6, t: 0, i: 276 }, D { l: 7, t: 0, i: 282 }, D { l: 7, t: 0, i: 879 }, D { l: 7, t: 0, i: 924 }, D { l: 8, t: 0, i: 459 }, D { l: 9, t: 0, i: 599 }, D { l: 9, t: 0, i: 754 }, D { l: 11, t: 0, i: 574, }, D { l: 12, t: 0, i: 128, }, D { l: 12, t: 0, i: 494, }, D { l: 13, t: 0, i: 52 }, D { l: 13, t: 0, i: 301, }, D { l: 15, t: 0, i: 30 }, D { l: 143, t: 0, i: 132, }, D { l: 132, t: 0, i: 200, }, D { l: 4, t: 10, i: 89 }, D { l: 5, t: 10, i: 489, }, D { l: 6, t: 10, i: 315, }, D { l: 7, t: 10, i: 553, }, D { l: 7, t: 10, i: 1745, }, D { l: 138, t: 10, i: 243, }, D { l: 135, t: 11, i: 1050, }, D { l: 7, t: 0, i: 1621, }, D { l: 6, t: 10, i: 1658, }, D { l: 9, t: 10, i: 3 }, D { l: 10, t: 10, i: 154, }, D { l: 11, t: 10, i: 641, }, D { l: 13, t: 10, i: 85, }, D { l: 13, t: 10, i: 201, }, D { l: 141, t: 10, i: 346, }, D { l: 6, t: 11, i: 175, }, D { l: 137, t: 11, i: 289, }, D { l: 5, t: 11, i: 432, }, D { l: 133, t: 11, i: 913, }, D { l: 6, t: 0, i: 225 }, D { l: 137, t: 0, i: 211, }, D { l: 7, t: 0, i: 718 }, D { l: 8, t: 0, i: 687 }, D { l: 139, t: 0, i: 374, }, D { l: 4, t: 10, i: 166, }, D { l: 133, t: 10, i: 505, }, D { l: 9, t: 0, i: 110 }, D { l: 134, t: 10, i: 1670, }, D { l: 8, t: 0, i: 58 }, D { l: 9, t: 0, i: 724 }, D { l: 11, t: 0, i: 809, }, D { l: 13, t: 0, i: 113, }, D { l: 145, t: 0, i: 72, }, D { l: 6, t: 0, i: 345 }, D { l: 7, t: 0, i: 1247, }, D { l: 144, t: 11, i: 82, }, D { l: 5, t: 11, i: 931, }, D { l: 134, t: 11, i: 1698, }, D { l: 8, t: 0, i: 767 }, D { l: 8, t: 0, i: 803 }, D { l: 9, t: 0, i: 301 }, D { l: 137, t: 0, i: 903, }, D { l: 139, t: 0, i: 203, }, D { l: 134, t: 0, i: 1154, }, D { l: 7, t: 0, i: 1949, }, D { l: 136, t: 0, i: 674, }, D { l: 134, t: 0, i: 259, }, D { l: 135, t: 0, i: 1275, }, D { l: 5, t: 11, i: 774, }, D { l: 6, t: 11, i: 1637, }, D { l: 6, t: 11, i: 1686, }, D { l: 134, t: 11, i: 1751, }, D { l: 134, t: 0, i: 1231, }, D { l: 7, t: 10, i: 445, }, D { l: 8, t: 10, i: 307, }, D { l: 8, t: 10, i: 704, }, D { l: 10, t: 10, i: 41, }, D { l: 10, t: 10, i: 439, }, D { l: 11, t: 10, i: 237, }, D { l: 11, t: 10, i: 622, }, D { l: 140, t: 10, i: 201, }, D { l: 136, t: 0, i: 254, }, D { l: 6, t: 11, i: 260, }, D { l: 135, t: 11, i: 1484, }, D { l: 139, t: 0, i: 277, }, D { l: 135, t: 10, i: 1977, }, D { l: 4, t: 10, i: 189, }, D { l: 5, t: 10, i: 713, }, D { l: 6, t: 11, i: 573, }, D { l: 136, t: 10, i: 57, }, D { l: 138, t: 10, i: 371, }, D { l: 132, t: 10, i: 552, }, D { l: 134, t: 11, i: 344, }, D { l: 133, t: 0, i: 248, }, D { l: 9, t: 0, i: 800 }, D { l: 10, t: 0, i: 693, }, D { l: 11, t: 0, i: 482, }, D { l: 11, t: 0, i: 734, }, D { l: 11, t: 0, i: 789, }, D { l: 134, t: 11, i: 240, }, D { l: 4, t: 0, i: 116 }, D { l: 5, t: 0, i: 95 }, D { l: 5, t: 0, i: 445 }, D { l: 7, t: 0, i: 1688, }, D { l: 8, t: 0, i: 29 }, D { l: 9, t: 0, i: 272 }, D { l: 11, t: 0, i: 509, }, D { l: 11, t: 0, i: 915, }, D { l: 4, t: 11, i: 292, }, D { l: 4, t: 11, i: 736, }, D { l: 5, t: 11, i: 871, }, D { l: 6, t: 11, i: 171, }, D { l: 6, t: 11, i: 1689, }, D { l: 7, t: 11, i: 1324, }, D { l: 7, t: 11, i: 1944, }, D { l: 9, t: 11, i: 415, }, D { l: 9, t: 11, i: 580, }, D { l: 14, t: 11, i: 230, }, D { l: 146, t: 11, i: 68, }, D { l: 7, t: 0, i: 490 }, D { l: 13, t: 0, i: 100, }, D { l: 143, t: 0, i: 75, }, D { l: 135, t: 0, i: 1641, }, D { l: 133, t: 0, i: 543, }, D { l: 7, t: 11, i: 209, }, D { l: 8, t: 11, i: 661, }, D { l: 10, t: 11, i: 42, }, D { l: 11, t: 11, i: 58, }, D { l: 12, t: 11, i: 58, }, D { l: 12, t: 11, i: 118, }, D { l: 141, t: 11, i: 32, }, D { l: 5, t: 0, i: 181 }, D { l: 8, t: 0, i: 41 }, D { l: 6, t: 11, i: 63 }, D { l: 135, t: 11, i: 920, }, D { l: 133, t: 0, i: 657, }, D { l: 133, t: 11, i: 793, }, D { l: 138, t: 0, i: 709, }, D { l: 7, t: 0, i: 25 }, D { l: 8, t: 0, i: 202 }, D { l: 138, t: 0, i: 536, }, D { l: 5, t: 11, i: 665, }, D { l: 135, t: 10, i: 1788, }, D { l: 145, t: 10, i: 49, }, D { l: 9, t: 0, i: 423 }, D { l: 140, t: 0, i: 89, }, D { l: 5, t: 11, i: 67 }, D { l: 6, t: 11, i: 62 }, D { l: 6, t: 11, i: 374, }, D { l: 135, t: 11, i: 1391, }, D { l: 8, t: 0, i: 113 }, D { l: 9, t: 0, i: 877 }, D { l: 10, t: 0, i: 554, }, D { l: 11, t: 0, i: 83 }, D { l: 12, t: 0, i: 136, }, D { l: 19, t: 0, i: 109, }, D { l: 9, t: 11, i: 790, }, D { l: 140, t: 11, i: 47, }, D { l: 138, t: 10, i: 661, }, D { l: 4, t: 0, i: 963 }, D { l: 10, t: 0, i: 927, }, D { l: 14, t: 0, i: 442, }, D { l: 135, t: 10, i: 1945, }, D { l: 133, t: 0, i: 976, }, D { l: 132, t: 0, i: 206, }, D { l: 4, t: 11, i: 391, }, D { l: 135, t: 11, i: 1169, }, D { l: 134, t: 0, i: 2002, }, D { l: 6, t: 0, i: 696 }, D { l: 134, t: 0, i: 1008, }, D { l: 134, t: 0, i: 1170, }, D { l: 132, t: 11, i: 271, }, D { l: 7, t: 0, i: 13 }, D { l: 8, t: 0, i: 226 }, D { l: 10, t: 0, i: 537, }, D { l: 11, t: 0, i: 570, }, D { l: 11, t: 0, i: 605, }, D { l: 11, t: 0, i: 799, }, D { l: 11, t: 0, i: 804, }, D { l: 12, t: 0, i: 85 }, D { l: 12, t: 0, i: 516, }, D { l: 12, t: 0, i: 623, }, D { l: 13, t: 0, i: 112, }, D { l: 13, t: 0, i: 361, }, D { l: 14, t: 0, i: 77 }, D { l: 14, t: 0, i: 78 }, D { l: 17, t: 0, i: 28 }, D { l: 19, t: 0, i: 110, }, D { l: 140, t: 11, i: 314, }, D { l: 132, t: 0, i: 769, }, D { l: 134, t: 0, i: 1544, }, D { l: 4, t: 0, i: 551 }, D { l: 137, t: 0, i: 678, }, D { l: 5, t: 10, i: 84 }, D { l: 134, t: 10, i: 163, }, D { l: 9, t: 0, i: 57 }, D { l: 9, t: 0, i: 459 }, D { l: 10, t: 0, i: 425, }, D { l: 11, t: 0, i: 119, }, D { l: 12, t: 0, i: 184, }, D { l: 12, t: 0, i: 371, }, D { l: 13, t: 0, i: 358, }, D { l: 145, t: 0, i: 51, }, D { l: 5, t: 0, i: 188 }, D { l: 5, t: 0, i: 814 }, D { l: 8, t: 0, i: 10 }, D { l: 9, t: 0, i: 421 }, D { l: 9, t: 0, i: 729 }, D { l: 10, t: 0, i: 609, }, D { l: 11, t: 0, i: 689, }, D { l: 4, t: 11, i: 253, }, D { l: 5, t: 10, i: 410, }, D { l: 5, t: 11, i: 544, }, D { l: 7, t: 11, i: 300, }, D { l: 137, t: 11, i: 340, }, D { l: 134, t: 0, i: 624, }, D { l: 138, t: 11, i: 321, }, D { l: 135, t: 0, i: 1941, }, D { l: 18, t: 0, i: 130, }, D { l: 5, t: 10, i: 322, }, D { l: 8, t: 10, i: 186, }, D { l: 9, t: 10, i: 262, }, D { l: 10, t: 10, i: 187, }, D { l: 142, t: 10, i: 208, }, D { l: 5, t: 11, i: 53 }, D { l: 5, t: 11, i: 541, }, D { l: 6, t: 11, i: 94 }, D { l: 6, t: 11, i: 499, }, D { l: 7, t: 11, i: 230, }, D { l: 139, t: 11, i: 321, }, D { l: 133, t: 10, i: 227, }, D { l: 4, t: 0, i: 378 }, D { l: 4, t: 11, i: 920, }, D { l: 5, t: 11, i: 25 }, D { l: 5, t: 11, i: 790, }, D { l: 6, t: 11, i: 457, }, D { l: 135, t: 11, i: 853, }, D { l: 137, t: 0, i: 269, }, D { l: 132, t: 0, i: 528, }, D { l: 134, t: 0, i: 1146, }, D { l: 7, t: 10, i: 1395, }, D { l: 8, t: 10, i: 486, }, D { l: 9, t: 10, i: 236, }, D { l: 9, t: 10, i: 878, }, D { l: 10, t: 10, i: 218, }, D { l: 11, t: 10, i: 95, }, D { l: 19, t: 10, i: 17, }, D { l: 147, t: 10, i: 31, }, D { l: 7, t: 10, i: 2043, }, D { l: 8, t: 10, i: 672, }, D { l: 141, t: 10, i: 448, }, D { l: 134, t: 0, i: 1105, }, D { l: 134, t: 0, i: 1616, }, D { l: 134, t: 11, i: 1765, }, D { l: 140, t: 11, i: 163, }, D { l: 5, t: 10, i: 412, }, D { l: 133, t: 11, i: 822, }, D { l: 132, t: 11, i: 634, }, D { l: 6, t: 0, i: 656 }, D { l: 134, t: 11, i: 1730, }, D { l: 134, t: 0, i: 1940, }, D { l: 5, t: 0, i: 104 }, D { l: 6, t: 0, i: 173 }, D { l: 135, t: 0, i: 1631, }, D { l: 136, t: 10, i: 562, }, D { l: 6, t: 11, i: 36 }, D { l: 7, t: 11, i: 658, }, D { l: 8, t: 11, i: 454, }, D { l: 147, t: 11, i: 86, }, D { l: 5, t: 0, i: 457 }, D { l: 134, t: 10, i: 1771, }, D { l: 7, t: 0, i: 810 }, D { l: 8, t: 0, i: 138 }, D { l: 8, t: 0, i: 342 }, D { l: 9, t: 0, i: 84 }, D { l: 10, t: 0, i: 193, }, D { l: 11, t: 0, i: 883, }, D { l: 140, t: 0, i: 359, }, D { l: 9, t: 0, i: 620 }, D { l: 135, t: 10, i: 1190, }, D { l: 137, t: 10, i: 132, }, D { l: 7, t: 11, i: 975, }, D { l: 137, t: 11, i: 789, }, D { l: 6, t: 0, i: 95 }, D { l: 6, t: 0, i: 1934, }, D { l: 136, t: 0, i: 967, }, D { l: 141, t: 11, i: 335, }, D { l: 6, t: 0, i: 406 }, D { l: 10, t: 0, i: 409, }, D { l: 10, t: 0, i: 447, }, D { l: 11, t: 0, i: 44 }, D { l: 140, t: 0, i: 100, }, D { l: 4, t: 10, i: 317, }, D { l: 135, t: 10, i: 1279, }, D { l: 132, t: 0, i: 477, }, D { l: 134, t: 0, i: 1268, }, D { l: 6, t: 0, i: 1941, }, D { l: 8, t: 0, i: 944 }, D { l: 5, t: 10, i: 63 }, D { l: 133, t: 10, i: 509, }, D { l: 132, t: 0, i: 629, }, D { l: 132, t: 11, i: 104, }, D { l: 4, t: 0, i: 246 }, D { l: 133, t: 0, i: 375, }, D { l: 6, t: 0, i: 1636, }, D { l: 132, t: 10, i: 288, }, D { l: 135, t: 11, i: 1614, }, D { l: 9, t: 0, i: 49 }, D { l: 10, t: 0, i: 774, }, D { l: 8, t: 10, i: 89 }, D { l: 8, t: 10, i: 620, }, D { l: 11, t: 10, i: 628, }, D { l: 12, t: 10, i: 322, }, D { l: 143, t: 10, i: 124, }, D { l: 4, t: 0, i: 282 }, D { l: 7, t: 0, i: 1034, }, D { l: 11, t: 0, i: 398, }, D { l: 11, t: 0, i: 634, }, D { l: 12, t: 0, i: 1 }, D { l: 12, t: 0, i: 79 }, D { l: 12, t: 0, i: 544, }, D { l: 14, t: 0, i: 237, }, D { l: 17, t: 0, i: 10 }, D { l: 146, t: 0, i: 20, }, D { l: 132, t: 0, i: 824, }, D { l: 7, t: 11, i: 45 }, D { l: 9, t: 11, i: 542, }, D { l: 9, t: 11, i: 566, }, D { l: 138, t: 11, i: 728, }, D { l: 5, t: 0, i: 118 }, D { l: 5, t: 0, i: 499 }, D { l: 6, t: 0, i: 476 }, D { l: 6, t: 0, i: 665 }, D { l: 6, t: 0, i: 1176, }, D { l: 6, t: 0, i: 1196, }, D { l: 7, t: 0, i: 600 }, D { l: 7, t: 0, i: 888 }, D { l: 135, t: 0, i: 1096, }, D { l: 7, t: 0, i: 296 }, D { l: 7, t: 0, i: 596 }, D { l: 8, t: 0, i: 560 }, D { l: 8, t: 0, i: 586 }, D { l: 9, t: 0, i: 612 }, D { l: 11, t: 0, i: 304, }, D { l: 12, t: 0, i: 46 }, D { l: 13, t: 0, i: 89 }, D { l: 14, t: 0, i: 112, }, D { l: 145, t: 0, i: 122, }, D { l: 5, t: 0, i: 894 }, D { l: 6, t: 0, i: 1772, }, D { l: 9, t: 0, i: 1009, }, D { l: 138, t: 10, i: 120, }, D { l: 5, t: 11, i: 533, }, D { l: 7, t: 11, i: 755, }, D { l: 138, t: 11, i: 780, }, D { l: 151, t: 10, i: 1, }, D { l: 6, t: 0, i: 1474, }, D { l: 7, t: 11, i: 87 }, D { l: 142, t: 11, i: 288, }, D { l: 139, t: 0, i: 366, }, D { l: 137, t: 10, i: 461, }, D { l: 7, t: 11, i: 988, }, D { l: 7, t: 11, i: 1939, }, D { l: 9, t: 11, i: 64 }, D { l: 9, t: 11, i: 502, }, D { l: 12, t: 11, i: 7 }, D { l: 12, t: 11, i: 34, }, D { l: 13, t: 11, i: 12, }, D { l: 13, t: 11, i: 234, }, D { l: 147, t: 11, i: 77, }, D { l: 7, t: 0, i: 1599, }, D { l: 7, t: 0, i: 1723, }, D { l: 8, t: 0, i: 79 }, D { l: 8, t: 0, i: 106 }, D { l: 8, t: 0, i: 190 }, D { l: 8, t: 0, i: 302 }, D { l: 8, t: 0, i: 383 }, D { l: 8, t: 0, i: 713 }, D { l: 9, t: 0, i: 119 }, D { l: 9, t: 0, i: 233 }, D { l: 9, t: 0, i: 419 }, D { l: 9, t: 0, i: 471 }, D { l: 10, t: 0, i: 181, }, D { l: 10, t: 0, i: 406, }, D { l: 11, t: 0, i: 57 }, D { l: 11, t: 0, i: 85 }, D { l: 11, t: 0, i: 120, }, D { l: 11, t: 0, i: 177, }, D { l: 11, t: 0, i: 296, }, D { l: 11, t: 0, i: 382, }, D { l: 11, t: 0, i: 454, }, D { l: 11, t: 0, i: 758, }, D { l: 11, t: 0, i: 999, }, D { l: 12, t: 0, i: 27 }, D { l: 12, t: 0, i: 98 }, D { l: 12, t: 0, i: 131, }, D { l: 12, t: 0, i: 245, }, D { l: 12, t: 0, i: 312, }, D { l: 12, t: 0, i: 446, }, D { l: 12, t: 0, i: 454, }, D { l: 13, t: 0, i: 25 }, D { l: 13, t: 0, i: 98 }, D { l: 13, t: 0, i: 426, }, D { l: 13, t: 0, i: 508, }, D { l: 14, t: 0, i: 70 }, D { l: 14, t: 0, i: 163, }, D { l: 14, t: 0, i: 272, }, D { l: 14, t: 0, i: 277, }, D { l: 14, t: 0, i: 370, }, D { l: 15, t: 0, i: 95 }, D { l: 15, t: 0, i: 138, }, D { l: 15, t: 0, i: 167, }, D { l: 17, t: 0, i: 38 }, D { l: 148, t: 0, i: 96, }, D { l: 135, t: 10, i: 1346, }, D { l: 10, t: 0, i: 200, }, D { l: 19, t: 0, i: 2 }, D { l: 151, t: 0, i: 22, }, D { l: 135, t: 11, i: 141, }, D { l: 134, t: 10, i: 85, }, D { l: 134, t: 0, i: 1759, }, D { l: 138, t: 0, i: 372, }, D { l: 145, t: 0, i: 16, }, D { l: 8, t: 0, i: 943 }, D { l: 132, t: 11, i: 619, }, D { l: 139, t: 11, i: 88, }, D { l: 5, t: 11, i: 246, }, D { l: 8, t: 11, i: 189, }, D { l: 9, t: 11, i: 355, }, D { l: 9, t: 11, i: 512, }, D { l: 10, t: 11, i: 124, }, D { l: 10, t: 11, i: 453, }, D { l: 11, t: 11, i: 143, }, D { l: 11, t: 11, i: 416, }, D { l: 11, t: 11, i: 859, }, D { l: 141, t: 11, i: 341, }, D { l: 5, t: 0, i: 258 }, D { l: 134, t: 0, i: 719, }, D { l: 6, t: 0, i: 1798, }, D { l: 6, t: 0, i: 1839, }, D { l: 8, t: 0, i: 900 }, D { l: 10, t: 0, i: 874, }, D { l: 10, t: 0, i: 886, }, D { l: 12, t: 0, i: 698, }, D { l: 12, t: 0, i: 732, }, D { l: 12, t: 0, i: 770, }, D { l: 16, t: 0, i: 106, }, D { l: 18, t: 0, i: 163, }, D { l: 18, t: 0, i: 170, }, D { l: 18, t: 0, i: 171, }, D { l: 152, t: 0, i: 20, }, D { l: 9, t: 0, i: 707 }, D { l: 11, t: 0, i: 326, }, D { l: 11, t: 0, i: 339, }, D { l: 12, t: 0, i: 423, }, D { l: 12, t: 0, i: 502, }, D { l: 20, t: 0, i: 62 }, D { l: 9, t: 11, i: 707, }, D { l: 11, t: 11, i: 326, }, D { l: 11, t: 11, i: 339, }, D { l: 12, t: 11, i: 423, }, D { l: 12, t: 11, i: 502, }, D { l: 148, t: 11, i: 62, }, D { l: 5, t: 0, i: 30 }, D { l: 7, t: 0, i: 495 }, D { l: 8, t: 0, i: 134 }, D { l: 9, t: 0, i: 788 }, D { l: 140, t: 0, i: 438, }, D { l: 133, t: 11, i: 678, }, D { l: 5, t: 10, i: 279, }, D { l: 6, t: 10, i: 235, }, D { l: 7, t: 10, i: 468, }, D { l: 8, t: 10, i: 446, }, D { l: 9, t: 10, i: 637, }, D { l: 10, t: 10, i: 717, }, D { l: 11, t: 10, i: 738, }, D { l: 140, t: 10, i: 514, }, D { l: 5, t: 11, i: 35 }, D { l: 6, t: 11, i: 287, }, D { l: 7, t: 11, i: 862, }, D { l: 7, t: 11, i: 1886, }, D { l: 138, t: 11, i: 179, }, D { l: 7, t: 0, i: 1948, }, D { l: 7, t: 0, i: 2004, }, D { l: 132, t: 11, i: 517, }, D { l: 5, t: 10, i: 17 }, D { l: 6, t: 10, i: 371, }, D { l: 137, t: 10, i: 528, }, D { l: 4, t: 0, i: 115 }, D { l: 5, t: 0, i: 669 }, D { l: 6, t: 0, i: 407 }, D { l: 8, t: 0, i: 311 }, D { l: 11, t: 0, i: 10 }, D { l: 141, t: 0, i: 5 }, D { l: 137, t: 0, i: 381, }, D { l: 5, t: 0, i: 50 }, D { l: 6, t: 0, i: 439 }, D { l: 7, t: 0, i: 780 }, D { l: 135, t: 0, i: 1040, }, D { l: 136, t: 11, i: 667, }, D { l: 11, t: 11, i: 403, }, D { l: 146, t: 11, i: 83, }, D { l: 5, t: 0, i: 1 }, D { l: 6, t: 0, i: 81 }, D { l: 138, t: 0, i: 520, }, D { l: 134, t: 0, i: 738, }, D { l: 5, t: 0, i: 482 }, D { l: 8, t: 0, i: 98 }, D { l: 9, t: 0, i: 172 }, D { l: 10, t: 0, i: 360, }, D { l: 10, t: 0, i: 700, }, D { l: 10, t: 0, i: 822, }, D { l: 11, t: 0, i: 302, }, D { l: 11, t: 0, i: 778, }, D { l: 12, t: 0, i: 50 }, D { l: 12, t: 0, i: 127, }, D { l: 12, t: 0, i: 396, }, D { l: 13, t: 0, i: 62 }, D { l: 13, t: 0, i: 328, }, D { l: 14, t: 0, i: 122, }, D { l: 147, t: 0, i: 72, }, D { l: 9, t: 11, i: 157, }, D { l: 10, t: 11, i: 131, }, D { l: 140, t: 11, i: 72, }, D { l: 135, t: 11, i: 714, }, D { l: 135, t: 11, i: 539, }, D { l: 5, t: 0, i: 2 }, D { l: 6, t: 0, i: 512 }, D { l: 7, t: 0, i: 797 }, D { l: 7, t: 0, i: 1494, }, D { l: 8, t: 0, i: 253 }, D { l: 8, t: 0, i: 589 }, D { l: 9, t: 0, i: 77 }, D { l: 10, t: 0, i: 1 }, D { l: 10, t: 0, i: 129, }, D { l: 10, t: 0, i: 225, }, D { l: 11, t: 0, i: 118, }, D { l: 11, t: 0, i: 226, }, D { l: 11, t: 0, i: 251, }, D { l: 11, t: 0, i: 430, }, D { l: 11, t: 0, i: 701, }, D { l: 11, t: 0, i: 974, }, D { l: 11, t: 0, i: 982, }, D { l: 12, t: 0, i: 64 }, D { l: 12, t: 0, i: 260, }, D { l: 12, t: 0, i: 488, }, D { l: 140, t: 0, i: 690, }, D { l: 5, t: 11, i: 394, }, D { l: 7, t: 11, i: 367, }, D { l: 7, t: 11, i: 487, }, D { l: 7, t: 11, i: 857, }, D { l: 7, t: 11, i: 1713, }, D { l: 8, t: 11, i: 246, }, D { l: 9, t: 11, i: 537, }, D { l: 10, t: 11, i: 165, }, D { l: 12, t: 11, i: 219, }, D { l: 140, t: 11, i: 561, }, D { l: 136, t: 0, i: 557, }, D { l: 5, t: 10, i: 779, }, D { l: 5, t: 10, i: 807, }, D { l: 6, t: 10, i: 1655, }, D { l: 134, t: 10, i: 1676, }, D { l: 4, t: 10, i: 196, }, D { l: 5, t: 10, i: 558, }, D { l: 133, t: 10, i: 949, }, D { l: 11, t: 11, i: 827, }, D { l: 12, t: 11, i: 56, }, D { l: 14, t: 11, i: 34, }, D { l: 143, t: 11, i: 148, }, D { l: 137, t: 0, i: 347, }, D { l: 133, t: 0, i: 572, }, D { l: 134, t: 0, i: 832, }, D { l: 4, t: 0, i: 12 }, D { l: 7, t: 0, i: 504 }, D { l: 7, t: 0, i: 522 }, D { l: 7, t: 0, i: 809 }, D { l: 8, t: 0, i: 797 }, D { l: 141, t: 0, i: 88, }, D { l: 4, t: 10, i: 752, }, D { l: 133, t: 11, i: 449, }, D { l: 7, t: 11, i: 86 }, D { l: 8, t: 11, i: 103, }, D { l: 145, t: 11, i: 69, }, D { l: 7, t: 11, i: 2028, }, D { l: 138, t: 11, i: 641, }, D { l: 5, t: 0, i: 528 }, D { l: 6, t: 11, i: 1 }, D { l: 142, t: 11, i: 2, }, D { l: 134, t: 0, i: 861, }, D { l: 10, t: 0, i: 294, }, D { l: 4, t: 10, i: 227, }, D { l: 5, t: 10, i: 159, }, D { l: 5, t: 10, i: 409, }, D { l: 7, t: 10, i: 80 }, D { l: 10, t: 10, i: 479, }, D { l: 12, t: 10, i: 418, }, D { l: 14, t: 10, i: 50, }, D { l: 14, t: 10, i: 249, }, D { l: 142, t: 10, i: 295, }, D { l: 7, t: 10, i: 1470, }, D { l: 8, t: 10, i: 66 }, D { l: 8, t: 10, i: 137, }, D { l: 8, t: 10, i: 761, }, D { l: 9, t: 10, i: 638, }, D { l: 11, t: 10, i: 80, }, D { l: 11, t: 10, i: 212, }, D { l: 11, t: 10, i: 368, }, D { l: 11, t: 10, i: 418, }, D { l: 12, t: 10, i: 8 }, D { l: 13, t: 10, i: 15, }, D { l: 16, t: 10, i: 61, }, D { l: 17, t: 10, i: 59, }, D { l: 19, t: 10, i: 28, }, D { l: 148, t: 10, i: 84, }, D { l: 20, t: 0, i: 109, }, D { l: 135, t: 11, i: 1148, }, D { l: 6, t: 11, i: 277, }, D { l: 7, t: 11, i: 1274, }, D { l: 7, t: 11, i: 1386, }, D { l: 7, t: 11, i: 1392, }, D { l: 12, t: 11, i: 129, }, D { l: 146, t: 11, i: 87, }, D { l: 6, t: 11, i: 187, }, D { l: 7, t: 11, i: 39 }, D { l: 7, t: 11, i: 1203, }, D { l: 8, t: 11, i: 380, }, D { l: 8, t: 11, i: 542, }, D { l: 14, t: 11, i: 117, }, D { l: 149, t: 11, i: 28, }, D { l: 134, t: 0, i: 1187, }, D { l: 5, t: 0, i: 266 }, D { l: 9, t: 0, i: 290 }, D { l: 9, t: 0, i: 364 }, D { l: 10, t: 0, i: 293, }, D { l: 11, t: 0, i: 606, }, D { l: 142, t: 0, i: 45, }, D { l: 6, t: 11, i: 297, }, D { l: 7, t: 11, i: 793, }, D { l: 139, t: 11, i: 938, }, D { l: 4, t: 0, i: 50 }, D { l: 6, t: 0, i: 594 }, D { l: 9, t: 0, i: 121 }, D { l: 10, t: 0, i: 49 }, D { l: 10, t: 0, i: 412, }, D { l: 139, t: 0, i: 834, }, D { l: 136, t: 0, i: 748, }, D { l: 7, t: 11, i: 464, }, D { l: 8, t: 11, i: 438, }, D { l: 11, t: 11, i: 105, }, D { l: 11, t: 11, i: 363, }, D { l: 12, t: 11, i: 231, }, D { l: 14, t: 11, i: 386, }, D { l: 15, t: 11, i: 102, }, D { l: 148, t: 11, i: 75, }, D { l: 132, t: 0, i: 466, }, D { l: 13, t: 0, i: 399, }, D { l: 14, t: 0, i: 337, }, D { l: 6, t: 10, i: 38 }, D { l: 7, t: 10, i: 1220, }, D { l: 8, t: 10, i: 185, }, D { l: 8, t: 10, i: 256, }, D { l: 9, t: 10, i: 22 }, D { l: 9, t: 10, i: 331, }, D { l: 10, t: 10, i: 738, }, D { l: 11, t: 10, i: 205, }, D { l: 11, t: 10, i: 540, }, D { l: 11, t: 10, i: 746, }, D { l: 13, t: 10, i: 465, }, D { l: 142, t: 10, i: 194, }, D { l: 9, t: 0, i: 378 }, D { l: 141, t: 0, i: 162, }, D { l: 137, t: 0, i: 519, }, D { l: 4, t: 10, i: 159, }, D { l: 6, t: 10, i: 115, }, D { l: 7, t: 10, i: 252, }, D { l: 7, t: 10, i: 257, }, D { l: 7, t: 10, i: 1928, }, D { l: 8, t: 10, i: 69 }, D { l: 9, t: 10, i: 384, }, D { l: 10, t: 10, i: 91, }, D { l: 10, t: 10, i: 615, }, D { l: 12, t: 10, i: 375, }, D { l: 14, t: 10, i: 235, }, D { l: 18, t: 10, i: 117, }, D { l: 147, t: 10, i: 123, }, D { l: 5, t: 11, i: 604, }, D { l: 5, t: 10, i: 911, }, D { l: 136, t: 10, i: 278, }, D { l: 132, t: 0, i: 667, }, D { l: 8, t: 0, i: 351 }, D { l: 9, t: 0, i: 322 }, D { l: 4, t: 10, i: 151, }, D { l: 135, t: 10, i: 1567, }, D { l: 134, t: 0, i: 902, }, D { l: 133, t: 10, i: 990, }, D { l: 12, t: 0, i: 180, }, D { l: 5, t: 10, i: 194, }, D { l: 7, t: 10, i: 1662, }, D { l: 137, t: 10, i: 90, }, D { l: 4, t: 0, i: 869 }, D { l: 134, t: 0, i: 1996, }, D { l: 134, t: 0, i: 813, }, D { l: 133, t: 10, i: 425, }, D { l: 137, t: 11, i: 761, }, D { l: 132, t: 0, i: 260, }, D { l: 133, t: 10, i: 971, }, D { l: 5, t: 11, i: 20 }, D { l: 6, t: 11, i: 298, }, D { l: 7, t: 11, i: 659, }, D { l: 7, t: 11, i: 1366, }, D { l: 137, t: 11, i: 219, }, D { l: 4, t: 0, i: 39 }, D { l: 5, t: 0, i: 36 }, D { l: 7, t: 0, i: 1843, }, D { l: 8, t: 0, i: 407 }, D { l: 11, t: 0, i: 144, }, D { l: 140, t: 0, i: 523, }, D { l: 4, t: 0, i: 510 }, D { l: 10, t: 0, i: 587, }, D { l: 139, t: 10, i: 752, }, D { l: 7, t: 0, i: 29 }, D { l: 7, t: 0, i: 66 }, D { l: 7, t: 0, i: 1980, }, D { l: 10, t: 0, i: 487, }, D { l: 138, t: 0, i: 809, }, D { l: 13, t: 0, i: 260, }, D { l: 14, t: 0, i: 82 }, D { l: 18, t: 0, i: 63 }, D { l: 137, t: 10, i: 662, }, D { l: 5, t: 10, i: 72 }, D { l: 6, t: 10, i: 264, }, D { l: 7, t: 10, i: 21 }, D { l: 7, t: 10, i: 46 }, D { l: 7, t: 10, i: 2013, }, D { l: 8, t: 10, i: 215, }, D { l: 8, t: 10, i: 513, }, D { l: 10, t: 10, i: 266, }, D { l: 139, t: 10, i: 22, }, D { l: 134, t: 0, i: 570, }, D { l: 6, t: 0, i: 565 }, D { l: 7, t: 0, i: 1667, }, D { l: 4, t: 11, i: 439, }, D { l: 10, t: 10, i: 95, }, D { l: 11, t: 10, i: 603, }, D { l: 12, t: 11, i: 242, }, D { l: 13, t: 10, i: 443, }, D { l: 14, t: 10, i: 160, }, D { l: 143, t: 10, i: 4, }, D { l: 134, t: 0, i: 1464, }, D { l: 134, t: 10, i: 431, }, D { l: 9, t: 0, i: 372 }, D { l: 15, t: 0, i: 2 }, D { l: 19, t: 0, i: 10 }, D { l: 19, t: 0, i: 18 }, D { l: 5, t: 10, i: 874, }, D { l: 6, t: 10, i: 1677, }, D { l: 143, t: 10, i: 0, }, D { l: 132, t: 0, i: 787, }, D { l: 6, t: 0, i: 380 }, D { l: 12, t: 0, i: 399, }, D { l: 21, t: 0, i: 19 }, D { l: 7, t: 10, i: 939, }, D { l: 7, t: 10, i: 1172, }, D { l: 7, t: 10, i: 1671, }, D { l: 9, t: 10, i: 540, }, D { l: 10, t: 10, i: 696, }, D { l: 11, t: 10, i: 265, }, D { l: 11, t: 10, i: 732, }, D { l: 11, t: 10, i: 928, }, D { l: 11, t: 10, i: 937, }, D { l: 141, t: 10, i: 438, }, D { l: 137, t: 0, i: 200, }, D { l: 132, t: 11, i: 233, }, D { l: 132, t: 0, i: 516, }, D { l: 134, t: 11, i: 577, }, D { l: 132, t: 0, i: 844, }, D { l: 11, t: 0, i: 887, }, D { l: 14, t: 0, i: 365, }, D { l: 142, t: 0, i: 375, }, D { l: 132, t: 11, i: 482, }, D { l: 8, t: 0, i: 821 }, D { l: 140, t: 0, i: 44, }, D { l: 7, t: 0, i: 1655, }, D { l: 136, t: 0, i: 305, }, D { l: 5, t: 10, i: 682, }, D { l: 135, t: 10, i: 1887, }, D { l: 135, t: 11, i: 346, }, D { l: 132, t: 10, i: 696, }, D { l: 4, t: 0, i: 10 }, D { l: 7, t: 0, i: 917 }, D { l: 139, t: 0, i: 786, }, D { l: 5, t: 11, i: 795, }, D { l: 6, t: 11, i: 1741, }, D { l: 8, t: 11, i: 417, }, D { l: 137, t: 11, i: 782, }, D { l: 4, t: 0, i: 1016, }, D { l: 134, t: 0, i: 2031, }, D { l: 5, t: 0, i: 684 }, D { l: 4, t: 10, i: 726, }, D { l: 133, t: 10, i: 630, }, D { l: 6, t: 0, i: 1021, }, D { l: 134, t: 0, i: 1480, }, D { l: 8, t: 10, i: 802, }, D { l: 136, t: 10, i: 838, }, D { l: 134, t: 0, i: 27, }, D { l: 134, t: 0, i: 395, }, D { l: 135, t: 11, i: 622, }, D { l: 7, t: 11, i: 625, }, D { l: 135, t: 11, i: 1750, }, D { l: 4, t: 11, i: 203, }, D { l: 135, t: 11, i: 1936, }, D { l: 6, t: 10, i: 118, }, D { l: 7, t: 10, i: 215, }, D { l: 7, t: 10, i: 1521, }, D { l: 140, t: 10, i: 11, }, D { l: 132, t: 0, i: 813, }, D { l: 136, t: 0, i: 511, }, D { l: 7, t: 10, i: 615, }, D { l: 138, t: 10, i: 251, }, D { l: 135, t: 10, i: 1044, }, D { l: 145, t: 0, i: 56, }, D { l: 133, t: 10, i: 225, }, D { l: 6, t: 0, i: 342 }, D { l: 6, t: 0, i: 496 }, D { l: 8, t: 0, i: 275 }, D { l: 137, t: 0, i: 206, }, D { l: 4, t: 0, i: 909 }, D { l: 133, t: 0, i: 940, }, D { l: 132, t: 0, i: 891, }, D { l: 7, t: 11, i: 311, }, D { l: 9, t: 11, i: 308, }, D { l: 140, t: 11, i: 255, }, D { l: 4, t: 10, i: 370, }, D { l: 5, t: 10, i: 756, }, D { l: 135, t: 10, i: 1326, }, D { l: 4, t: 0, i: 687 }, D { l: 134, t: 0, i: 1596, }, D { l: 134, t: 0, i: 1342, }, D { l: 6, t: 10, i: 1662, }, D { l: 7, t: 10, i: 48 }, D { l: 8, t: 10, i: 771, }, D { l: 10, t: 10, i: 116, }, D { l: 13, t: 10, i: 104, }, D { l: 14, t: 10, i: 105, }, D { l: 14, t: 10, i: 184, }, D { l: 15, t: 10, i: 168, }, D { l: 19, t: 10, i: 92, }, D { l: 148, t: 10, i: 68, }, D { l: 138, t: 10, i: 209, }, D { l: 4, t: 11, i: 400, }, D { l: 5, t: 11, i: 267, }, D { l: 135, t: 11, i: 232, }, D { l: 151, t: 11, i: 12, }, D { l: 6, t: 0, i: 41 }, D { l: 141, t: 0, i: 160, }, D { l: 141, t: 11, i: 314, }, D { l: 134, t: 0, i: 1718, }, D { l: 136, t: 0, i: 778, }, D { l: 142, t: 11, i: 261, }, D { l: 134, t: 0, i: 1610, }, D { l: 133, t: 0, i: 115, }, D { l: 132, t: 0, i: 294, }, D { l: 14, t: 0, i: 314, }, D { l: 132, t: 10, i: 120, }, D { l: 132, t: 0, i: 983, }, D { l: 5, t: 0, i: 193 }, D { l: 140, t: 0, i: 178, }, D { l: 138, t: 10, i: 429, }, D { l: 5, t: 10, i: 820, }, D { l: 135, t: 10, i: 931, }, D { l: 6, t: 0, i: 994 }, D { l: 6, t: 0, i: 1051, }, D { l: 6, t: 0, i: 1439, }, D { l: 7, t: 0, i: 174 }, D { l: 133, t: 11, i: 732, }, D { l: 4, t: 11, i: 100, }, D { l: 7, t: 11, i: 679, }, D { l: 8, t: 11, i: 313, }, D { l: 138, t: 10, i: 199, }, D { l: 6, t: 10, i: 151, }, D { l: 6, t: 10, i: 1675, }, D { l: 7, t: 10, i: 383, }, D { l: 151, t: 10, i: 10, }, D { l: 6, t: 0, i: 1796, }, D { l: 8, t: 0, i: 848 }, D { l: 8, t: 0, i: 867 }, D { l: 8, t: 0, i: 907 }, D { l: 10, t: 0, i: 855, }, D { l: 140, t: 0, i: 703, }, D { l: 140, t: 0, i: 221, }, D { l: 4, t: 0, i: 122 }, D { l: 5, t: 0, i: 796 }, D { l: 5, t: 0, i: 952 }, D { l: 6, t: 0, i: 1660, }, D { l: 6, t: 0, i: 1671, }, D { l: 8, t: 0, i: 567 }, D { l: 9, t: 0, i: 687 }, D { l: 9, t: 0, i: 742 }, D { l: 10, t: 0, i: 686, }, D { l: 11, t: 0, i: 682, }, D { l: 11, t: 0, i: 909, }, D { l: 140, t: 0, i: 281, }, D { l: 5, t: 11, i: 362, }, D { l: 5, t: 11, i: 443, }, D { l: 6, t: 11, i: 318, }, D { l: 7, t: 11, i: 1019, }, D { l: 139, t: 11, i: 623, }, D { l: 5, t: 11, i: 463, }, D { l: 136, t: 11, i: 296, }, D { l: 11, t: 0, i: 583, }, D { l: 13, t: 0, i: 262, }, D { l: 6, t: 10, i: 1624, }, D { l: 12, t: 10, i: 422, }, D { l: 142, t: 10, i: 360, }, D { l: 5, t: 0, i: 179 }, D { l: 7, t: 0, i: 1095, }, D { l: 135, t: 0, i: 1213, }, D { l: 4, t: 10, i: 43 }, D { l: 4, t: 11, i: 454, }, D { l: 5, t: 10, i: 344, }, D { l: 133, t: 10, i: 357, }, D { l: 4, t: 0, i: 66 }, D { l: 7, t: 0, i: 722 }, D { l: 135, t: 0, i: 904, }, D { l: 134, t: 0, i: 773, }, D { l: 7, t: 0, i: 352 }, D { l: 133, t: 10, i: 888, }, D { l: 5, t: 11, i: 48 }, D { l: 5, t: 11, i: 404, }, D { l: 6, t: 11, i: 557, }, D { l: 7, t: 11, i: 458, }, D { l: 8, t: 11, i: 597, }, D { l: 10, t: 11, i: 455, }, D { l: 10, t: 11, i: 606, }, D { l: 11, t: 11, i: 49, }, D { l: 11, t: 11, i: 548, }, D { l: 12, t: 11, i: 476, }, D { l: 13, t: 11, i: 18, }, D { l: 141, t: 11, i: 450, }, D { l: 134, t: 11, i: 418, }, D { l: 132, t: 10, i: 711, }, D { l: 5, t: 11, i: 442, }, D { l: 135, t: 11, i: 1984, }, D { l: 141, t: 0, i: 35, }, D { l: 137, t: 0, i: 152, }, D { l: 134, t: 0, i: 1197, }, D { l: 135, t: 11, i: 1093, }, D { l: 137, t: 11, i: 203, }, D { l: 137, t: 10, i: 440, }, D { l: 10, t: 0, i: 592, }, D { l: 10, t: 0, i: 753, }, D { l: 12, t: 0, i: 317, }, D { l: 12, t: 0, i: 355, }, D { l: 12, t: 0, i: 465, }, D { l: 12, t: 0, i: 469, }, D { l: 12, t: 0, i: 560, }, D { l: 12, t: 0, i: 578, }, D { l: 141, t: 0, i: 243, }, D { l: 133, t: 0, i: 564, }, D { l: 134, t: 0, i: 797, }, D { l: 5, t: 10, i: 958, }, D { l: 133, t: 10, i: 987, }, D { l: 5, t: 11, i: 55 }, D { l: 7, t: 11, i: 376, }, D { l: 140, t: 11, i: 161, }, D { l: 133, t: 11, i: 450, }, D { l: 134, t: 0, i: 556, }, D { l: 134, t: 0, i: 819, }, D { l: 11, t: 10, i: 276, }, D { l: 142, t: 10, i: 293, }, D { l: 7, t: 0, i: 544 }, D { l: 138, t: 0, i: 61, }, D { l: 8, t: 0, i: 719 }, D { l: 4, t: 10, i: 65 }, D { l: 5, t: 10, i: 479, }, D { l: 5, t: 10, i: 1004, }, D { l: 7, t: 10, i: 1913, }, D { l: 8, t: 10, i: 317, }, D { l: 9, t: 10, i: 302, }, D { l: 10, t: 10, i: 612, }, D { l: 141, t: 10, i: 22, }, D { l: 4, t: 0, i: 5 }, D { l: 5, t: 0, i: 498 }, D { l: 8, t: 0, i: 637 }, D { l: 9, t: 0, i: 521 }, D { l: 4, t: 11, i: 213, }, D { l: 4, t: 10, i: 261, }, D { l: 7, t: 11, i: 223, }, D { l: 7, t: 10, i: 510, }, D { l: 136, t: 11, i: 80, }, D { l: 5, t: 0, i: 927 }, D { l: 7, t: 0, i: 101 }, D { l: 4, t: 10, i: 291, }, D { l: 7, t: 11, i: 381, }, D { l: 7, t: 11, i: 806, }, D { l: 7, t: 11, i: 820, }, D { l: 8, t: 11, i: 354, }, D { l: 8, t: 11, i: 437, }, D { l: 8, t: 11, i: 787, }, D { l: 9, t: 10, i: 515, }, D { l: 9, t: 11, i: 657, }, D { l: 10, t: 11, i: 58, }, D { l: 10, t: 11, i: 339, }, D { l: 10, t: 11, i: 749, }, D { l: 11, t: 11, i: 914, }, D { l: 12, t: 10, i: 152, }, D { l: 12, t: 11, i: 162, }, D { l: 12, t: 10, i: 443, }, D { l: 13, t: 11, i: 75, }, D { l: 13, t: 10, i: 392, }, D { l: 14, t: 11, i: 106, }, D { l: 14, t: 11, i: 198, }, D { l: 14, t: 11, i: 320, }, D { l: 14, t: 10, i: 357, }, D { l: 14, t: 11, i: 413, }, D { l: 146, t: 11, i: 43, }, D { l: 6, t: 0, i: 1153, }, D { l: 7, t: 0, i: 1441, }, D { l: 136, t: 11, i: 747, }, D { l: 4, t: 0, i: 893 }, D { l: 5, t: 0, i: 780 }, D { l: 133, t: 0, i: 893, }, D { l: 138, t: 11, i: 654, }, D { l: 133, t: 11, i: 692, }, D { l: 133, t: 0, i: 238, }, D { l: 134, t: 11, i: 191, }, D { l: 4, t: 10, i: 130, }, D { l: 135, t: 10, i: 843, }, D { l: 6, t: 0, i: 1296, }, D { l: 5, t: 10, i: 42 }, D { l: 5, t: 10, i: 879, }, D { l: 7, t: 10, i: 245, }, D { l: 7, t: 10, i: 324, }, D { l: 7, t: 10, i: 1532, }, D { l: 11, t: 10, i: 463, }, D { l: 11, t: 10, i: 472, }, D { l: 13, t: 10, i: 363, }, D { l: 144, t: 10, i: 52, }, D { l: 134, t: 0, i: 1729, }, D { l: 6, t: 0, i: 1999, }, D { l: 136, t: 0, i: 969, }, D { l: 4, t: 10, i: 134, }, D { l: 133, t: 10, i: 372, }, D { l: 4, t: 0, i: 60 }, D { l: 7, t: 0, i: 941 }, D { l: 7, t: 0, i: 1800, }, D { l: 8, t: 0, i: 314 }, D { l: 9, t: 0, i: 700 }, D { l: 139, t: 0, i: 487, }, D { l: 134, t: 0, i: 1144, }, D { l: 6, t: 11, i: 162, }, D { l: 7, t: 11, i: 1960, }, D { l: 136, t: 11, i: 831, }, D { l: 132, t: 11, i: 706, }, D { l: 135, t: 0, i: 1147, }, D { l: 138, t: 11, i: 426, }, D { l: 138, t: 11, i: 89, }, D { l: 7, t: 0, i: 1853, }, D { l: 138, t: 0, i: 437, }, D { l: 136, t: 0, i: 419, }, D { l: 135, t: 10, i: 1634, }, D { l: 133, t: 0, i: 828, }, D { l: 5, t: 0, i: 806 }, D { l: 7, t: 0, i: 176 }, D { l: 7, t: 0, i: 178 }, D { l: 7, t: 0, i: 1240, }, D { l: 7, t: 0, i: 1976, }, D { l: 132, t: 10, i: 644, }, D { l: 135, t: 11, i: 1877, }, D { l: 5, t: 11, i: 420, }, D { l: 135, t: 11, i: 1449, }, D { l: 4, t: 0, i: 51 }, D { l: 5, t: 0, i: 39 }, D { l: 6, t: 0, i: 4 }, D { l: 7, t: 0, i: 591 }, D { l: 7, t: 0, i: 849 }, D { l: 7, t: 0, i: 951 }, D { l: 7, t: 0, i: 1613, }, D { l: 7, t: 0, i: 1760, }, D { l: 7, t: 0, i: 1988, }, D { l: 9, t: 0, i: 434 }, D { l: 10, t: 0, i: 754, }, D { l: 11, t: 0, i: 25 }, D { l: 139, t: 0, i: 37, }, D { l: 10, t: 11, i: 57, }, D { l: 138, t: 11, i: 277, }, D { l: 135, t: 10, i: 540, }, D { l: 132, t: 11, i: 204, }, D { l: 135, t: 0, i: 159, }, D { l: 139, t: 11, i: 231, }, D { l: 133, t: 0, i: 902, }, D { l: 7, t: 0, i: 928 }, D { l: 7, t: 11, i: 366, }, D { l: 9, t: 11, i: 287, }, D { l: 12, t: 11, i: 199, }, D { l: 12, t: 11, i: 556, }, D { l: 140, t: 11, i: 577, }, D { l: 6, t: 10, i: 623, }, D { l: 136, t: 10, i: 789, }, D { l: 4, t: 10, i: 908, }, D { l: 5, t: 10, i: 359, }, D { l: 5, t: 10, i: 508, }, D { l: 6, t: 10, i: 1723, }, D { l: 7, t: 10, i: 343, }, D { l: 7, t: 10, i: 1996, }, D { l: 135, t: 10, i: 2026, }, D { l: 134, t: 0, i: 270, }, D { l: 4, t: 10, i: 341, }, D { l: 135, t: 10, i: 480, }, D { l: 5, t: 11, i: 356, }, D { l: 135, t: 11, i: 224, }, D { l: 11, t: 11, i: 588, }, D { l: 11, t: 11, i: 864, }, D { l: 11, t: 11, i: 968, }, D { l: 143, t: 11, i: 160, }, D { l: 132, t: 0, i: 556, }, D { l: 137, t: 0, i: 801, }, D { l: 132, t: 0, i: 416, }, D { l: 142, t: 0, i: 372, }, D { l: 5, t: 0, i: 152 }, D { l: 5, t: 0, i: 197 }, D { l: 7, t: 0, i: 340 }, D { l: 7, t: 0, i: 867 }, D { l: 10, t: 0, i: 548, }, D { l: 10, t: 0, i: 581, }, D { l: 11, t: 0, i: 6 }, D { l: 12, t: 0, i: 3 }, D { l: 12, t: 0, i: 19 }, D { l: 14, t: 0, i: 110, }, D { l: 142, t: 0, i: 289, }, D { l: 139, t: 0, i: 369, }, D { l: 7, t: 11, i: 630, }, D { l: 9, t: 11, i: 567, }, D { l: 11, t: 11, i: 150, }, D { l: 11, t: 11, i: 444, }, D { l: 141, t: 11, i: 119, }, D { l: 134, t: 11, i: 539, }, D { l: 7, t: 10, i: 1995, }, D { l: 8, t: 10, i: 299, }, D { l: 11, t: 10, i: 890, }, D { l: 140, t: 10, i: 674, }, D { l: 7, t: 0, i: 34 }, D { l: 7, t: 0, i: 190 }, D { l: 8, t: 0, i: 28 }, D { l: 8, t: 0, i: 141 }, D { l: 8, t: 0, i: 444 }, D { l: 8, t: 0, i: 811 }, D { l: 9, t: 0, i: 468 }, D { l: 11, t: 0, i: 334, }, D { l: 12, t: 0, i: 24 }, D { l: 12, t: 0, i: 386, }, D { l: 140, t: 0, i: 576, }, D { l: 133, t: 0, i: 757, }, D { l: 7, t: 0, i: 1553, }, D { l: 136, t: 0, i: 898, }, D { l: 133, t: 0, i: 721, }, D { l: 136, t: 0, i: 1012, }, D { l: 4, t: 0, i: 789 }, D { l: 5, t: 0, i: 647 }, D { l: 135, t: 0, i: 1102, }, D { l: 132, t: 0, i: 898, }, D { l: 10, t: 0, i: 183, }, D { l: 4, t: 10, i: 238, }, D { l: 5, t: 10, i: 503, }, D { l: 6, t: 10, i: 179, }, D { l: 7, t: 10, i: 2003, }, D { l: 8, t: 10, i: 381, }, D { l: 8, t: 10, i: 473, }, D { l: 9, t: 10, i: 149, }, D { l: 10, t: 10, i: 788, }, D { l: 15, t: 10, i: 45, }, D { l: 15, t: 10, i: 86, }, D { l: 20, t: 10, i: 110, }, D { l: 150, t: 10, i: 57, }, D { l: 9, t: 0, i: 136 }, D { l: 19, t: 0, i: 107, }, D { l: 4, t: 10, i: 121, }, D { l: 5, t: 10, i: 156, }, D { l: 5, t: 10, i: 349, }, D { l: 10, t: 10, i: 605, }, D { l: 142, t: 10, i: 342, }, D { l: 4, t: 11, i: 235, }, D { l: 135, t: 11, i: 255, }, D { l: 4, t: 11, i: 194, }, D { l: 5, t: 11, i: 584, }, D { l: 6, t: 11, i: 384, }, D { l: 7, t: 11, i: 583, }, D { l: 10, t: 11, i: 761, }, D { l: 11, t: 11, i: 760, }, D { l: 139, t: 11, i: 851, }, D { l: 6, t: 10, i: 80 }, D { l: 6, t: 10, i: 1694, }, D { l: 7, t: 10, i: 173, }, D { l: 7, t: 10, i: 1974, }, D { l: 9, t: 10, i: 547, }, D { l: 10, t: 10, i: 730, }, D { l: 14, t: 10, i: 18, }, D { l: 150, t: 10, i: 39, }, D { l: 4, t: 10, i: 923, }, D { l: 134, t: 10, i: 1711, }, D { l: 5, t: 0, i: 277 }, D { l: 141, t: 0, i: 247, }, D { l: 132, t: 0, i: 435, }, D { l: 133, t: 11, i: 562, }, D { l: 134, t: 0, i: 1311, }, D { l: 5, t: 11, i: 191, }, D { l: 137, t: 11, i: 271, }, D { l: 132, t: 10, i: 595, }, D { l: 7, t: 11, i: 1537, }, D { l: 14, t: 11, i: 96, }, D { l: 143, t: 11, i: 73, }, D { l: 5, t: 0, i: 437 }, D { l: 7, t: 0, i: 502 }, D { l: 7, t: 0, i: 519 }, D { l: 7, t: 0, i: 1122, }, D { l: 7, t: 0, i: 1751, }, D { l: 14, t: 0, i: 211, }, D { l: 6, t: 10, i: 459, }, D { l: 7, t: 10, i: 1753, }, D { l: 7, t: 10, i: 1805, }, D { l: 8, t: 10, i: 658, }, D { l: 9, t: 10, i: 1 }, D { l: 11, t: 10, i: 959, }, D { l: 141, t: 10, i: 446, }, D { l: 6, t: 0, i: 814 }, D { l: 4, t: 11, i: 470, }, D { l: 5, t: 11, i: 473, }, D { l: 6, t: 11, i: 153, }, D { l: 7, t: 11, i: 1503, }, D { l: 7, t: 11, i: 1923, }, D { l: 10, t: 11, i: 701, }, D { l: 11, t: 11, i: 132, }, D { l: 11, t: 11, i: 168, }, D { l: 11, t: 11, i: 227, }, D { l: 11, t: 11, i: 320, }, D { l: 11, t: 11, i: 436, }, D { l: 11, t: 11, i: 525, }, D { l: 11, t: 11, i: 855, }, D { l: 12, t: 11, i: 41, }, D { l: 12, t: 11, i: 286, }, D { l: 13, t: 11, i: 103, }, D { l: 13, t: 11, i: 284, }, D { l: 14, t: 11, i: 255, }, D { l: 14, t: 11, i: 262, }, D { l: 15, t: 11, i: 117, }, D { l: 143, t: 11, i: 127, }, D { l: 5, t: 0, i: 265 }, D { l: 6, t: 0, i: 212 }, D { l: 135, t: 0, i: 28, }, D { l: 138, t: 0, i: 750, }, D { l: 133, t: 11, i: 327, }, D { l: 6, t: 11, i: 552, }, D { l: 7, t: 11, i: 1754, }, D { l: 137, t: 11, i: 604, }, D { l: 134, t: 0, i: 2012, }, D { l: 132, t: 0, i: 702, }, D { l: 5, t: 11, i: 80 }, D { l: 6, t: 11, i: 405, }, D { l: 7, t: 11, i: 403, }, D { l: 7, t: 11, i: 1502, }, D { l: 7, t: 11, i: 1626, }, D { l: 8, t: 11, i: 456, }, D { l: 9, t: 11, i: 487, }, D { l: 9, t: 11, i: 853, }, D { l: 9, t: 11, i: 889, }, D { l: 10, t: 11, i: 309, }, D { l: 11, t: 11, i: 721, }, D { l: 11, t: 11, i: 994, }, D { l: 12, t: 11, i: 430, }, D { l: 141, t: 11, i: 165, }, D { l: 5, t: 0, i: 808 }, D { l: 135, t: 0, i: 2045, }, D { l: 5, t: 0, i: 166 }, D { l: 8, t: 0, i: 739 }, D { l: 140, t: 0, i: 511, }, D { l: 134, t: 10, i: 490, }, D { l: 4, t: 11, i: 453, }, D { l: 5, t: 11, i: 887, }, D { l: 6, t: 11, i: 535, }, D { l: 8, t: 11, i: 6 }, D { l: 136, t: 11, i: 543, }, D { l: 4, t: 0, i: 119 }, D { l: 5, t: 0, i: 170 }, D { l: 5, t: 0, i: 447 }, D { l: 7, t: 0, i: 1708, }, D { l: 7, t: 0, i: 1889, }, D { l: 9, t: 0, i: 357 }, D { l: 9, t: 0, i: 719 }, D { l: 12, t: 0, i: 486, }, D { l: 140, t: 0, i: 596, }, D { l: 137, t: 0, i: 500, }, D { l: 7, t: 10, i: 250, }, D { l: 136, t: 10, i: 507, }, D { l: 132, t: 10, i: 158, }, D { l: 6, t: 0, i: 809 }, D { l: 134, t: 0, i: 1500, }, D { l: 9, t: 0, i: 327 }, D { l: 11, t: 0, i: 350, }, D { l: 11, t: 0, i: 831, }, D { l: 13, t: 0, i: 352, }, D { l: 4, t: 10, i: 140, }, D { l: 7, t: 10, i: 362, }, D { l: 8, t: 10, i: 209, }, D { l: 9, t: 10, i: 10 }, D { l: 9, t: 10, i: 503, }, D { l: 9, t: 10, i: 614, }, D { l: 10, t: 10, i: 689, }, D { l: 11, t: 10, i: 327, }, D { l: 11, t: 10, i: 725, }, D { l: 12, t: 10, i: 252, }, D { l: 12, t: 10, i: 583, }, D { l: 13, t: 10, i: 192, }, D { l: 14, t: 10, i: 269, }, D { l: 14, t: 10, i: 356, }, D { l: 148, t: 10, i: 50, }, D { l: 135, t: 11, i: 741, }, D { l: 4, t: 0, i: 450 }, D { l: 7, t: 0, i: 1158, }, D { l: 19, t: 10, i: 1 }, D { l: 19, t: 10, i: 26, }, D { l: 150, t: 10, i: 9, }, D { l: 6, t: 0, i: 597 }, D { l: 135, t: 0, i: 1318, }, D { l: 134, t: 0, i: 1602, }, D { l: 6, t: 10, i: 228, }, D { l: 7, t: 10, i: 1341, }, D { l: 9, t: 10, i: 408, }, D { l: 138, t: 10, i: 343, }, D { l: 7, t: 0, i: 1375, }, D { l: 7, t: 0, i: 1466, }, D { l: 138, t: 0, i: 331, }, D { l: 132, t: 0, i: 754, }, D { l: 132, t: 10, i: 557, }, D { l: 5, t: 11, i: 101, }, D { l: 6, t: 11, i: 88 }, D { l: 6, t: 11, i: 543, }, D { l: 7, t: 11, i: 1677, }, D { l: 9, t: 11, i: 100, }, D { l: 10, t: 11, i: 677, }, D { l: 14, t: 11, i: 169, }, D { l: 14, t: 11, i: 302, }, D { l: 14, t: 11, i: 313, }, D { l: 15, t: 11, i: 48, }, D { l: 143, t: 11, i: 84, }, D { l: 134, t: 0, i: 1368, }, D { l: 4, t: 11, i: 310, }, D { l: 9, t: 11, i: 795, }, D { l: 10, t: 11, i: 733, }, D { l: 11, t: 11, i: 451, }, D { l: 12, t: 11, i: 249, }, D { l: 14, t: 11, i: 115, }, D { l: 14, t: 11, i: 286, }, D { l: 143, t: 11, i: 100, }, D { l: 132, t: 10, i: 548, }, D { l: 10, t: 0, i: 557, }, D { l: 7, t: 10, i: 197, }, D { l: 8, t: 10, i: 142, }, D { l: 8, t: 10, i: 325, }, D { l: 9, t: 10, i: 150, }, D { l: 9, t: 10, i: 596, }, D { l: 10, t: 10, i: 353, }, D { l: 11, t: 10, i: 74, }, D { l: 11, t: 10, i: 315, }, D { l: 12, t: 10, i: 662, }, D { l: 12, t: 10, i: 681, }, D { l: 14, t: 10, i: 423, }, D { l: 143, t: 10, i: 141, }, D { l: 133, t: 11, i: 587, }, D { l: 5, t: 0, i: 850 }, D { l: 136, t: 0, i: 799, }, D { l: 10, t: 0, i: 908, }, D { l: 12, t: 0, i: 701, }, D { l: 12, t: 0, i: 757, }, D { l: 142, t: 0, i: 466, }, D { l: 4, t: 0, i: 62 }, D { l: 5, t: 0, i: 275 }, D { l: 18, t: 0, i: 19 }, D { l: 6, t: 10, i: 399, }, D { l: 6, t: 10, i: 579, }, D { l: 7, t: 10, i: 692, }, D { l: 7, t: 10, i: 846, }, D { l: 7, t: 10, i: 1015, }, D { l: 7, t: 10, i: 1799, }, D { l: 8, t: 10, i: 403, }, D { l: 9, t: 10, i: 394, }, D { l: 10, t: 10, i: 133, }, D { l: 12, t: 10, i: 4 }, D { l: 12, t: 10, i: 297, }, D { l: 12, t: 10, i: 452, }, D { l: 16, t: 10, i: 81, }, D { l: 18, t: 10, i: 25, }, D { l: 21, t: 10, i: 14, }, D { l: 22, t: 10, i: 12, }, D { l: 151, t: 10, i: 18, }, D { l: 12, t: 0, i: 459, }, D { l: 7, t: 10, i: 1546, }, D { l: 11, t: 10, i: 299, }, D { l: 142, t: 10, i: 407, }, D { l: 132, t: 10, i: 177, }, D { l: 132, t: 11, i: 498, }, D { l: 7, t: 11, i: 217, }, D { l: 8, t: 11, i: 140, }, D { l: 138, t: 11, i: 610, }, D { l: 5, t: 10, i: 411, }, D { l: 135, t: 10, i: 653, }, D { l: 134, t: 0, i: 1802, }, D { l: 7, t: 10, i: 439, }, D { l: 10, t: 10, i: 727, }, D { l: 11, t: 10, i: 260, }, D { l: 139, t: 10, i: 684, }, D { l: 133, t: 11, i: 905, }, D { l: 11, t: 11, i: 580, }, D { l: 142, t: 11, i: 201, }, D { l: 134, t: 0, i: 1397, }, D { l: 5, t: 10, i: 208, }, D { l: 7, t: 10, i: 753, }, D { l: 135, t: 10, i: 1528, }, D { l: 7, t: 0, i: 238 }, D { l: 7, t: 0, i: 2033, }, D { l: 8, t: 0, i: 120 }, D { l: 8, t: 0, i: 188 }, D { l: 8, t: 0, i: 659 }, D { l: 9, t: 0, i: 598 }, D { l: 10, t: 0, i: 466, }, D { l: 12, t: 0, i: 342, }, D { l: 12, t: 0, i: 588, }, D { l: 13, t: 0, i: 503, }, D { l: 14, t: 0, i: 246, }, D { l: 143, t: 0, i: 92, }, D { l: 135, t: 11, i: 1041, }, D { l: 4, t: 11, i: 456, }, D { l: 7, t: 11, i: 105, }, D { l: 7, t: 11, i: 358, }, D { l: 7, t: 11, i: 1637, }, D { l: 8, t: 11, i: 643, }, D { l: 139, t: 11, i: 483, }, D { l: 6, t: 0, i: 1318, }, D { l: 134, t: 0, i: 1324, }, D { l: 4, t: 0, i: 201 }, D { l: 7, t: 0, i: 1744, }, D { l: 8, t: 0, i: 602 }, D { l: 11, t: 0, i: 247, }, D { l: 11, t: 0, i: 826, }, D { l: 17, t: 0, i: 65 }, D { l: 133, t: 10, i: 242, }, D { l: 8, t: 0, i: 164 }, D { l: 146, t: 0, i: 62, }, D { l: 133, t: 10, i: 953, }, D { l: 139, t: 10, i: 802, }, D { l: 133, t: 0, i: 615, }, D { l: 7, t: 11, i: 1566, }, D { l: 8, t: 11, i: 269, }, D { l: 9, t: 11, i: 212, }, D { l: 9, t: 11, i: 718, }, D { l: 14, t: 11, i: 15, }, D { l: 14, t: 11, i: 132, }, D { l: 142, t: 11, i: 227, }, D { l: 133, t: 10, i: 290, }, D { l: 132, t: 10, i: 380, }, D { l: 5, t: 10, i: 52 }, D { l: 7, t: 10, i: 277, }, D { l: 9, t: 10, i: 368, }, D { l: 139, t: 10, i: 791, }, D { l: 135, t: 0, i: 1243, }, D { l: 133, t: 11, i: 539, }, D { l: 11, t: 11, i: 919, }, D { l: 141, t: 11, i: 409, }, D { l: 136, t: 0, i: 968, }, D { l: 133, t: 11, i: 470, }, D { l: 134, t: 0, i: 882, }, D { l: 132, t: 0, i: 907, }, D { l: 5, t: 0, i: 100 }, D { l: 10, t: 0, i: 329, }, D { l: 12, t: 0, i: 416, }, D { l: 149, t: 0, i: 29, }, D { l: 10, t: 10, i: 138, }, D { l: 139, t: 10, i: 476, }, D { l: 5, t: 10, i: 725, }, D { l: 5, t: 10, i: 727, }, D { l: 6, t: 11, i: 91 }, D { l: 7, t: 11, i: 435, }, D { l: 135, t: 10, i: 1811, }, D { l: 4, t: 11, i: 16 }, D { l: 5, t: 11, i: 316, }, D { l: 5, t: 11, i: 842, }, D { l: 6, t: 11, i: 370, }, D { l: 6, t: 11, i: 1778, }, D { l: 8, t: 11, i: 166, }, D { l: 11, t: 11, i: 812, }, D { l: 12, t: 11, i: 206, }, D { l: 12, t: 11, i: 351, }, D { l: 14, t: 11, i: 418, }, D { l: 16, t: 11, i: 15, }, D { l: 16, t: 11, i: 34, }, D { l: 18, t: 11, i: 3 }, D { l: 19, t: 11, i: 3 }, D { l: 19, t: 11, i: 7 }, D { l: 20, t: 11, i: 4 }, D { l: 149, t: 11, i: 21, }, D { l: 132, t: 0, i: 176, }, D { l: 5, t: 0, i: 636 }, D { l: 5, t: 0, i: 998 }, D { l: 7, t: 0, i: 9 }, D { l: 7, t: 0, i: 1508, }, D { l: 8, t: 0, i: 26 }, D { l: 9, t: 0, i: 317 }, D { l: 9, t: 0, i: 358 }, D { l: 10, t: 0, i: 210, }, D { l: 10, t: 0, i: 292, }, D { l: 10, t: 0, i: 533, }, D { l: 11, t: 0, i: 555, }, D { l: 12, t: 0, i: 526, }, D { l: 12, t: 0, i: 607, }, D { l: 13, t: 0, i: 263, }, D { l: 13, t: 0, i: 459, }, D { l: 142, t: 0, i: 271, }, D { l: 6, t: 0, i: 256 }, D { l: 8, t: 0, i: 265 }, D { l: 4, t: 10, i: 38 }, D { l: 7, t: 10, i: 307, }, D { l: 7, t: 10, i: 999, }, D { l: 7, t: 10, i: 1481, }, D { l: 7, t: 10, i: 1732, }, D { l: 7, t: 10, i: 1738, }, D { l: 9, t: 10, i: 414, }, D { l: 11, t: 10, i: 316, }, D { l: 12, t: 10, i: 52, }, D { l: 13, t: 10, i: 420, }, D { l: 147, t: 10, i: 100, }, D { l: 135, t: 10, i: 1296, }, D { l: 4, t: 11, i: 611, }, D { l: 133, t: 11, i: 606, }, D { l: 4, t: 0, i: 643 }, D { l: 142, t: 11, i: 21, }, D { l: 133, t: 11, i: 715, }, D { l: 133, t: 10, i: 723, }, D { l: 6, t: 0, i: 610 }, D { l: 135, t: 11, i: 597, }, D { l: 10, t: 0, i: 127, }, D { l: 141, t: 0, i: 27, }, D { l: 6, t: 0, i: 1995, }, D { l: 6, t: 0, i: 2001, }, D { l: 8, t: 0, i: 119 }, D { l: 136, t: 0, i: 973, }, D { l: 4, t: 11, i: 149, }, D { l: 138, t: 11, i: 368, }, D { l: 12, t: 0, i: 522, }, D { l: 4, t: 11, i: 154, }, D { l: 5, t: 10, i: 109, }, D { l: 6, t: 10, i: 1784, }, D { l: 7, t: 11, i: 1134, }, D { l: 7, t: 10, i: 1895, }, D { l: 8, t: 11, i: 105, }, D { l: 12, t: 10, i: 296, }, D { l: 140, t: 10, i: 302, }, D { l: 4, t: 11, i: 31 }, D { l: 6, t: 11, i: 429, }, D { l: 7, t: 11, i: 962, }, D { l: 9, t: 11, i: 458, }, D { l: 139, t: 11, i: 691, }, D { l: 10, t: 0, i: 553, }, D { l: 11, t: 0, i: 876, }, D { l: 13, t: 0, i: 193, }, D { l: 13, t: 0, i: 423, }, D { l: 14, t: 0, i: 166, }, D { l: 19, t: 0, i: 84 }, D { l: 4, t: 11, i: 312, }, D { l: 5, t: 10, i: 216, }, D { l: 7, t: 10, i: 1879, }, D { l: 9, t: 10, i: 141, }, D { l: 9, t: 10, i: 270, }, D { l: 9, t: 10, i: 679, }, D { l: 10, t: 10, i: 159, }, D { l: 11, t: 10, i: 197, }, D { l: 12, t: 10, i: 538, }, D { l: 12, t: 10, i: 559, }, D { l: 14, t: 10, i: 144, }, D { l: 14, t: 10, i: 167, }, D { l: 143, t: 10, i: 67, }, D { l: 134, t: 0, i: 1582, }, D { l: 7, t: 0, i: 1578, }, D { l: 135, t: 11, i: 1578, }, D { l: 137, t: 10, i: 81, }, D { l: 132, t: 11, i: 236, }, D { l: 134, t: 10, i: 391, }, D { l: 134, t: 0, i: 795, }, D { l: 7, t: 10, i: 322, }, D { l: 136, t: 10, i: 249, }, D { l: 5, t: 11, i: 836, }, D { l: 5, t: 11, i: 857, }, D { l: 6, t: 11, i: 1680, }, D { l: 7, t: 11, i: 59 }, D { l: 147, t: 11, i: 53, }, D { l: 135, t: 0, i: 432, }, D { l: 10, t: 11, i: 68, }, D { l: 139, t: 11, i: 494, }, D { l: 4, t: 11, i: 81 }, D { l: 139, t: 11, i: 867, }, D { l: 7, t: 0, i: 126 }, D { l: 136, t: 0, i: 84, }, D { l: 142, t: 11, i: 280, }, D { l: 5, t: 11, i: 282, }, D { l: 8, t: 11, i: 650, }, D { l: 9, t: 11, i: 295, }, D { l: 9, t: 11, i: 907, }, D { l: 138, t: 11, i: 443, }, D { l: 136, t: 0, i: 790, }, D { l: 5, t: 10, i: 632, }, D { l: 138, t: 10, i: 526, }, D { l: 6, t: 0, i: 64 }, D { l: 12, t: 0, i: 377, }, D { l: 13, t: 0, i: 309, }, D { l: 14, t: 0, i: 141, }, D { l: 14, t: 0, i: 429, }, D { l: 14, t: 11, i: 141, }, D { l: 142, t: 11, i: 429, }, D { l: 134, t: 0, i: 1529, }, D { l: 6, t: 0, i: 321 }, D { l: 7, t: 0, i: 1857, }, D { l: 9, t: 0, i: 530 }, D { l: 19, t: 0, i: 99 }, D { l: 7, t: 10, i: 948, }, D { l: 7, t: 10, i: 1042, }, D { l: 8, t: 10, i: 235, }, D { l: 8, t: 10, i: 461, }, D { l: 9, t: 10, i: 453, }, D { l: 10, t: 10, i: 354, }, D { l: 145, t: 10, i: 77, }, D { l: 7, t: 0, i: 1104, }, D { l: 11, t: 0, i: 269, }, D { l: 11, t: 0, i: 539, }, D { l: 11, t: 0, i: 627, }, D { l: 11, t: 0, i: 706, }, D { l: 11, t: 0, i: 975, }, D { l: 12, t: 0, i: 248, }, D { l: 12, t: 0, i: 434, }, D { l: 12, t: 0, i: 600, }, D { l: 12, t: 0, i: 622, }, D { l: 13, t: 0, i: 297, }, D { l: 13, t: 0, i: 485, }, D { l: 14, t: 0, i: 69 }, D { l: 14, t: 0, i: 409, }, D { l: 143, t: 0, i: 108, }, D { l: 4, t: 10, i: 362, }, D { l: 7, t: 10, i: 52 }, D { l: 7, t: 10, i: 303, }, D { l: 10, t: 11, i: 70, }, D { l: 12, t: 11, i: 26, }, D { l: 14, t: 11, i: 17, }, D { l: 14, t: 11, i: 178, }, D { l: 15, t: 11, i: 34, }, D { l: 149, t: 11, i: 12, }, D { l: 11, t: 0, i: 977, }, D { l: 141, t: 0, i: 507, }, D { l: 9, t: 0, i: 34 }, D { l: 139, t: 0, i: 484, }, D { l: 5, t: 10, i: 196, }, D { l: 6, t: 10, i: 486, }, D { l: 7, t: 10, i: 212, }, D { l: 8, t: 10, i: 309, }, D { l: 136, t: 10, i: 346, }, D { l: 6, t: 0, i: 1700, }, D { l: 7, t: 0, i: 26 }, D { l: 7, t: 0, i: 293 }, D { l: 7, t: 0, i: 382 }, D { l: 7, t: 0, i: 1026, }, D { l: 7, t: 0, i: 1087, }, D { l: 7, t: 0, i: 2027, }, D { l: 8, t: 0, i: 24 }, D { l: 8, t: 0, i: 114 }, D { l: 8, t: 0, i: 252 }, D { l: 8, t: 0, i: 727 }, D { l: 8, t: 0, i: 729 }, D { l: 9, t: 0, i: 30 }, D { l: 9, t: 0, i: 199 }, D { l: 9, t: 0, i: 231 }, D { l: 9, t: 0, i: 251 }, D { l: 9, t: 0, i: 334 }, D { l: 9, t: 0, i: 361 }, D { l: 9, t: 0, i: 712 }, D { l: 10, t: 0, i: 55 }, D { l: 10, t: 0, i: 60 }, D { l: 10, t: 0, i: 232, }, D { l: 10, t: 0, i: 332, }, D { l: 10, t: 0, i: 384, }, D { l: 10, t: 0, i: 396, }, D { l: 10, t: 0, i: 504, }, D { l: 10, t: 0, i: 542, }, D { l: 10, t: 0, i: 652, }, D { l: 11, t: 0, i: 20 }, D { l: 11, t: 0, i: 48 }, D { l: 11, t: 0, i: 207, }, D { l: 11, t: 0, i: 291, }, D { l: 11, t: 0, i: 298, }, D { l: 11, t: 0, i: 342, }, D { l: 11, t: 0, i: 365, }, D { l: 11, t: 0, i: 394, }, D { l: 11, t: 0, i: 620, }, D { l: 11, t: 0, i: 705, }, D { l: 11, t: 0, i: 1017, }, D { l: 12, t: 0, i: 123, }, D { l: 12, t: 0, i: 340, }, D { l: 12, t: 0, i: 406, }, D { l: 12, t: 0, i: 643, }, D { l: 13, t: 0, i: 61 }, D { l: 13, t: 0, i: 269, }, D { l: 13, t: 0, i: 311, }, D { l: 13, t: 0, i: 319, }, D { l: 13, t: 0, i: 486, }, D { l: 14, t: 0, i: 234, }, D { l: 15, t: 0, i: 62 }, D { l: 15, t: 0, i: 85 }, D { l: 16, t: 0, i: 71 }, D { l: 18, t: 0, i: 119, }, D { l: 20, t: 0, i: 105, }, D { l: 135, t: 10, i: 1912, }, D { l: 4, t: 11, i: 71 }, D { l: 5, t: 11, i: 376, }, D { l: 7, t: 11, i: 119, }, D { l: 138, t: 11, i: 665, }, D { l: 10, t: 0, i: 918, }, D { l: 10, t: 0, i: 926, }, D { l: 4, t: 10, i: 686, }, D { l: 136, t: 11, i: 55, }, D { l: 138, t: 10, i: 625, }, D { l: 136, t: 10, i: 706, }, D { l: 132, t: 11, i: 479, }, D { l: 4, t: 10, i: 30 }, D { l: 133, t: 10, i: 43, }, D { l: 6, t: 0, i: 379 }, D { l: 7, t: 0, i: 270 }, D { l: 8, t: 0, i: 176 }, D { l: 8, t: 0, i: 183 }, D { l: 9, t: 0, i: 432 }, D { l: 9, t: 0, i: 661 }, D { l: 12, t: 0, i: 247, }, D { l: 12, t: 0, i: 617, }, D { l: 18, t: 0, i: 125, }, D { l: 7, t: 11, i: 607, }, D { l: 8, t: 11, i: 99 }, D { l: 152, t: 11, i: 4, }, D { l: 5, t: 0, i: 792 }, D { l: 133, t: 0, i: 900, }, D { l: 4, t: 11, i: 612, }, D { l: 133, t: 11, i: 561, }, D { l: 4, t: 11, i: 41 }, D { l: 4, t: 10, i: 220, }, D { l: 5, t: 11, i: 74 }, D { l: 7, t: 10, i: 1535, }, D { l: 7, t: 11, i: 1627, }, D { l: 11, t: 11, i: 871, }, D { l: 140, t: 11, i: 619, }, D { l: 135, t: 0, i: 1920, }, D { l: 7, t: 11, i: 94 }, D { l: 11, t: 11, i: 329, }, D { l: 11, t: 11, i: 965, }, D { l: 12, t: 11, i: 241, }, D { l: 14, t: 11, i: 354, }, D { l: 15, t: 11, i: 22, }, D { l: 148, t: 11, i: 63, }, D { l: 9, t: 11, i: 209, }, D { l: 137, t: 11, i: 300, }, D { l: 134, t: 0, i: 771, }, D { l: 135, t: 0, i: 1979, }, D { l: 4, t: 0, i: 901 }, D { l: 133, t: 0, i: 776, }, D { l: 142, t: 0, i: 254, }, D { l: 133, t: 11, i: 98, }, D { l: 9, t: 11, i: 16 }, D { l: 141, t: 11, i: 386, }, D { l: 133, t: 11, i: 984, }, D { l: 4, t: 11, i: 182, }, D { l: 6, t: 11, i: 205, }, D { l: 135, t: 11, i: 220, }, D { l: 7, t: 10, i: 1725, }, D { l: 7, t: 10, i: 1774, }, D { l: 138, t: 10, i: 393, }, D { l: 5, t: 10, i: 263, }, D { l: 134, t: 10, i: 414, }, D { l: 4, t: 11, i: 42 }, D { l: 9, t: 11, i: 205, }, D { l: 9, t: 11, i: 786, }, D { l: 138, t: 11, i: 659, }, D { l: 14, t: 0, i: 140, }, D { l: 148, t: 0, i: 41, }, D { l: 8, t: 0, i: 440 }, D { l: 10, t: 0, i: 359, }, D { l: 6, t: 10, i: 178, }, D { l: 6, t: 11, i: 289, }, D { l: 6, t: 10, i: 1750, }, D { l: 7, t: 11, i: 1670, }, D { l: 9, t: 10, i: 690, }, D { l: 10, t: 10, i: 155, }, D { l: 10, t: 10, i: 373, }, D { l: 11, t: 10, i: 698, }, D { l: 12, t: 11, i: 57, }, D { l: 13, t: 10, i: 155, }, D { l: 20, t: 10, i: 93, }, D { l: 151, t: 11, i: 4, }, D { l: 4, t: 0, i: 37 }, D { l: 5, t: 0, i: 334 }, D { l: 7, t: 0, i: 1253, }, D { l: 151, t: 11, i: 25, }, D { l: 4, t: 0, i: 508 }, D { l: 4, t: 11, i: 635, }, D { l: 5, t: 10, i: 97 }, D { l: 137, t: 10, i: 393, }, D { l: 139, t: 11, i: 533, }, D { l: 4, t: 0, i: 640 }, D { l: 133, t: 0, i: 513, }, D { l: 134, t: 10, i: 1639, }, D { l: 132, t: 11, i: 371, }, D { l: 4, t: 11, i: 272, }, D { l: 7, t: 11, i: 836, }, D { l: 7, t: 11, i: 1651, }, D { l: 145, t: 11, i: 89, }, D { l: 5, t: 11, i: 825, }, D { l: 6, t: 11, i: 444, }, D { l: 6, t: 11, i: 1640, }, D { l: 136, t: 11, i: 308, }, D { l: 4, t: 10, i: 191, }, D { l: 7, t: 10, i: 934, }, D { l: 8, t: 10, i: 647, }, D { l: 145, t: 10, i: 97, }, D { l: 12, t: 0, i: 246, }, D { l: 15, t: 0, i: 162, }, D { l: 19, t: 0, i: 64 }, D { l: 20, t: 0, i: 8 }, D { l: 20, t: 0, i: 95 }, D { l: 22, t: 0, i: 24 }, D { l: 152, t: 0, i: 17, }, D { l: 4, t: 0, i: 533 }, D { l: 5, t: 10, i: 165, }, D { l: 9, t: 10, i: 346, }, D { l: 138, t: 10, i: 655, }, D { l: 5, t: 11, i: 737, }, D { l: 139, t: 10, i: 885, }, D { l: 133, t: 10, i: 877, }, D { l: 8, t: 10, i: 128, }, D { l: 139, t: 10, i: 179, }, D { l: 137, t: 11, i: 307, }, D { l: 140, t: 0, i: 752, }, D { l: 133, t: 0, i: 920, }, D { l: 135, t: 0, i: 1048, }, D { l: 5, t: 0, i: 153 }, D { l: 6, t: 0, i: 580 }, D { l: 6, t: 10, i: 1663, }, D { l: 7, t: 10, i: 132, }, D { l: 7, t: 10, i: 1154, }, D { l: 7, t: 10, i: 1415, }, D { l: 7, t: 10, i: 1507, }, D { l: 12, t: 10, i: 493, }, D { l: 15, t: 10, i: 105, }, D { l: 151, t: 10, i: 15, }, D { l: 5, t: 10, i: 459, }, D { l: 7, t: 10, i: 1073, }, D { l: 8, t: 10, i: 241, }, D { l: 136, t: 10, i: 334, }, D { l: 138, t: 0, i: 391, }, D { l: 135, t: 0, i: 1952, }, D { l: 133, t: 11, i: 525, }, D { l: 8, t: 11, i: 641, }, D { l: 11, t: 11, i: 388, }, D { l: 140, t: 11, i: 580, }, D { l: 142, t: 0, i: 126, }, D { l: 134, t: 0, i: 640, }, D { l: 132, t: 0, i: 483, }, D { l: 7, t: 0, i: 1616, }, D { l: 9, t: 0, i: 69 }, D { l: 6, t: 10, i: 324, }, D { l: 6, t: 10, i: 520, }, D { l: 7, t: 10, i: 338, }, D { l: 7, t: 10, i: 1729, }, D { l: 8, t: 10, i: 228, }, D { l: 139, t: 10, i: 750, }, D { l: 5, t: 11, i: 493, }, D { l: 134, t: 11, i: 528, }, D { l: 135, t: 0, i: 734, }, D { l: 4, t: 11, i: 174, }, D { l: 135, t: 11, i: 911, }, D { l: 138, t: 0, i: 480, }, D { l: 9, t: 0, i: 495 }, D { l: 146, t: 0, i: 104, }, D { l: 135, t: 10, i: 705, }, D { l: 9, t: 0, i: 472 }, D { l: 4, t: 10, i: 73 }, D { l: 6, t: 10, i: 612, }, D { l: 7, t: 10, i: 927, }, D { l: 7, t: 10, i: 1330, }, D { l: 7, t: 10, i: 1822, }, D { l: 8, t: 10, i: 217, }, D { l: 9, t: 10, i: 765, }, D { l: 9, t: 10, i: 766, }, D { l: 10, t: 10, i: 408, }, D { l: 11, t: 10, i: 51, }, D { l: 11, t: 10, i: 793, }, D { l: 12, t: 10, i: 266, }, D { l: 15, t: 10, i: 158, }, D { l: 20, t: 10, i: 89, }, D { l: 150, t: 10, i: 32, }, D { l: 7, t: 11, i: 548, }, D { l: 137, t: 11, i: 58, }, D { l: 4, t: 11, i: 32 }, D { l: 5, t: 11, i: 215, }, D { l: 6, t: 11, i: 269, }, D { l: 7, t: 11, i: 1782, }, D { l: 7, t: 11, i: 1892, }, D { l: 10, t: 11, i: 16, }, D { l: 11, t: 11, i: 822, }, D { l: 11, t: 11, i: 954, }, D { l: 141, t: 11, i: 481, }, D { l: 132, t: 0, i: 874, }, D { l: 9, t: 0, i: 229 }, D { l: 5, t: 10, i: 389, }, D { l: 136, t: 10, i: 636, }, D { l: 7, t: 11, i: 1749, }, D { l: 136, t: 11, i: 477, }, D { l: 134, t: 0, i: 948, }, D { l: 5, t: 11, i: 308, }, D { l: 135, t: 11, i: 1088, }, D { l: 4, t: 0, i: 748 }, D { l: 139, t: 0, i: 1009, }, D { l: 136, t: 10, i: 21, }, D { l: 6, t: 0, i: 555 }, D { l: 135, t: 0, i: 485, }, D { l: 5, t: 11, i: 126, }, D { l: 8, t: 11, i: 297, }, D { l: 9, t: 11, i: 366, }, D { l: 9, t: 11, i: 445, }, D { l: 12, t: 11, i: 53, }, D { l: 12, t: 11, i: 374, }, D { l: 141, t: 11, i: 492, }, D { l: 7, t: 11, i: 1551, }, D { l: 139, t: 11, i: 361, }, D { l: 136, t: 0, i: 193, }, D { l: 136, t: 0, i: 472, }, D { l: 8, t: 0, i: 653 }, D { l: 13, t: 0, i: 93 }, D { l: 147, t: 0, i: 14, }, D { l: 132, t: 0, i: 984, }, D { l: 132, t: 11, i: 175, }, D { l: 5, t: 0, i: 172 }, D { l: 6, t: 0, i: 1971, }, D { l: 132, t: 11, i: 685, }, D { l: 149, t: 11, i: 8, }, D { l: 133, t: 11, i: 797, }, D { l: 13, t: 0, i: 83 }, D { l: 5, t: 10, i: 189, }, D { l: 7, t: 10, i: 442, }, D { l: 7, t: 10, i: 443, }, D { l: 8, t: 10, i: 281, }, D { l: 12, t: 10, i: 174, }, D { l: 141, t: 10, i: 261, }, D { l: 134, t: 0, i: 1568, }, D { l: 133, t: 11, i: 565, }, D { l: 139, t: 0, i: 384, }, D { l: 133, t: 0, i: 260, }, D { l: 7, t: 0, i: 758 }, D { l: 7, t: 0, i: 880 }, D { l: 7, t: 0, i: 1359, }, D { l: 9, t: 0, i: 164 }, D { l: 9, t: 0, i: 167 }, D { l: 10, t: 0, i: 156, }, D { l: 10, t: 0, i: 588, }, D { l: 12, t: 0, i: 101, }, D { l: 14, t: 0, i: 48 }, D { l: 15, t: 0, i: 70 }, D { l: 6, t: 10, i: 2 }, D { l: 7, t: 10, i: 1262, }, D { l: 7, t: 10, i: 1737, }, D { l: 8, t: 10, i: 22 }, D { l: 8, t: 10, i: 270, }, D { l: 8, t: 10, i: 612, }, D { l: 9, t: 10, i: 312, }, D { l: 9, t: 10, i: 436, }, D { l: 10, t: 10, i: 311, }, D { l: 10, t: 10, i: 623, }, D { l: 11, t: 10, i: 72, }, D { l: 11, t: 10, i: 330, }, D { l: 11, t: 10, i: 455, }, D { l: 12, t: 10, i: 321, }, D { l: 12, t: 10, i: 504, }, D { l: 12, t: 10, i: 530, }, D { l: 12, t: 10, i: 543, }, D { l: 13, t: 10, i: 17, }, D { l: 13, t: 10, i: 156, }, D { l: 13, t: 10, i: 334, }, D { l: 17, t: 10, i: 60, }, D { l: 148, t: 10, i: 64, }, D { l: 4, t: 11, i: 252, }, D { l: 7, t: 11, i: 1068, }, D { l: 10, t: 11, i: 434, }, D { l: 11, t: 11, i: 228, }, D { l: 11, t: 11, i: 426, }, D { l: 13, t: 11, i: 231, }, D { l: 18, t: 11, i: 106, }, D { l: 148, t: 11, i: 87, }, D { l: 7, t: 10, i: 354, }, D { l: 10, t: 10, i: 410, }, D { l: 139, t: 10, i: 815, }, D { l: 6, t: 0, i: 367 }, D { l: 7, t: 10, i: 670, }, D { l: 7, t: 10, i: 1327, }, D { l: 8, t: 10, i: 411, }, D { l: 8, t: 10, i: 435, }, D { l: 9, t: 10, i: 653, }, D { l: 9, t: 10, i: 740, }, D { l: 10, t: 10, i: 385, }, D { l: 11, t: 10, i: 222, }, D { l: 11, t: 10, i: 324, }, D { l: 11, t: 10, i: 829, }, D { l: 140, t: 10, i: 611, }, D { l: 7, t: 0, i: 1174, }, D { l: 6, t: 10, i: 166, }, D { l: 135, t: 10, i: 374, }, D { l: 146, t: 0, i: 121, }, D { l: 132, t: 0, i: 828, }, D { l: 5, t: 11, i: 231, }, D { l: 138, t: 11, i: 509, }, D { l: 7, t: 11, i: 601, }, D { l: 9, t: 11, i: 277, }, D { l: 9, t: 11, i: 674, }, D { l: 10, t: 11, i: 178, }, D { l: 10, t: 11, i: 257, }, D { l: 10, t: 11, i: 418, }, D { l: 11, t: 11, i: 531, }, D { l: 11, t: 11, i: 544, }, D { l: 11, t: 11, i: 585, }, D { l: 12, t: 11, i: 113, }, D { l: 12, t: 11, i: 475, }, D { l: 13, t: 11, i: 99, }, D { l: 142, t: 11, i: 428, }, D { l: 134, t: 0, i: 1541, }, D { l: 135, t: 11, i: 1779, }, D { l: 5, t: 0, i: 343 }, D { l: 134, t: 10, i: 398, }, D { l: 135, t: 10, i: 50, }, D { l: 135, t: 11, i: 1683, }, D { l: 4, t: 0, i: 440 }, D { l: 7, t: 0, i: 57 }, D { l: 8, t: 0, i: 167 }, D { l: 8, t: 0, i: 375 }, D { l: 9, t: 0, i: 82 }, D { l: 9, t: 0, i: 561 }, D { l: 9, t: 0, i: 744 }, D { l: 10, t: 0, i: 620, }, D { l: 137, t: 11, i: 744, }, D { l: 134, t: 0, i: 926, }, D { l: 6, t: 10, i: 517, }, D { l: 7, t: 10, i: 1159, }, D { l: 10, t: 10, i: 621, }, D { l: 139, t: 10, i: 192, }, D { l: 137, t: 0, i: 827, }, D { l: 8, t: 0, i: 194 }, D { l: 136, t: 0, i: 756, }, D { l: 10, t: 10, i: 223, }, D { l: 139, t: 10, i: 645, }, D { l: 7, t: 10, i: 64 }, D { l: 136, t: 10, i: 245, }, D { l: 4, t: 11, i: 399, }, D { l: 5, t: 11, i: 119, }, D { l: 5, t: 11, i: 494, }, D { l: 7, t: 11, i: 751, }, D { l: 137, t: 11, i: 556, }, D { l: 132, t: 0, i: 808, }, D { l: 135, t: 0, i: 22, }, D { l: 7, t: 10, i: 1763, }, D { l: 140, t: 10, i: 310, }, D { l: 5, t: 0, i: 639 }, D { l: 7, t: 0, i: 1249, }, D { l: 11, t: 0, i: 896, }, D { l: 134, t: 11, i: 584, }, D { l: 134, t: 0, i: 1614, }, D { l: 135, t: 0, i: 860, }, D { l: 135, t: 11, i: 1121, }, D { l: 5, t: 10, i: 129, }, D { l: 6, t: 10, i: 61 }, D { l: 135, t: 10, i: 947, }, D { l: 4, t: 0, i: 102 }, D { l: 7, t: 0, i: 815 }, D { l: 7, t: 0, i: 1699, }, D { l: 139, t: 0, i: 964, }, D { l: 13, t: 10, i: 505, }, D { l: 141, t: 10, i: 506, }, D { l: 139, t: 10, i: 1000, }, D { l: 132, t: 11, i: 679, }, D { l: 132, t: 0, i: 899, }, D { l: 132, t: 0, i: 569, }, D { l: 5, t: 11, i: 694, }, D { l: 137, t: 11, i: 714, }, D { l: 136, t: 0, i: 795, }, D { l: 6, t: 0, i: 2045, }, D { l: 139, t: 11, i: 7, }, D { l: 6, t: 0, i: 52 }, D { l: 9, t: 0, i: 104 }, D { l: 9, t: 0, i: 559 }, D { l: 12, t: 0, i: 308, }, D { l: 147, t: 0, i: 87, }, D { l: 4, t: 0, i: 301 }, D { l: 132, t: 0, i: 604, }, D { l: 133, t: 10, i: 637, }, D { l: 136, t: 0, i: 779, }, D { l: 5, t: 11, i: 143, }, D { l: 5, t: 11, i: 769, }, D { l: 6, t: 11, i: 1760, }, D { l: 7, t: 11, i: 682, }, D { l: 7, t: 11, i: 1992, }, D { l: 136, t: 11, i: 736, }, D { l: 137, t: 10, i: 590, }, D { l: 147, t: 0, i: 32, }, D { l: 137, t: 11, i: 527, }, D { l: 5, t: 10, i: 280, }, D { l: 135, t: 10, i: 1226, }, D { l: 134, t: 0, i: 494, }, D { l: 6, t: 0, i: 677 }, D { l: 6, t: 0, i: 682 }, D { l: 134, t: 0, i: 1044, }, D { l: 133, t: 10, i: 281, }, D { l: 135, t: 10, i: 1064, }, D { l: 7, t: 0, i: 508 }, D { l: 133, t: 11, i: 860, }, D { l: 6, t: 11, i: 422, }, D { l: 7, t: 11, i: 0 }, D { l: 7, t: 11, i: 1544, }, D { l: 9, t: 11, i: 577, }, D { l: 11, t: 11, i: 990, }, D { l: 12, t: 11, i: 141, }, D { l: 12, t: 11, i: 453, }, D { l: 13, t: 11, i: 47, }, D { l: 141, t: 11, i: 266, }, D { l: 134, t: 0, i: 1014, }, D { l: 5, t: 11, i: 515, }, D { l: 137, t: 11, i: 131, }, D { l: 134, t: 0, i: 957, }, D { l: 132, t: 11, i: 646, }, D { l: 6, t: 0, i: 310 }, D { l: 7, t: 0, i: 1849, }, D { l: 8, t: 0, i: 72 }, D { l: 8, t: 0, i: 272 }, D { l: 8, t: 0, i: 431 }, D { l: 9, t: 0, i: 12 }, D { l: 9, t: 0, i: 376 }, D { l: 10, t: 0, i: 563, }, D { l: 10, t: 0, i: 630, }, D { l: 10, t: 0, i: 796, }, D { l: 10, t: 0, i: 810, }, D { l: 11, t: 0, i: 367, }, D { l: 11, t: 0, i: 599, }, D { l: 11, t: 0, i: 686, }, D { l: 140, t: 0, i: 672, }, D { l: 7, t: 0, i: 570 }, D { l: 4, t: 11, i: 396, }, D { l: 7, t: 10, i: 120, }, D { l: 7, t: 11, i: 728, }, D { l: 8, t: 10, i: 489, }, D { l: 9, t: 11, i: 117, }, D { l: 9, t: 10, i: 319, }, D { l: 10, t: 10, i: 820, }, D { l: 11, t: 10, i: 1004, }, D { l: 12, t: 10, i: 379, }, D { l: 12, t: 10, i: 679, }, D { l: 13, t: 10, i: 117, }, D { l: 13, t: 11, i: 202, }, D { l: 13, t: 10, i: 412, }, D { l: 14, t: 10, i: 25, }, D { l: 15, t: 10, i: 52, }, D { l: 15, t: 10, i: 161, }, D { l: 16, t: 10, i: 47, }, D { l: 20, t: 11, i: 51, }, D { l: 149, t: 10, i: 2, }, D { l: 6, t: 11, i: 121, }, D { l: 6, t: 11, i: 124, }, D { l: 6, t: 11, i: 357, }, D { l: 7, t: 11, i: 1138, }, D { l: 7, t: 11, i: 1295, }, D { l: 8, t: 11, i: 162, }, D { l: 139, t: 11, i: 655, }, D { l: 8, t: 0, i: 449 }, D { l: 4, t: 10, i: 937, }, D { l: 5, t: 10, i: 801, }, D { l: 136, t: 11, i: 449, }, D { l: 139, t: 11, i: 958, }, D { l: 6, t: 0, i: 181 }, D { l: 7, t: 0, i: 537 }, D { l: 8, t: 0, i: 64 }, D { l: 9, t: 0, i: 127 }, D { l: 10, t: 0, i: 496, }, D { l: 12, t: 0, i: 510, }, D { l: 141, t: 0, i: 384, }, D { l: 138, t: 11, i: 253, }, D { l: 4, t: 0, i: 244 }, D { l: 135, t: 0, i: 233, }, D { l: 133, t: 11, i: 237, }, D { l: 132, t: 10, i: 365, }, D { l: 6, t: 0, i: 1650, }, D { l: 10, t: 0, i: 702, }, D { l: 139, t: 0, i: 245, }, D { l: 5, t: 10, i: 7 }, D { l: 139, t: 10, i: 774, }, D { l: 13, t: 0, i: 463, }, D { l: 20, t: 0, i: 49 }, D { l: 13, t: 11, i: 463, }, D { l: 148, t: 11, i: 49, }, D { l: 4, t: 10, i: 734, }, D { l: 5, t: 10, i: 662, }, D { l: 134, t: 10, i: 430, }, D { l: 4, t: 10, i: 746, }, D { l: 135, t: 10, i: 1090, }, D { l: 5, t: 10, i: 360, }, D { l: 136, t: 10, i: 237, }, D { l: 137, t: 0, i: 338, }, D { l: 143, t: 11, i: 10, }, D { l: 7, t: 11, i: 571, }, D { l: 138, t: 11, i: 366, }, D { l: 134, t: 0, i: 1279, }, D { l: 9, t: 11, i: 513, }, D { l: 10, t: 11, i: 22, }, D { l: 10, t: 11, i: 39, }, D { l: 12, t: 11, i: 122, }, D { l: 140, t: 11, i: 187, }, D { l: 133, t: 0, i: 896, }, D { l: 146, t: 0, i: 178, }, D { l: 134, t: 0, i: 695, }, D { l: 137, t: 0, i: 808, }, D { l: 134, t: 11, i: 587, }, D { l: 7, t: 11, i: 107, }, D { l: 7, t: 11, i: 838, }, D { l: 8, t: 11, i: 550, }, D { l: 138, t: 11, i: 401, }, D { l: 7, t: 0, i: 1117, }, D { l: 136, t: 0, i: 539, }, D { l: 4, t: 10, i: 277, }, D { l: 5, t: 10, i: 608, }, D { l: 6, t: 10, i: 493, }, D { l: 7, t: 10, i: 457, }, D { l: 140, t: 10, i: 384, }, D { l: 133, t: 11, i: 768, }, D { l: 12, t: 0, i: 257, }, D { l: 7, t: 10, i: 27 }, D { l: 135, t: 10, i: 316, }, D { l: 140, t: 0, i: 1003, }, D { l: 4, t: 0, i: 207 }, D { l: 5, t: 0, i: 586 }, D { l: 5, t: 0, i: 676 }, D { l: 6, t: 0, i: 448 }, D { l: 8, t: 0, i: 244 }, D { l: 11, t: 0, i: 1 }, D { l: 13, t: 0, i: 3 }, D { l: 16, t: 0, i: 54 }, D { l: 17, t: 0, i: 4 }, D { l: 18, t: 0, i: 13 }, D { l: 133, t: 10, i: 552, }, D { l: 4, t: 10, i: 401, }, D { l: 137, t: 10, i: 264, }, D { l: 5, t: 0, i: 516 }, D { l: 7, t: 0, i: 1883, }, D { l: 135, t: 11, i: 1883, }, D { l: 12, t: 0, i: 960, }, D { l: 132, t: 11, i: 894, }, D { l: 5, t: 0, i: 4 }, D { l: 5, t: 0, i: 810 }, D { l: 6, t: 0, i: 13 }, D { l: 6, t: 0, i: 538 }, D { l: 6, t: 0, i: 1690, }, D { l: 6, t: 0, i: 1726, }, D { l: 7, t: 0, i: 499 }, D { l: 7, t: 0, i: 1819, }, D { l: 8, t: 0, i: 148 }, D { l: 8, t: 0, i: 696 }, D { l: 8, t: 0, i: 791 }, D { l: 12, t: 0, i: 125, }, D { l: 143, t: 0, i: 9 }, D { l: 135, t: 0, i: 1268, }, D { l: 11, t: 0, i: 30 }, D { l: 14, t: 0, i: 315, }, D { l: 9, t: 10, i: 543, }, D { l: 10, t: 10, i: 524, }, D { l: 12, t: 10, i: 524, }, D { l: 16, t: 10, i: 18, }, D { l: 20, t: 10, i: 26, }, D { l: 148, t: 10, i: 65, }, D { l: 6, t: 0, i: 748 }, D { l: 4, t: 10, i: 205, }, D { l: 5, t: 10, i: 623, }, D { l: 7, t: 10, i: 104, }, D { l: 136, t: 10, i: 519, }, D { l: 11, t: 0, i: 542, }, D { l: 139, t: 0, i: 852, }, D { l: 140, t: 0, i: 6 }, D { l: 132, t: 0, i: 848, }, D { l: 7, t: 0, i: 1385, }, D { l: 11, t: 0, i: 582, }, D { l: 11, t: 0, i: 650, }, D { l: 11, t: 0, i: 901, }, D { l: 11, t: 0, i: 949, }, D { l: 12, t: 0, i: 232, }, D { l: 12, t: 0, i: 236, }, D { l: 13, t: 0, i: 413, }, D { l: 13, t: 0, i: 501, }, D { l: 18, t: 0, i: 116, }, D { l: 7, t: 10, i: 579, }, D { l: 9, t: 10, i: 41 }, D { l: 9, t: 10, i: 244, }, D { l: 9, t: 10, i: 669, }, D { l: 10, t: 10, i: 5 }, D { l: 11, t: 10, i: 861, }, D { l: 11, t: 10, i: 951, }, D { l: 139, t: 10, i: 980, }, D { l: 4, t: 0, i: 945 }, D { l: 6, t: 0, i: 1811, }, D { l: 6, t: 0, i: 1845, }, D { l: 6, t: 0, i: 1853, }, D { l: 6, t: 0, i: 1858, }, D { l: 8, t: 0, i: 862 }, D { l: 12, t: 0, i: 782, }, D { l: 12, t: 0, i: 788, }, D { l: 18, t: 0, i: 160, }, D { l: 148, t: 0, i: 117, }, D { l: 132, t: 10, i: 717, }, D { l: 4, t: 0, i: 925 }, D { l: 5, t: 0, i: 803 }, D { l: 8, t: 0, i: 698 }, D { l: 138, t: 0, i: 828, }, D { l: 134, t: 0, i: 1416, }, D { l: 132, t: 0, i: 610, }, D { l: 139, t: 0, i: 992, }, D { l: 6, t: 0, i: 878 }, D { l: 134, t: 0, i: 1477, }, D { l: 135, t: 0, i: 1847, }, D { l: 138, t: 11, i: 531, }, D { l: 137, t: 11, i: 539, }, D { l: 134, t: 11, i: 272, }, D { l: 133, t: 0, i: 383, }, D { l: 134, t: 0, i: 1404, }, D { l: 132, t: 10, i: 489, }, D { l: 4, t: 11, i: 9 }, D { l: 5, t: 11, i: 128, }, D { l: 7, t: 11, i: 368, }, D { l: 11, t: 11, i: 480, }, D { l: 148, t: 11, i: 3, }, D { l: 136, t: 0, i: 986, }, D { l: 9, t: 0, i: 660 }, D { l: 138, t: 0, i: 347, }, D { l: 135, t: 10, i: 892, }, D { l: 136, t: 11, i: 682, }, D { l: 7, t: 0, i: 572 }, D { l: 9, t: 0, i: 592 }, D { l: 11, t: 0, i: 680, }, D { l: 12, t: 0, i: 356, }, D { l: 140, t: 0, i: 550, }, D { l: 7, t: 0, i: 1411, }, D { l: 138, t: 11, i: 527, }, D { l: 4, t: 11, i: 2 }, D { l: 7, t: 11, i: 545, }, D { l: 135, t: 11, i: 894, }, D { l: 137, t: 10, i: 473, }, D { l: 11, t: 0, i: 64 }, D { l: 7, t: 11, i: 481, }, D { l: 7, t: 10, i: 819, }, D { l: 9, t: 10, i: 26 }, D { l: 9, t: 10, i: 392, }, D { l: 9, t: 11, i: 792, }, D { l: 10, t: 10, i: 152, }, D { l: 10, t: 10, i: 226, }, D { l: 12, t: 10, i: 276, }, D { l: 12, t: 10, i: 426, }, D { l: 12, t: 10, i: 589, }, D { l: 13, t: 10, i: 460, }, D { l: 15, t: 10, i: 97, }, D { l: 19, t: 10, i: 48, }, D { l: 148, t: 10, i: 104, }, D { l: 135, t: 10, i: 51, }, D { l: 136, t: 11, i: 445, }, D { l: 136, t: 11, i: 646, }, D { l: 135, t: 0, i: 606, }, D { l: 132, t: 10, i: 674, }, D { l: 6, t: 0, i: 1829, }, D { l: 134, t: 0, i: 1830, }, D { l: 132, t: 10, i: 770, }, D { l: 5, t: 10, i: 79 }, D { l: 7, t: 10, i: 1027, }, D { l: 7, t: 10, i: 1477, }, D { l: 139, t: 10, i: 52, }, D { l: 5, t: 11, i: 530, }, D { l: 142, t: 11, i: 113, }, D { l: 134, t: 10, i: 1666, }, D { l: 7, t: 0, i: 748 }, D { l: 139, t: 0, i: 700, }, D { l: 134, t: 10, i: 195, }, D { l: 133, t: 10, i: 789, }, D { l: 9, t: 0, i: 87 }, D { l: 10, t: 0, i: 365, }, D { l: 4, t: 10, i: 251, }, D { l: 4, t: 10, i: 688, }, D { l: 7, t: 10, i: 513, }, D { l: 135, t: 10, i: 1284, }, D { l: 136, t: 11, i: 111, }, D { l: 133, t: 0, i: 127, }, D { l: 6, t: 0, i: 198 }, D { l: 140, t: 0, i: 83, }, D { l: 133, t: 11, i: 556, }, D { l: 133, t: 10, i: 889, }, D { l: 4, t: 10, i: 160, }, D { l: 5, t: 10, i: 330, }, D { l: 7, t: 10, i: 1434, }, D { l: 136, t: 10, i: 174, }, D { l: 5, t: 0, i: 276 }, D { l: 6, t: 0, i: 55 }, D { l: 7, t: 0, i: 1369, }, D { l: 138, t: 0, i: 864, }, D { l: 8, t: 11, i: 16 }, D { l: 140, t: 11, i: 568, }, D { l: 6, t: 0, i: 1752, }, D { l: 136, t: 0, i: 726, }, D { l: 135, t: 0, i: 1066, }, D { l: 133, t: 0, i: 764, }, D { l: 6, t: 11, i: 186, }, D { l: 137, t: 11, i: 426, }, D { l: 11, t: 0, i: 683, }, D { l: 139, t: 11, i: 683, }, D { l: 6, t: 0, i: 309 }, D { l: 7, t: 0, i: 331 }, D { l: 138, t: 0, i: 550, }, D { l: 133, t: 10, i: 374, }, D { l: 6, t: 0, i: 1212, }, D { l: 6, t: 0, i: 1852, }, D { l: 7, t: 0, i: 1062, }, D { l: 8, t: 0, i: 874 }, D { l: 8, t: 0, i: 882 }, D { l: 138, t: 0, i: 936, }, D { l: 132, t: 11, i: 585, }, D { l: 134, t: 0, i: 1364, }, D { l: 7, t: 0, i: 986 }, D { l: 133, t: 10, i: 731, }, D { l: 6, t: 0, i: 723 }, D { l: 6, t: 0, i: 1408, }, D { l: 138, t: 0, i: 381, }, D { l: 135, t: 0, i: 1573, }, D { l: 134, t: 0, i: 1025, }, D { l: 4, t: 10, i: 626, }, D { l: 5, t: 10, i: 642, }, D { l: 6, t: 10, i: 425, }, D { l: 10, t: 10, i: 202, }, D { l: 139, t: 10, i: 141, }, D { l: 4, t: 11, i: 93 }, D { l: 5, t: 11, i: 252, }, D { l: 6, t: 11, i: 229, }, D { l: 7, t: 11, i: 291, }, D { l: 9, t: 11, i: 550, }, D { l: 139, t: 11, i: 644, }, D { l: 137, t: 11, i: 749, }, D { l: 137, t: 11, i: 162, }, D { l: 132, t: 11, i: 381, }, D { l: 135, t: 0, i: 1559, }, D { l: 6, t: 0, i: 194 }, D { l: 7, t: 0, i: 133 }, D { l: 10, t: 0, i: 493, }, D { l: 10, t: 0, i: 570, }, D { l: 139, t: 0, i: 664, }, D { l: 5, t: 0, i: 24 }, D { l: 5, t: 0, i: 569 }, D { l: 6, t: 0, i: 3 }, D { l: 6, t: 0, i: 119 }, D { l: 6, t: 0, i: 143 }, D { l: 6, t: 0, i: 440 }, D { l: 7, t: 0, i: 295 }, D { l: 7, t: 0, i: 599 }, D { l: 7, t: 0, i: 1686, }, D { l: 7, t: 0, i: 1854, }, D { l: 8, t: 0, i: 424 }, D { l: 9, t: 0, i: 43 }, D { l: 9, t: 0, i: 584 }, D { l: 9, t: 0, i: 760 }, D { l: 10, t: 0, i: 148, }, D { l: 10, t: 0, i: 328, }, D { l: 11, t: 0, i: 159, }, D { l: 11, t: 0, i: 253, }, D { l: 11, t: 0, i: 506, }, D { l: 12, t: 0, i: 487, }, D { l: 140, t: 0, i: 531, }, D { l: 6, t: 0, i: 661 }, D { l: 134, t: 0, i: 1517, }, D { l: 136, t: 10, i: 835, }, D { l: 151, t: 10, i: 17, }, D { l: 5, t: 0, i: 14 }, D { l: 5, t: 0, i: 892 }, D { l: 6, t: 0, i: 283 }, D { l: 7, t: 0, i: 234 }, D { l: 136, t: 0, i: 537, }, D { l: 139, t: 0, i: 541, }, D { l: 4, t: 0, i: 126 }, D { l: 8, t: 0, i: 635 }, D { l: 147, t: 0, i: 34, }, D { l: 4, t: 0, i: 316 }, D { l: 4, t: 0, i: 495 }, D { l: 135, t: 0, i: 1561, }, D { l: 4, t: 11, i: 187, }, D { l: 5, t: 11, i: 184, }, D { l: 5, t: 11, i: 690, }, D { l: 7, t: 11, i: 1869, }, D { l: 138, t: 11, i: 756, }, D { l: 139, t: 11, i: 783, }, D { l: 4, t: 0, i: 998 }, D { l: 137, t: 0, i: 861, }, D { l: 136, t: 0, i: 1009, }, D { l: 139, t: 11, i: 292, }, D { l: 5, t: 11, i: 21 }, D { l: 6, t: 11, i: 77 }, D { l: 6, t: 11, i: 157, }, D { l: 7, t: 11, i: 974, }, D { l: 7, t: 11, i: 1301, }, D { l: 7, t: 11, i: 1339, }, D { l: 7, t: 11, i: 1490, }, D { l: 7, t: 11, i: 1873, }, D { l: 137, t: 11, i: 628, }, D { l: 7, t: 11, i: 1283, }, D { l: 9, t: 11, i: 227, }, D { l: 9, t: 11, i: 499, }, D { l: 10, t: 11, i: 341, }, D { l: 11, t: 11, i: 325, }, D { l: 11, t: 11, i: 408, }, D { l: 14, t: 11, i: 180, }, D { l: 15, t: 11, i: 144, }, D { l: 18, t: 11, i: 47, }, D { l: 147, t: 11, i: 49, }, D { l: 4, t: 0, i: 64 }, D { l: 5, t: 0, i: 352 }, D { l: 5, t: 0, i: 720 }, D { l: 6, t: 0, i: 368 }, D { l: 139, t: 0, i: 359, }, D { l: 5, t: 10, i: 384, }, D { l: 8, t: 10, i: 455, }, D { l: 140, t: 10, i: 48, }, D { l: 5, t: 10, i: 264, }, D { l: 134, t: 10, i: 184, }, D { l: 7, t: 0, i: 1577, }, D { l: 10, t: 0, i: 304, }, D { l: 10, t: 0, i: 549, }, D { l: 12, t: 0, i: 365, }, D { l: 13, t: 0, i: 220, }, D { l: 13, t: 0, i: 240, }, D { l: 142, t: 0, i: 33, }, D { l: 134, t: 0, i: 1107, }, D { l: 134, t: 0, i: 929, }, D { l: 135, t: 0, i: 1142, }, D { l: 6, t: 0, i: 175 }, D { l: 137, t: 0, i: 289, }, D { l: 5, t: 0, i: 432 }, D { l: 133, t: 0, i: 913, }, D { l: 6, t: 0, i: 279 }, D { l: 7, t: 0, i: 219 }, D { l: 5, t: 10, i: 633, }, D { l: 135, t: 10, i: 1323, }, D { l: 7, t: 0, i: 785 }, D { l: 7, t: 10, i: 359, }, D { l: 8, t: 10, i: 243, }, D { l: 140, t: 10, i: 175, }, D { l: 139, t: 0, i: 595, }, D { l: 132, t: 10, i: 105, }, D { l: 8, t: 11, i: 398, }, D { l: 9, t: 11, i: 681, }, D { l: 139, t: 11, i: 632, }, D { l: 140, t: 0, i: 80, }, D { l: 5, t: 0, i: 931 }, D { l: 134, t: 0, i: 1698, }, D { l: 142, t: 11, i: 241, }, D { l: 134, t: 11, i: 20, }, D { l: 134, t: 0, i: 1323, }, D { l: 11, t: 0, i: 526, }, D { l: 11, t: 0, i: 939, }, D { l: 141, t: 0, i: 290, }, D { l: 5, t: 0, i: 774 }, D { l: 6, t: 0, i: 780 }, D { l: 6, t: 0, i: 1637, }, D { l: 6, t: 0, i: 1686, }, D { l: 6, t: 0, i: 1751, }, D { l: 8, t: 0, i: 559 }, D { l: 141, t: 0, i: 109, }, D { l: 141, t: 0, i: 127, }, D { l: 7, t: 0, i: 1167, }, D { l: 11, t: 0, i: 934, }, D { l: 13, t: 0, i: 391, }, D { l: 17, t: 0, i: 76 }, D { l: 135, t: 11, i: 709, }, D { l: 135, t: 0, i: 963, }, D { l: 6, t: 0, i: 260 }, D { l: 135, t: 0, i: 1484, }, D { l: 134, t: 0, i: 573, }, D { l: 4, t: 10, i: 758, }, D { l: 139, t: 11, i: 941, }, D { l: 135, t: 10, i: 1649, }, D { l: 145, t: 11, i: 36, }, D { l: 4, t: 0, i: 292 }, D { l: 137, t: 0, i: 580, }, D { l: 4, t: 0, i: 736 }, D { l: 5, t: 0, i: 871 }, D { l: 6, t: 0, i: 1689, }, D { l: 135, t: 0, i: 1944, }, D { l: 7, t: 11, i: 945, }, D { l: 11, t: 11, i: 713, }, D { l: 139, t: 11, i: 744, }, D { l: 134, t: 0, i: 1164, }, D { l: 135, t: 11, i: 937, }, D { l: 6, t: 0, i: 1922, }, D { l: 9, t: 0, i: 982 }, D { l: 15, t: 0, i: 173, }, D { l: 15, t: 0, i: 178, }, D { l: 15, t: 0, i: 200, }, D { l: 18, t: 0, i: 189, }, D { l: 18, t: 0, i: 207, }, D { l: 21, t: 0, i: 47 }, D { l: 135, t: 11, i: 1652, }, D { l: 7, t: 0, i: 1695, }, D { l: 139, t: 10, i: 128, }, D { l: 6, t: 0, i: 63 }, D { l: 135, t: 0, i: 920, }, D { l: 133, t: 0, i: 793, }, D { l: 143, t: 11, i: 134, }, D { l: 133, t: 10, i: 918, }, D { l: 5, t: 0, i: 67 }, D { l: 6, t: 0, i: 62 }, D { l: 6, t: 0, i: 374 }, D { l: 135, t: 0, i: 1391, }, D { l: 9, t: 0, i: 790 }, D { l: 12, t: 0, i: 47 }, D { l: 4, t: 11, i: 579, }, D { l: 5, t: 11, i: 226, }, D { l: 5, t: 11, i: 323, }, D { l: 135, t: 11, i: 960, }, D { l: 10, t: 11, i: 784, }, D { l: 141, t: 11, i: 191, }, D { l: 4, t: 0, i: 391 }, D { l: 135, t: 0, i: 1169, }, D { l: 137, t: 0, i: 443, }, D { l: 13, t: 11, i: 232, }, D { l: 146, t: 11, i: 35, }, D { l: 132, t: 10, i: 340, }, D { l: 132, t: 0, i: 271, }, D { l: 137, t: 11, i: 313, }, D { l: 5, t: 11, i: 973, }, D { l: 137, t: 11, i: 659, }, D { l: 134, t: 0, i: 1140, }, D { l: 6, t: 11, i: 135, }, D { l: 135, t: 11, i: 1176, }, D { l: 4, t: 0, i: 253 }, D { l: 5, t: 0, i: 544 }, D { l: 7, t: 0, i: 300 }, D { l: 137, t: 0, i: 340, }, D { l: 7, t: 0, i: 897 }, D { l: 5, t: 10, i: 985, }, D { l: 7, t: 10, i: 509, }, D { l: 145, t: 10, i: 96, }, D { l: 138, t: 11, i: 735, }, D { l: 135, t: 10, i: 1919, }, D { l: 138, t: 0, i: 890, }, D { l: 5, t: 0, i: 818 }, D { l: 134, t: 0, i: 1122, }, D { l: 5, t: 0, i: 53 }, D { l: 5, t: 0, i: 541 }, D { l: 6, t: 0, i: 94 }, D { l: 6, t: 0, i: 499 }, D { l: 7, t: 0, i: 230 }, D { l: 139, t: 0, i: 321, }, D { l: 4, t: 0, i: 920 }, D { l: 5, t: 0, i: 25 }, D { l: 5, t: 0, i: 790 }, D { l: 6, t: 0, i: 457 }, D { l: 7, t: 0, i: 853 }, D { l: 8, t: 0, i: 788 }, D { l: 142, t: 11, i: 31, }, D { l: 132, t: 10, i: 247, }, D { l: 135, t: 11, i: 314, }, D { l: 132, t: 0, i: 468, }, D { l: 7, t: 0, i: 243 }, D { l: 6, t: 10, i: 337, }, D { l: 7, t: 10, i: 494, }, D { l: 8, t: 10, i: 27 }, D { l: 8, t: 10, i: 599, }, D { l: 138, t: 10, i: 153, }, D { l: 4, t: 10, i: 184, }, D { l: 5, t: 10, i: 390, }, D { l: 7, t: 10, i: 618, }, D { l: 7, t: 10, i: 1456, }, D { l: 139, t: 10, i: 710, }, D { l: 134, t: 0, i: 870, }, D { l: 134, t: 0, i: 1238, }, D { l: 134, t: 0, i: 1765, }, D { l: 10, t: 0, i: 853, }, D { l: 10, t: 0, i: 943, }, D { l: 14, t: 0, i: 437, }, D { l: 14, t: 0, i: 439, }, D { l: 14, t: 0, i: 443, }, D { l: 14, t: 0, i: 446, }, D { l: 14, t: 0, i: 452, }, D { l: 14, t: 0, i: 469, }, D { l: 14, t: 0, i: 471, }, D { l: 14, t: 0, i: 473, }, D { l: 16, t: 0, i: 93 }, D { l: 16, t: 0, i: 102, }, D { l: 16, t: 0, i: 110, }, D { l: 148, t: 0, i: 121, }, D { l: 4, t: 0, i: 605 }, D { l: 7, t: 0, i: 518 }, D { l: 7, t: 0, i: 1282, }, D { l: 7, t: 0, i: 1918, }, D { l: 10, t: 0, i: 180, }, D { l: 139, t: 0, i: 218, }, D { l: 133, t: 0, i: 822, }, D { l: 4, t: 0, i: 634 }, D { l: 11, t: 0, i: 916, }, D { l: 142, t: 0, i: 419, }, D { l: 6, t: 11, i: 281, }, D { l: 7, t: 11, i: 6 }, D { l: 8, t: 11, i: 282, }, D { l: 8, t: 11, i: 480, }, D { l: 8, t: 11, i: 499, }, D { l: 9, t: 11, i: 198, }, D { l: 10, t: 11, i: 143, }, D { l: 10, t: 11, i: 169, }, D { l: 10, t: 11, i: 211, }, D { l: 10, t: 11, i: 417, }, D { l: 10, t: 11, i: 574, }, D { l: 11, t: 11, i: 147, }, D { l: 11, t: 11, i: 395, }, D { l: 12, t: 11, i: 75, }, D { l: 12, t: 11, i: 407, }, D { l: 12, t: 11, i: 608, }, D { l: 13, t: 11, i: 500, }, D { l: 142, t: 11, i: 251, }, D { l: 134, t: 0, i: 898, }, D { l: 6, t: 0, i: 36 }, D { l: 7, t: 0, i: 658 }, D { l: 8, t: 0, i: 454 }, D { l: 150, t: 11, i: 48, }, D { l: 133, t: 11, i: 674, }, D { l: 135, t: 11, i: 1776, }, D { l: 4, t: 11, i: 419, }, D { l: 10, t: 10, i: 227, }, D { l: 11, t: 10, i: 497, }, D { l: 11, t: 10, i: 709, }, D { l: 140, t: 10, i: 415, }, D { l: 6, t: 10, i: 360, }, D { l: 7, t: 10, i: 1664, }, D { l: 136, t: 10, i: 478, }, D { l: 137, t: 0, i: 806, }, D { l: 12, t: 11, i: 508, }, D { l: 14, t: 11, i: 102, }, D { l: 14, t: 11, i: 226, }, D { l: 144, t: 11, i: 57, }, D { l: 135, t: 11, i: 1123, }, D { l: 4, t: 11, i: 138, }, D { l: 7, t: 11, i: 1012, }, D { l: 7, t: 11, i: 1280, }, D { l: 137, t: 11, i: 76, }, D { l: 5, t: 11, i: 29 }, D { l: 140, t: 11, i: 638, }, D { l: 136, t: 10, i: 699, }, D { l: 134, t: 0, i: 1326, }, D { l: 132, t: 0, i: 104, }, D { l: 135, t: 11, i: 735, }, D { l: 132, t: 10, i: 739, }, D { l: 134, t: 0, i: 1331, }, D { l: 7, t: 0, i: 260 }, D { l: 135, t: 11, i: 260, }, D { l: 135, t: 11, i: 1063, }, D { l: 7, t: 0, i: 45 }, D { l: 9, t: 0, i: 542 }, D { l: 9, t: 0, i: 566 }, D { l: 10, t: 0, i: 728, }, D { l: 137, t: 10, i: 869, }, D { l: 4, t: 10, i: 67 }, D { l: 5, t: 10, i: 422, }, D { l: 7, t: 10, i: 1037, }, D { l: 7, t: 10, i: 1289, }, D { l: 7, t: 10, i: 1555, }, D { l: 9, t: 10, i: 741, }, D { l: 145, t: 10, i: 108, }, D { l: 139, t: 0, i: 263, }, D { l: 134, t: 0, i: 1516, }, D { l: 14, t: 0, i: 146, }, D { l: 15, t: 0, i: 42 }, D { l: 16, t: 0, i: 23 }, D { l: 17, t: 0, i: 86 }, D { l: 146, t: 0, i: 17, }, D { l: 138, t: 0, i: 468, }, D { l: 136, t: 0, i: 1005, }, D { l: 4, t: 11, i: 17 }, D { l: 5, t: 11, i: 23 }, D { l: 7, t: 11, i: 995, }, D { l: 11, t: 11, i: 383, }, D { l: 11, t: 11, i: 437, }, D { l: 12, t: 11, i: 460, }, D { l: 140, t: 11, i: 532, }, D { l: 7, t: 0, i: 87 }, D { l: 142, t: 0, i: 288, }, D { l: 138, t: 10, i: 96, }, D { l: 135, t: 11, i: 626, }, D { l: 144, t: 10, i: 26, }, D { l: 7, t: 0, i: 988 }, D { l: 7, t: 0, i: 1939, }, D { l: 9, t: 0, i: 64 }, D { l: 9, t: 0, i: 502 }, D { l: 12, t: 0, i: 22 }, D { l: 12, t: 0, i: 34 }, D { l: 13, t: 0, i: 12 }, D { l: 13, t: 0, i: 234, }, D { l: 147, t: 0, i: 77, }, D { l: 13, t: 0, i: 133, }, D { l: 8, t: 10, i: 203, }, D { l: 11, t: 10, i: 823, }, D { l: 11, t: 10, i: 846, }, D { l: 12, t: 10, i: 482, }, D { l: 13, t: 10, i: 277, }, D { l: 13, t: 10, i: 302, }, D { l: 13, t: 10, i: 464, }, D { l: 14, t: 10, i: 205, }, D { l: 142, t: 10, i: 221, }, D { l: 4, t: 10, i: 449, }, D { l: 133, t: 10, i: 718, }, D { l: 135, t: 0, i: 141, }, D { l: 6, t: 0, i: 1842, }, D { l: 136, t: 0, i: 872, }, D { l: 8, t: 11, i: 70 }, D { l: 12, t: 11, i: 171, }, D { l: 141, t: 11, i: 272, }, D { l: 4, t: 10, i: 355, }, D { l: 6, t: 10, i: 311, }, D { l: 9, t: 10, i: 256, }, D { l: 138, t: 10, i: 404, }, D { l: 132, t: 0, i: 619, }, D { l: 137, t: 0, i: 261, }, D { l: 10, t: 11, i: 233, }, D { l: 10, t: 10, i: 758, }, D { l: 139, t: 11, i: 76, }, D { l: 5, t: 0, i: 246 }, D { l: 8, t: 0, i: 189 }, D { l: 9, t: 0, i: 355 }, D { l: 9, t: 0, i: 512 }, D { l: 10, t: 0, i: 124, }, D { l: 10, t: 0, i: 453, }, D { l: 11, t: 0, i: 143, }, D { l: 11, t: 0, i: 416, }, D { l: 11, t: 0, i: 859, }, D { l: 141, t: 0, i: 341, }, D { l: 134, t: 11, i: 442, }, D { l: 133, t: 10, i: 827, }, D { l: 5, t: 10, i: 64 }, D { l: 140, t: 10, i: 581, }, D { l: 4, t: 10, i: 442, }, D { l: 7, t: 10, i: 1047, }, D { l: 7, t: 10, i: 1352, }, D { l: 135, t: 10, i: 1643, }, D { l: 134, t: 11, i: 1709, }, D { l: 5, t: 0, i: 678 }, D { l: 6, t: 0, i: 305 }, D { l: 7, t: 0, i: 775 }, D { l: 7, t: 0, i: 1065, }, D { l: 133, t: 10, i: 977, }, D { l: 11, t: 11, i: 69, }, D { l: 12, t: 11, i: 105, }, D { l: 12, t: 11, i: 117, }, D { l: 13, t: 11, i: 213, }, D { l: 14, t: 11, i: 13, }, D { l: 14, t: 11, i: 62, }, D { l: 14, t: 11, i: 177, }, D { l: 14, t: 11, i: 421, }, D { l: 15, t: 11, i: 19, }, D { l: 146, t: 11, i: 141, }, D { l: 137, t: 11, i: 309, }, D { l: 5, t: 0, i: 35 }, D { l: 7, t: 0, i: 862 }, D { l: 7, t: 0, i: 1886, }, D { l: 138, t: 0, i: 179, }, D { l: 136, t: 0, i: 285, }, D { l: 132, t: 0, i: 517, }, D { l: 7, t: 11, i: 976, }, D { l: 9, t: 11, i: 146, }, D { l: 10, t: 11, i: 206, }, D { l: 10, t: 11, i: 596, }, D { l: 13, t: 11, i: 218, }, D { l: 142, t: 11, i: 153, }, D { l: 132, t: 10, i: 254, }, D { l: 6, t: 0, i: 214 }, D { l: 12, t: 0, i: 540, }, D { l: 4, t: 10, i: 275, }, D { l: 7, t: 10, i: 1219, }, D { l: 140, t: 10, i: 376, }, D { l: 8, t: 0, i: 667 }, D { l: 11, t: 0, i: 403, }, D { l: 146, t: 0, i: 83, }, D { l: 12, t: 0, i: 74 }, D { l: 10, t: 11, i: 648, }, D { l: 11, t: 11, i: 671, }, D { l: 143, t: 11, i: 46, }, D { l: 135, t: 0, i: 125, }, D { l: 134, t: 10, i: 1753, }, D { l: 133, t: 0, i: 761, }, D { l: 6, t: 0, i: 912 }, D { l: 4, t: 11, i: 518, }, D { l: 6, t: 10, i: 369, }, D { l: 6, t: 10, i: 502, }, D { l: 7, t: 10, i: 1036, }, D { l: 7, t: 11, i: 1136, }, D { l: 8, t: 10, i: 348, }, D { l: 9, t: 10, i: 452, }, D { l: 10, t: 10, i: 26, }, D { l: 11, t: 10, i: 224, }, D { l: 11, t: 10, i: 387, }, D { l: 11, t: 10, i: 772, }, D { l: 12, t: 10, i: 95, }, D { l: 12, t: 10, i: 629, }, D { l: 13, t: 10, i: 195, }, D { l: 13, t: 10, i: 207, }, D { l: 13, t: 10, i: 241, }, D { l: 14, t: 10, i: 260, }, D { l: 14, t: 10, i: 270, }, D { l: 143, t: 10, i: 140, }, D { l: 10, t: 0, i: 131, }, D { l: 140, t: 0, i: 72, }, D { l: 132, t: 10, i: 269, }, D { l: 5, t: 10, i: 480, }, D { l: 7, t: 10, i: 532, }, D { l: 7, t: 10, i: 1197, }, D { l: 7, t: 10, i: 1358, }, D { l: 8, t: 10, i: 291, }, D { l: 11, t: 10, i: 349, }, D { l: 142, t: 10, i: 396, }, D { l: 8, t: 11, i: 689, }, D { l: 137, t: 11, i: 863, }, D { l: 8, t: 0, i: 333 }, D { l: 138, t: 0, i: 182, }, D { l: 4, t: 11, i: 18 }, D { l: 7, t: 11, i: 145, }, D { l: 7, t: 11, i: 444, }, D { l: 7, t: 11, i: 1278, }, D { l: 8, t: 11, i: 49 }, D { l: 8, t: 11, i: 400, }, D { l: 9, t: 11, i: 71 }, D { l: 9, t: 11, i: 250, }, D { l: 10, t: 11, i: 459, }, D { l: 12, t: 11, i: 160, }, D { l: 144, t: 11, i: 24, }, D { l: 14, t: 11, i: 35, }, D { l: 142, t: 11, i: 191, }, D { l: 135, t: 11, i: 1864, }, D { l: 135, t: 0, i: 1338, }, D { l: 148, t: 10, i: 15, }, D { l: 14, t: 0, i: 94 }, D { l: 15, t: 0, i: 65 }, D { l: 16, t: 0, i: 4 }, D { l: 16, t: 0, i: 77 }, D { l: 16, t: 0, i: 80 }, D { l: 145, t: 0, i: 5 }, D { l: 12, t: 11, i: 82, }, D { l: 143, t: 11, i: 36, }, D { l: 133, t: 11, i: 1010, }, D { l: 133, t: 0, i: 449, }, D { l: 133, t: 0, i: 646, }, D { l: 7, t: 0, i: 86 }, D { l: 8, t: 0, i: 103 }, D { l: 135, t: 10, i: 657, }, D { l: 7, t: 0, i: 2028, }, D { l: 138, t: 0, i: 641, }, D { l: 136, t: 10, i: 533, }, D { l: 134, t: 0, i: 1 }, D { l: 139, t: 11, i: 970, }, D { l: 5, t: 11, i: 87 }, D { l: 7, t: 11, i: 313, }, D { l: 7, t: 11, i: 1103, }, D { l: 10, t: 11, i: 112, }, D { l: 10, t: 11, i: 582, }, D { l: 11, t: 11, i: 389, }, D { l: 11, t: 11, i: 813, }, D { l: 12, t: 11, i: 385, }, D { l: 13, t: 11, i: 286, }, D { l: 14, t: 11, i: 124, }, D { l: 146, t: 11, i: 108, }, D { l: 6, t: 0, i: 869 }, D { l: 132, t: 11, i: 267, }, D { l: 6, t: 0, i: 277 }, D { l: 7, t: 0, i: 1274, }, D { l: 7, t: 0, i: 1386, }, D { l: 146, t: 0, i: 87, }, D { l: 6, t: 0, i: 187 }, D { l: 7, t: 0, i: 39 }, D { l: 7, t: 0, i: 1203, }, D { l: 8, t: 0, i: 380 }, D { l: 14, t: 0, i: 117, }, D { l: 149, t: 0, i: 28, }, D { l: 4, t: 10, i: 211, }, D { l: 4, t: 10, i: 332, }, D { l: 5, t: 10, i: 335, }, D { l: 6, t: 10, i: 238, }, D { l: 7, t: 10, i: 269, }, D { l: 7, t: 10, i: 811, }, D { l: 7, t: 10, i: 1797, }, D { l: 8, t: 10, i: 836, }, D { l: 9, t: 10, i: 507, }, D { l: 141, t: 10, i: 242, }, D { l: 4, t: 0, i: 785 }, D { l: 5, t: 0, i: 368 }, D { l: 6, t: 0, i: 297 }, D { l: 7, t: 0, i: 793 }, D { l: 139, t: 0, i: 938, }, D { l: 7, t: 0, i: 464 }, D { l: 8, t: 0, i: 558 }, D { l: 11, t: 0, i: 105, }, D { l: 12, t: 0, i: 231, }, D { l: 14, t: 0, i: 386, }, D { l: 15, t: 0, i: 102, }, D { l: 148, t: 0, i: 75, }, D { l: 133, t: 10, i: 1009, }, D { l: 8, t: 0, i: 877 }, D { l: 140, t: 0, i: 731, }, D { l: 139, t: 11, i: 289, }, D { l: 10, t: 11, i: 249, }, D { l: 139, t: 11, i: 209, }, D { l: 132, t: 11, i: 561, }, D { l: 134, t: 0, i: 1608, }, D { l: 132, t: 11, i: 760, }, D { l: 134, t: 0, i: 1429, }, D { l: 9, t: 11, i: 154, }, D { l: 140, t: 11, i: 485, }, D { l: 5, t: 10, i: 228, }, D { l: 6, t: 10, i: 203, }, D { l: 7, t: 10, i: 156, }, D { l: 8, t: 10, i: 347, }, D { l: 137, t: 10, i: 265, }, D { l: 7, t: 0, i: 1010, }, D { l: 11, t: 0, i: 733, }, D { l: 11, t: 0, i: 759, }, D { l: 13, t: 0, i: 34 }, D { l: 14, t: 0, i: 427, }, D { l: 146, t: 0, i: 45, }, D { l: 7, t: 10, i: 1131, }, D { l: 135, t: 10, i: 1468, }, D { l: 136, t: 11, i: 255, }, D { l: 7, t: 0, i: 1656, }, D { l: 9, t: 0, i: 369 }, D { l: 10, t: 0, i: 338, }, D { l: 10, t: 0, i: 490, }, D { l: 11, t: 0, i: 154, }, D { l: 11, t: 0, i: 545, }, D { l: 11, t: 0, i: 775, }, D { l: 13, t: 0, i: 77 }, D { l: 141, t: 0, i: 274, }, D { l: 133, t: 11, i: 621, }, D { l: 134, t: 0, i: 1038, }, D { l: 4, t: 11, i: 368, }, D { l: 135, t: 11, i: 641, }, D { l: 6, t: 0, i: 2010, }, D { l: 8, t: 0, i: 979 }, D { l: 8, t: 0, i: 985 }, D { l: 10, t: 0, i: 951, }, D { l: 138, t: 0, i: 1011, }, D { l: 134, t: 0, i: 1005, }, D { l: 19, t: 0, i: 121, }, D { l: 5, t: 10, i: 291, }, D { l: 5, t: 10, i: 318, }, D { l: 7, t: 10, i: 765, }, D { l: 9, t: 10, i: 389, }, D { l: 140, t: 10, i: 548, }, D { l: 5, t: 0, i: 20 }, D { l: 6, t: 0, i: 298 }, D { l: 7, t: 0, i: 659 }, D { l: 137, t: 0, i: 219, }, D { l: 7, t: 0, i: 1440, }, D { l: 11, t: 0, i: 854, }, D { l: 11, t: 0, i: 872, }, D { l: 11, t: 0, i: 921, }, D { l: 12, t: 0, i: 551, }, D { l: 13, t: 0, i: 472, }, D { l: 142, t: 0, i: 367, }, D { l: 5, t: 0, i: 490 }, D { l: 6, t: 0, i: 615 }, D { l: 6, t: 0, i: 620 }, D { l: 135, t: 0, i: 683, }, D { l: 6, t: 0, i: 1070, }, D { l: 134, t: 0, i: 1597, }, D { l: 139, t: 0, i: 522, }, D { l: 132, t: 0, i: 439, }, D { l: 136, t: 0, i: 669, }, D { l: 6, t: 0, i: 766 }, D { l: 6, t: 0, i: 1143, }, D { l: 6, t: 0, i: 1245, }, D { l: 10, t: 10, i: 525, }, D { l: 139, t: 10, i: 82, }, D { l: 9, t: 11, i: 92 }, D { l: 147, t: 11, i: 91, }, D { l: 6, t: 0, i: 668 }, D { l: 134, t: 0, i: 1218, }, D { l: 6, t: 11, i: 525, }, D { l: 9, t: 11, i: 876, }, D { l: 140, t: 11, i: 284, }, D { l: 132, t: 0, i: 233, }, D { l: 136, t: 0, i: 547, }, D { l: 132, t: 10, i: 422, }, D { l: 5, t: 10, i: 355, }, D { l: 145, t: 10, i: 0, }, D { l: 6, t: 11, i: 300, }, D { l: 135, t: 11, i: 1515, }, D { l: 4, t: 0, i: 482 }, D { l: 137, t: 10, i: 905, }, D { l: 4, t: 0, i: 886 }, D { l: 7, t: 0, i: 346 }, D { l: 133, t: 11, i: 594, }, D { l: 133, t: 10, i: 865, }, D { l: 5, t: 10, i: 914, }, D { l: 134, t: 10, i: 1625, }, D { l: 135, t: 0, i: 334, }, D { l: 5, t: 0, i: 795 }, D { l: 6, t: 0, i: 1741, }, D { l: 133, t: 10, i: 234, }, D { l: 135, t: 10, i: 1383, }, D { l: 6, t: 11, i: 1641, }, D { l: 136, t: 11, i: 820, }, D { l: 135, t: 0, i: 371, }, D { l: 7, t: 11, i: 1313, }, D { l: 138, t: 11, i: 660, }, D { l: 135, t: 10, i: 1312, }, D { l: 135, t: 0, i: 622, }, D { l: 7, t: 0, i: 625 }, D { l: 135, t: 0, i: 1750, }, D { l: 135, t: 0, i: 339, }, D { l: 4, t: 0, i: 203 }, D { l: 135, t: 0, i: 1936, }, D { l: 15, t: 0, i: 29 }, D { l: 16, t: 0, i: 38 }, D { l: 15, t: 11, i: 29, }, D { l: 144, t: 11, i: 38, }, D { l: 5, t: 0, i: 338 }, D { l: 135, t: 0, i: 1256, }, D { l: 135, t: 10, i: 1493, }, D { l: 10, t: 0, i: 130, }, D { l: 6, t: 10, i: 421, }, D { l: 7, t: 10, i: 61 }, D { l: 7, t: 10, i: 1540, }, D { l: 138, t: 10, i: 501, }, D { l: 6, t: 11, i: 389, }, D { l: 7, t: 11, i: 149, }, D { l: 9, t: 11, i: 142, }, D { l: 138, t: 11, i: 94, }, D { l: 137, t: 10, i: 341, }, D { l: 11, t: 0, i: 678, }, D { l: 12, t: 0, i: 307, }, D { l: 142, t: 10, i: 98, }, D { l: 6, t: 11, i: 8 }, D { l: 7, t: 11, i: 1881, }, D { l: 136, t: 11, i: 91, }, D { l: 135, t: 0, i: 2044, }, D { l: 6, t: 0, i: 770 }, D { l: 6, t: 0, i: 802 }, D { l: 6, t: 0, i: 812 }, D { l: 7, t: 0, i: 311 }, D { l: 9, t: 0, i: 308 }, D { l: 12, t: 0, i: 255, }, D { l: 6, t: 10, i: 102, }, D { l: 7, t: 10, i: 72 }, D { l: 15, t: 10, i: 142, }, D { l: 147, t: 10, i: 67, }, D { l: 151, t: 10, i: 30, }, D { l: 135, t: 10, i: 823, }, D { l: 135, t: 0, i: 1266, }, D { l: 135, t: 11, i: 1746, }, D { l: 135, t: 10, i: 1870, }, D { l: 4, t: 0, i: 400 }, D { l: 5, t: 0, i: 267 }, D { l: 135, t: 0, i: 232, }, D { l: 7, t: 11, i: 24 }, D { l: 11, t: 11, i: 542, }, D { l: 139, t: 11, i: 852, }, D { l: 135, t: 11, i: 1739, }, D { l: 4, t: 11, i: 503, }, D { l: 135, t: 11, i: 1661, }, D { l: 5, t: 11, i: 130, }, D { l: 7, t: 11, i: 1314, }, D { l: 9, t: 11, i: 610, }, D { l: 10, t: 11, i: 718, }, D { l: 11, t: 11, i: 601, }, D { l: 11, t: 11, i: 819, }, D { l: 11, t: 11, i: 946, }, D { l: 140, t: 11, i: 536, }, D { l: 10, t: 11, i: 149, }, D { l: 11, t: 11, i: 280, }, D { l: 142, t: 11, i: 336, }, D { l: 7, t: 0, i: 739 }, D { l: 11, t: 0, i: 690, }, D { l: 7, t: 11, i: 1946, }, D { l: 8, t: 10, i: 48 }, D { l: 8, t: 10, i: 88 }, D { l: 8, t: 10, i: 582, }, D { l: 8, t: 10, i: 681, }, D { l: 9, t: 10, i: 373, }, D { l: 9, t: 10, i: 864, }, D { l: 11, t: 10, i: 157, }, D { l: 11, t: 10, i: 843, }, D { l: 148, t: 10, i: 27, }, D { l: 134, t: 0, i: 990, }, D { l: 4, t: 10, i: 88 }, D { l: 5, t: 10, i: 137, }, D { l: 5, t: 10, i: 174, }, D { l: 5, t: 10, i: 777, }, D { l: 6, t: 10, i: 1664, }, D { l: 6, t: 10, i: 1725, }, D { l: 7, t: 10, i: 77 }, D { l: 7, t: 10, i: 426, }, D { l: 7, t: 10, i: 1317, }, D { l: 7, t: 10, i: 1355, }, D { l: 8, t: 10, i: 126, }, D { l: 8, t: 10, i: 563, }, D { l: 9, t: 10, i: 523, }, D { l: 9, t: 10, i: 750, }, D { l: 10, t: 10, i: 310, }, D { l: 10, t: 10, i: 836, }, D { l: 11, t: 10, i: 42, }, D { l: 11, t: 10, i: 318, }, D { l: 11, t: 10, i: 731, }, D { l: 12, t: 10, i: 68, }, D { l: 12, t: 10, i: 92, }, D { l: 12, t: 10, i: 507, }, D { l: 12, t: 10, i: 692, }, D { l: 13, t: 10, i: 81, }, D { l: 13, t: 10, i: 238, }, D { l: 13, t: 10, i: 374, }, D { l: 14, t: 10, i: 436, }, D { l: 18, t: 10, i: 138, }, D { l: 19, t: 10, i: 78, }, D { l: 19, t: 10, i: 111, }, D { l: 20, t: 10, i: 55, }, D { l: 20, t: 10, i: 77, }, D { l: 148, t: 10, i: 92, }, D { l: 141, t: 10, i: 418, }, D { l: 7, t: 0, i: 1831, }, D { l: 132, t: 10, i: 938, }, D { l: 6, t: 0, i: 776 }, D { l: 134, t: 0, i: 915, }, D { l: 138, t: 10, i: 351, }, D { l: 5, t: 11, i: 348, }, D { l: 6, t: 11, i: 522, }, D { l: 6, t: 10, i: 1668, }, D { l: 7, t: 10, i: 1499, }, D { l: 8, t: 10, i: 117, }, D { l: 9, t: 10, i: 314, }, D { l: 138, t: 10, i: 174, }, D { l: 135, t: 10, i: 707, }, D { l: 132, t: 0, i: 613, }, D { l: 133, t: 10, i: 403, }, D { l: 132, t: 11, i: 392, }, D { l: 5, t: 11, i: 433, }, D { l: 9, t: 11, i: 633, }, D { l: 139, t: 11, i: 629, }, D { l: 133, t: 0, i: 763, }, D { l: 132, t: 0, i: 878, }, D { l: 132, t: 0, i: 977, }, D { l: 132, t: 0, i: 100, }, D { l: 6, t: 0, i: 463 }, D { l: 4, t: 10, i: 44 }, D { l: 5, t: 10, i: 311, }, D { l: 7, t: 10, i: 639, }, D { l: 7, t: 10, i: 762, }, D { l: 7, t: 10, i: 1827, }, D { l: 9, t: 10, i: 8 }, D { l: 9, t: 10, i: 462, }, D { l: 148, t: 10, i: 83, }, D { l: 134, t: 11, i: 234, }, D { l: 4, t: 10, i: 346, }, D { l: 7, t: 10, i: 115, }, D { l: 9, t: 10, i: 180, }, D { l: 9, t: 10, i: 456, }, D { l: 138, t: 10, i: 363, }, D { l: 5, t: 0, i: 362 }, D { l: 5, t: 0, i: 443 }, D { l: 6, t: 0, i: 318 }, D { l: 7, t: 0, i: 1019, }, D { l: 139, t: 0, i: 623, }, D { l: 5, t: 0, i: 463 }, D { l: 8, t: 0, i: 296 }, D { l: 7, t: 11, i: 140, }, D { l: 7, t: 11, i: 1950, }, D { l: 8, t: 11, i: 680, }, D { l: 11, t: 11, i: 817, }, D { l: 147, t: 11, i: 88, }, D { l: 7, t: 11, i: 1222, }, D { l: 138, t: 11, i: 386, }, D { l: 142, t: 0, i: 137, }, D { l: 132, t: 0, i: 454, }, D { l: 7, t: 0, i: 1914, }, D { l: 6, t: 11, i: 5 }, D { l: 7, t: 10, i: 1051, }, D { l: 9, t: 10, i: 545, }, D { l: 11, t: 11, i: 249, }, D { l: 12, t: 11, i: 313, }, D { l: 16, t: 11, i: 66, }, D { l: 145, t: 11, i: 26, }, D { l: 135, t: 0, i: 1527, }, D { l: 145, t: 0, i: 58, }, D { l: 148, t: 11, i: 59, }, D { l: 5, t: 0, i: 48 }, D { l: 5, t: 0, i: 404 }, D { l: 6, t: 0, i: 557 }, D { l: 7, t: 0, i: 458 }, D { l: 8, t: 0, i: 597 }, D { l: 10, t: 0, i: 455, }, D { l: 10, t: 0, i: 606, }, D { l: 11, t: 0, i: 49 }, D { l: 11, t: 0, i: 548, }, D { l: 12, t: 0, i: 476, }, D { l: 13, t: 0, i: 18 }, D { l: 141, t: 0, i: 450, }, D { l: 5, t: 11, i: 963, }, D { l: 134, t: 11, i: 1773, }, D { l: 133, t: 0, i: 729, }, D { l: 138, t: 11, i: 586, }, D { l: 5, t: 0, i: 442 }, D { l: 135, t: 0, i: 1984, }, D { l: 134, t: 0, i: 449, }, D { l: 144, t: 0, i: 40, }, D { l: 4, t: 0, i: 853 }, D { l: 7, t: 11, i: 180, }, D { l: 8, t: 11, i: 509, }, D { l: 136, t: 11, i: 792, }, D { l: 6, t: 10, i: 185, }, D { l: 7, t: 10, i: 1899, }, D { l: 9, t: 10, i: 875, }, D { l: 139, t: 10, i: 673, }, D { l: 134, t: 11, i: 524, }, D { l: 12, t: 0, i: 227, }, D { l: 4, t: 10, i: 327, }, D { l: 5, t: 10, i: 478, }, D { l: 7, t: 10, i: 1332, }, D { l: 136, t: 10, i: 753, }, D { l: 6, t: 0, i: 1491, }, D { l: 5, t: 10, i: 1020, }, D { l: 133, t: 10, i: 1022, }, D { l: 4, t: 10, i: 103, }, D { l: 133, t: 10, i: 401, }, D { l: 132, t: 11, i: 931, }, D { l: 4, t: 10, i: 499, }, D { l: 135, t: 10, i: 1421, }, D { l: 5, t: 0, i: 55 }, D { l: 7, t: 0, i: 376 }, D { l: 140, t: 0, i: 161, }, D { l: 133, t: 0, i: 450, }, D { l: 6, t: 0, i: 1174, }, D { l: 134, t: 0, i: 1562, }, D { l: 10, t: 0, i: 62 }, D { l: 13, t: 0, i: 400, }, D { l: 135, t: 11, i: 1837, }, D { l: 140, t: 0, i: 207, }, D { l: 135, t: 0, i: 869, }, D { l: 4, t: 11, i: 773, }, D { l: 5, t: 11, i: 618, }, D { l: 137, t: 11, i: 756, }, D { l: 132, t: 10, i: 96, }, D { l: 4, t: 0, i: 213 }, D { l: 7, t: 0, i: 223 }, D { l: 8, t: 0, i: 80 }, D { l: 135, t: 10, i: 968, }, D { l: 4, t: 11, i: 90 }, D { l: 5, t: 11, i: 337, }, D { l: 5, t: 11, i: 545, }, D { l: 7, t: 11, i: 754, }, D { l: 9, t: 11, i: 186, }, D { l: 10, t: 11, i: 72, }, D { l: 10, t: 11, i: 782, }, D { l: 11, t: 11, i: 513, }, D { l: 11, t: 11, i: 577, }, D { l: 11, t: 11, i: 610, }, D { l: 11, t: 11, i: 889, }, D { l: 11, t: 11, i: 961, }, D { l: 12, t: 11, i: 354, }, D { l: 12, t: 11, i: 362, }, D { l: 12, t: 11, i: 461, }, D { l: 12, t: 11, i: 595, }, D { l: 13, t: 11, i: 79, }, D { l: 143, t: 11, i: 121, }, D { l: 7, t: 0, i: 381 }, D { l: 7, t: 0, i: 806 }, D { l: 7, t: 0, i: 820 }, D { l: 8, t: 0, i: 354 }, D { l: 8, t: 0, i: 437 }, D { l: 8, t: 0, i: 787 }, D { l: 9, t: 0, i: 657 }, D { l: 10, t: 0, i: 58 }, D { l: 10, t: 0, i: 339, }, D { l: 10, t: 0, i: 749, }, D { l: 11, t: 0, i: 914, }, D { l: 12, t: 0, i: 162, }, D { l: 13, t: 0, i: 75 }, D { l: 14, t: 0, i: 106, }, D { l: 14, t: 0, i: 198, }, D { l: 14, t: 0, i: 320, }, D { l: 14, t: 0, i: 413, }, D { l: 146, t: 0, i: 43, }, D { l: 136, t: 0, i: 747, }, D { l: 136, t: 0, i: 954, }, D { l: 134, t: 0, i: 1073, }, D { l: 135, t: 0, i: 556, }, D { l: 7, t: 11, i: 151, }, D { l: 9, t: 11, i: 329, }, D { l: 139, t: 11, i: 254, }, D { l: 5, t: 0, i: 692 }, D { l: 134, t: 0, i: 1395, }, D { l: 6, t: 10, i: 563, }, D { l: 137, t: 10, i: 224, }, D { l: 134, t: 0, i: 191, }, D { l: 132, t: 0, i: 804, }, D { l: 9, t: 11, i: 187, }, D { l: 10, t: 11, i: 36, }, D { l: 17, t: 11, i: 44, }, D { l: 146, t: 11, i: 64, }, D { l: 7, t: 11, i: 165, }, D { l: 7, t: 11, i: 919, }, D { l: 136, t: 11, i: 517, }, D { l: 4, t: 11, i: 506, }, D { l: 5, t: 11, i: 295, }, D { l: 7, t: 11, i: 1680, }, D { l: 15, t: 11, i: 14, }, D { l: 144, t: 11, i: 5, }, D { l: 4, t: 0, i: 706 }, D { l: 6, t: 0, i: 162 }, D { l: 7, t: 0, i: 1960, }, D { l: 136, t: 0, i: 831, }, D { l: 135, t: 11, i: 1376, }, D { l: 7, t: 11, i: 987, }, D { l: 9, t: 11, i: 688, }, D { l: 10, t: 11, i: 522, }, D { l: 11, t: 11, i: 788, }, D { l: 140, t: 11, i: 566, }, D { l: 150, t: 0, i: 35, }, D { l: 138, t: 0, i: 426, }, D { l: 135, t: 0, i: 1235, }, D { l: 135, t: 11, i: 1741, }, D { l: 7, t: 11, i: 389, }, D { l: 7, t: 11, i: 700, }, D { l: 7, t: 11, i: 940, }, D { l: 8, t: 11, i: 514, }, D { l: 9, t: 11, i: 116, }, D { l: 9, t: 11, i: 535, }, D { l: 10, t: 11, i: 118, }, D { l: 11, t: 11, i: 107, }, D { l: 11, t: 11, i: 148, }, D { l: 11, t: 11, i: 922, }, D { l: 12, t: 11, i: 254, }, D { l: 12, t: 11, i: 421, }, D { l: 142, t: 11, i: 238, }, D { l: 134, t: 0, i: 1234, }, D { l: 132, t: 11, i: 743, }, D { l: 4, t: 10, i: 910, }, D { l: 5, t: 10, i: 832, }, D { l: 135, t: 11, i: 1335, }, D { l: 141, t: 0, i: 96, }, D { l: 135, t: 11, i: 185, }, D { l: 146, t: 0, i: 149, }, D { l: 4, t: 0, i: 204 }, D { l: 137, t: 0, i: 902, }, D { l: 4, t: 11, i: 784, }, D { l: 133, t: 11, i: 745, }, D { l: 136, t: 0, i: 833, }, D { l: 136, t: 0, i: 949, }, D { l: 7, t: 0, i: 366 }, D { l: 9, t: 0, i: 287 }, D { l: 12, t: 0, i: 199, }, D { l: 12, t: 0, i: 556, }, D { l: 12, t: 0, i: 577, }, D { l: 5, t: 11, i: 81 }, D { l: 7, t: 11, i: 146, }, D { l: 7, t: 11, i: 1342, }, D { l: 7, t: 11, i: 1446, }, D { l: 8, t: 11, i: 53 }, D { l: 8, t: 11, i: 561, }, D { l: 8, t: 11, i: 694, }, D { l: 8, t: 11, i: 754, }, D { l: 9, t: 11, i: 97 }, D { l: 9, t: 11, i: 115, }, D { l: 9, t: 11, i: 894, }, D { l: 10, t: 11, i: 462, }, D { l: 10, t: 11, i: 813, }, D { l: 11, t: 11, i: 230, }, D { l: 11, t: 11, i: 657, }, D { l: 11, t: 11, i: 699, }, D { l: 11, t: 11, i: 748, }, D { l: 12, t: 11, i: 119, }, D { l: 12, t: 11, i: 200, }, D { l: 12, t: 11, i: 283, }, D { l: 14, t: 11, i: 273, }, D { l: 145, t: 11, i: 15, }, D { l: 5, t: 11, i: 408, }, D { l: 137, t: 11, i: 747, }, D { l: 9, t: 11, i: 498, }, D { l: 140, t: 11, i: 181, }, D { l: 6, t: 0, i: 2020, }, D { l: 136, t: 0, i: 992, }, D { l: 5, t: 0, i: 356 }, D { l: 135, t: 0, i: 224, }, D { l: 134, t: 0, i: 784, }, D { l: 7, t: 0, i: 630 }, D { l: 9, t: 0, i: 567 }, D { l: 11, t: 0, i: 150, }, D { l: 11, t: 0, i: 444, }, D { l: 13, t: 0, i: 119, }, D { l: 8, t: 10, i: 528, }, D { l: 137, t: 10, i: 348, }, D { l: 134, t: 0, i: 539, }, D { l: 4, t: 10, i: 20 }, D { l: 133, t: 10, i: 616, }, D { l: 142, t: 0, i: 27, }, D { l: 7, t: 11, i: 30 }, D { l: 8, t: 11, i: 86 }, D { l: 8, t: 11, i: 315, }, D { l: 8, t: 11, i: 700, }, D { l: 9, t: 11, i: 576, }, D { l: 9, t: 11, i: 858, }, D { l: 11, t: 11, i: 310, }, D { l: 11, t: 11, i: 888, }, D { l: 11, t: 11, i: 904, }, D { l: 12, t: 11, i: 361, }, D { l: 141, t: 11, i: 248, }, D { l: 138, t: 11, i: 839, }, D { l: 134, t: 0, i: 755, }, D { l: 134, t: 0, i: 1063, }, D { l: 7, t: 10, i: 1091, }, D { l: 135, t: 10, i: 1765, }, D { l: 134, t: 11, i: 428, }, D { l: 7, t: 11, i: 524, }, D { l: 8, t: 11, i: 169, }, D { l: 8, t: 11, i: 234, }, D { l: 9, t: 11, i: 480, }, D { l: 138, t: 11, i: 646, }, D { l: 139, t: 0, i: 814, }, D { l: 7, t: 11, i: 1462, }, D { l: 139, t: 11, i: 659, }, D { l: 4, t: 10, i: 26 }, D { l: 5, t: 10, i: 429, }, D { l: 6, t: 10, i: 245, }, D { l: 7, t: 10, i: 704, }, D { l: 7, t: 10, i: 1379, }, D { l: 135, t: 10, i: 1474, }, D { l: 7, t: 11, i: 1205, }, D { l: 138, t: 11, i: 637, }, D { l: 139, t: 11, i: 803, }, D { l: 132, t: 10, i: 621, }, D { l: 136, t: 0, i: 987, }, D { l: 4, t: 11, i: 266, }, D { l: 8, t: 11, i: 4 }, D { l: 9, t: 11, i: 39 }, D { l: 10, t: 11, i: 166, }, D { l: 11, t: 11, i: 918, }, D { l: 12, t: 11, i: 635, }, D { l: 20, t: 11, i: 10, }, D { l: 22, t: 11, i: 27, }, D { l: 150, t: 11, i: 43, }, D { l: 4, t: 0, i: 235 }, D { l: 135, t: 0, i: 255, }, D { l: 4, t: 0, i: 194 }, D { l: 5, t: 0, i: 584 }, D { l: 6, t: 0, i: 384 }, D { l: 7, t: 0, i: 583 }, D { l: 10, t: 0, i: 761, }, D { l: 11, t: 0, i: 760, }, D { l: 139, t: 0, i: 851, }, D { l: 133, t: 10, i: 542, }, D { l: 134, t: 0, i: 1086, }, D { l: 133, t: 10, i: 868, }, D { l: 8, t: 0, i: 1016, }, D { l: 136, t: 0, i: 1018, }, D { l: 7, t: 0, i: 1396, }, D { l: 7, t: 11, i: 1396, }, D { l: 136, t: 10, i: 433, }, D { l: 135, t: 10, i: 1495, }, D { l: 138, t: 10, i: 215, }, D { l: 141, t: 10, i: 124, }, D { l: 7, t: 11, i: 157, }, D { l: 8, t: 11, i: 279, }, D { l: 9, t: 11, i: 759, }, D { l: 16, t: 11, i: 31, }, D { l: 16, t: 11, i: 39, }, D { l: 16, t: 11, i: 75, }, D { l: 18, t: 11, i: 24, }, D { l: 20, t: 11, i: 42, }, D { l: 152, t: 11, i: 1, }, D { l: 5, t: 0, i: 562 }, D { l: 134, t: 11, i: 604, }, D { l: 134, t: 0, i: 913, }, D { l: 5, t: 0, i: 191 }, D { l: 137, t: 0, i: 271, }, D { l: 4, t: 0, i: 470 }, D { l: 6, t: 0, i: 153 }, D { l: 7, t: 0, i: 1503, }, D { l: 7, t: 0, i: 1923, }, D { l: 10, t: 0, i: 701, }, D { l: 11, t: 0, i: 132, }, D { l: 11, t: 0, i: 227, }, D { l: 11, t: 0, i: 320, }, D { l: 11, t: 0, i: 436, }, D { l: 11, t: 0, i: 525, }, D { l: 11, t: 0, i: 855, }, D { l: 11, t: 0, i: 873, }, D { l: 12, t: 0, i: 41 }, D { l: 12, t: 0, i: 286, }, D { l: 13, t: 0, i: 103, }, D { l: 13, t: 0, i: 284, }, D { l: 14, t: 0, i: 255, }, D { l: 14, t: 0, i: 262, }, D { l: 15, t: 0, i: 117, }, D { l: 143, t: 0, i: 127, }, D { l: 7, t: 0, i: 475 }, D { l: 12, t: 0, i: 45 }, D { l: 147, t: 10, i: 112, }, D { l: 132, t: 11, i: 567, }, D { l: 137, t: 11, i: 859, }, D { l: 6, t: 0, i: 713 }, D { l: 6, t: 0, i: 969 }, D { l: 6, t: 0, i: 1290, }, D { l: 134, t: 0, i: 1551, }, D { l: 133, t: 0, i: 327, }, D { l: 6, t: 0, i: 552 }, D { l: 6, t: 0, i: 1292, }, D { l: 7, t: 0, i: 1754, }, D { l: 137, t: 0, i: 604, }, D { l: 4, t: 0, i: 223 }, D { l: 6, t: 0, i: 359 }, D { l: 11, t: 0, i: 3 }, D { l: 13, t: 0, i: 108, }, D { l: 14, t: 0, i: 89 }, D { l: 16, t: 0, i: 22 }, D { l: 5, t: 11, i: 762, }, D { l: 7, t: 11, i: 1880, }, D { l: 9, t: 11, i: 680, }, D { l: 139, t: 11, i: 798, }, D { l: 5, t: 0, i: 80 }, D { l: 6, t: 0, i: 405 }, D { l: 7, t: 0, i: 403 }, D { l: 7, t: 0, i: 1502, }, D { l: 8, t: 0, i: 456 }, D { l: 9, t: 0, i: 487 }, D { l: 9, t: 0, i: 853 }, D { l: 9, t: 0, i: 889 }, D { l: 10, t: 0, i: 309, }, D { l: 11, t: 0, i: 721, }, D { l: 11, t: 0, i: 994, }, D { l: 12, t: 0, i: 430, }, D { l: 141, t: 0, i: 165, }, D { l: 133, t: 11, i: 298, }, D { l: 132, t: 10, i: 647, }, D { l: 134, t: 0, i: 2016, }, D { l: 18, t: 10, i: 10, }, D { l: 146, t: 11, i: 10, }, D { l: 4, t: 0, i: 453 }, D { l: 5, t: 0, i: 887 }, D { l: 6, t: 0, i: 535 }, D { l: 8, t: 0, i: 6 }, D { l: 8, t: 0, i: 543 }, D { l: 136, t: 0, i: 826, }, D { l: 136, t: 0, i: 975, }, D { l: 10, t: 0, i: 961, }, D { l: 138, t: 0, i: 962, }, D { l: 138, t: 10, i: 220, }, D { l: 6, t: 0, i: 1891, }, D { l: 6, t: 0, i: 1893, }, D { l: 9, t: 0, i: 916 }, D { l: 9, t: 0, i: 965 }, D { l: 9, t: 0, i: 972 }, D { l: 12, t: 0, i: 801, }, D { l: 12, t: 0, i: 859, }, D { l: 12, t: 0, i: 883, }, D { l: 15, t: 0, i: 226, }, D { l: 149, t: 0, i: 51, }, D { l: 132, t: 10, i: 109, }, D { l: 135, t: 11, i: 267, }, D { l: 7, t: 11, i: 92 }, D { l: 7, t: 11, i: 182, }, D { l: 8, t: 11, i: 453, }, D { l: 9, t: 11, i: 204, }, D { l: 11, t: 11, i: 950, }, D { l: 12, t: 11, i: 94, }, D { l: 12, t: 11, i: 644, }, D { l: 16, t: 11, i: 20, }, D { l: 16, t: 11, i: 70, }, D { l: 16, t: 11, i: 90, }, D { l: 147, t: 11, i: 55, }, D { l: 134, t: 10, i: 1746, }, D { l: 6, t: 11, i: 71 }, D { l: 7, t: 11, i: 845, }, D { l: 7, t: 11, i: 1308, }, D { l: 8, t: 11, i: 160, }, D { l: 137, t: 11, i: 318, }, D { l: 5, t: 0, i: 101 }, D { l: 6, t: 0, i: 88 }, D { l: 7, t: 0, i: 263 }, D { l: 7, t: 0, i: 628 }, D { l: 7, t: 0, i: 1677, }, D { l: 8, t: 0, i: 349 }, D { l: 9, t: 0, i: 100 }, D { l: 10, t: 0, i: 677, }, D { l: 14, t: 0, i: 169, }, D { l: 14, t: 0, i: 302, }, D { l: 14, t: 0, i: 313, }, D { l: 15, t: 0, i: 48 }, D { l: 15, t: 0, i: 84 }, D { l: 7, t: 11, i: 237, }, D { l: 8, t: 11, i: 664, }, D { l: 9, t: 11, i: 42 }, D { l: 9, t: 11, i: 266, }, D { l: 9, t: 11, i: 380, }, D { l: 9, t: 11, i: 645, }, D { l: 10, t: 11, i: 177, }, D { l: 138, t: 11, i: 276, }, D { l: 138, t: 11, i: 69, }, D { l: 4, t: 0, i: 310 }, D { l: 7, t: 0, i: 708 }, D { l: 7, t: 0, i: 996 }, D { l: 9, t: 0, i: 795 }, D { l: 10, t: 0, i: 390, }, D { l: 10, t: 0, i: 733, }, D { l: 11, t: 0, i: 451, }, D { l: 12, t: 0, i: 249, }, D { l: 14, t: 0, i: 115, }, D { l: 14, t: 0, i: 286, }, D { l: 143, t: 0, i: 100, }, D { l: 5, t: 0, i: 587 }, D { l: 4, t: 10, i: 40 }, D { l: 10, t: 10, i: 67, }, D { l: 11, t: 10, i: 117, }, D { l: 11, t: 10, i: 768, }, D { l: 139, t: 10, i: 935, }, D { l: 6, t: 0, i: 1942, }, D { l: 7, t: 0, i: 512 }, D { l: 136, t: 0, i: 983, }, D { l: 7, t: 10, i: 992, }, D { l: 8, t: 10, i: 301, }, D { l: 9, t: 10, i: 722, }, D { l: 12, t: 10, i: 63, }, D { l: 13, t: 10, i: 29, }, D { l: 14, t: 10, i: 161, }, D { l: 143, t: 10, i: 18, }, D { l: 136, t: 11, i: 76, }, D { l: 139, t: 10, i: 923, }, D { l: 134, t: 0, i: 645, }, D { l: 134, t: 0, i: 851, }, D { l: 4, t: 0, i: 498 }, D { l: 132, t: 11, i: 293, }, D { l: 7, t: 0, i: 217 }, D { l: 8, t: 0, i: 140 }, D { l: 10, t: 0, i: 610, }, D { l: 14, t: 11, i: 352, }, D { l: 17, t: 11, i: 53, }, D { l: 18, t: 11, i: 146, }, D { l: 18, t: 11, i: 152, }, D { l: 19, t: 11, i: 11, }, D { l: 150, t: 11, i: 54, }, D { l: 134, t: 0, i: 1448, }, D { l: 138, t: 11, i: 841, }, D { l: 133, t: 0, i: 905, }, D { l: 4, t: 11, i: 605, }, D { l: 7, t: 11, i: 518, }, D { l: 7, t: 11, i: 1282, }, D { l: 7, t: 11, i: 1918, }, D { l: 10, t: 11, i: 180, }, D { l: 139, t: 11, i: 218, }, D { l: 139, t: 11, i: 917, }, D { l: 135, t: 10, i: 825, }, D { l: 140, t: 10, i: 328, }, D { l: 4, t: 0, i: 456 }, D { l: 7, t: 0, i: 105 }, D { l: 7, t: 0, i: 358 }, D { l: 7, t: 0, i: 1637, }, D { l: 8, t: 0, i: 643 }, D { l: 139, t: 0, i: 483, }, D { l: 134, t: 0, i: 792, }, D { l: 6, t: 11, i: 96 }, D { l: 135, t: 11, i: 1426, }, D { l: 137, t: 11, i: 691, }, D { l: 4, t: 11, i: 651, }, D { l: 133, t: 11, i: 289, }, D { l: 7, t: 11, i: 688, }, D { l: 8, t: 11, i: 35 }, D { l: 9, t: 11, i: 511, }, D { l: 10, t: 11, i: 767, }, D { l: 147, t: 11, i: 118, }, D { l: 150, t: 0, i: 56, }, D { l: 5, t: 0, i: 243 }, D { l: 5, t: 0, i: 535 }, D { l: 6, t: 10, i: 204, }, D { l: 10, t: 10, i: 320, }, D { l: 10, t: 10, i: 583, }, D { l: 13, t: 10, i: 502, }, D { l: 14, t: 10, i: 72, }, D { l: 14, t: 10, i: 274, }, D { l: 14, t: 10, i: 312, }, D { l: 14, t: 10, i: 344, }, D { l: 15, t: 10, i: 159, }, D { l: 16, t: 10, i: 62, }, D { l: 16, t: 10, i: 69, }, D { l: 17, t: 10, i: 30, }, D { l: 18, t: 10, i: 42, }, D { l: 18, t: 10, i: 53, }, D { l: 18, t: 10, i: 84, }, D { l: 18, t: 10, i: 140, }, D { l: 19, t: 10, i: 68, }, D { l: 19, t: 10, i: 85, }, D { l: 20, t: 10, i: 5 }, D { l: 20, t: 10, i: 45, }, D { l: 20, t: 10, i: 101, }, D { l: 22, t: 10, i: 7 }, D { l: 150, t: 10, i: 20, }, D { l: 4, t: 10, i: 558, }, D { l: 6, t: 10, i: 390, }, D { l: 7, t: 10, i: 162, }, D { l: 7, t: 10, i: 689, }, D { l: 9, t: 10, i: 360, }, D { l: 138, t: 10, i: 653, }, D { l: 146, t: 11, i: 23, }, D { l: 135, t: 0, i: 1748, }, D { l: 5, t: 10, i: 856, }, D { l: 6, t: 10, i: 1672, }, D { l: 6, t: 10, i: 1757, }, D { l: 134, t: 10, i: 1781, }, D { l: 5, t: 0, i: 539 }, D { l: 5, t: 0, i: 754 }, D { l: 6, t: 0, i: 876 }, D { l: 132, t: 11, i: 704, }, D { l: 135, t: 11, i: 1078, }, D { l: 5, t: 10, i: 92 }, D { l: 10, t: 10, i: 736, }, D { l: 140, t: 10, i: 102, }, D { l: 17, t: 0, i: 91 }, D { l: 5, t: 10, i: 590, }, D { l: 137, t: 10, i: 213, }, D { l: 134, t: 0, i: 1565, }, D { l: 6, t: 0, i: 91 }, D { l: 135, t: 0, i: 435, }, D { l: 4, t: 0, i: 939 }, D { l: 140, t: 0, i: 792, }, D { l: 134, t: 0, i: 1399, }, D { l: 4, t: 0, i: 16 }, D { l: 5, t: 0, i: 316 }, D { l: 5, t: 0, i: 842 }, D { l: 6, t: 0, i: 370 }, D { l: 6, t: 0, i: 1778, }, D { l: 8, t: 0, i: 166 }, D { l: 11, t: 0, i: 812, }, D { l: 12, t: 0, i: 206, }, D { l: 12, t: 0, i: 351, }, D { l: 14, t: 0, i: 418, }, D { l: 16, t: 0, i: 15 }, D { l: 16, t: 0, i: 34 }, D { l: 18, t: 0, i: 3 }, D { l: 19, t: 0, i: 3 }, D { l: 19, t: 0, i: 7 }, D { l: 20, t: 0, i: 4 }, D { l: 21, t: 0, i: 21 }, D { l: 4, t: 11, i: 720, }, D { l: 133, t: 11, i: 306, }, D { l: 144, t: 0, i: 95, }, D { l: 133, t: 11, i: 431, }, D { l: 132, t: 11, i: 234, }, D { l: 135, t: 0, i: 551, }, D { l: 4, t: 0, i: 999 }, D { l: 6, t: 0, i: 1966, }, D { l: 134, t: 0, i: 2042, }, D { l: 7, t: 0, i: 619 }, D { l: 10, t: 0, i: 547, }, D { l: 11, t: 0, i: 122, }, D { l: 12, t: 0, i: 601, }, D { l: 15, t: 0, i: 7 }, D { l: 148, t: 0, i: 20, }, D { l: 5, t: 11, i: 464, }, D { l: 6, t: 11, i: 236, }, D { l: 7, t: 11, i: 276, }, D { l: 7, t: 11, i: 696, }, D { l: 7, t: 11, i: 914, }, D { l: 7, t: 11, i: 1108, }, D { l: 7, t: 11, i: 1448, }, D { l: 9, t: 11, i: 15 }, D { l: 9, t: 11, i: 564, }, D { l: 10, t: 11, i: 14, }, D { l: 12, t: 11, i: 565, }, D { l: 13, t: 11, i: 449, }, D { l: 14, t: 11, i: 53, }, D { l: 15, t: 11, i: 13, }, D { l: 16, t: 11, i: 64, }, D { l: 145, t: 11, i: 41, }, D { l: 6, t: 0, i: 884 }, D { l: 6, t: 0, i: 1019, }, D { l: 134, t: 0, i: 1150, }, D { l: 6, t: 11, i: 1767, }, D { l: 12, t: 11, i: 194, }, D { l: 145, t: 11, i: 107, }, D { l: 136, t: 10, i: 503, }, D { l: 133, t: 11, i: 840, }, D { l: 7, t: 0, i: 671 }, D { l: 134, t: 10, i: 466, }, D { l: 132, t: 0, i: 888, }, D { l: 4, t: 0, i: 149 }, D { l: 138, t: 0, i: 368, }, D { l: 4, t: 0, i: 154 }, D { l: 7, t: 0, i: 1134, }, D { l: 136, t: 0, i: 105, }, D { l: 135, t: 0, i: 983, }, D { l: 9, t: 11, i: 642, }, D { l: 11, t: 11, i: 236, }, D { l: 142, t: 11, i: 193, }, D { l: 4, t: 0, i: 31 }, D { l: 6, t: 0, i: 429 }, D { l: 7, t: 0, i: 962 }, D { l: 9, t: 0, i: 458 }, D { l: 139, t: 0, i: 691, }, D { l: 6, t: 0, i: 643 }, D { l: 134, t: 0, i: 1102, }, D { l: 132, t: 0, i: 312, }, D { l: 4, t: 11, i: 68 }, D { l: 5, t: 11, i: 634, }, D { l: 6, t: 11, i: 386, }, D { l: 7, t: 11, i: 794, }, D { l: 8, t: 11, i: 273, }, D { l: 9, t: 11, i: 563, }, D { l: 10, t: 11, i: 105, }, D { l: 10, t: 11, i: 171, }, D { l: 11, t: 11, i: 94, }, D { l: 139, t: 11, i: 354, }, D { l: 133, t: 0, i: 740, }, D { l: 135, t: 0, i: 1642, }, D { l: 4, t: 11, i: 95 }, D { l: 7, t: 11, i: 416, }, D { l: 8, t: 11, i: 211, }, D { l: 139, t: 11, i: 830, }, D { l: 132, t: 0, i: 236, }, D { l: 138, t: 10, i: 241, }, D { l: 7, t: 11, i: 731, }, D { l: 13, t: 11, i: 20, }, D { l: 143, t: 11, i: 11, }, D { l: 5, t: 0, i: 836 }, D { l: 5, t: 0, i: 857 }, D { l: 6, t: 0, i: 1680, }, D { l: 135, t: 0, i: 59, }, D { l: 10, t: 0, i: 68 }, D { l: 11, t: 0, i: 494, }, D { l: 152, t: 11, i: 6, }, D { l: 4, t: 0, i: 81 }, D { l: 139, t: 0, i: 867, }, D { l: 135, t: 0, i: 795, }, D { l: 133, t: 11, i: 689, }, D { l: 4, t: 0, i: 1001, }, D { l: 5, t: 0, i: 282 }, D { l: 6, t: 0, i: 1932, }, D { l: 6, t: 0, i: 1977, }, D { l: 6, t: 0, i: 1987, }, D { l: 6, t: 0, i: 1992, }, D { l: 8, t: 0, i: 650 }, D { l: 8, t: 0, i: 919 }, D { l: 8, t: 0, i: 920 }, D { l: 8, t: 0, i: 923 }, D { l: 8, t: 0, i: 926 }, D { l: 8, t: 0, i: 927 }, D { l: 8, t: 0, i: 931 }, D { l: 8, t: 0, i: 939 }, D { l: 8, t: 0, i: 947 }, D { l: 8, t: 0, i: 956 }, D { l: 8, t: 0, i: 997 }, D { l: 9, t: 0, i: 907 }, D { l: 10, t: 0, i: 950, }, D { l: 10, t: 0, i: 953, }, D { l: 10, t: 0, i: 954, }, D { l: 10, t: 0, i: 956, }, D { l: 10, t: 0, i: 958, }, D { l: 10, t: 0, i: 959, }, D { l: 10, t: 0, i: 964, }, D { l: 10, t: 0, i: 970, }, D { l: 10, t: 0, i: 972, }, D { l: 10, t: 0, i: 973, }, D { l: 10, t: 0, i: 975, }, D { l: 10, t: 0, i: 976, }, D { l: 10, t: 0, i: 980, }, D { l: 10, t: 0, i: 981, }, D { l: 10, t: 0, i: 984, }, D { l: 10, t: 0, i: 988, }, D { l: 10, t: 0, i: 990, }, D { l: 10, t: 0, i: 995, }, D { l: 10, t: 0, i: 999, }, D { l: 10, t: 0, i: 1002, }, D { l: 10, t: 0, i: 1003, }, D { l: 10, t: 0, i: 1005, }, D { l: 10, t: 0, i: 1006, }, D { l: 10, t: 0, i: 1008, }, D { l: 10, t: 0, i: 1009, }, D { l: 10, t: 0, i: 1012, }, D { l: 10, t: 0, i: 1014, }, D { l: 10, t: 0, i: 1015, }, D { l: 10, t: 0, i: 1019, }, D { l: 10, t: 0, i: 1020, }, D { l: 10, t: 0, i: 1022, }, D { l: 12, t: 0, i: 959, }, D { l: 12, t: 0, i: 961, }, D { l: 12, t: 0, i: 962, }, D { l: 12, t: 0, i: 963, }, D { l: 12, t: 0, i: 964, }, D { l: 12, t: 0, i: 965, }, D { l: 12, t: 0, i: 967, }, D { l: 12, t: 0, i: 968, }, D { l: 12, t: 0, i: 969, }, D { l: 12, t: 0, i: 970, }, D { l: 12, t: 0, i: 971, }, D { l: 12, t: 0, i: 972, }, D { l: 12, t: 0, i: 973, }, D { l: 12, t: 0, i: 974, }, D { l: 12, t: 0, i: 975, }, D { l: 12, t: 0, i: 976, }, D { l: 12, t: 0, i: 977, }, D { l: 12, t: 0, i: 979, }, D { l: 12, t: 0, i: 981, }, D { l: 12, t: 0, i: 982, }, D { l: 12, t: 0, i: 983, }, D { l: 12, t: 0, i: 984, }, D { l: 12, t: 0, i: 985, }, D { l: 12, t: 0, i: 986, }, D { l: 12, t: 0, i: 987, }, D { l: 12, t: 0, i: 989, }, D { l: 12, t: 0, i: 990, }, D { l: 12, t: 0, i: 992, }, D { l: 12, t: 0, i: 993, }, D { l: 12, t: 0, i: 995, }, D { l: 12, t: 0, i: 998, }, D { l: 12, t: 0, i: 999, }, D { l: 12, t: 0, i: 1000, }, D { l: 12, t: 0, i: 1001, }, D { l: 12, t: 0, i: 1002, }, D { l: 12, t: 0, i: 1004, }, D { l: 12, t: 0, i: 1005, }, D { l: 12, t: 0, i: 1006, }, D { l: 12, t: 0, i: 1007, }, D { l: 12, t: 0, i: 1008, }, D { l: 12, t: 0, i: 1009, }, D { l: 12, t: 0, i: 1010, }, D { l: 12, t: 0, i: 1011, }, D { l: 12, t: 0, i: 1012, }, D { l: 12, t: 0, i: 1014, }, D { l: 12, t: 0, i: 1015, }, D { l: 12, t: 0, i: 1016, }, D { l: 12, t: 0, i: 1017, }, D { l: 12, t: 0, i: 1018, }, D { l: 12, t: 0, i: 1019, }, D { l: 12, t: 0, i: 1022, }, D { l: 12, t: 0, i: 1023, }, D { l: 14, t: 0, i: 475, }, D { l: 14, t: 0, i: 477, }, D { l: 14, t: 0, i: 478, }, D { l: 14, t: 0, i: 479, }, D { l: 14, t: 0, i: 480, }, D { l: 14, t: 0, i: 482, }, D { l: 14, t: 0, i: 483, }, D { l: 14, t: 0, i: 484, }, D { l: 14, t: 0, i: 485, }, D { l: 14, t: 0, i: 486, }, D { l: 14, t: 0, i: 487, }, D { l: 14, t: 0, i: 488, }, D { l: 14, t: 0, i: 489, }, D { l: 14, t: 0, i: 490, }, D { l: 14, t: 0, i: 491, }, D { l: 14, t: 0, i: 492, }, D { l: 14, t: 0, i: 493, }, D { l: 14, t: 0, i: 494, }, D { l: 14, t: 0, i: 495, }, D { l: 14, t: 0, i: 496, }, D { l: 14, t: 0, i: 497, }, D { l: 14, t: 0, i: 498, }, D { l: 14, t: 0, i: 499, }, D { l: 14, t: 0, i: 500, }, D { l: 14, t: 0, i: 501, }, D { l: 14, t: 0, i: 502, }, D { l: 14, t: 0, i: 503, }, D { l: 14, t: 0, i: 504, }, D { l: 14, t: 0, i: 506, }, D { l: 14, t: 0, i: 507, }, D { l: 14, t: 0, i: 508, }, D { l: 14, t: 0, i: 509, }, D { l: 14, t: 0, i: 510, }, D { l: 14, t: 0, i: 511, }, D { l: 16, t: 0, i: 113, }, D { l: 16, t: 0, i: 114, }, D { l: 16, t: 0, i: 115, }, D { l: 16, t: 0, i: 117, }, D { l: 16, t: 0, i: 118, }, D { l: 16, t: 0, i: 119, }, D { l: 16, t: 0, i: 121, }, D { l: 16, t: 0, i: 122, }, D { l: 16, t: 0, i: 123, }, D { l: 16, t: 0, i: 124, }, D { l: 16, t: 0, i: 125, }, D { l: 16, t: 0, i: 126, }, D { l: 16, t: 0, i: 127, }, D { l: 18, t: 0, i: 242, }, D { l: 18, t: 0, i: 243, }, D { l: 18, t: 0, i: 244, }, D { l: 18, t: 0, i: 245, }, D { l: 18, t: 0, i: 248, }, D { l: 18, t: 0, i: 249, }, D { l: 18, t: 0, i: 250, }, D { l: 18, t: 0, i: 251, }, D { l: 18, t: 0, i: 252, }, D { l: 18, t: 0, i: 253, }, D { l: 18, t: 0, i: 254, }, D { l: 18, t: 0, i: 255, }, D { l: 20, t: 0, i: 125, }, D { l: 20, t: 0, i: 126, }, D { l: 148, t: 0, i: 127, }, D { l: 7, t: 11, i: 1717, }, D { l: 7, t: 11, i: 1769, }, D { l: 138, t: 11, i: 546, }, D { l: 7, t: 11, i: 1127, }, D { l: 7, t: 11, i: 1572, }, D { l: 10, t: 11, i: 297, }, D { l: 10, t: 11, i: 422, }, D { l: 11, t: 11, i: 764, }, D { l: 11, t: 11, i: 810, }, D { l: 12, t: 11, i: 264, }, D { l: 13, t: 11, i: 102, }, D { l: 13, t: 11, i: 300, }, D { l: 13, t: 11, i: 484, }, D { l: 14, t: 11, i: 147, }, D { l: 14, t: 11, i: 229, }, D { l: 17, t: 11, i: 71, }, D { l: 18, t: 11, i: 118, }, D { l: 147, t: 11, i: 120, }, D { l: 6, t: 0, i: 1148, }, D { l: 134, t: 0, i: 1586, }, D { l: 132, t: 0, i: 775, }, D { l: 135, t: 10, i: 954, }, D { l: 133, t: 11, i: 864, }, D { l: 133, t: 11, i: 928, }, D { l: 138, t: 11, i: 189, }, D { l: 135, t: 10, i: 1958, }, D { l: 6, t: 10, i: 549, }, D { l: 8, t: 10, i: 34 }, D { l: 8, t: 10, i: 283, }, D { l: 9, t: 10, i: 165, }, D { l: 138, t: 10, i: 475, }, D { l: 5, t: 10, i: 652, }, D { l: 5, t: 10, i: 701, }, D { l: 135, t: 10, i: 449, }, D { l: 135, t: 11, i: 695, }, D { l: 4, t: 10, i: 655, }, D { l: 7, t: 10, i: 850, }, D { l: 17, t: 10, i: 75, }, D { l: 146, t: 10, i: 137, }, D { l: 140, t: 11, i: 682, }, D { l: 133, t: 11, i: 523, }, D { l: 8, t: 0, i: 970 }, D { l: 136, t: 10, i: 670, }, D { l: 136, t: 11, i: 555, }, D { l: 7, t: 11, i: 76 }, D { l: 8, t: 11, i: 44 }, D { l: 9, t: 11, i: 884, }, D { l: 10, t: 11, i: 580, }, D { l: 11, t: 11, i: 399, }, D { l: 11, t: 11, i: 894, }, D { l: 15, t: 11, i: 122, }, D { l: 18, t: 11, i: 144, }, D { l: 147, t: 11, i: 61, }, D { l: 6, t: 10, i: 159, }, D { l: 6, t: 10, i: 364, }, D { l: 7, t: 10, i: 516, }, D { l: 7, t: 10, i: 1439, }, D { l: 137, t: 10, i: 518, }, D { l: 4, t: 0, i: 71 }, D { l: 5, t: 0, i: 376 }, D { l: 7, t: 0, i: 119 }, D { l: 138, t: 0, i: 665, }, D { l: 141, t: 10, i: 151, }, D { l: 11, t: 0, i: 827, }, D { l: 14, t: 0, i: 34 }, D { l: 143, t: 0, i: 148, }, D { l: 133, t: 11, i: 518, }, D { l: 4, t: 0, i: 479 }, D { l: 135, t: 11, i: 1787, }, D { l: 135, t: 11, i: 1852, }, D { l: 135, t: 10, i: 993, }, D { l: 7, t: 0, i: 607 }, D { l: 136, t: 0, i: 99, }, D { l: 134, t: 0, i: 1960, }, D { l: 132, t: 0, i: 793, }, D { l: 4, t: 0, i: 41 }, D { l: 5, t: 0, i: 74 }, D { l: 7, t: 0, i: 1627, }, D { l: 11, t: 0, i: 871, }, D { l: 140, t: 0, i: 619, }, D { l: 7, t: 0, i: 94 }, D { l: 11, t: 0, i: 329, }, D { l: 11, t: 0, i: 965, }, D { l: 12, t: 0, i: 241, }, D { l: 14, t: 0, i: 354, }, D { l: 15, t: 0, i: 22 }, D { l: 148, t: 0, i: 63, }, D { l: 7, t: 10, i: 501, }, D { l: 9, t: 10, i: 111, }, D { l: 10, t: 10, i: 141, }, D { l: 11, t: 10, i: 332, }, D { l: 13, t: 10, i: 43, }, D { l: 13, t: 10, i: 429, }, D { l: 14, t: 10, i: 130, }, D { l: 14, t: 10, i: 415, }, D { l: 145, t: 10, i: 102, }, D { l: 9, t: 0, i: 209 }, D { l: 137, t: 0, i: 300, }, D { l: 134, t: 0, i: 1497, }, D { l: 138, t: 11, i: 255, }, D { l: 4, t: 11, i: 934, }, D { l: 5, t: 11, i: 138, }, D { l: 136, t: 11, i: 610, }, D { l: 133, t: 0, i: 98, }, D { l: 6, t: 0, i: 1316, }, D { l: 10, t: 11, i: 804, }, D { l: 138, t: 11, i: 832, }, D { l: 8, t: 11, i: 96 }, D { l: 9, t: 11, i: 36 }, D { l: 10, t: 11, i: 607, }, D { l: 11, t: 11, i: 423, }, D { l: 11, t: 11, i: 442, }, D { l: 12, t: 11, i: 309, }, D { l: 14, t: 11, i: 199, }, D { l: 15, t: 11, i: 90, }, D { l: 145, t: 11, i: 110, }, D { l: 132, t: 0, i: 463, }, D { l: 5, t: 10, i: 149, }, D { l: 136, t: 10, i: 233, }, D { l: 133, t: 10, i: 935, }, D { l: 4, t: 11, i: 652, }, D { l: 8, t: 11, i: 320, }, D { l: 9, t: 11, i: 13 }, D { l: 9, t: 11, i: 398, }, D { l: 9, t: 11, i: 727, }, D { l: 10, t: 11, i: 75, }, D { l: 10, t: 11, i: 184, }, D { l: 10, t: 11, i: 230, }, D { l: 10, t: 11, i: 564, }, D { l: 10, t: 11, i: 569, }, D { l: 11, t: 11, i: 973, }, D { l: 12, t: 11, i: 70, }, D { l: 12, t: 11, i: 189, }, D { l: 13, t: 11, i: 57, }, D { l: 13, t: 11, i: 257, }, D { l: 22, t: 11, i: 6 }, D { l: 150, t: 11, i: 16, }, D { l: 142, t: 0, i: 291, }, D { l: 12, t: 10, i: 582, }, D { l: 146, t: 10, i: 131, }, D { l: 136, t: 10, i: 801, }, D { l: 133, t: 0, i: 984, }, D { l: 145, t: 11, i: 116, }, D { l: 4, t: 11, i: 692, }, D { l: 133, t: 11, i: 321, }, D { l: 4, t: 0, i: 182 }, D { l: 6, t: 0, i: 205 }, D { l: 135, t: 0, i: 220, }, D { l: 4, t: 0, i: 42 }, D { l: 9, t: 0, i: 205 }, D { l: 9, t: 0, i: 786 }, D { l: 138, t: 0, i: 659, }, D { l: 6, t: 0, i: 801 }, D { l: 11, t: 11, i: 130, }, D { l: 140, t: 11, i: 609, }, D { l: 132, t: 0, i: 635, }, D { l: 5, t: 11, i: 345, }, D { l: 135, t: 11, i: 1016, }, D { l: 139, t: 0, i: 533, }, D { l: 132, t: 0, i: 371, }, D { l: 4, t: 0, i: 272 }, D { l: 135, t: 0, i: 836, }, D { l: 6, t: 0, i: 1282, }, D { l: 135, t: 11, i: 1100, }, D { l: 5, t: 0, i: 825 }, D { l: 134, t: 0, i: 1640, }, D { l: 135, t: 11, i: 1325, }, D { l: 133, t: 11, i: 673, }, D { l: 4, t: 11, i: 287, }, D { l: 133, t: 11, i: 1018, }, D { l: 135, t: 0, i: 357, }, D { l: 6, t: 0, i: 467 }, D { l: 137, t: 0, i: 879, }, D { l: 7, t: 0, i: 317 }, D { l: 135, t: 0, i: 569, }, D { l: 6, t: 0, i: 924 }, D { l: 134, t: 0, i: 1588, }, D { l: 5, t: 11, i: 34 }, D { l: 5, t: 10, i: 406, }, D { l: 10, t: 11, i: 724, }, D { l: 12, t: 11, i: 444, }, D { l: 13, t: 11, i: 354, }, D { l: 18, t: 11, i: 32, }, D { l: 23, t: 11, i: 24, }, D { l: 23, t: 11, i: 31, }, D { l: 152, t: 11, i: 5, }, D { l: 6, t: 0, i: 1795, }, D { l: 6, t: 0, i: 1835, }, D { l: 6, t: 0, i: 1836, }, D { l: 6, t: 0, i: 1856, }, D { l: 8, t: 0, i: 844 }, D { l: 8, t: 0, i: 849 }, D { l: 8, t: 0, i: 854 }, D { l: 8, t: 0, i: 870 }, D { l: 8, t: 0, i: 887 }, D { l: 10, t: 0, i: 852, }, D { l: 138, t: 0, i: 942, }, D { l: 6, t: 10, i: 69 }, D { l: 135, t: 10, i: 117, }, D { l: 137, t: 0, i: 307, }, D { l: 4, t: 0, i: 944 }, D { l: 6, t: 0, i: 1799, }, D { l: 6, t: 0, i: 1825, }, D { l: 10, t: 0, i: 848, }, D { l: 10, t: 0, i: 875, }, D { l: 10, t: 0, i: 895, }, D { l: 10, t: 0, i: 899, }, D { l: 10, t: 0, i: 902, }, D { l: 140, t: 0, i: 773, }, D { l: 11, t: 0, i: 43 }, D { l: 13, t: 0, i: 72 }, D { l: 141, t: 0, i: 142, }, D { l: 135, t: 10, i: 1830, }, D { l: 134, t: 11, i: 382, }, D { l: 4, t: 10, i: 432, }, D { l: 135, t: 10, i: 824, }, D { l: 132, t: 11, i: 329, }, D { l: 7, t: 0, i: 1820, }, D { l: 139, t: 11, i: 124, }, D { l: 133, t: 10, i: 826, }, D { l: 133, t: 0, i: 525, }, D { l: 132, t: 11, i: 906, }, D { l: 7, t: 11, i: 1940, }, D { l: 136, t: 11, i: 366, }, D { l: 138, t: 11, i: 10, }, D { l: 4, t: 11, i: 123, }, D { l: 4, t: 11, i: 649, }, D { l: 5, t: 11, i: 605, }, D { l: 7, t: 11, i: 1509, }, D { l: 136, t: 11, i: 36, }, D { l: 6, t: 0, i: 110 }, D { l: 135, t: 0, i: 1681, }, D { l: 133, t: 0, i: 493, }, D { l: 133, t: 11, i: 767, }, D { l: 4, t: 0, i: 174 }, D { l: 135, t: 0, i: 911, }, D { l: 138, t: 11, i: 786, }, D { l: 8, t: 0, i: 417 }, D { l: 137, t: 0, i: 782, }, D { l: 133, t: 10, i: 1000, }, D { l: 7, t: 0, i: 733 }, D { l: 137, t: 0, i: 583, }, D { l: 4, t: 10, i: 297, }, D { l: 6, t: 10, i: 529, }, D { l: 7, t: 10, i: 152, }, D { l: 7, t: 10, i: 713, }, D { l: 7, t: 10, i: 1845, }, D { l: 8, t: 10, i: 710, }, D { l: 8, t: 10, i: 717, }, D { l: 12, t: 10, i: 639, }, D { l: 140, t: 10, i: 685, }, D { l: 4, t: 0, i: 32 }, D { l: 5, t: 0, i: 215 }, D { l: 6, t: 0, i: 269 }, D { l: 7, t: 0, i: 1782, }, D { l: 7, t: 0, i: 1892, }, D { l: 10, t: 0, i: 16 }, D { l: 11, t: 0, i: 822, }, D { l: 11, t: 0, i: 954, }, D { l: 141, t: 0, i: 481, }, D { l: 4, t: 11, i: 273, }, D { l: 5, t: 11, i: 658, }, D { l: 133, t: 11, i: 995, }, D { l: 136, t: 0, i: 477, }, D { l: 134, t: 11, i: 72, }, D { l: 135, t: 11, i: 1345, }, D { l: 5, t: 0, i: 308 }, D { l: 7, t: 0, i: 1088, }, D { l: 4, t: 10, i: 520, }, D { l: 135, t: 10, i: 575, }, D { l: 133, t: 11, i: 589, }, D { l: 5, t: 0, i: 126 }, D { l: 8, t: 0, i: 297 }, D { l: 9, t: 0, i: 366 }, D { l: 140, t: 0, i: 374, }, D { l: 7, t: 0, i: 1551, }, D { l: 139, t: 0, i: 361, }, D { l: 5, t: 11, i: 117, }, D { l: 6, t: 11, i: 514, }, D { l: 6, t: 11, i: 541, }, D { l: 7, t: 11, i: 1164, }, D { l: 7, t: 11, i: 1436, }, D { l: 8, t: 11, i: 220, }, D { l: 8, t: 11, i: 648, }, D { l: 10, t: 11, i: 688, }, D { l: 139, t: 11, i: 560, }, D { l: 133, t: 11, i: 686, }, D { l: 4, t: 0, i: 946 }, D { l: 6, t: 0, i: 1807, }, D { l: 8, t: 0, i: 871 }, D { l: 10, t: 0, i: 854, }, D { l: 10, t: 0, i: 870, }, D { l: 10, t: 0, i: 888, }, D { l: 10, t: 0, i: 897, }, D { l: 10, t: 0, i: 920, }, D { l: 12, t: 0, i: 722, }, D { l: 12, t: 0, i: 761, }, D { l: 12, t: 0, i: 763, }, D { l: 12, t: 0, i: 764, }, D { l: 14, t: 0, i: 454, }, D { l: 14, t: 0, i: 465, }, D { l: 16, t: 0, i: 107, }, D { l: 18, t: 0, i: 167, }, D { l: 18, t: 0, i: 168, }, D { l: 146, t: 0, i: 172, }, D { l: 132, t: 0, i: 175, }, D { l: 135, t: 0, i: 1307, }, D { l: 132, t: 0, i: 685, }, D { l: 135, t: 11, i: 1834, }, D { l: 133, t: 0, i: 797, }, D { l: 6, t: 0, i: 745 }, D { l: 6, t: 0, i: 858 }, D { l: 134, t: 0, i: 963, }, D { l: 133, t: 0, i: 565, }, D { l: 5, t: 10, i: 397, }, D { l: 6, t: 10, i: 154, }, D { l: 7, t: 11, i: 196, }, D { l: 7, t: 10, i: 676, }, D { l: 8, t: 10, i: 443, }, D { l: 8, t: 10, i: 609, }, D { l: 9, t: 10, i: 24 }, D { l: 9, t: 10, i: 325, }, D { l: 10, t: 10, i: 35, }, D { l: 10, t: 11, i: 765, }, D { l: 11, t: 11, i: 347, }, D { l: 11, t: 10, i: 535, }, D { l: 11, t: 11, i: 552, }, D { l: 11, t: 11, i: 576, }, D { l: 11, t: 10, i: 672, }, D { l: 11, t: 11, i: 790, }, D { l: 11, t: 10, i: 1018, }, D { l: 12, t: 11, i: 263, }, D { l: 12, t: 10, i: 637, }, D { l: 13, t: 11, i: 246, }, D { l: 13, t: 11, i: 270, }, D { l: 13, t: 11, i: 395, }, D { l: 14, t: 11, i: 74, }, D { l: 14, t: 11, i: 176, }, D { l: 14, t: 11, i: 190, }, D { l: 14, t: 11, i: 398, }, D { l: 14, t: 11, i: 412, }, D { l: 15, t: 11, i: 32, }, D { l: 15, t: 11, i: 63, }, D { l: 16, t: 10, i: 30, }, D { l: 16, t: 11, i: 88, }, D { l: 147, t: 11, i: 105, }, D { l: 13, t: 11, i: 84, }, D { l: 141, t: 11, i: 122, }, D { l: 4, t: 0, i: 252 }, D { l: 7, t: 0, i: 1068, }, D { l: 10, t: 0, i: 434, }, D { l: 11, t: 0, i: 228, }, D { l: 11, t: 0, i: 426, }, D { l: 13, t: 0, i: 231, }, D { l: 18, t: 0, i: 106, }, D { l: 148, t: 0, i: 87, }, D { l: 137, t: 0, i: 826, }, D { l: 4, t: 11, i: 589, }, D { l: 139, t: 11, i: 282, }, D { l: 5, t: 11, i: 381, }, D { l: 135, t: 11, i: 1792, }, D { l: 132, t: 0, i: 791, }, D { l: 5, t: 0, i: 231 }, D { l: 10, t: 0, i: 509, }, D { l: 133, t: 10, i: 981, }, D { l: 7, t: 0, i: 601 }, D { l: 9, t: 0, i: 277 }, D { l: 9, t: 0, i: 674 }, D { l: 10, t: 0, i: 178, }, D { l: 10, t: 0, i: 418, }, D { l: 10, t: 0, i: 571, }, D { l: 11, t: 0, i: 531, }, D { l: 12, t: 0, i: 113, }, D { l: 12, t: 0, i: 475, }, D { l: 13, t: 0, i: 99 }, D { l: 142, t: 0, i: 428, }, D { l: 4, t: 10, i: 56 }, D { l: 7, t: 11, i: 616, }, D { l: 7, t: 10, i: 1791, }, D { l: 8, t: 10, i: 607, }, D { l: 8, t: 10, i: 651, }, D { l: 10, t: 11, i: 413, }, D { l: 11, t: 10, i: 465, }, D { l: 11, t: 10, i: 835, }, D { l: 12, t: 10, i: 337, }, D { l: 141, t: 10, i: 480, }, D { l: 7, t: 0, i: 1591, }, D { l: 144, t: 0, i: 43, }, D { l: 9, t: 10, i: 158, }, D { l: 138, t: 10, i: 411, }, D { l: 135, t: 0, i: 1683, }, D { l: 8, t: 0, i: 289 }, D { l: 11, t: 0, i: 45 }, D { l: 12, t: 0, i: 278, }, D { l: 140, t: 0, i: 537, }, D { l: 6, t: 11, i: 120, }, D { l: 7, t: 11, i: 1188, }, D { l: 7, t: 11, i: 1710, }, D { l: 8, t: 11, i: 286, }, D { l: 9, t: 11, i: 667, }, D { l: 11, t: 11, i: 592, }, D { l: 139, t: 11, i: 730, }, D { l: 136, t: 10, i: 617, }, D { l: 135, t: 0, i: 1120, }, D { l: 135, t: 11, i: 1146, }, D { l: 139, t: 10, i: 563, }, D { l: 4, t: 11, i: 352, }, D { l: 4, t: 10, i: 369, }, D { l: 135, t: 11, i: 687, }, D { l: 143, t: 11, i: 38, }, D { l: 4, t: 0, i: 399 }, D { l: 5, t: 0, i: 119 }, D { l: 5, t: 0, i: 494 }, D { l: 7, t: 0, i: 751 }, D { l: 9, t: 0, i: 556 }, D { l: 14, t: 11, i: 179, }, D { l: 15, t: 11, i: 151, }, D { l: 150, t: 11, i: 11, }, D { l: 4, t: 11, i: 192, }, D { l: 5, t: 11, i: 49 }, D { l: 6, t: 11, i: 200, }, D { l: 6, t: 11, i: 293, }, D { l: 6, t: 11, i: 1696, }, D { l: 135, t: 11, i: 488, }, D { l: 4, t: 0, i: 398 }, D { l: 133, t: 0, i: 660, }, D { l: 7, t: 0, i: 1030, }, D { l: 134, t: 10, i: 622, }, D { l: 135, t: 11, i: 595, }, D { l: 141, t: 0, i: 168, }, D { l: 132, t: 11, i: 147, }, D { l: 7, t: 0, i: 973 }, D { l: 10, t: 10, i: 624, }, D { l: 142, t: 10, i: 279, }, D { l: 132, t: 10, i: 363, }, D { l: 132, t: 0, i: 642, }, D { l: 133, t: 11, i: 934, }, D { l: 134, t: 0, i: 1615, }, D { l: 7, t: 11, i: 505, }, D { l: 135, t: 11, i: 523, }, D { l: 7, t: 0, i: 594 }, D { l: 7, t: 0, i: 851 }, D { l: 7, t: 0, i: 1858, }, D { l: 9, t: 0, i: 411 }, D { l: 9, t: 0, i: 574 }, D { l: 9, t: 0, i: 666 }, D { l: 9, t: 0, i: 737 }, D { l: 10, t: 0, i: 346, }, D { l: 10, t: 0, i: 712, }, D { l: 11, t: 0, i: 246, }, D { l: 11, t: 0, i: 432, }, D { l: 11, t: 0, i: 517, }, D { l: 11, t: 0, i: 647, }, D { l: 11, t: 0, i: 679, }, D { l: 11, t: 0, i: 727, }, D { l: 12, t: 0, i: 304, }, D { l: 12, t: 0, i: 305, }, D { l: 12, t: 0, i: 323, }, D { l: 12, t: 0, i: 483, }, D { l: 12, t: 0, i: 572, }, D { l: 12, t: 0, i: 593, }, D { l: 12, t: 0, i: 602, }, D { l: 13, t: 0, i: 95 }, D { l: 13, t: 0, i: 101, }, D { l: 13, t: 0, i: 171, }, D { l: 13, t: 0, i: 315, }, D { l: 13, t: 0, i: 378, }, D { l: 13, t: 0, i: 425, }, D { l: 13, t: 0, i: 475, }, D { l: 14, t: 0, i: 63 }, D { l: 14, t: 0, i: 380, }, D { l: 14, t: 0, i: 384, }, D { l: 15, t: 0, i: 133, }, D { l: 18, t: 0, i: 112, }, D { l: 148, t: 0, i: 72, }, D { l: 135, t: 0, i: 1093, }, D { l: 132, t: 0, i: 679, }, D { l: 8, t: 0, i: 913 }, D { l: 10, t: 0, i: 903, }, D { l: 10, t: 0, i: 915, }, D { l: 12, t: 0, i: 648, }, D { l: 12, t: 0, i: 649, }, D { l: 14, t: 0, i: 455, }, D { l: 16, t: 0, i: 112, }, D { l: 138, t: 11, i: 438, }, D { l: 137, t: 0, i: 203, }, D { l: 134, t: 10, i: 292, }, D { l: 134, t: 0, i: 1492, }, D { l: 7, t: 0, i: 1374, }, D { l: 8, t: 0, i: 540 }, D { l: 5, t: 10, i: 177, }, D { l: 6, t: 10, i: 616, }, D { l: 7, t: 10, i: 827, }, D { l: 9, t: 10, i: 525, }, D { l: 138, t: 10, i: 656, }, D { l: 135, t: 0, i: 1486, }, D { l: 9, t: 0, i: 714 }, D { l: 138, t: 10, i: 31, }, D { l: 136, t: 0, i: 825, }, D { l: 134, t: 0, i: 1511, }, D { l: 132, t: 11, i: 637, }, D { l: 134, t: 0, i: 952, }, D { l: 4, t: 10, i: 161, }, D { l: 133, t: 10, i: 631, }, D { l: 5, t: 0, i: 143 }, D { l: 5, t: 0, i: 769 }, D { l: 6, t: 0, i: 1760, }, D { l: 7, t: 0, i: 682 }, D { l: 7, t: 0, i: 1992, }, D { l: 136, t: 0, i: 736, }, D { l: 132, t: 0, i: 700, }, D { l: 134, t: 0, i: 1540, }, D { l: 132, t: 11, i: 777, }, D { l: 9, t: 11, i: 867, }, D { l: 138, t: 11, i: 837, }, D { l: 7, t: 0, i: 1557, }, D { l: 135, t: 10, i: 1684, }, D { l: 133, t: 0, i: 860, }, D { l: 6, t: 0, i: 422 }, D { l: 7, t: 0, i: 0 }, D { l: 7, t: 0, i: 1544, }, D { l: 9, t: 0, i: 605 }, D { l: 11, t: 0, i: 990, }, D { l: 12, t: 0, i: 235, }, D { l: 12, t: 0, i: 453, }, D { l: 13, t: 0, i: 47 }, D { l: 13, t: 0, i: 266, }, D { l: 9, t: 10, i: 469, }, D { l: 9, t: 10, i: 709, }, D { l: 12, t: 10, i: 512, }, D { l: 14, t: 10, i: 65, }, D { l: 145, t: 10, i: 12, }, D { l: 11, t: 0, i: 807, }, D { l: 10, t: 10, i: 229, }, D { l: 11, t: 10, i: 73, }, D { l: 139, t: 10, i: 376, }, D { l: 6, t: 11, i: 170, }, D { l: 7, t: 11, i: 1080, }, D { l: 8, t: 11, i: 395, }, D { l: 8, t: 11, i: 487, }, D { l: 11, t: 11, i: 125, }, D { l: 141, t: 11, i: 147, }, D { l: 5, t: 0, i: 515 }, D { l: 137, t: 0, i: 131, }, D { l: 7, t: 0, i: 1605, }, D { l: 11, t: 0, i: 962, }, D { l: 146, t: 0, i: 139, }, D { l: 132, t: 0, i: 646, }, D { l: 4, t: 0, i: 396 }, D { l: 7, t: 0, i: 728 }, D { l: 9, t: 0, i: 117 }, D { l: 13, t: 0, i: 202, }, D { l: 148, t: 0, i: 51, }, D { l: 6, t: 0, i: 121 }, D { l: 6, t: 0, i: 124 }, D { l: 6, t: 0, i: 357 }, D { l: 7, t: 0, i: 1138, }, D { l: 7, t: 0, i: 1295, }, D { l: 8, t: 0, i: 162 }, D { l: 8, t: 0, i: 508 }, D { l: 11, t: 0, i: 655, }, D { l: 4, t: 11, i: 535, }, D { l: 6, t: 10, i: 558, }, D { l: 7, t: 10, i: 651, }, D { l: 8, t: 11, i: 618, }, D { l: 9, t: 10, i: 0 }, D { l: 10, t: 10, i: 34, }, D { l: 139, t: 10, i: 1008, }, D { l: 135, t: 11, i: 1245, }, D { l: 138, t: 0, i: 357, }, D { l: 150, t: 11, i: 23, }, D { l: 133, t: 0, i: 237, }, D { l: 135, t: 0, i: 1784, }, D { l: 7, t: 10, i: 1832, }, D { l: 138, t: 10, i: 374, }, D { l: 132, t: 0, i: 713, }, D { l: 132, t: 11, i: 46, }, D { l: 6, t: 0, i: 1536, }, D { l: 10, t: 0, i: 348, }, D { l: 5, t: 11, i: 811, }, D { l: 6, t: 11, i: 1679, }, D { l: 6, t: 11, i: 1714, }, D { l: 135, t: 11, i: 2032, }, D { l: 11, t: 11, i: 182, }, D { l: 142, t: 11, i: 195, }, D { l: 6, t: 0, i: 523 }, D { l: 7, t: 0, i: 738 }, D { l: 7, t: 10, i: 771, }, D { l: 7, t: 10, i: 1731, }, D { l: 9, t: 10, i: 405, }, D { l: 138, t: 10, i: 421, }, D { l: 7, t: 11, i: 1458, }, D { l: 9, t: 11, i: 407, }, D { l: 139, t: 11, i: 15, }, D { l: 6, t: 11, i: 34 }, D { l: 7, t: 11, i: 69 }, D { l: 7, t: 11, i: 640, }, D { l: 7, t: 11, i: 1089, }, D { l: 8, t: 11, i: 708, }, D { l: 8, t: 11, i: 721, }, D { l: 9, t: 11, i: 363, }, D { l: 9, t: 11, i: 643, }, D { l: 10, t: 11, i: 628, }, D { l: 148, t: 11, i: 98, }, D { l: 133, t: 0, i: 434, }, D { l: 135, t: 0, i: 1877, }, D { l: 7, t: 0, i: 571 }, D { l: 138, t: 0, i: 366, }, D { l: 5, t: 10, i: 881, }, D { l: 133, t: 10, i: 885, }, D { l: 9, t: 0, i: 513 }, D { l: 10, t: 0, i: 25 }, D { l: 10, t: 0, i: 39 }, D { l: 12, t: 0, i: 122, }, D { l: 140, t: 0, i: 187, }, D { l: 132, t: 0, i: 580, }, D { l: 5, t: 10, i: 142, }, D { l: 134, t: 10, i: 546, }, D { l: 132, t: 11, i: 462, }, D { l: 137, t: 0, i: 873, }, D { l: 5, t: 10, i: 466, }, D { l: 11, t: 10, i: 571, }, D { l: 12, t: 10, i: 198, }, D { l: 13, t: 10, i: 283, }, D { l: 14, t: 10, i: 186, }, D { l: 15, t: 10, i: 21, }, D { l: 143, t: 10, i: 103, }, D { l: 7, t: 0, i: 171 }, D { l: 4, t: 10, i: 185, }, D { l: 5, t: 10, i: 257, }, D { l: 5, t: 10, i: 839, }, D { l: 5, t: 10, i: 936, }, D { l: 9, t: 10, i: 399, }, D { l: 10, t: 10, i: 258, }, D { l: 10, t: 10, i: 395, }, D { l: 10, t: 10, i: 734, }, D { l: 11, t: 10, i: 1014, }, D { l: 12, t: 10, i: 23, }, D { l: 13, t: 10, i: 350, }, D { l: 14, t: 10, i: 150, }, D { l: 147, t: 10, i: 6, }, D { l: 134, t: 0, i: 625, }, D { l: 7, t: 0, i: 107 }, D { l: 7, t: 0, i: 838 }, D { l: 8, t: 0, i: 550 }, D { l: 138, t: 0, i: 401, }, D { l: 5, t: 11, i: 73 }, D { l: 6, t: 11, i: 23 }, D { l: 134, t: 11, i: 338, }, D { l: 4, t: 0, i: 943 }, D { l: 6, t: 0, i: 1850, }, D { l: 12, t: 0, i: 713, }, D { l: 142, t: 0, i: 434, }, D { l: 11, t: 0, i: 588, }, D { l: 11, t: 0, i: 864, }, D { l: 11, t: 0, i: 936, }, D { l: 11, t: 0, i: 968, }, D { l: 12, t: 0, i: 73 }, D { l: 12, t: 0, i: 343, }, D { l: 12, t: 0, i: 394, }, D { l: 13, t: 0, i: 275, }, D { l: 14, t: 0, i: 257, }, D { l: 15, t: 0, i: 160, }, D { l: 7, t: 10, i: 404, }, D { l: 7, t: 10, i: 1377, }, D { l: 7, t: 10, i: 1430, }, D { l: 7, t: 10, i: 2017, }, D { l: 8, t: 10, i: 149, }, D { l: 8, t: 10, i: 239, }, D { l: 8, t: 10, i: 512, }, D { l: 8, t: 10, i: 793, }, D { l: 8, t: 10, i: 818, }, D { l: 9, t: 10, i: 474, }, D { l: 9, t: 10, i: 595, }, D { l: 10, t: 10, i: 122, }, D { l: 10, t: 10, i: 565, }, D { l: 10, t: 10, i: 649, }, D { l: 10, t: 10, i: 783, }, D { l: 11, t: 10, i: 239, }, D { l: 11, t: 10, i: 295, }, D { l: 11, t: 10, i: 447, }, D { l: 11, t: 10, i: 528, }, D { l: 11, t: 10, i: 639, }, D { l: 11, t: 10, i: 800, }, D { l: 12, t: 10, i: 25, }, D { l: 12, t: 10, i: 157, }, D { l: 12, t: 10, i: 316, }, D { l: 12, t: 10, i: 390, }, D { l: 12, t: 10, i: 391, }, D { l: 12, t: 10, i: 395, }, D { l: 12, t: 10, i: 478, }, D { l: 12, t: 10, i: 503, }, D { l: 12, t: 10, i: 592, }, D { l: 12, t: 10, i: 680, }, D { l: 13, t: 10, i: 50, }, D { l: 13, t: 10, i: 53, }, D { l: 13, t: 10, i: 132, }, D { l: 13, t: 10, i: 198, }, D { l: 13, t: 10, i: 322, }, D { l: 13, t: 10, i: 415, }, D { l: 13, t: 10, i: 511, }, D { l: 14, t: 10, i: 71, }, D { l: 14, t: 10, i: 395, }, D { l: 15, t: 10, i: 71, }, D { l: 15, t: 10, i: 136, }, D { l: 17, t: 10, i: 123, }, D { l: 18, t: 10, i: 93, }, D { l: 147, t: 10, i: 58, }, D { l: 133, t: 0, i: 768, }, D { l: 11, t: 0, i: 103, }, D { l: 142, t: 0, i: 0 }, D { l: 136, t: 10, i: 712, }, D { l: 132, t: 0, i: 799, }, D { l: 132, t: 0, i: 894, }, D { l: 7, t: 11, i: 725, }, D { l: 8, t: 11, i: 498, }, D { l: 139, t: 11, i: 268, }, D { l: 135, t: 11, i: 1798, }, D { l: 135, t: 11, i: 773, }, D { l: 141, t: 11, i: 360, }, D { l: 4, t: 10, i: 377, }, D { l: 152, t: 10, i: 13, }, D { l: 135, t: 0, i: 1673, }, D { l: 132, t: 11, i: 583, }, D { l: 134, t: 0, i: 1052, }, D { l: 133, t: 11, i: 220, }, D { l: 140, t: 11, i: 69, }, D { l: 132, t: 11, i: 544, }, D { l: 4, t: 10, i: 180, }, D { l: 135, t: 10, i: 1906, }, D { l: 134, t: 0, i: 272, }, D { l: 4, t: 0, i: 441 }, D { l: 134, t: 0, i: 1421, }, D { l: 4, t: 0, i: 9 }, D { l: 5, t: 0, i: 128 }, D { l: 7, t: 0, i: 368 }, D { l: 11, t: 0, i: 480, }, D { l: 148, t: 0, i: 3 }, D { l: 5, t: 11, i: 176, }, D { l: 6, t: 11, i: 437, }, D { l: 6, t: 11, i: 564, }, D { l: 11, t: 11, i: 181, }, D { l: 141, t: 11, i: 183, }, D { l: 132, t: 10, i: 491, }, D { l: 7, t: 0, i: 1182, }, D { l: 141, t: 11, i: 67, }, D { l: 6, t: 0, i: 1346, }, D { l: 4, t: 10, i: 171, }, D { l: 138, t: 10, i: 234, }, D { l: 4, t: 10, i: 586, }, D { l: 7, t: 10, i: 1186, }, D { l: 138, t: 10, i: 631, }, D { l: 136, t: 0, i: 682, }, D { l: 134, t: 0, i: 1004, }, D { l: 15, t: 0, i: 24 }, D { l: 143, t: 11, i: 24, }, D { l: 134, t: 0, i: 968, }, D { l: 4, t: 0, i: 2 }, D { l: 6, t: 0, i: 742 }, D { l: 6, t: 0, i: 793 }, D { l: 7, t: 0, i: 545 }, D { l: 7, t: 0, i: 894 }, D { l: 9, t: 10, i: 931, }, D { l: 10, t: 10, i: 334, }, D { l: 148, t: 10, i: 71, }, D { l: 136, t: 11, i: 600, }, D { l: 133, t: 10, i: 765, }, D { l: 9, t: 0, i: 769 }, D { l: 140, t: 0, i: 185, }, D { l: 4, t: 11, i: 790, }, D { l: 5, t: 11, i: 273, }, D { l: 134, t: 11, i: 394, }, D { l: 7, t: 0, i: 474 }, D { l: 137, t: 0, i: 578, }, D { l: 4, t: 11, i: 135, }, D { l: 6, t: 11, i: 127, }, D { l: 7, t: 11, i: 1185, }, D { l: 7, t: 11, i: 1511, }, D { l: 8, t: 11, i: 613, }, D { l: 11, t: 11, i: 5 }, D { l: 12, t: 11, i: 133, }, D { l: 12, t: 11, i: 495, }, D { l: 12, t: 11, i: 586, }, D { l: 14, t: 11, i: 385, }, D { l: 15, t: 11, i: 118, }, D { l: 17, t: 11, i: 20, }, D { l: 146, t: 11, i: 98, }, D { l: 133, t: 10, i: 424, }, D { l: 5, t: 0, i: 530 }, D { l: 142, t: 0, i: 113, }, D { l: 6, t: 11, i: 230, }, D { l: 7, t: 11, i: 961, }, D { l: 7, t: 11, i: 1085, }, D { l: 136, t: 11, i: 462, }, D { l: 7, t: 11, i: 1954, }, D { l: 137, t: 11, i: 636, }, D { l: 136, t: 10, i: 714, }, D { l: 149, t: 11, i: 6, }, D { l: 135, t: 10, i: 685, }, D { l: 9, t: 10, i: 420, }, D { l: 10, t: 10, i: 269, }, D { l: 10, t: 10, i: 285, }, D { l: 10, t: 10, i: 576, }, D { l: 11, t: 10, i: 397, }, D { l: 13, t: 10, i: 175, }, D { l: 145, t: 10, i: 90, }, D { l: 132, t: 10, i: 429, }, D { l: 5, t: 0, i: 556 }, D { l: 5, t: 11, i: 162, }, D { l: 136, t: 11, i: 68, }, D { l: 132, t: 11, i: 654, }, D { l: 4, t: 11, i: 156, }, D { l: 7, t: 11, i: 998, }, D { l: 7, t: 11, i: 1045, }, D { l: 7, t: 11, i: 1860, }, D { l: 9, t: 11, i: 48 }, D { l: 9, t: 11, i: 692, }, D { l: 11, t: 11, i: 419, }, D { l: 139, t: 11, i: 602, }, D { l: 6, t: 0, i: 1317, }, D { l: 8, t: 0, i: 16 }, D { l: 9, t: 0, i: 825 }, D { l: 12, t: 0, i: 568, }, D { l: 7, t: 11, i: 1276, }, D { l: 8, t: 11, i: 474, }, D { l: 137, t: 11, i: 652, }, D { l: 18, t: 0, i: 97 }, D { l: 7, t: 10, i: 18 }, D { l: 7, t: 10, i: 699, }, D { l: 7, t: 10, i: 1966, }, D { l: 8, t: 10, i: 752, }, D { l: 9, t: 10, i: 273, }, D { l: 9, t: 10, i: 412, }, D { l: 9, t: 10, i: 703, }, D { l: 10, t: 10, i: 71, }, D { l: 10, t: 10, i: 427, }, D { l: 138, t: 10, i: 508, }, D { l: 10, t: 0, i: 703, }, D { l: 7, t: 11, i: 1454, }, D { l: 138, t: 11, i: 703, }, D { l: 4, t: 10, i: 53 }, D { l: 5, t: 10, i: 186, }, D { l: 135, t: 10, i: 752, }, D { l: 134, t: 0, i: 892, }, D { l: 134, t: 0, i: 1571, }, D { l: 8, t: 10, i: 575, }, D { l: 10, t: 10, i: 289, }, D { l: 139, t: 10, i: 319, }, D { l: 6, t: 0, i: 186 }, D { l: 137, t: 0, i: 426, }, D { l: 134, t: 0, i: 1101, }, D { l: 132, t: 10, i: 675, }, D { l: 132, t: 0, i: 585, }, D { l: 6, t: 0, i: 1870, }, D { l: 137, t: 0, i: 937, }, D { l: 152, t: 11, i: 10, }, D { l: 9, t: 11, i: 197, }, D { l: 10, t: 11, i: 300, }, D { l: 12, t: 11, i: 473, }, D { l: 13, t: 11, i: 90, }, D { l: 141, t: 11, i: 405, }, D { l: 4, t: 0, i: 93 }, D { l: 5, t: 0, i: 252 }, D { l: 6, t: 0, i: 229 }, D { l: 7, t: 0, i: 291 }, D { l: 9, t: 0, i: 550 }, D { l: 139, t: 0, i: 644, }, D { l: 137, t: 0, i: 749, }, D { l: 9, t: 0, i: 162 }, D { l: 6, t: 10, i: 209, }, D { l: 8, t: 10, i: 468, }, D { l: 9, t: 10, i: 210, }, D { l: 11, t: 10, i: 36, }, D { l: 12, t: 10, i: 28, }, D { l: 12, t: 10, i: 630, }, D { l: 13, t: 10, i: 21, }, D { l: 13, t: 10, i: 349, }, D { l: 14, t: 10, i: 7 }, D { l: 145, t: 10, i: 13, }, D { l: 132, t: 0, i: 381, }, D { l: 132, t: 11, i: 606, }, D { l: 4, t: 10, i: 342, }, D { l: 135, t: 10, i: 1179, }, D { l: 7, t: 11, i: 1587, }, D { l: 7, t: 11, i: 1707, }, D { l: 10, t: 11, i: 528, }, D { l: 139, t: 11, i: 504, }, D { l: 12, t: 11, i: 39, }, D { l: 13, t: 11, i: 265, }, D { l: 141, t: 11, i: 439, }, D { l: 4, t: 10, i: 928, }, D { l: 133, t: 10, i: 910, }, D { l: 7, t: 10, i: 1838, }, D { l: 7, t: 11, i: 1978, }, D { l: 136, t: 11, i: 676, }, D { l: 6, t: 0, i: 762 }, D { l: 6, t: 0, i: 796 }, D { l: 134, t: 0, i: 956, }, D { l: 4, t: 10, i: 318, }, D { l: 4, t: 10, i: 496, }, D { l: 7, t: 10, i: 856, }, D { l: 139, t: 10, i: 654, }, D { l: 137, t: 11, i: 242, }, D { l: 4, t: 11, i: 361, }, D { l: 133, t: 11, i: 315, }, D { l: 132, t: 11, i: 461, }, D { l: 132, t: 11, i: 472, }, D { l: 132, t: 0, i: 857, }, D { l: 5, t: 0, i: 21 }, D { l: 6, t: 0, i: 77 }, D { l: 6, t: 0, i: 157 }, D { l: 7, t: 0, i: 974 }, D { l: 7, t: 0, i: 1301, }, D { l: 7, t: 0, i: 1339, }, D { l: 7, t: 0, i: 1490, }, D { l: 7, t: 0, i: 1873, }, D { l: 9, t: 0, i: 628 }, D { l: 7, t: 10, i: 915, }, D { l: 8, t: 10, i: 247, }, D { l: 147, t: 10, i: 0, }, D { l: 4, t: 10, i: 202, }, D { l: 5, t: 10, i: 382, }, D { l: 6, t: 10, i: 454, }, D { l: 7, t: 10, i: 936, }, D { l: 7, t: 10, i: 1803, }, D { l: 8, t: 10, i: 758, }, D { l: 9, t: 10, i: 375, }, D { l: 9, t: 10, i: 895, }, D { l: 10, t: 10, i: 743, }, D { l: 10, t: 10, i: 792, }, D { l: 11, t: 10, i: 978, }, D { l: 11, t: 10, i: 1012, }, D { l: 142, t: 10, i: 109, }, D { l: 7, t: 11, i: 617, }, D { l: 10, t: 11, i: 498, }, D { l: 11, t: 11, i: 501, }, D { l: 12, t: 11, i: 16, }, D { l: 140, t: 11, i: 150, }, D { l: 7, t: 10, i: 1150, }, D { l: 7, t: 10, i: 1425, }, D { l: 7, t: 10, i: 1453, }, D { l: 10, t: 11, i: 747, }, D { l: 140, t: 10, i: 513, }, D { l: 133, t: 11, i: 155, }, D { l: 11, t: 0, i: 919, }, D { l: 141, t: 0, i: 409, }, D { l: 138, t: 10, i: 791, }, D { l: 10, t: 0, i: 633, }, D { l: 139, t: 11, i: 729, }, D { l: 7, t: 11, i: 163, }, D { l: 8, t: 11, i: 319, }, D { l: 9, t: 11, i: 402, }, D { l: 10, t: 11, i: 24, }, D { l: 10, t: 11, i: 681, }, D { l: 11, t: 11, i: 200, }, D { l: 11, t: 11, i: 567, }, D { l: 12, t: 11, i: 253, }, D { l: 12, t: 11, i: 410, }, D { l: 142, t: 11, i: 219, }, D { l: 5, t: 11, i: 475, }, D { l: 7, t: 11, i: 1780, }, D { l: 9, t: 11, i: 230, }, D { l: 11, t: 11, i: 297, }, D { l: 11, t: 11, i: 558, }, D { l: 14, t: 11, i: 322, }, D { l: 147, t: 11, i: 76, }, D { l: 7, t: 0, i: 332 }, D { l: 6, t: 10, i: 445, }, D { l: 137, t: 10, i: 909, }, D { l: 135, t: 11, i: 1956, }, D { l: 136, t: 11, i: 274, }, D { l: 134, t: 10, i: 578, }, D { l: 135, t: 0, i: 1489, }, D { l: 135, t: 11, i: 1848, }, D { l: 5, t: 11, i: 944, }, D { l: 134, t: 11, i: 1769, }, D { l: 132, t: 11, i: 144, }, D { l: 136, t: 10, i: 766, }, D { l: 4, t: 0, i: 832 }, D { l: 135, t: 10, i: 541, }, D { l: 8, t: 0, i: 398 }, D { l: 9, t: 0, i: 681 }, D { l: 139, t: 0, i: 632, }, D { l: 136, t: 0, i: 645, }, D { l: 9, t: 0, i: 791 }, D { l: 10, t: 0, i: 93 }, D { l: 16, t: 0, i: 13 }, D { l: 17, t: 0, i: 23 }, D { l: 18, t: 0, i: 135, }, D { l: 19, t: 0, i: 12 }, D { l: 20, t: 0, i: 1 }, D { l: 20, t: 0, i: 12 }, D { l: 148, t: 0, i: 14, }, D { l: 6, t: 11, i: 247, }, D { l: 137, t: 11, i: 555, }, D { l: 134, t: 0, i: 20, }, D { l: 132, t: 0, i: 800, }, D { l: 135, t: 0, i: 1841, }, D { l: 139, t: 10, i: 983, }, D { l: 137, t: 10, i: 768, }, D { l: 132, t: 10, i: 584, }, D { l: 141, t: 11, i: 51, }, D { l: 6, t: 0, i: 1993, }, D { l: 4, t: 11, i: 620, }, D { l: 138, t: 11, i: 280, }, D { l: 136, t: 0, i: 769, }, D { l: 11, t: 0, i: 290, }, D { l: 11, t: 0, i: 665, }, D { l: 7, t: 11, i: 1810, }, D { l: 11, t: 11, i: 866, }, D { l: 12, t: 11, i: 103, }, D { l: 13, t: 11, i: 495, }, D { l: 17, t: 11, i: 67, }, D { l: 147, t: 11, i: 74, }, D { l: 134, t: 0, i: 1426, }, D { l: 139, t: 0, i: 60, }, D { l: 4, t: 10, i: 326, }, D { l: 135, t: 10, i: 1770, }, D { l: 7, t: 0, i: 1874, }, D { l: 9, t: 0, i: 641 }, D { l: 132, t: 10, i: 226, }, D { l: 6, t: 0, i: 644 }, D { l: 5, t: 10, i: 426, }, D { l: 8, t: 10, i: 30 }, D { l: 9, t: 10, i: 2 }, D { l: 11, t: 10, i: 549, }, D { l: 147, t: 10, i: 122, }, D { l: 5, t: 11, i: 428, }, D { l: 138, t: 11, i: 442, }, D { l: 135, t: 11, i: 1871, }, D { l: 135, t: 0, i: 1757, }, D { l: 147, t: 10, i: 117, }, D { l: 135, t: 0, i: 937, }, D { l: 135, t: 0, i: 1652, }, D { l: 6, t: 0, i: 654 }, D { l: 134, t: 0, i: 1476, }, D { l: 133, t: 11, i: 99, }, D { l: 135, t: 0, i: 527, }, D { l: 132, t: 10, i: 345, }, D { l: 4, t: 10, i: 385, }, D { l: 4, t: 11, i: 397, }, D { l: 7, t: 10, i: 265, }, D { l: 135, t: 10, i: 587, }, D { l: 4, t: 0, i: 579 }, D { l: 5, t: 0, i: 226 }, D { l: 5, t: 0, i: 323 }, D { l: 135, t: 0, i: 960, }, D { l: 134, t: 0, i: 1486, }, D { l: 8, t: 11, i: 502, }, D { l: 144, t: 11, i: 9, }, D { l: 4, t: 10, i: 347, }, D { l: 5, t: 10, i: 423, }, D { l: 5, t: 10, i: 996, }, D { l: 135, t: 10, i: 1329, }, D { l: 7, t: 11, i: 727, }, D { l: 146, t: 11, i: 73, }, D { l: 4, t: 11, i: 485, }, D { l: 7, t: 11, i: 353, }, D { l: 7, t: 10, i: 1259, }, D { l: 7, t: 11, i: 1523, }, D { l: 9, t: 10, i: 125, }, D { l: 139, t: 10, i: 65, }, D { l: 6, t: 0, i: 325 }, D { l: 5, t: 10, i: 136, }, D { l: 6, t: 11, i: 366, }, D { l: 7, t: 11, i: 1384, }, D { l: 7, t: 11, i: 1601, }, D { l: 136, t: 10, i: 644, }, D { l: 138, t: 11, i: 160, }, D { l: 6, t: 0, i: 1345, }, D { l: 137, t: 11, i: 282, }, D { l: 18, t: 0, i: 91 }, D { l: 147, t: 0, i: 70, }, D { l: 136, t: 0, i: 404, }, D { l: 4, t: 11, i: 157, }, D { l: 133, t: 11, i: 471, }, D { l: 133, t: 0, i: 973, }, D { l: 6, t: 0, i: 135 }, D { l: 135, t: 0, i: 1176, }, D { l: 8, t: 11, i: 116, }, D { l: 11, t: 11, i: 551, }, D { l: 142, t: 11, i: 159, }, D { l: 4, t: 0, i: 549 }, D { l: 4, t: 10, i: 433, }, D { l: 133, t: 10, i: 719, }, D { l: 136, t: 0, i: 976, }, D { l: 5, t: 11, i: 160, }, D { l: 7, t: 11, i: 363, }, D { l: 7, t: 11, i: 589, }, D { l: 10, t: 11, i: 170, }, D { l: 141, t: 11, i: 55, }, D { l: 144, t: 0, i: 21, }, D { l: 144, t: 0, i: 51, }, D { l: 135, t: 0, i: 314, }, D { l: 135, t: 10, i: 1363, }, D { l: 4, t: 11, i: 108, }, D { l: 7, t: 11, i: 405, }, D { l: 10, t: 11, i: 491, }, D { l: 139, t: 11, i: 498, }, D { l: 146, t: 0, i: 4 }, D { l: 4, t: 10, i: 555, }, D { l: 8, t: 10, i: 536, }, D { l: 10, t: 10, i: 288, }, D { l: 139, t: 10, i: 1005, }, D { l: 135, t: 11, i: 1005, }, D { l: 6, t: 0, i: 281 }, D { l: 7, t: 0, i: 6 }, D { l: 8, t: 0, i: 282 }, D { l: 8, t: 0, i: 480 }, D { l: 8, t: 0, i: 499 }, D { l: 9, t: 0, i: 198 }, D { l: 10, t: 0, i: 143, }, D { l: 10, t: 0, i: 169, }, D { l: 10, t: 0, i: 211, }, D { l: 10, t: 0, i: 417, }, D { l: 10, t: 0, i: 574, }, D { l: 11, t: 0, i: 147, }, D { l: 11, t: 0, i: 395, }, D { l: 12, t: 0, i: 75 }, D { l: 12, t: 0, i: 407, }, D { l: 12, t: 0, i: 608, }, D { l: 13, t: 0, i: 500, }, D { l: 142, t: 0, i: 251, }, D { l: 6, t: 0, i: 1093, }, D { l: 6, t: 0, i: 1405, }, D { l: 9, t: 10, i: 370, }, D { l: 138, t: 10, i: 90, }, D { l: 4, t: 11, i: 926, }, D { l: 133, t: 11, i: 983, }, D { l: 135, t: 0, i: 1776, }, D { l: 134, t: 0, i: 1528, }, D { l: 132, t: 0, i: 419, }, D { l: 132, t: 11, i: 538, }, D { l: 6, t: 11, i: 294, }, D { l: 7, t: 11, i: 1267, }, D { l: 136, t: 11, i: 624, }, D { l: 135, t: 11, i: 1772, }, D { l: 138, t: 11, i: 301, }, D { l: 4, t: 10, i: 257, }, D { l: 135, t: 10, i: 2031, }, D { l: 4, t: 0, i: 138 }, D { l: 7, t: 0, i: 1012, }, D { l: 7, t: 0, i: 1280, }, D { l: 9, t: 0, i: 76 }, D { l: 135, t: 10, i: 1768, }, D { l: 132, t: 11, i: 757, }, D { l: 5, t: 0, i: 29 }, D { l: 140, t: 0, i: 638, }, D { l: 7, t: 11, i: 655, }, D { l: 135, t: 11, i: 1844, }, D { l: 7, t: 0, i: 1418, }, D { l: 6, t: 11, i: 257, }, D { l: 135, t: 11, i: 1522, }, D { l: 8, t: 11, i: 469, }, D { l: 138, t: 11, i: 47, }, D { l: 142, t: 11, i: 278, }, D { l: 6, t: 10, i: 83 }, D { l: 6, t: 10, i: 1733, }, D { l: 135, t: 10, i: 1389, }, D { l: 11, t: 11, i: 204, }, D { l: 11, t: 11, i: 243, }, D { l: 140, t: 11, i: 293, }, D { l: 135, t: 11, i: 1875, }, D { l: 6, t: 0, i: 1710, }, D { l: 135, t: 0, i: 2038, }, D { l: 137, t: 11, i: 299, }, D { l: 4, t: 0, i: 17 }, D { l: 5, t: 0, i: 23 }, D { l: 7, t: 0, i: 995 }, D { l: 11, t: 0, i: 383, }, D { l: 11, t: 0, i: 437, }, D { l: 12, t: 0, i: 460, }, D { l: 140, t: 0, i: 532, }, D { l: 133, t: 0, i: 862, }, D { l: 137, t: 10, i: 696, }, D { l: 6, t: 0, i: 592 }, D { l: 138, t: 0, i: 946, }, D { l: 138, t: 11, i: 599, }, D { l: 7, t: 10, i: 1718, }, D { l: 9, t: 10, i: 95 }, D { l: 9, t: 10, i: 274, }, D { l: 10, t: 10, i: 279, }, D { l: 10, t: 10, i: 317, }, D { l: 10, t: 10, i: 420, }, D { l: 11, t: 10, i: 303, }, D { l: 11, t: 10, i: 808, }, D { l: 12, t: 10, i: 134, }, D { l: 12, t: 10, i: 367, }, D { l: 13, t: 10, i: 149, }, D { l: 13, t: 10, i: 347, }, D { l: 14, t: 10, i: 349, }, D { l: 14, t: 10, i: 406, }, D { l: 18, t: 10, i: 22, }, D { l: 18, t: 10, i: 89, }, D { l: 18, t: 10, i: 122, }, D { l: 147, t: 10, i: 47, }, D { l: 8, t: 0, i: 70 }, D { l: 12, t: 0, i: 171, }, D { l: 141, t: 0, i: 272, }, D { l: 133, t: 10, i: 26, }, D { l: 132, t: 10, i: 550, }, D { l: 137, t: 0, i: 812, }, D { l: 10, t: 0, i: 233, }, D { l: 139, t: 0, i: 76, }, D { l: 134, t: 0, i: 988, }, D { l: 134, t: 0, i: 442, }, D { l: 136, t: 10, i: 822, }, D { l: 7, t: 0, i: 896 }, D { l: 4, t: 10, i: 902, }, D { l: 5, t: 10, i: 809, }, D { l: 134, t: 10, i: 122, }, D { l: 5, t: 11, i: 150, }, D { l: 7, t: 11, i: 106, }, D { l: 8, t: 11, i: 603, }, D { l: 9, t: 11, i: 593, }, D { l: 9, t: 11, i: 634, }, D { l: 10, t: 11, i: 44, }, D { l: 10, t: 11, i: 173, }, D { l: 11, t: 11, i: 462, }, D { l: 11, t: 11, i: 515, }, D { l: 13, t: 11, i: 216, }, D { l: 13, t: 11, i: 288, }, D { l: 142, t: 11, i: 400, }, D { l: 136, t: 0, i: 483, }, D { l: 135, t: 10, i: 262, }, D { l: 6, t: 0, i: 1709, }, D { l: 133, t: 10, i: 620, }, D { l: 4, t: 10, i: 34 }, D { l: 5, t: 10, i: 574, }, D { l: 7, t: 10, i: 279, }, D { l: 7, t: 10, i: 1624, }, D { l: 136, t: 10, i: 601, }, D { l: 137, t: 10, i: 170, }, D { l: 147, t: 0, i: 119, }, D { l: 12, t: 11, i: 108, }, D { l: 141, t: 11, i: 291, }, D { l: 11, t: 0, i: 69 }, D { l: 12, t: 0, i: 105, }, D { l: 12, t: 0, i: 117, }, D { l: 13, t: 0, i: 213, }, D { l: 14, t: 0, i: 13 }, D { l: 14, t: 0, i: 62 }, D { l: 14, t: 0, i: 177, }, D { l: 14, t: 0, i: 421, }, D { l: 15, t: 0, i: 19 }, D { l: 146, t: 0, i: 141, }, D { l: 137, t: 0, i: 309, }, D { l: 11, t: 11, i: 278, }, D { l: 142, t: 11, i: 73, }, D { l: 7, t: 0, i: 608 }, D { l: 7, t: 0, i: 976 }, D { l: 9, t: 0, i: 146 }, D { l: 10, t: 0, i: 206, }, D { l: 10, t: 0, i: 596, }, D { l: 13, t: 0, i: 218, }, D { l: 142, t: 0, i: 153, }, D { l: 133, t: 10, i: 332, }, D { l: 6, t: 10, i: 261, }, D { l: 8, t: 10, i: 182, }, D { l: 139, t: 10, i: 943, }, D { l: 4, t: 11, i: 493, }, D { l: 144, t: 11, i: 55, }, D { l: 134, t: 10, i: 1721, }, D { l: 132, t: 0, i: 768, }, D { l: 4, t: 10, i: 933, }, D { l: 133, t: 10, i: 880, }, D { l: 7, t: 11, i: 555, }, D { l: 7, t: 11, i: 1316, }, D { l: 7, t: 11, i: 1412, }, D { l: 7, t: 11, i: 1839, }, D { l: 9, t: 11, i: 192, }, D { l: 9, t: 11, i: 589, }, D { l: 11, t: 11, i: 241, }, D { l: 11, t: 11, i: 676, }, D { l: 11, t: 11, i: 811, }, D { l: 11, t: 11, i: 891, }, D { l: 12, t: 11, i: 140, }, D { l: 12, t: 11, i: 346, }, D { l: 12, t: 11, i: 479, }, D { l: 13, t: 11, i: 30, }, D { l: 13, t: 11, i: 49, }, D { l: 13, t: 11, i: 381, }, D { l: 14, t: 11, i: 188, }, D { l: 15, t: 11, i: 150, }, D { l: 16, t: 11, i: 76, }, D { l: 18, t: 11, i: 30, }, D { l: 148, t: 11, i: 52, }, D { l: 4, t: 0, i: 518 }, D { l: 135, t: 0, i: 1136, }, D { l: 6, t: 11, i: 568, }, D { l: 7, t: 11, i: 112, }, D { l: 7, t: 11, i: 1804, }, D { l: 8, t: 11, i: 362, }, D { l: 8, t: 11, i: 410, }, D { l: 8, t: 11, i: 830, }, D { l: 9, t: 11, i: 514, }, D { l: 11, t: 11, i: 649, }, D { l: 142, t: 11, i: 157, }, D { l: 135, t: 11, i: 673, }, D { l: 8, t: 0, i: 689 }, D { l: 137, t: 0, i: 863, }, D { l: 4, t: 0, i: 18 }, D { l: 7, t: 0, i: 145 }, D { l: 7, t: 0, i: 444 }, D { l: 7, t: 0, i: 1278, }, D { l: 8, t: 0, i: 49 }, D { l: 8, t: 0, i: 400 }, D { l: 9, t: 0, i: 71 }, D { l: 9, t: 0, i: 250 }, D { l: 10, t: 0, i: 459, }, D { l: 12, t: 0, i: 160, }, D { l: 16, t: 0, i: 24 }, D { l: 132, t: 11, i: 625, }, D { l: 140, t: 0, i: 1020, }, D { l: 4, t: 0, i: 997 }, D { l: 6, t: 0, i: 1946, }, D { l: 6, t: 0, i: 1984, }, D { l: 134, t: 0, i: 1998, }, D { l: 6, t: 11, i: 16 }, D { l: 6, t: 11, i: 158, }, D { l: 7, t: 11, i: 43 }, D { l: 7, t: 11, i: 129, }, D { l: 7, t: 11, i: 181, }, D { l: 8, t: 11, i: 276, }, D { l: 8, t: 11, i: 377, }, D { l: 10, t: 11, i: 523, }, D { l: 11, t: 11, i: 816, }, D { l: 12, t: 11, i: 455, }, D { l: 13, t: 11, i: 303, }, D { l: 142, t: 11, i: 135, }, D { l: 133, t: 10, i: 812, }, D { l: 134, t: 0, i: 658, }, D { l: 4, t: 11, i: 1 }, D { l: 7, t: 11, i: 1143, }, D { l: 7, t: 11, i: 1463, }, D { l: 8, t: 11, i: 61 }, D { l: 9, t: 11, i: 207, }, D { l: 9, t: 11, i: 390, }, D { l: 9, t: 11, i: 467, }, D { l: 139, t: 11, i: 836, }, D { l: 150, t: 11, i: 26, }, D { l: 140, t: 0, i: 106, }, D { l: 6, t: 0, i: 1827, }, D { l: 10, t: 0, i: 931, }, D { l: 18, t: 0, i: 166, }, D { l: 20, t: 0, i: 114, }, D { l: 4, t: 10, i: 137, }, D { l: 7, t: 10, i: 1178, }, D { l: 7, t: 11, i: 1319, }, D { l: 135, t: 10, i: 1520, }, D { l: 133, t: 0, i: 1010, }, D { l: 4, t: 11, i: 723, }, D { l: 5, t: 11, i: 895, }, D { l: 7, t: 11, i: 1031, }, D { l: 8, t: 11, i: 199, }, D { l: 8, t: 11, i: 340, }, D { l: 9, t: 11, i: 153, }, D { l: 9, t: 11, i: 215, }, D { l: 10, t: 11, i: 21, }, D { l: 10, t: 11, i: 59, }, D { l: 10, t: 11, i: 80, }, D { l: 10, t: 11, i: 224, }, D { l: 11, t: 11, i: 229, }, D { l: 11, t: 11, i: 652, }, D { l: 12, t: 11, i: 192, }, D { l: 13, t: 11, i: 146, }, D { l: 142, t: 11, i: 91, }, D { l: 132, t: 11, i: 295, }, D { l: 6, t: 11, i: 619, }, D { l: 7, t: 11, i: 898, }, D { l: 7, t: 11, i: 1092, }, D { l: 8, t: 11, i: 485, }, D { l: 18, t: 11, i: 28, }, D { l: 147, t: 11, i: 116, }, D { l: 137, t: 11, i: 51, }, D { l: 6, t: 10, i: 1661, }, D { l: 7, t: 10, i: 1975, }, D { l: 7, t: 10, i: 2009, }, D { l: 135, t: 10, i: 2011, }, D { l: 5, t: 11, i: 309, }, D { l: 140, t: 11, i: 211, }, D { l: 5, t: 0, i: 87 }, D { l: 7, t: 0, i: 313 }, D { l: 7, t: 0, i: 1103, }, D { l: 10, t: 0, i: 208, }, D { l: 10, t: 0, i: 582, }, D { l: 11, t: 0, i: 389, }, D { l: 11, t: 0, i: 813, }, D { l: 12, t: 0, i: 385, }, D { l: 13, t: 0, i: 286, }, D { l: 14, t: 0, i: 124, }, D { l: 146, t: 0, i: 108, }, D { l: 5, t: 11, i: 125, }, D { l: 8, t: 11, i: 77 }, D { l: 138, t: 11, i: 15, }, D { l: 132, t: 0, i: 267, }, D { l: 133, t: 0, i: 703, }, D { l: 137, t: 11, i: 155, }, D { l: 133, t: 11, i: 439, }, D { l: 11, t: 11, i: 164, }, D { l: 140, t: 11, i: 76, }, D { l: 9, t: 0, i: 496 }, D { l: 5, t: 10, i: 89 }, D { l: 7, t: 10, i: 1915, }, D { l: 9, t: 10, i: 185, }, D { l: 9, t: 10, i: 235, }, D { l: 10, t: 10, i: 64, }, D { l: 10, t: 10, i: 270, }, D { l: 10, t: 10, i: 403, }, D { l: 10, t: 10, i: 469, }, D { l: 10, t: 10, i: 529, }, D { l: 10, t: 10, i: 590, }, D { l: 11, t: 10, i: 140, }, D { l: 11, t: 10, i: 860, }, D { l: 13, t: 10, i: 1 }, D { l: 13, t: 10, i: 422, }, D { l: 14, t: 10, i: 341, }, D { l: 14, t: 10, i: 364, }, D { l: 17, t: 10, i: 93, }, D { l: 18, t: 10, i: 113, }, D { l: 19, t: 10, i: 97, }, D { l: 147, t: 10, i: 113, }, D { l: 133, t: 10, i: 695, }, D { l: 135, t: 0, i: 1121, }, D { l: 5, t: 10, i: 6 }, D { l: 6, t: 10, i: 183, }, D { l: 7, t: 10, i: 680, }, D { l: 7, t: 10, i: 978, }, D { l: 7, t: 10, i: 1013, }, D { l: 7, t: 10, i: 1055, }, D { l: 12, t: 10, i: 230, }, D { l: 13, t: 10, i: 172, }, D { l: 146, t: 10, i: 29, }, D { l: 4, t: 11, i: 8 }, D { l: 7, t: 11, i: 1152, }, D { l: 7, t: 11, i: 1153, }, D { l: 7, t: 11, i: 1715, }, D { l: 9, t: 11, i: 374, }, D { l: 10, t: 11, i: 478, }, D { l: 139, t: 11, i: 648, }, D { l: 135, t: 11, i: 1099, }, D { l: 6, t: 10, i: 29 }, D { l: 139, t: 10, i: 63, }, D { l: 4, t: 0, i: 561 }, D { l: 10, t: 0, i: 249, }, D { l: 139, t: 0, i: 209, }, D { l: 132, t: 0, i: 760, }, D { l: 7, t: 11, i: 799, }, D { l: 138, t: 11, i: 511, }, D { l: 136, t: 11, i: 87, }, D { l: 9, t: 0, i: 154 }, D { l: 140, t: 0, i: 485, }, D { l: 136, t: 0, i: 255, }, D { l: 132, t: 0, i: 323, }, D { l: 140, t: 0, i: 419, }, D { l: 132, t: 10, i: 311, }, D { l: 134, t: 10, i: 1740, }, D { l: 4, t: 0, i: 368 }, D { l: 135, t: 0, i: 641, }, D { l: 7, t: 10, i: 170, }, D { l: 8, t: 10, i: 90 }, D { l: 8, t: 10, i: 177, }, D { l: 8, t: 10, i: 415, }, D { l: 11, t: 10, i: 714, }, D { l: 142, t: 10, i: 281, }, D { l: 4, t: 11, i: 69 }, D { l: 5, t: 11, i: 122, }, D { l: 9, t: 11, i: 656, }, D { l: 138, t: 11, i: 464, }, D { l: 5, t: 11, i: 849, }, D { l: 134, t: 11, i: 1633, }, D { l: 8, t: 0, i: 522 }, D { l: 142, t: 0, i: 328, }, D { l: 11, t: 10, i: 91, }, D { l: 13, t: 10, i: 129, }, D { l: 15, t: 10, i: 101, }, D { l: 145, t: 10, i: 125, }, D { l: 7, t: 0, i: 562 }, D { l: 8, t: 0, i: 551 }, D { l: 4, t: 10, i: 494, }, D { l: 6, t: 10, i: 74 }, D { l: 7, t: 10, i: 44 }, D { l: 11, t: 11, i: 499, }, D { l: 12, t: 10, i: 17, }, D { l: 15, t: 10, i: 5 }, D { l: 148, t: 10, i: 11, }, D { l: 4, t: 10, i: 276, }, D { l: 133, t: 10, i: 296, }, D { l: 9, t: 0, i: 92 }, D { l: 147, t: 0, i: 91, }, D { l: 4, t: 10, i: 7 }, D { l: 5, t: 10, i: 90 }, D { l: 5, t: 10, i: 158, }, D { l: 6, t: 10, i: 542, }, D { l: 7, t: 10, i: 221, }, D { l: 7, t: 10, i: 1574, }, D { l: 9, t: 10, i: 490, }, D { l: 10, t: 10, i: 540, }, D { l: 11, t: 10, i: 443, }, D { l: 139, t: 10, i: 757, }, D { l: 6, t: 0, i: 525 }, D { l: 6, t: 0, i: 1976, }, D { l: 8, t: 0, i: 806 }, D { l: 9, t: 0, i: 876 }, D { l: 140, t: 0, i: 284, }, D { l: 5, t: 11, i: 859, }, D { l: 7, t: 10, i: 588, }, D { l: 7, t: 11, i: 1160, }, D { l: 8, t: 11, i: 107, }, D { l: 9, t: 10, i: 175, }, D { l: 9, t: 11, i: 291, }, D { l: 9, t: 11, i: 439, }, D { l: 10, t: 10, i: 530, }, D { l: 10, t: 11, i: 663, }, D { l: 11, t: 11, i: 609, }, D { l: 140, t: 11, i: 197, }, D { l: 7, t: 11, i: 168, }, D { l: 13, t: 11, i: 196, }, D { l: 141, t: 11, i: 237, }, D { l: 139, t: 0, i: 958, }, D { l: 133, t: 0, i: 594, }, D { l: 135, t: 10, i: 580, }, D { l: 7, t: 10, i: 88 }, D { l: 136, t: 10, i: 627, }, D { l: 6, t: 0, i: 479 }, D { l: 6, t: 0, i: 562 }, D { l: 7, t: 0, i: 1060, }, D { l: 13, t: 0, i: 6 }, D { l: 5, t: 10, i: 872, }, D { l: 6, t: 10, i: 57 }, D { l: 7, t: 10, i: 471, }, D { l: 9, t: 10, i: 447, }, D { l: 137, t: 10, i: 454, }, D { l: 136, t: 11, i: 413, }, D { l: 145, t: 11, i: 19, }, D { l: 4, t: 11, i: 117, }, D { l: 6, t: 11, i: 372, }, D { l: 7, t: 11, i: 1905, }, D { l: 142, t: 11, i: 323, }, D { l: 4, t: 11, i: 722, }, D { l: 139, t: 11, i: 471, }, D { l: 17, t: 0, i: 61 }, D { l: 5, t: 10, i: 31 }, D { l: 134, t: 10, i: 614, }, D { l: 8, t: 10, i: 330, }, D { l: 140, t: 10, i: 477, }, D { l: 7, t: 10, i: 1200, }, D { l: 138, t: 10, i: 460, }, D { l: 6, t: 10, i: 424, }, D { l: 135, t: 10, i: 1866, }, D { l: 6, t: 0, i: 1641, }, D { l: 136, t: 0, i: 820, }, D { l: 6, t: 0, i: 1556, }, D { l: 134, t: 0, i: 1618, }, D { l: 9, t: 11, i: 5 }, D { l: 12, t: 11, i: 216, }, D { l: 12, t: 11, i: 294, }, D { l: 12, t: 11, i: 298, }, D { l: 12, t: 11, i: 400, }, D { l: 12, t: 11, i: 518, }, D { l: 13, t: 11, i: 229, }, D { l: 143, t: 11, i: 139, }, D { l: 15, t: 11, i: 155, }, D { l: 144, t: 11, i: 79, }, D { l: 4, t: 0, i: 302 }, D { l: 135, t: 0, i: 1766, }, D { l: 5, t: 10, i: 13 }, D { l: 134, t: 10, i: 142, }, D { l: 6, t: 0, i: 148 }, D { l: 7, t: 0, i: 1313, }, D { l: 7, t: 10, i: 116, }, D { l: 8, t: 10, i: 322, }, D { l: 8, t: 10, i: 755, }, D { l: 9, t: 10, i: 548, }, D { l: 10, t: 10, i: 714, }, D { l: 11, t: 10, i: 884, }, D { l: 141, t: 10, i: 324, }, D { l: 137, t: 0, i: 676, }, D { l: 9, t: 11, i: 88 }, D { l: 139, t: 11, i: 270, }, D { l: 5, t: 11, i: 12 }, D { l: 7, t: 11, i: 375, }, D { l: 137, t: 11, i: 438, }, D { l: 134, t: 0, i: 1674, }, D { l: 7, t: 10, i: 1472, }, D { l: 135, t: 10, i: 1554, }, D { l: 11, t: 0, i: 178, }, D { l: 7, t: 10, i: 1071, }, D { l: 7, t: 10, i: 1541, }, D { l: 7, t: 10, i: 1767, }, D { l: 7, t: 10, i: 1806, }, D { l: 11, t: 10, i: 162, }, D { l: 11, t: 10, i: 242, }, D { l: 12, t: 10, i: 605, }, D { l: 15, t: 10, i: 26, }, D { l: 144, t: 10, i: 44, }, D { l: 6, t: 0, i: 389 }, D { l: 7, t: 0, i: 149 }, D { l: 9, t: 0, i: 142 }, D { l: 138, t: 0, i: 94, }, D { l: 140, t: 11, i: 71, }, D { l: 145, t: 10, i: 115, }, D { l: 6, t: 0, i: 8 }, D { l: 7, t: 0, i: 1881, }, D { l: 8, t: 0, i: 91 }, D { l: 11, t: 11, i: 966, }, D { l: 12, t: 11, i: 287, }, D { l: 13, t: 11, i: 342, }, D { l: 13, t: 11, i: 402, }, D { l: 15, t: 11, i: 110, }, D { l: 143, t: 11, i: 163, }, D { l: 4, t: 11, i: 258, }, D { l: 136, t: 11, i: 639, }, D { l: 6, t: 11, i: 22 }, D { l: 7, t: 11, i: 903, }, D { l: 138, t: 11, i: 577, }, D { l: 133, t: 11, i: 681, }, D { l: 135, t: 10, i: 1111, }, D { l: 135, t: 11, i: 1286, }, D { l: 9, t: 0, i: 112 }, D { l: 8, t: 10, i: 1 }, D { l: 138, t: 10, i: 326, }, D { l: 5, t: 10, i: 488, }, D { l: 6, t: 10, i: 527, }, D { l: 7, t: 10, i: 489, }, D { l: 7, t: 10, i: 1636, }, D { l: 8, t: 10, i: 121, }, D { l: 8, t: 10, i: 144, }, D { l: 8, t: 10, i: 359, }, D { l: 9, t: 10, i: 193, }, D { l: 9, t: 10, i: 241, }, D { l: 9, t: 10, i: 336, }, D { l: 9, t: 10, i: 882, }, D { l: 11, t: 10, i: 266, }, D { l: 11, t: 10, i: 372, }, D { l: 11, t: 10, i: 944, }, D { l: 12, t: 10, i: 401, }, D { l: 140, t: 10, i: 641, }, D { l: 4, t: 11, i: 664, }, D { l: 133, t: 11, i: 804, }, D { l: 6, t: 0, i: 747 }, D { l: 134, t: 0, i: 1015, }, D { l: 135, t: 0, i: 1746, }, D { l: 9, t: 10, i: 31 }, D { l: 10, t: 10, i: 244, }, D { l: 10, t: 10, i: 699, }, D { l: 12, t: 10, i: 149, }, D { l: 141, t: 10, i: 497, }, D { l: 133, t: 10, i: 377, }, D { l: 135, t: 0, i: 24, }, D { l: 6, t: 0, i: 1352, }, D { l: 5, t: 11, i: 32 }, D { l: 145, t: 10, i: 101, }, D { l: 7, t: 0, i: 1530, }, D { l: 10, t: 0, i: 158, }, D { l: 13, t: 0, i: 13 }, D { l: 13, t: 0, i: 137, }, D { l: 13, t: 0, i: 258, }, D { l: 14, t: 0, i: 111, }, D { l: 14, t: 0, i: 225, }, D { l: 14, t: 0, i: 253, }, D { l: 14, t: 0, i: 304, }, D { l: 14, t: 0, i: 339, }, D { l: 14, t: 0, i: 417, }, D { l: 146, t: 0, i: 33, }, D { l: 4, t: 0, i: 503 }, D { l: 135, t: 0, i: 1661, }, D { l: 5, t: 0, i: 130 }, D { l: 6, t: 0, i: 845 }, D { l: 7, t: 0, i: 1314, }, D { l: 9, t: 0, i: 610 }, D { l: 10, t: 0, i: 718, }, D { l: 11, t: 0, i: 601, }, D { l: 11, t: 0, i: 819, }, D { l: 11, t: 0, i: 946, }, D { l: 140, t: 0, i: 536, }, D { l: 10, t: 0, i: 149, }, D { l: 11, t: 0, i: 280, }, D { l: 142, t: 0, i: 336, }, D { l: 134, t: 0, i: 1401, }, D { l: 135, t: 0, i: 1946, }, D { l: 8, t: 0, i: 663 }, D { l: 144, t: 0, i: 8 }, D { l: 134, t: 0, i: 1607, }, D { l: 135, t: 10, i: 2023, }, D { l: 4, t: 11, i: 289, }, D { l: 7, t: 11, i: 629, }, D { l: 7, t: 11, i: 1698, }, D { l: 7, t: 11, i: 1711, }, D { l: 140, t: 11, i: 215, }, D { l: 6, t: 11, i: 450, }, D { l: 136, t: 11, i: 109, }, D { l: 10, t: 0, i: 882, }, D { l: 10, t: 0, i: 883, }, D { l: 10, t: 0, i: 914, }, D { l: 138, t: 0, i: 928, }, D { l: 133, t: 10, i: 843, }, D { l: 136, t: 11, i: 705, }, D { l: 132, t: 10, i: 554, }, D { l: 133, t: 10, i: 536, }, D { l: 5, t: 0, i: 417 }, D { l: 9, t: 10, i: 79 }, D { l: 11, t: 10, i: 625, }, D { l: 145, t: 10, i: 7, }, D { l: 7, t: 11, i: 1238, }, D { l: 142, t: 11, i: 37, }, D { l: 4, t: 0, i: 392 }, D { l: 135, t: 0, i: 1597, }, D { l: 5, t: 0, i: 433 }, D { l: 9, t: 0, i: 633 }, D { l: 11, t: 0, i: 629, }, D { l: 132, t: 10, i: 424, }, D { l: 7, t: 10, i: 336, }, D { l: 136, t: 10, i: 785, }, D { l: 134, t: 11, i: 355, }, D { l: 6, t: 0, i: 234 }, D { l: 7, t: 0, i: 769 }, D { l: 9, t: 0, i: 18 }, D { l: 138, t: 0, i: 358, }, D { l: 4, t: 10, i: 896, }, D { l: 134, t: 10, i: 1777, }, D { l: 138, t: 11, i: 323, }, D { l: 7, t: 0, i: 140 }, D { l: 7, t: 0, i: 1950, }, D { l: 8, t: 0, i: 680 }, D { l: 11, t: 0, i: 817, }, D { l: 147, t: 0, i: 88, }, D { l: 7, t: 0, i: 1222, }, D { l: 138, t: 0, i: 386, }, D { l: 139, t: 11, i: 908, }, D { l: 11, t: 0, i: 249, }, D { l: 12, t: 0, i: 313, }, D { l: 16, t: 0, i: 66 }, D { l: 145, t: 0, i: 26, }, D { l: 134, t: 0, i: 5 }, D { l: 7, t: 10, i: 750, }, D { l: 9, t: 10, i: 223, }, D { l: 11, t: 10, i: 27, }, D { l: 11, t: 10, i: 466, }, D { l: 12, t: 10, i: 624, }, D { l: 14, t: 10, i: 265, }, D { l: 146, t: 10, i: 61, }, D { l: 134, t: 11, i: 26, }, D { l: 134, t: 0, i: 1216, }, D { l: 5, t: 0, i: 963 }, D { l: 134, t: 0, i: 1773, }, D { l: 4, t: 11, i: 414, }, D { l: 5, t: 11, i: 467, }, D { l: 9, t: 11, i: 654, }, D { l: 10, t: 11, i: 451, }, D { l: 12, t: 11, i: 59, }, D { l: 141, t: 11, i: 375, }, D { l: 135, t: 11, i: 17, }, D { l: 4, t: 10, i: 603, }, D { l: 133, t: 10, i: 661, }, D { l: 4, t: 10, i: 11 }, D { l: 6, t: 10, i: 128, }, D { l: 7, t: 10, i: 231, }, D { l: 7, t: 10, i: 1533, }, D { l: 138, t: 10, i: 725, }, D { l: 135, t: 11, i: 955, }, D { l: 7, t: 0, i: 180 }, D { l: 8, t: 0, i: 509 }, D { l: 136, t: 0, i: 792, }, D { l: 132, t: 10, i: 476, }, D { l: 132, t: 0, i: 1002, }, D { l: 133, t: 11, i: 538, }, D { l: 135, t: 10, i: 1807, }, D { l: 132, t: 0, i: 931, }, D { l: 7, t: 0, i: 943 }, D { l: 11, t: 0, i: 614, }, D { l: 140, t: 0, i: 747, }, D { l: 135, t: 0, i: 1837, }, D { l: 9, t: 10, i: 20 }, D { l: 10, t: 10, i: 324, }, D { l: 10, t: 10, i: 807, }, D { l: 139, t: 10, i: 488, }, D { l: 134, t: 0, i: 641, }, D { l: 6, t: 11, i: 280, }, D { l: 10, t: 11, i: 502, }, D { l: 11, t: 11, i: 344, }, D { l: 140, t: 11, i: 38, }, D { l: 5, t: 11, i: 45 }, D { l: 7, t: 11, i: 1161, }, D { l: 11, t: 11, i: 448, }, D { l: 11, t: 11, i: 880, }, D { l: 13, t: 11, i: 139, }, D { l: 13, t: 11, i: 407, }, D { l: 15, t: 11, i: 16, }, D { l: 17, t: 11, i: 95, }, D { l: 18, t: 11, i: 66, }, D { l: 18, t: 11, i: 88, }, D { l: 18, t: 11, i: 123, }, D { l: 149, t: 11, i: 7, }, D { l: 9, t: 0, i: 280 }, D { l: 138, t: 0, i: 134, }, D { l: 22, t: 0, i: 22 }, D { l: 23, t: 0, i: 5 }, D { l: 151, t: 0, i: 29, }, D { l: 136, t: 11, i: 777, }, D { l: 4, t: 0, i: 90 }, D { l: 5, t: 0, i: 545 }, D { l: 7, t: 0, i: 754 }, D { l: 9, t: 0, i: 186 }, D { l: 10, t: 0, i: 72 }, D { l: 10, t: 0, i: 782, }, D { l: 11, t: 0, i: 577, }, D { l: 11, t: 0, i: 610, }, D { l: 11, t: 0, i: 960, }, D { l: 12, t: 0, i: 354, }, D { l: 12, t: 0, i: 362, }, D { l: 12, t: 0, i: 595, }, D { l: 4, t: 11, i: 410, }, D { l: 135, t: 11, i: 521, }, D { l: 135, t: 11, i: 1778, }, D { l: 5, t: 10, i: 112, }, D { l: 6, t: 10, i: 103, }, D { l: 134, t: 10, i: 150, }, D { l: 138, t: 10, i: 356, }, D { l: 132, t: 0, i: 742, }, D { l: 7, t: 0, i: 151 }, D { l: 9, t: 0, i: 329 }, D { l: 139, t: 0, i: 254, }, D { l: 8, t: 0, i: 853 }, D { l: 8, t: 0, i: 881 }, D { l: 8, t: 0, i: 911 }, D { l: 8, t: 0, i: 912 }, D { l: 10, t: 0, i: 872, }, D { l: 12, t: 0, i: 741, }, D { l: 12, t: 0, i: 742, }, D { l: 152, t: 0, i: 18, }, D { l: 4, t: 11, i: 573, }, D { l: 136, t: 11, i: 655, }, D { l: 6, t: 0, i: 921 }, D { l: 134, t: 0, i: 934, }, D { l: 9, t: 0, i: 187 }, D { l: 10, t: 0, i: 36 }, D { l: 11, t: 0, i: 1016, }, D { l: 17, t: 0, i: 44 }, D { l: 146, t: 0, i: 64, }, D { l: 7, t: 0, i: 833 }, D { l: 136, t: 0, i: 517, }, D { l: 4, t: 0, i: 506 }, D { l: 5, t: 0, i: 295 }, D { l: 135, t: 0, i: 1680, }, D { l: 4, t: 10, i: 708, }, D { l: 8, t: 10, i: 15 }, D { l: 9, t: 10, i: 50 }, D { l: 9, t: 10, i: 386, }, D { l: 11, t: 10, i: 18, }, D { l: 11, t: 10, i: 529, }, D { l: 140, t: 10, i: 228, }, D { l: 7, t: 0, i: 251 }, D { l: 7, t: 0, i: 1701, }, D { l: 8, t: 0, i: 436 }, D { l: 4, t: 10, i: 563, }, D { l: 7, t: 10, i: 592, }, D { l: 7, t: 10, i: 637, }, D { l: 7, t: 10, i: 770, }, D { l: 8, t: 10, i: 463, }, D { l: 9, t: 10, i: 60 }, D { l: 9, t: 10, i: 335, }, D { l: 9, t: 10, i: 904, }, D { l: 10, t: 10, i: 73, }, D { l: 11, t: 10, i: 434, }, D { l: 12, t: 10, i: 585, }, D { l: 13, t: 10, i: 331, }, D { l: 18, t: 10, i: 110, }, D { l: 148, t: 10, i: 60, }, D { l: 132, t: 10, i: 502, }, D { l: 136, t: 0, i: 584, }, D { l: 6, t: 10, i: 347, }, D { l: 138, t: 10, i: 161, }, D { l: 7, t: 0, i: 987 }, D { l: 9, t: 0, i: 688 }, D { l: 10, t: 0, i: 522, }, D { l: 11, t: 0, i: 788, }, D { l: 12, t: 0, i: 137, }, D { l: 12, t: 0, i: 566, }, D { l: 14, t: 0, i: 9 }, D { l: 14, t: 0, i: 24 }, D { l: 14, t: 0, i: 64 }, D { l: 7, t: 11, i: 899, }, D { l: 142, t: 11, i: 325, }, D { l: 4, t: 0, i: 214 }, D { l: 5, t: 0, i: 500 }, D { l: 5, t: 10, i: 102, }, D { l: 6, t: 10, i: 284, }, D { l: 7, t: 10, i: 1079, }, D { l: 7, t: 10, i: 1423, }, D { l: 7, t: 10, i: 1702, }, D { l: 8, t: 10, i: 470, }, D { l: 9, t: 10, i: 554, }, D { l: 9, t: 10, i: 723, }, D { l: 139, t: 10, i: 333, }, D { l: 7, t: 10, i: 246, }, D { l: 135, t: 10, i: 840, }, D { l: 6, t: 10, i: 10 }, D { l: 8, t: 10, i: 571, }, D { l: 9, t: 10, i: 739, }, D { l: 143, t: 10, i: 91, }, D { l: 133, t: 10, i: 626, }, D { l: 146, t: 0, i: 195, }, D { l: 134, t: 0, i: 1775, }, D { l: 7, t: 0, i: 389 }, D { l: 7, t: 0, i: 700 }, D { l: 7, t: 0, i: 940 }, D { l: 8, t: 0, i: 514 }, D { l: 9, t: 0, i: 116 }, D { l: 9, t: 0, i: 535 }, D { l: 10, t: 0, i: 118, }, D { l: 11, t: 0, i: 107, }, D { l: 11, t: 0, i: 148, }, D { l: 11, t: 0, i: 922, }, D { l: 12, t: 0, i: 254, }, D { l: 12, t: 0, i: 421, }, D { l: 142, t: 0, i: 238, }, D { l: 5, t: 10, i: 18 }, D { l: 6, t: 10, i: 526, }, D { l: 13, t: 10, i: 24, }, D { l: 13, t: 10, i: 110, }, D { l: 19, t: 10, i: 5 }, D { l: 147, t: 10, i: 44, }, D { l: 132, t: 0, i: 743, }, D { l: 11, t: 0, i: 292, }, D { l: 4, t: 10, i: 309, }, D { l: 5, t: 10, i: 462, }, D { l: 7, t: 10, i: 970, }, D { l: 135, t: 10, i: 1097, }, D { l: 22, t: 10, i: 30, }, D { l: 150, t: 10, i: 33, }, D { l: 139, t: 11, i: 338, }, D { l: 135, t: 11, i: 1598, }, D { l: 7, t: 0, i: 1283, }, D { l: 9, t: 0, i: 227 }, D { l: 11, t: 0, i: 325, }, D { l: 11, t: 0, i: 408, }, D { l: 14, t: 0, i: 180, }, D { l: 146, t: 0, i: 47, }, D { l: 4, t: 0, i: 953 }, D { l: 6, t: 0, i: 1805, }, D { l: 6, t: 0, i: 1814, }, D { l: 6, t: 0, i: 1862, }, D { l: 140, t: 0, i: 774, }, D { l: 6, t: 11, i: 611, }, D { l: 135, t: 11, i: 1733, }, D { l: 135, t: 11, i: 1464, }, D { l: 5, t: 0, i: 81 }, D { l: 7, t: 0, i: 146 }, D { l: 7, t: 0, i: 1342, }, D { l: 8, t: 0, i: 53 }, D { l: 8, t: 0, i: 561 }, D { l: 8, t: 0, i: 694 }, D { l: 8, t: 0, i: 754 }, D { l: 9, t: 0, i: 115 }, D { l: 9, t: 0, i: 179 }, D { l: 9, t: 0, i: 894 }, D { l: 10, t: 0, i: 462, }, D { l: 10, t: 0, i: 813, }, D { l: 11, t: 0, i: 230, }, D { l: 11, t: 0, i: 657, }, D { l: 11, t: 0, i: 699, }, D { l: 11, t: 0, i: 748, }, D { l: 12, t: 0, i: 119, }, D { l: 12, t: 0, i: 200, }, D { l: 12, t: 0, i: 283, }, D { l: 142, t: 0, i: 273, }, D { l: 5, t: 0, i: 408 }, D { l: 6, t: 0, i: 789 }, D { l: 6, t: 0, i: 877 }, D { l: 6, t: 0, i: 1253, }, D { l: 6, t: 0, i: 1413, }, D { l: 137, t: 0, i: 747, }, D { l: 134, t: 10, i: 1704, }, D { l: 135, t: 11, i: 663, }, D { l: 6, t: 0, i: 1910, }, D { l: 6, t: 0, i: 1915, }, D { l: 6, t: 0, i: 1923, }, D { l: 9, t: 0, i: 913 }, D { l: 9, t: 0, i: 928 }, D { l: 9, t: 0, i: 950 }, D { l: 9, t: 0, i: 954 }, D { l: 9, t: 0, i: 978 }, D { l: 9, t: 0, i: 993 }, D { l: 12, t: 0, i: 812, }, D { l: 12, t: 0, i: 819, }, D { l: 12, t: 0, i: 831, }, D { l: 12, t: 0, i: 833, }, D { l: 12, t: 0, i: 838, }, D { l: 12, t: 0, i: 909, }, D { l: 12, t: 0, i: 928, }, D { l: 12, t: 0, i: 931, }, D { l: 12, t: 0, i: 950, }, D { l: 15, t: 0, i: 186, }, D { l: 15, t: 0, i: 187, }, D { l: 15, t: 0, i: 195, }, D { l: 15, t: 0, i: 196, }, D { l: 15, t: 0, i: 209, }, D { l: 15, t: 0, i: 215, }, D { l: 15, t: 0, i: 236, }, D { l: 15, t: 0, i: 241, }, D { l: 15, t: 0, i: 249, }, D { l: 15, t: 0, i: 253, }, D { l: 18, t: 0, i: 180, }, D { l: 18, t: 0, i: 221, }, D { l: 18, t: 0, i: 224, }, D { l: 18, t: 0, i: 227, }, D { l: 18, t: 0, i: 229, }, D { l: 149, t: 0, i: 60, }, D { l: 7, t: 0, i: 1826, }, D { l: 135, t: 0, i: 1938, }, D { l: 11, t: 0, i: 490, }, D { l: 18, t: 0, i: 143, }, D { l: 5, t: 10, i: 86 }, D { l: 7, t: 10, i: 743, }, D { l: 9, t: 10, i: 85 }, D { l: 10, t: 10, i: 281, }, D { l: 10, t: 10, i: 432, }, D { l: 12, t: 10, i: 251, }, D { l: 13, t: 10, i: 118, }, D { l: 142, t: 10, i: 378, }, D { l: 5, t: 10, i: 524, }, D { l: 133, t: 10, i: 744, }, D { l: 141, t: 11, i: 442, }, D { l: 10, t: 10, i: 107, }, D { l: 140, t: 10, i: 436, }, D { l: 135, t: 11, i: 503, }, D { l: 134, t: 0, i: 1162, }, D { l: 132, t: 10, i: 927, }, D { l: 7, t: 0, i: 30 }, D { l: 8, t: 0, i: 86 }, D { l: 8, t: 0, i: 315 }, D { l: 8, t: 0, i: 700 }, D { l: 9, t: 0, i: 576 }, D { l: 9, t: 0, i: 858 }, D { l: 10, t: 0, i: 414, }, D { l: 11, t: 0, i: 310, }, D { l: 11, t: 0, i: 888, }, D { l: 11, t: 0, i: 904, }, D { l: 12, t: 0, i: 361, }, D { l: 13, t: 0, i: 248, }, D { l: 13, t: 0, i: 371, }, D { l: 14, t: 0, i: 142, }, D { l: 12, t: 10, i: 670, }, D { l: 146, t: 10, i: 94, }, D { l: 134, t: 0, i: 721, }, D { l: 4, t: 11, i: 113, }, D { l: 5, t: 11, i: 163, }, D { l: 5, t: 11, i: 735, }, D { l: 7, t: 11, i: 1009, }, D { l: 7, t: 10, i: 1149, }, D { l: 9, t: 11, i: 9 }, D { l: 9, t: 10, i: 156, }, D { l: 9, t: 11, i: 771, }, D { l: 12, t: 11, i: 90, }, D { l: 13, t: 11, i: 138, }, D { l: 13, t: 11, i: 410, }, D { l: 143, t: 11, i: 128, }, D { l: 138, t: 0, i: 839, }, D { l: 133, t: 10, i: 778, }, D { l: 137, t: 0, i: 617, }, D { l: 133, t: 10, i: 502, }, D { l: 8, t: 10, i: 196, }, D { l: 10, t: 10, i: 283, }, D { l: 139, t: 10, i: 406, }, D { l: 6, t: 0, i: 428 }, D { l: 7, t: 0, i: 524 }, D { l: 8, t: 0, i: 169 }, D { l: 8, t: 0, i: 234 }, D { l: 9, t: 0, i: 480 }, D { l: 138, t: 0, i: 646, }, D { l: 133, t: 10, i: 855, }, D { l: 134, t: 0, i: 1648, }, D { l: 7, t: 0, i: 1205, }, D { l: 138, t: 0, i: 637, }, D { l: 7, t: 0, i: 1596, }, D { l: 4, t: 11, i: 935, }, D { l: 133, t: 11, i: 823, }, D { l: 5, t: 11, i: 269, }, D { l: 7, t: 11, i: 434, }, D { l: 7, t: 11, i: 891, }, D { l: 8, t: 11, i: 339, }, D { l: 9, t: 11, i: 702, }, D { l: 11, t: 11, i: 594, }, D { l: 11, t: 11, i: 718, }, D { l: 145, t: 11, i: 100, }, D { l: 7, t: 11, i: 878, }, D { l: 9, t: 11, i: 485, }, D { l: 141, t: 11, i: 264, }, D { l: 4, t: 0, i: 266 }, D { l: 8, t: 0, i: 4 }, D { l: 9, t: 0, i: 39 }, D { l: 10, t: 0, i: 166, }, D { l: 11, t: 0, i: 918, }, D { l: 12, t: 0, i: 635, }, D { l: 20, t: 0, i: 10 }, D { l: 22, t: 0, i: 27 }, D { l: 22, t: 0, i: 43 }, D { l: 22, t: 0, i: 52 }, D { l: 134, t: 11, i: 1713, }, D { l: 7, t: 10, i: 1400, }, D { l: 9, t: 10, i: 446, }, D { l: 138, t: 10, i: 45, }, D { l: 135, t: 11, i: 900, }, D { l: 132, t: 0, i: 862, }, D { l: 134, t: 0, i: 1554, }, D { l: 135, t: 11, i: 1033, }, D { l: 19, t: 0, i: 16 }, D { l: 147, t: 11, i: 16, }, D { l: 135, t: 11, i: 1208, }, D { l: 7, t: 0, i: 157 }, D { l: 136, t: 0, i: 279, }, D { l: 6, t: 0, i: 604 }, D { l: 136, t: 0, i: 391, }, D { l: 13, t: 10, i: 455, }, D { l: 15, t: 10, i: 99, }, D { l: 15, t: 10, i: 129, }, D { l: 144, t: 10, i: 68, }, D { l: 135, t: 10, i: 172, }, D { l: 7, t: 0, i: 945 }, D { l: 11, t: 0, i: 713, }, D { l: 139, t: 0, i: 744, }, D { l: 4, t: 0, i: 973 }, D { l: 10, t: 0, i: 877, }, D { l: 10, t: 0, i: 937, }, D { l: 10, t: 0, i: 938, }, D { l: 140, t: 0, i: 711, }, D { l: 139, t: 0, i: 1022, }, D { l: 132, t: 10, i: 568, }, D { l: 142, t: 11, i: 143, }, D { l: 4, t: 0, i: 567 }, D { l: 9, t: 0, i: 859 }, D { l: 132, t: 10, i: 732, }, D { l: 7, t: 0, i: 1846, }, D { l: 136, t: 0, i: 628, }, D { l: 136, t: 10, i: 733, }, D { l: 133, t: 0, i: 762, }, D { l: 4, t: 10, i: 428, }, D { l: 135, t: 10, i: 1789, }, D { l: 10, t: 0, i: 784, }, D { l: 13, t: 0, i: 191, }, D { l: 7, t: 10, i: 2015, }, D { l: 140, t: 10, i: 665, }, D { l: 133, t: 0, i: 298, }, D { l: 7, t: 0, i: 633 }, D { l: 7, t: 0, i: 905 }, D { l: 7, t: 0, i: 909 }, D { l: 7, t: 0, i: 1538, }, D { l: 9, t: 0, i: 767 }, D { l: 140, t: 0, i: 636, }, D { l: 138, t: 10, i: 806, }, D { l: 132, t: 0, i: 795, }, D { l: 139, t: 0, i: 301, }, D { l: 135, t: 0, i: 1970, }, D { l: 5, t: 11, i: 625, }, D { l: 135, t: 11, i: 1617, }, D { l: 135, t: 11, i: 275, }, D { l: 7, t: 11, i: 37 }, D { l: 8, t: 11, i: 425, }, D { l: 8, t: 11, i: 693, }, D { l: 9, t: 11, i: 720, }, D { l: 10, t: 11, i: 380, }, D { l: 10, t: 11, i: 638, }, D { l: 11, t: 11, i: 273, }, D { l: 11, t: 11, i: 307, }, D { l: 11, t: 11, i: 473, }, D { l: 12, t: 11, i: 61, }, D { l: 143, t: 11, i: 43, }, D { l: 135, t: 11, i: 198, }, D { l: 134, t: 0, i: 1236, }, D { l: 7, t: 0, i: 369 }, D { l: 12, t: 0, i: 644, }, D { l: 12, t: 0, i: 645, }, D { l: 144, t: 0, i: 90, }, D { l: 19, t: 0, i: 15 }, D { l: 149, t: 0, i: 27, }, D { l: 6, t: 0, i: 71 }, D { l: 7, t: 0, i: 845 }, D { l: 8, t: 0, i: 160 }, D { l: 9, t: 0, i: 318 }, D { l: 6, t: 10, i: 1623, }, D { l: 134, t: 10, i: 1681, }, D { l: 134, t: 0, i: 1447, }, D { l: 134, t: 0, i: 1255, }, D { l: 138, t: 0, i: 735, }, D { l: 8, t: 0, i: 76 }, D { l: 132, t: 11, i: 168, }, D { l: 6, t: 10, i: 1748, }, D { l: 8, t: 10, i: 715, }, D { l: 9, t: 10, i: 802, }, D { l: 10, t: 10, i: 46, }, D { l: 10, t: 10, i: 819, }, D { l: 13, t: 10, i: 308, }, D { l: 14, t: 10, i: 351, }, D { l: 14, t: 10, i: 363, }, D { l: 146, t: 10, i: 67, }, D { l: 135, t: 11, i: 91, }, D { l: 6, t: 0, i: 474 }, D { l: 4, t: 10, i: 63 }, D { l: 133, t: 10, i: 347, }, D { l: 133, t: 10, i: 749, }, D { l: 138, t: 0, i: 841, }, D { l: 133, t: 10, i: 366, }, D { l: 6, t: 0, i: 836 }, D { l: 132, t: 11, i: 225, }, D { l: 135, t: 0, i: 1622, }, D { l: 135, t: 10, i: 89, }, D { l: 140, t: 0, i: 735, }, D { l: 134, t: 0, i: 1601, }, D { l: 138, t: 11, i: 145, }, D { l: 6, t: 0, i: 1390, }, D { l: 137, t: 0, i: 804, }, D { l: 142, t: 0, i: 394, }, D { l: 6, t: 11, i: 15 }, D { l: 7, t: 11, i: 70 }, D { l: 10, t: 11, i: 240, }, D { l: 147, t: 11, i: 93, }, D { l: 6, t: 0, i: 96 }, D { l: 135, t: 0, i: 1426, }, D { l: 4, t: 0, i: 651 }, D { l: 133, t: 0, i: 289, }, D { l: 7, t: 11, i: 956, }, D { l: 7, t: 10, i: 977, }, D { l: 7, t: 11, i: 1157, }, D { l: 7, t: 11, i: 1506, }, D { l: 7, t: 11, i: 1606, }, D { l: 7, t: 11, i: 1615, }, D { l: 7, t: 11, i: 1619, }, D { l: 7, t: 11, i: 1736, }, D { l: 7, t: 11, i: 1775, }, D { l: 8, t: 11, i: 590, }, D { l: 9, t: 11, i: 324, }, D { l: 9, t: 11, i: 736, }, D { l: 9, t: 11, i: 774, }, D { l: 9, t: 11, i: 776, }, D { l: 9, t: 11, i: 784, }, D { l: 10, t: 11, i: 567, }, D { l: 10, t: 11, i: 708, }, D { l: 11, t: 11, i: 518, }, D { l: 11, t: 11, i: 613, }, D { l: 11, t: 11, i: 695, }, D { l: 11, t: 11, i: 716, }, D { l: 11, t: 11, i: 739, }, D { l: 11, t: 11, i: 770, }, D { l: 11, t: 11, i: 771, }, D { l: 11, t: 11, i: 848, }, D { l: 11, t: 11, i: 857, }, D { l: 11, t: 11, i: 931, }, D { l: 11, t: 11, i: 947, }, D { l: 12, t: 11, i: 326, }, D { l: 12, t: 11, i: 387, }, D { l: 12, t: 11, i: 484, }, D { l: 12, t: 11, i: 528, }, D { l: 12, t: 11, i: 552, }, D { l: 12, t: 11, i: 613, }, D { l: 13, t: 11, i: 189, }, D { l: 13, t: 11, i: 256, }, D { l: 13, t: 11, i: 340, }, D { l: 13, t: 11, i: 432, }, D { l: 13, t: 11, i: 436, }, D { l: 13, t: 11, i: 440, }, D { l: 13, t: 11, i: 454, }, D { l: 14, t: 11, i: 174, }, D { l: 14, t: 11, i: 220, }, D { l: 14, t: 11, i: 284, }, D { l: 14, t: 11, i: 390, }, D { l: 145, t: 11, i: 121, }, D { l: 7, t: 0, i: 688 }, D { l: 8, t: 0, i: 35 }, D { l: 9, t: 0, i: 511 }, D { l: 10, t: 0, i: 767, }, D { l: 147, t: 0, i: 118, }, D { l: 134, t: 0, i: 667, }, D { l: 4, t: 0, i: 513 }, D { l: 5, t: 10, i: 824, }, D { l: 133, t: 10, i: 941, }, D { l: 7, t: 10, i: 440, }, D { l: 8, t: 10, i: 230, }, D { l: 139, t: 10, i: 106, }, D { l: 134, t: 0, i: 2034, }, D { l: 135, t: 11, i: 1399, }, D { l: 143, t: 11, i: 66, }, D { l: 135, t: 11, i: 1529, }, D { l: 4, t: 11, i: 145, }, D { l: 6, t: 11, i: 176, }, D { l: 7, t: 11, i: 395, }, D { l: 9, t: 11, i: 562, }, D { l: 144, t: 11, i: 28, }, D { l: 132, t: 11, i: 501, }, D { l: 132, t: 0, i: 704, }, D { l: 134, t: 0, i: 1524, }, D { l: 7, t: 0, i: 1078, }, D { l: 134, t: 11, i: 464, }, D { l: 6, t: 11, i: 509, }, D { l: 10, t: 11, i: 82, }, D { l: 20, t: 11, i: 91, }, D { l: 151, t: 11, i: 13, }, D { l: 4, t: 0, i: 720 }, D { l: 133, t: 0, i: 306, }, D { l: 133, t: 0, i: 431, }, D { l: 7, t: 0, i: 1196, }, D { l: 4, t: 10, i: 914, }, D { l: 5, t: 10, i: 800, }, D { l: 133, t: 10, i: 852, }, D { l: 135, t: 11, i: 1189, }, D { l: 10, t: 0, i: 54 }, D { l: 141, t: 10, i: 115, }, D { l: 7, t: 10, i: 564, }, D { l: 142, t: 10, i: 168, }, D { l: 5, t: 0, i: 464 }, D { l: 6, t: 0, i: 236 }, D { l: 7, t: 0, i: 696 }, D { l: 7, t: 0, i: 914 }, D { l: 7, t: 0, i: 1108, }, D { l: 7, t: 0, i: 1448, }, D { l: 9, t: 0, i: 15 }, D { l: 9, t: 0, i: 564 }, D { l: 10, t: 0, i: 14 }, D { l: 12, t: 0, i: 565, }, D { l: 13, t: 0, i: 449, }, D { l: 14, t: 0, i: 53 }, D { l: 15, t: 0, i: 13 }, D { l: 16, t: 0, i: 64 }, D { l: 17, t: 0, i: 41 }, D { l: 4, t: 10, i: 918, }, D { l: 133, t: 10, i: 876, }, D { l: 6, t: 0, i: 1418, }, D { l: 134, t: 10, i: 1764, }, D { l: 4, t: 10, i: 92 }, D { l: 133, t: 10, i: 274, }, D { l: 134, t: 0, i: 907, }, D { l: 4, t: 11, i: 114, }, D { l: 8, t: 10, i: 501, }, D { l: 9, t: 11, i: 492, }, D { l: 13, t: 11, i: 462, }, D { l: 142, t: 11, i: 215, }, D { l: 4, t: 11, i: 77 }, D { l: 5, t: 11, i: 361, }, D { l: 6, t: 11, i: 139, }, D { l: 6, t: 11, i: 401, }, D { l: 6, t: 11, i: 404, }, D { l: 7, t: 11, i: 413, }, D { l: 7, t: 11, i: 715, }, D { l: 7, t: 11, i: 1716, }, D { l: 11, t: 11, i: 279, }, D { l: 12, t: 11, i: 179, }, D { l: 12, t: 11, i: 258, }, D { l: 13, t: 11, i: 244, }, D { l: 142, t: 11, i: 358, }, D { l: 6, t: 0, i: 1767, }, D { l: 12, t: 0, i: 194, }, D { l: 145, t: 0, i: 107, }, D { l: 134, t: 11, i: 1717, }, D { l: 5, t: 10, i: 743, }, D { l: 142, t: 11, i: 329, }, D { l: 4, t: 10, i: 49 }, D { l: 7, t: 10, i: 280, }, D { l: 135, t: 10, i: 1633, }, D { l: 5, t: 0, i: 840 }, D { l: 7, t: 11, i: 1061, }, D { l: 8, t: 11, i: 82 }, D { l: 11, t: 11, i: 250, }, D { l: 12, t: 11, i: 420, }, D { l: 141, t: 11, i: 184, }, D { l: 135, t: 11, i: 724, }, D { l: 134, t: 0, i: 900, }, D { l: 136, t: 10, i: 47, }, D { l: 134, t: 0, i: 1436, }, D { l: 144, t: 11, i: 0, }, D { l: 6, t: 0, i: 675 }, D { l: 7, t: 0, i: 1008, }, D { l: 7, t: 0, i: 1560, }, D { l: 9, t: 0, i: 642 }, D { l: 11, t: 0, i: 236, }, D { l: 14, t: 0, i: 193, }, D { l: 5, t: 10, i: 272, }, D { l: 5, t: 10, i: 908, }, D { l: 5, t: 10, i: 942, }, D { l: 8, t: 10, i: 197, }, D { l: 9, t: 10, i: 47 }, D { l: 11, t: 10, i: 538, }, D { l: 139, t: 10, i: 742, }, D { l: 4, t: 0, i: 68 }, D { l: 5, t: 0, i: 628 }, D { l: 5, t: 0, i: 634 }, D { l: 6, t: 0, i: 386 }, D { l: 7, t: 0, i: 794 }, D { l: 8, t: 0, i: 273 }, D { l: 9, t: 0, i: 563 }, D { l: 10, t: 0, i: 105, }, D { l: 10, t: 0, i: 171, }, D { l: 11, t: 0, i: 94 }, D { l: 139, t: 0, i: 354, }, D { l: 135, t: 10, i: 1911, }, D { l: 137, t: 10, i: 891, }, D { l: 4, t: 0, i: 95 }, D { l: 6, t: 0, i: 1297, }, D { l: 6, t: 0, i: 1604, }, D { l: 7, t: 0, i: 416 }, D { l: 139, t: 0, i: 830, }, D { l: 6, t: 11, i: 513, }, D { l: 135, t: 11, i: 1052, }, D { l: 7, t: 0, i: 731 }, D { l: 13, t: 0, i: 20 }, D { l: 143, t: 0, i: 11, }, D { l: 137, t: 11, i: 899, }, D { l: 10, t: 0, i: 850, }, D { l: 140, t: 0, i: 697, }, D { l: 4, t: 0, i: 662 }, D { l: 7, t: 11, i: 1417, }, D { l: 12, t: 11, i: 382, }, D { l: 17, t: 11, i: 48, }, D { l: 152, t: 11, i: 12, }, D { l: 133, t: 0, i: 736, }, D { l: 132, t: 0, i: 861, }, D { l: 4, t: 10, i: 407, }, D { l: 132, t: 10, i: 560, }, D { l: 141, t: 10, i: 490, }, D { l: 6, t: 11, i: 545, }, D { l: 7, t: 11, i: 565, }, D { l: 7, t: 11, i: 1669, }, D { l: 10, t: 11, i: 114, }, D { l: 11, t: 11, i: 642, }, D { l: 140, t: 11, i: 618, }, D { l: 6, t: 0, i: 871 }, D { l: 134, t: 0, i: 1000, }, D { l: 5, t: 0, i: 864 }, D { l: 10, t: 0, i: 648, }, D { l: 11, t: 0, i: 671, }, D { l: 15, t: 0, i: 46 }, D { l: 133, t: 11, i: 5, }, D { l: 133, t: 0, i: 928, }, D { l: 11, t: 0, i: 90 }, D { l: 13, t: 0, i: 7 }, D { l: 4, t: 10, i: 475, }, D { l: 11, t: 10, i: 35, }, D { l: 13, t: 10, i: 71, }, D { l: 13, t: 10, i: 177, }, D { l: 142, t: 10, i: 422, }, D { l: 136, t: 0, i: 332, }, D { l: 135, t: 11, i: 192, }, D { l: 134, t: 0, i: 1055, }, D { l: 136, t: 11, i: 763, }, D { l: 11, t: 0, i: 986, }, D { l: 140, t: 0, i: 682, }, D { l: 7, t: 0, i: 76 }, D { l: 8, t: 0, i: 44 }, D { l: 9, t: 0, i: 884 }, D { l: 10, t: 0, i: 580, }, D { l: 11, t: 0, i: 399, }, D { l: 11, t: 0, i: 894, }, D { l: 143, t: 0, i: 122, }, D { l: 135, t: 11, i: 1237, }, D { l: 135, t: 10, i: 636, }, D { l: 11, t: 0, i: 300, }, D { l: 6, t: 10, i: 222, }, D { l: 7, t: 10, i: 1620, }, D { l: 8, t: 10, i: 409, }, D { l: 137, t: 10, i: 693, }, D { l: 4, t: 11, i: 87 }, D { l: 5, t: 11, i: 250, }, D { l: 10, t: 11, i: 601, }, D { l: 13, t: 11, i: 298, }, D { l: 13, t: 11, i: 353, }, D { l: 141, t: 11, i: 376, }, D { l: 5, t: 0, i: 518 }, D { l: 10, t: 0, i: 340, }, D { l: 11, t: 0, i: 175, }, D { l: 149, t: 0, i: 16, }, D { l: 140, t: 0, i: 771, }, D { l: 6, t: 0, i: 1108, }, D { l: 137, t: 0, i: 831, }, D { l: 132, t: 0, i: 836, }, D { l: 135, t: 0, i: 1852, }, D { l: 4, t: 0, i: 957 }, D { l: 6, t: 0, i: 1804, }, D { l: 8, t: 0, i: 842 }, D { l: 8, t: 0, i: 843 }, D { l: 8, t: 0, i: 851 }, D { l: 8, t: 0, i: 855 }, D { l: 140, t: 0, i: 767, }, D { l: 135, t: 11, i: 814, }, D { l: 4, t: 11, i: 57 }, D { l: 7, t: 11, i: 1195, }, D { l: 7, t: 11, i: 1438, }, D { l: 7, t: 11, i: 1548, }, D { l: 7, t: 11, i: 1835, }, D { l: 7, t: 11, i: 1904, }, D { l: 9, t: 11, i: 757, }, D { l: 10, t: 11, i: 604, }, D { l: 139, t: 11, i: 519, }, D { l: 133, t: 10, i: 882, }, D { l: 138, t: 0, i: 246, }, D { l: 4, t: 0, i: 934 }, D { l: 5, t: 0, i: 202 }, D { l: 8, t: 0, i: 610 }, D { l: 7, t: 11, i: 1897, }, D { l: 12, t: 11, i: 290, }, D { l: 13, t: 11, i: 80, }, D { l: 13, t: 11, i: 437, }, D { l: 145, t: 11, i: 74, }, D { l: 8, t: 0, i: 96 }, D { l: 9, t: 0, i: 36 }, D { l: 10, t: 0, i: 607, }, D { l: 10, t: 0, i: 804, }, D { l: 10, t: 0, i: 832, }, D { l: 11, t: 0, i: 423, }, D { l: 11, t: 0, i: 442, }, D { l: 12, t: 0, i: 309, }, D { l: 14, t: 0, i: 199, }, D { l: 15, t: 0, i: 90 }, D { l: 145, t: 0, i: 110, }, D { l: 132, t: 10, i: 426, }, D { l: 7, t: 0, i: 654 }, D { l: 8, t: 0, i: 240 }, D { l: 6, t: 10, i: 58 }, D { l: 7, t: 10, i: 745, }, D { l: 7, t: 10, i: 1969, }, D { l: 8, t: 10, i: 675, }, D { l: 9, t: 10, i: 479, }, D { l: 9, t: 10, i: 731, }, D { l: 10, t: 10, i: 330, }, D { l: 10, t: 10, i: 593, }, D { l: 10, t: 10, i: 817, }, D { l: 11, t: 10, i: 32, }, D { l: 11, t: 10, i: 133, }, D { l: 11, t: 10, i: 221, }, D { l: 145, t: 10, i: 68, }, D { l: 9, t: 0, i: 13 }, D { l: 9, t: 0, i: 398 }, D { l: 9, t: 0, i: 727 }, D { l: 10, t: 0, i: 75 }, D { l: 10, t: 0, i: 184, }, D { l: 10, t: 0, i: 230, }, D { l: 10, t: 0, i: 564, }, D { l: 10, t: 0, i: 569, }, D { l: 11, t: 0, i: 973, }, D { l: 12, t: 0, i: 70 }, D { l: 12, t: 0, i: 189, }, D { l: 13, t: 0, i: 57 }, D { l: 141, t: 0, i: 257, }, D { l: 4, t: 11, i: 209, }, D { l: 135, t: 11, i: 902, }, D { l: 7, t: 0, i: 391 }, D { l: 137, t: 10, i: 538, }, D { l: 134, t: 0, i: 403, }, D { l: 6, t: 11, i: 303, }, D { l: 7, t: 11, i: 335, }, D { l: 7, t: 11, i: 1437, }, D { l: 7, t: 11, i: 1668, }, D { l: 8, t: 11, i: 553, }, D { l: 8, t: 11, i: 652, }, D { l: 8, t: 11, i: 656, }, D { l: 9, t: 11, i: 558, }, D { l: 11, t: 11, i: 743, }, D { l: 149, t: 11, i: 18, }, D { l: 132, t: 11, i: 559, }, D { l: 11, t: 0, i: 75 }, D { l: 142, t: 0, i: 267, }, D { l: 6, t: 0, i: 815 }, D { l: 141, t: 11, i: 2, }, D { l: 141, t: 0, i: 366, }, D { l: 137, t: 0, i: 631, }, D { l: 133, t: 11, i: 1017, }, D { l: 5, t: 0, i: 345 }, D { l: 135, t: 0, i: 1016, }, D { l: 133, t: 11, i: 709, }, D { l: 134, t: 11, i: 1745, }, D { l: 133, t: 10, i: 566, }, D { l: 7, t: 0, i: 952 }, D { l: 6, t: 10, i: 48 }, D { l: 9, t: 10, i: 139, }, D { l: 10, t: 10, i: 399, }, D { l: 11, t: 10, i: 469, }, D { l: 12, t: 10, i: 634, }, D { l: 141, t: 10, i: 223, }, D { l: 133, t: 0, i: 673, }, D { l: 9, t: 0, i: 850 }, D { l: 7, t: 11, i: 8 }, D { l: 136, t: 11, i: 206, }, D { l: 6, t: 0, i: 662 }, D { l: 149, t: 0, i: 35, }, D { l: 4, t: 0, i: 287 }, D { l: 133, t: 0, i: 1018, }, D { l: 6, t: 10, i: 114, }, D { l: 7, t: 10, i: 1224, }, D { l: 7, t: 10, i: 1556, }, D { l: 136, t: 10, i: 3, }, D { l: 8, t: 10, i: 576, }, D { l: 137, t: 10, i: 267, }, D { l: 4, t: 0, i: 884 }, D { l: 5, t: 0, i: 34 }, D { l: 10, t: 0, i: 724, }, D { l: 12, t: 0, i: 444, }, D { l: 13, t: 0, i: 354, }, D { l: 18, t: 0, i: 32 }, D { l: 23, t: 0, i: 24 }, D { l: 23, t: 0, i: 31 }, D { l: 152, t: 0, i: 5 }, D { l: 133, t: 10, i: 933, }, D { l: 132, t: 11, i: 776, }, D { l: 138, t: 0, i: 151, }, D { l: 136, t: 0, i: 427, }, D { l: 134, t: 0, i: 382, }, D { l: 132, t: 0, i: 329, }, D { l: 9, t: 0, i: 846 }, D { l: 10, t: 0, i: 827, }, D { l: 138, t: 11, i: 33, }, D { l: 9, t: 0, i: 279 }, D { l: 10, t: 0, i: 407, }, D { l: 14, t: 0, i: 84 }, D { l: 22, t: 0, i: 18 }, D { l: 135, t: 11, i: 1297, }, D { l: 136, t: 11, i: 406, }, D { l: 132, t: 0, i: 906, }, D { l: 136, t: 0, i: 366, }, D { l: 134, t: 0, i: 843, }, D { l: 134, t: 0, i: 1443, }, D { l: 135, t: 0, i: 1372, }, D { l: 138, t: 0, i: 992, }, D { l: 4, t: 0, i: 123 }, D { l: 5, t: 0, i: 605 }, D { l: 7, t: 0, i: 1509, }, D { l: 136, t: 0, i: 36, }, D { l: 132, t: 0, i: 649, }, D { l: 8, t: 11, i: 175, }, D { l: 10, t: 11, i: 168, }, D { l: 138, t: 11, i: 573, }, D { l: 133, t: 0, i: 767, }, D { l: 134, t: 0, i: 1018, }, D { l: 135, t: 11, i: 1305, }, D { l: 12, t: 10, i: 30, }, D { l: 13, t: 10, i: 148, }, D { l: 14, t: 10, i: 87, }, D { l: 14, t: 10, i: 182, }, D { l: 16, t: 10, i: 42, }, D { l: 148, t: 10, i: 70, }, D { l: 134, t: 11, i: 607, }, D { l: 4, t: 0, i: 273 }, D { l: 5, t: 0, i: 658 }, D { l: 133, t: 0, i: 995, }, D { l: 6, t: 0, i: 72 }, D { l: 139, t: 11, i: 174, }, D { l: 10, t: 0, i: 483, }, D { l: 12, t: 0, i: 368, }, D { l: 7, t: 10, i: 56 }, D { l: 7, t: 10, i: 1989, }, D { l: 8, t: 10, i: 337, }, D { l: 8, t: 10, i: 738, }, D { l: 9, t: 10, i: 600, }, D { l: 13, t: 10, i: 447, }, D { l: 142, t: 10, i: 92, }, D { l: 5, t: 11, i: 784, }, D { l: 138, t: 10, i: 666, }, D { l: 135, t: 0, i: 1345, }, D { l: 139, t: 11, i: 882, }, D { l: 134, t: 0, i: 1293, }, D { l: 133, t: 0, i: 589, }, D { l: 134, t: 0, i: 1988, }, D { l: 5, t: 0, i: 117 }, D { l: 6, t: 0, i: 514 }, D { l: 6, t: 0, i: 541 }, D { l: 7, t: 0, i: 1164, }, D { l: 7, t: 0, i: 1436, }, D { l: 8, t: 0, i: 220 }, D { l: 8, t: 0, i: 648 }, D { l: 10, t: 0, i: 688, }, D { l: 139, t: 0, i: 560, }, D { l: 136, t: 0, i: 379, }, D { l: 5, t: 0, i: 686 }, D { l: 7, t: 10, i: 866, }, D { l: 135, t: 10, i: 1163, }, D { l: 132, t: 10, i: 328, }, D { l: 9, t: 11, i: 14 }, D { l: 9, t: 11, i: 441, }, D { l: 10, t: 11, i: 306, }, D { l: 139, t: 11, i: 9, }, D { l: 4, t: 10, i: 101, }, D { l: 135, t: 10, i: 1171, }, D { l: 5, t: 10, i: 833, }, D { l: 136, t: 10, i: 744, }, D { l: 5, t: 11, i: 161, }, D { l: 7, t: 11, i: 839, }, D { l: 135, t: 11, i: 887, }, D { l: 7, t: 0, i: 196 }, D { l: 10, t: 0, i: 765, }, D { l: 11, t: 0, i: 347, }, D { l: 11, t: 0, i: 552, }, D { l: 11, t: 0, i: 790, }, D { l: 12, t: 0, i: 263, }, D { l: 13, t: 0, i: 246, }, D { l: 13, t: 0, i: 270, }, D { l: 13, t: 0, i: 395, }, D { l: 14, t: 0, i: 176, }, D { l: 14, t: 0, i: 190, }, D { l: 14, t: 0, i: 398, }, D { l: 14, t: 0, i: 412, }, D { l: 15, t: 0, i: 32 }, D { l: 15, t: 0, i: 63 }, D { l: 16, t: 0, i: 88 }, D { l: 147, t: 0, i: 105, }, D { l: 6, t: 10, i: 9 }, D { l: 6, t: 10, i: 397, }, D { l: 7, t: 10, i: 53 }, D { l: 7, t: 10, i: 1742, }, D { l: 10, t: 10, i: 632, }, D { l: 11, t: 10, i: 828, }, D { l: 140, t: 10, i: 146, }, D { l: 5, t: 0, i: 381 }, D { l: 135, t: 0, i: 1792, }, D { l: 134, t: 0, i: 1452, }, D { l: 135, t: 11, i: 429, }, D { l: 8, t: 0, i: 367 }, D { l: 10, t: 0, i: 760, }, D { l: 14, t: 0, i: 79 }, D { l: 20, t: 0, i: 17 }, D { l: 152, t: 0, i: 0 }, D { l: 7, t: 0, i: 616 }, D { l: 138, t: 0, i: 413, }, D { l: 11, t: 10, i: 417, }, D { l: 12, t: 10, i: 223, }, D { l: 140, t: 10, i: 265, }, D { l: 7, t: 11, i: 1611, }, D { l: 13, t: 11, i: 14, }, D { l: 15, t: 11, i: 44, }, D { l: 19, t: 11, i: 13, }, D { l: 148, t: 11, i: 76, }, D { l: 135, t: 0, i: 1229, }, D { l: 6, t: 0, i: 120 }, D { l: 7, t: 0, i: 1188, }, D { l: 7, t: 0, i: 1710, }, D { l: 8, t: 0, i: 286 }, D { l: 9, t: 0, i: 667 }, D { l: 11, t: 0, i: 592, }, D { l: 139, t: 0, i: 730, }, D { l: 135, t: 11, i: 1814, }, D { l: 135, t: 0, i: 1146, }, D { l: 4, t: 10, i: 186, }, D { l: 5, t: 10, i: 157, }, D { l: 8, t: 10, i: 168, }, D { l: 138, t: 10, i: 6, }, D { l: 4, t: 0, i: 352 }, D { l: 135, t: 0, i: 687, }, D { l: 4, t: 0, i: 192 }, D { l: 5, t: 0, i: 49 }, D { l: 6, t: 0, i: 200 }, D { l: 6, t: 0, i: 293 }, D { l: 6, t: 0, i: 1696, }, D { l: 135, t: 0, i: 1151, }, D { l: 133, t: 10, i: 875, }, D { l: 5, t: 10, i: 773, }, D { l: 5, t: 10, i: 991, }, D { l: 6, t: 10, i: 1635, }, D { l: 134, t: 10, i: 1788, }, D { l: 7, t: 10, i: 111, }, D { l: 136, t: 10, i: 581, }, D { l: 6, t: 0, i: 935 }, D { l: 134, t: 0, i: 1151, }, D { l: 134, t: 0, i: 1050, }, D { l: 132, t: 0, i: 650, }, D { l: 132, t: 0, i: 147, }, D { l: 11, t: 0, i: 194, }, D { l: 12, t: 0, i: 62 }, D { l: 12, t: 0, i: 88 }, D { l: 11, t: 11, i: 194, }, D { l: 12, t: 11, i: 62, }, D { l: 140, t: 11, i: 88, }, D { l: 6, t: 0, i: 339 }, D { l: 135, t: 0, i: 923, }, D { l: 134, t: 10, i: 1747, }, D { l: 7, t: 11, i: 643, }, D { l: 136, t: 11, i: 236, }, D { l: 133, t: 0, i: 934, }, D { l: 7, t: 10, i: 1364, }, D { l: 7, t: 10, i: 1907, }, D { l: 141, t: 10, i: 158, }, D { l: 132, t: 10, i: 659, }, D { l: 4, t: 10, i: 404, }, D { l: 135, t: 10, i: 675, }, D { l: 7, t: 11, i: 581, }, D { l: 9, t: 11, i: 644, }, D { l: 137, t: 11, i: 699, }, D { l: 13, t: 0, i: 211, }, D { l: 14, t: 0, i: 133, }, D { l: 14, t: 0, i: 204, }, D { l: 15, t: 0, i: 64 }, D { l: 15, t: 0, i: 69 }, D { l: 15, t: 0, i: 114, }, D { l: 16, t: 0, i: 10 }, D { l: 19, t: 0, i: 23 }, D { l: 19, t: 0, i: 35 }, D { l: 19, t: 0, i: 39 }, D { l: 19, t: 0, i: 51 }, D { l: 19, t: 0, i: 71 }, D { l: 19, t: 0, i: 75 }, D { l: 152, t: 0, i: 15, }, D { l: 133, t: 10, i: 391, }, D { l: 5, t: 11, i: 54 }, D { l: 135, t: 11, i: 1513, }, D { l: 7, t: 0, i: 222 }, D { l: 8, t: 0, i: 341 }, D { l: 5, t: 10, i: 540, }, D { l: 134, t: 10, i: 1697, }, D { l: 134, t: 10, i: 78, }, D { l: 132, t: 11, i: 744, }, D { l: 136, t: 0, i: 293, }, D { l: 137, t: 11, i: 701, }, D { l: 7, t: 11, i: 930, }, D { l: 10, t: 11, i: 402, }, D { l: 10, t: 11, i: 476, }, D { l: 13, t: 11, i: 452, }, D { l: 18, t: 11, i: 55, }, D { l: 147, t: 11, i: 104, }, D { l: 132, t: 0, i: 637, }, D { l: 133, t: 10, i: 460, }, D { l: 8, t: 11, i: 50 }, D { l: 137, t: 11, i: 624, }, D { l: 132, t: 11, i: 572, }, D { l: 134, t: 0, i: 1159, }, D { l: 4, t: 10, i: 199, }, D { l: 139, t: 10, i: 34, }, D { l: 134, t: 0, i: 847, }, D { l: 134, t: 10, i: 388, }, D { l: 6, t: 11, i: 43 }, D { l: 7, t: 11, i: 38 }, D { l: 8, t: 11, i: 248, }, D { l: 9, t: 11, i: 504, }, D { l: 138, t: 11, i: 513, }, D { l: 9, t: 0, i: 683 }, D { l: 4, t: 10, i: 511, }, D { l: 6, t: 10, i: 608, }, D { l: 9, t: 10, i: 333, }, D { l: 10, t: 10, i: 602, }, D { l: 11, t: 10, i: 441, }, D { l: 11, t: 10, i: 723, }, D { l: 11, t: 10, i: 976, }, D { l: 140, t: 10, i: 357, }, D { l: 9, t: 0, i: 867 }, D { l: 138, t: 0, i: 837, }, D { l: 6, t: 0, i: 944 }, D { l: 135, t: 11, i: 326, }, D { l: 135, t: 0, i: 1809, }, D { l: 5, t: 10, i: 938, }, D { l: 7, t: 11, i: 783, }, D { l: 136, t: 10, i: 707, }, D { l: 133, t: 11, i: 766, }, D { l: 133, t: 11, i: 363, }, D { l: 6, t: 0, i: 170 }, D { l: 7, t: 0, i: 1080, }, D { l: 8, t: 0, i: 395 }, D { l: 8, t: 0, i: 487 }, D { l: 141, t: 0, i: 147, }, D { l: 6, t: 11, i: 258, }, D { l: 140, t: 11, i: 409, }, D { l: 4, t: 0, i: 535 }, D { l: 8, t: 0, i: 618 }, D { l: 5, t: 11, i: 249, }, D { l: 148, t: 11, i: 82, }, D { l: 6, t: 0, i: 1379, }, D { l: 149, t: 11, i: 15, }, D { l: 135, t: 0, i: 1625, }, D { l: 150, t: 0, i: 23, }, D { l: 5, t: 11, i: 393, }, D { l: 6, t: 11, i: 378, }, D { l: 7, t: 11, i: 1981, }, D { l: 9, t: 11, i: 32 }, D { l: 9, t: 11, i: 591, }, D { l: 10, t: 11, i: 685, }, D { l: 10, t: 11, i: 741, }, D { l: 142, t: 11, i: 382, }, D { l: 133, t: 11, i: 788, }, D { l: 7, t: 11, i: 1968, }, D { l: 10, t: 11, i: 19, }, D { l: 139, t: 11, i: 911, }, D { l: 7, t: 11, i: 1401, }, D { l: 135, t: 11, i: 1476, }, D { l: 4, t: 11, i: 61 }, D { l: 5, t: 11, i: 58 }, D { l: 5, t: 11, i: 171, }, D { l: 5, t: 11, i: 635, }, D { l: 5, t: 11, i: 683, }, D { l: 5, t: 11, i: 700, }, D { l: 6, t: 11, i: 291, }, D { l: 6, t: 11, i: 566, }, D { l: 7, t: 11, i: 1650, }, D { l: 11, t: 11, i: 523, }, D { l: 12, t: 11, i: 273, }, D { l: 12, t: 11, i: 303, }, D { l: 15, t: 11, i: 39, }, D { l: 143, t: 11, i: 111, }, D { l: 6, t: 10, i: 469, }, D { l: 7, t: 10, i: 1709, }, D { l: 138, t: 10, i: 515, }, D { l: 4, t: 0, i: 778 }, D { l: 134, t: 11, i: 589, }, D { l: 132, t: 0, i: 46, }, D { l: 5, t: 0, i: 811 }, D { l: 6, t: 0, i: 1679, }, D { l: 6, t: 0, i: 1714, }, D { l: 135, t: 0, i: 2032, }, D { l: 7, t: 0, i: 1458, }, D { l: 9, t: 0, i: 407 }, D { l: 11, t: 0, i: 15 }, D { l: 12, t: 0, i: 651, }, D { l: 149, t: 0, i: 37, }, D { l: 7, t: 0, i: 938 }, D { l: 132, t: 10, i: 500, }, D { l: 6, t: 0, i: 34 }, D { l: 7, t: 0, i: 69 }, D { l: 7, t: 0, i: 1089, }, D { l: 7, t: 0, i: 1281, }, D { l: 8, t: 0, i: 708 }, D { l: 8, t: 0, i: 721 }, D { l: 9, t: 0, i: 363 }, D { l: 148, t: 0, i: 98, }, D { l: 10, t: 11, i: 231, }, D { l: 147, t: 11, i: 124, }, D { l: 7, t: 11, i: 726, }, D { l: 152, t: 11, i: 9, }, D { l: 5, t: 10, i: 68 }, D { l: 134, t: 10, i: 383, }, D { l: 136, t: 11, i: 583, }, D { l: 4, t: 11, i: 917, }, D { l: 133, t: 11, i: 1005, }, D { l: 11, t: 10, i: 216, }, D { l: 139, t: 10, i: 340, }, D { l: 135, t: 11, i: 1675, }, D { l: 8, t: 0, i: 441 }, D { l: 10, t: 0, i: 314, }, D { l: 143, t: 0, i: 3 }, D { l: 132, t: 11, i: 919, }, D { l: 4, t: 10, i: 337, }, D { l: 6, t: 10, i: 353, }, D { l: 7, t: 10, i: 1934, }, D { l: 8, t: 10, i: 488, }, D { l: 137, t: 10, i: 429, }, D { l: 7, t: 0, i: 889 }, D { l: 7, t: 10, i: 1795, }, D { l: 8, t: 10, i: 259, }, D { l: 9, t: 10, i: 135, }, D { l: 9, t: 10, i: 177, }, D { l: 9, t: 10, i: 860, }, D { l: 10, t: 10, i: 825, }, D { l: 11, t: 10, i: 115, }, D { l: 11, t: 10, i: 370, }, D { l: 11, t: 10, i: 405, }, D { l: 11, t: 10, i: 604, }, D { l: 12, t: 10, i: 10, }, D { l: 12, t: 10, i: 667, }, D { l: 12, t: 10, i: 669, }, D { l: 13, t: 10, i: 76, }, D { l: 14, t: 10, i: 310, }, D { l: 15, t: 10, i: 76, }, D { l: 15, t: 10, i: 147, }, D { l: 148, t: 10, i: 23, }, D { l: 4, t: 10, i: 15 }, D { l: 4, t: 11, i: 255, }, D { l: 5, t: 10, i: 22 }, D { l: 5, t: 11, i: 302, }, D { l: 6, t: 11, i: 132, }, D { l: 6, t: 10, i: 244, }, D { l: 7, t: 10, i: 40 }, D { l: 7, t: 11, i: 128, }, D { l: 7, t: 10, i: 200, }, D { l: 7, t: 11, i: 283, }, D { l: 7, t: 10, i: 906, }, D { l: 7, t: 10, i: 1199, }, D { l: 7, t: 11, i: 1299, }, D { l: 9, t: 10, i: 616, }, D { l: 10, t: 11, i: 52, }, D { l: 10, t: 11, i: 514, }, D { l: 10, t: 10, i: 716, }, D { l: 11, t: 10, i: 635, }, D { l: 11, t: 10, i: 801, }, D { l: 11, t: 11, i: 925, }, D { l: 12, t: 10, i: 458, }, D { l: 13, t: 11, i: 92, }, D { l: 142, t: 11, i: 309, }, D { l: 132, t: 0, i: 462, }, D { l: 137, t: 11, i: 173, }, D { l: 135, t: 10, i: 1735, }, D { l: 8, t: 0, i: 525 }, D { l: 5, t: 10, i: 598, }, D { l: 7, t: 10, i: 791, }, D { l: 8, t: 10, i: 108, }, D { l: 137, t: 10, i: 123, }, D { l: 5, t: 0, i: 73 }, D { l: 6, t: 0, i: 23 }, D { l: 134, t: 0, i: 338, }, D { l: 132, t: 0, i: 676, }, D { l: 132, t: 10, i: 683, }, D { l: 7, t: 0, i: 725 }, D { l: 8, t: 0, i: 498 }, D { l: 139, t: 0, i: 268, }, D { l: 12, t: 0, i: 21 }, D { l: 151, t: 0, i: 7 }, D { l: 135, t: 0, i: 773, }, D { l: 4, t: 10, i: 155, }, D { l: 135, t: 10, i: 1689, }, D { l: 4, t: 0, i: 164 }, D { l: 5, t: 0, i: 730 }, D { l: 5, t: 10, i: 151, }, D { l: 5, t: 10, i: 741, }, D { l: 6, t: 11, i: 210, }, D { l: 7, t: 10, i: 498, }, D { l: 7, t: 10, i: 870, }, D { l: 7, t: 10, i: 1542, }, D { l: 12, t: 10, i: 213, }, D { l: 14, t: 10, i: 36, }, D { l: 14, t: 10, i: 391, }, D { l: 17, t: 10, i: 111, }, D { l: 18, t: 10, i: 6 }, D { l: 18, t: 10, i: 46, }, D { l: 18, t: 10, i: 151, }, D { l: 19, t: 10, i: 36, }, D { l: 20, t: 10, i: 32, }, D { l: 20, t: 10, i: 56, }, D { l: 20, t: 10, i: 69, }, D { l: 20, t: 10, i: 102, }, D { l: 21, t: 10, i: 4 }, D { l: 22, t: 10, i: 8 }, D { l: 22, t: 10, i: 10, }, D { l: 22, t: 10, i: 14, }, D { l: 150, t: 10, i: 31, }, D { l: 4, t: 10, i: 624, }, D { l: 135, t: 10, i: 1752, }, D { l: 4, t: 0, i: 583 }, D { l: 9, t: 0, i: 936 }, D { l: 15, t: 0, i: 214, }, D { l: 18, t: 0, i: 199, }, D { l: 24, t: 0, i: 26 }, D { l: 134, t: 11, i: 588, }, D { l: 7, t: 0, i: 1462, }, D { l: 11, t: 0, i: 659, }, D { l: 4, t: 11, i: 284, }, D { l: 134, t: 11, i: 223, }, D { l: 133, t: 0, i: 220, }, D { l: 139, t: 0, i: 803, }, D { l: 132, t: 0, i: 544, }, D { l: 4, t: 10, i: 492, }, D { l: 133, t: 10, i: 451, }, D { l: 16, t: 0, i: 98 }, D { l: 148, t: 0, i: 119, }, D { l: 4, t: 11, i: 218, }, D { l: 7, t: 11, i: 526, }, D { l: 143, t: 11, i: 137, }, D { l: 135, t: 10, i: 835, }, D { l: 4, t: 11, i: 270, }, D { l: 5, t: 11, i: 192, }, D { l: 6, t: 11, i: 332, }, D { l: 7, t: 11, i: 1322, }, D { l: 13, t: 11, i: 9 }, D { l: 13, t: 10, i: 70, }, D { l: 14, t: 11, i: 104, }, D { l: 142, t: 11, i: 311, }, D { l: 132, t: 10, i: 539, }, D { l: 140, t: 11, i: 661, }, D { l: 5, t: 0, i: 176 }, D { l: 6, t: 0, i: 437 }, D { l: 6, t: 0, i: 564 }, D { l: 11, t: 0, i: 181, }, D { l: 141, t: 0, i: 183, }, D { l: 135, t: 0, i: 1192, }, D { l: 6, t: 10, i: 113, }, D { l: 135, t: 10, i: 436, }, D { l: 136, t: 10, i: 718, }, D { l: 135, t: 10, i: 520, }, D { l: 135, t: 0, i: 1878, }, D { l: 140, t: 11, i: 196, }, D { l: 7, t: 11, i: 379, }, D { l: 8, t: 11, i: 481, }, D { l: 137, t: 11, i: 377, }, D { l: 5, t: 11, i: 1003, }, D { l: 6, t: 11, i: 149, }, D { l: 137, t: 11, i: 746, }, D { l: 8, t: 11, i: 262, }, D { l: 9, t: 11, i: 627, }, D { l: 10, t: 11, i: 18, }, D { l: 11, t: 11, i: 214, }, D { l: 11, t: 11, i: 404, }, D { l: 11, t: 11, i: 457, }, D { l: 11, t: 11, i: 780, }, D { l: 11, t: 11, i: 849, }, D { l: 11, t: 11, i: 913, }, D { l: 13, t: 11, i: 330, }, D { l: 13, t: 11, i: 401, }, D { l: 142, t: 11, i: 200, }, D { l: 149, t: 0, i: 26, }, D { l: 136, t: 11, i: 304, }, D { l: 132, t: 11, i: 142, }, D { l: 135, t: 0, i: 944, }, D { l: 4, t: 0, i: 790 }, D { l: 5, t: 0, i: 273 }, D { l: 134, t: 0, i: 394, }, D { l: 134, t: 0, i: 855, }, D { l: 4, t: 0, i: 135 }, D { l: 6, t: 0, i: 127 }, D { l: 7, t: 0, i: 1185, }, D { l: 7, t: 0, i: 1511, }, D { l: 8, t: 0, i: 613 }, D { l: 11, t: 0, i: 5 }, D { l: 12, t: 0, i: 336, }, D { l: 12, t: 0, i: 495, }, D { l: 12, t: 0, i: 586, }, D { l: 12, t: 0, i: 660, }, D { l: 12, t: 0, i: 668, }, D { l: 14, t: 0, i: 385, }, D { l: 15, t: 0, i: 118, }, D { l: 17, t: 0, i: 20 }, D { l: 146, t: 0, i: 98, }, D { l: 6, t: 0, i: 230 }, D { l: 9, t: 0, i: 752 }, D { l: 18, t: 0, i: 109, }, D { l: 12, t: 10, i: 610, }, D { l: 13, t: 10, i: 431, }, D { l: 144, t: 10, i: 59, }, D { l: 7, t: 0, i: 1954, }, D { l: 135, t: 11, i: 925, }, D { l: 4, t: 11, i: 471, }, D { l: 5, t: 11, i: 51 }, D { l: 6, t: 11, i: 602, }, D { l: 8, t: 11, i: 484, }, D { l: 10, t: 11, i: 195, }, D { l: 140, t: 11, i: 159, }, D { l: 132, t: 10, i: 307, }, D { l: 136, t: 11, i: 688, }, D { l: 132, t: 11, i: 697, }, D { l: 7, t: 11, i: 812, }, D { l: 7, t: 11, i: 1261, }, D { l: 7, t: 11, i: 1360, }, D { l: 9, t: 11, i: 632, }, D { l: 140, t: 11, i: 352, }, D { l: 5, t: 0, i: 162 }, D { l: 8, t: 0, i: 68 }, D { l: 133, t: 10, i: 964, }, D { l: 4, t: 0, i: 654 }, D { l: 136, t: 11, i: 212, }, D { l: 4, t: 0, i: 156 }, D { l: 7, t: 0, i: 998 }, D { l: 7, t: 0, i: 1045, }, D { l: 7, t: 0, i: 1860, }, D { l: 9, t: 0, i: 48 }, D { l: 9, t: 0, i: 692 }, D { l: 11, t: 0, i: 419, }, D { l: 139, t: 0, i: 602, }, D { l: 133, t: 11, i: 221, }, D { l: 4, t: 11, i: 373, }, D { l: 5, t: 11, i: 283, }, D { l: 6, t: 11, i: 480, }, D { l: 135, t: 11, i: 609, }, D { l: 142, t: 11, i: 216, }, D { l: 132, t: 0, i: 240, }, D { l: 6, t: 11, i: 192, }, D { l: 9, t: 11, i: 793, }, D { l: 145, t: 11, i: 55, }, D { l: 4, t: 10, i: 75 }, D { l: 5, t: 10, i: 180, }, D { l: 6, t: 10, i: 500, }, D { l: 7, t: 10, i: 58 }, D { l: 7, t: 10, i: 710, }, D { l: 138, t: 10, i: 645, }, D { l: 4, t: 11, i: 132, }, D { l: 5, t: 11, i: 69 }, D { l: 5, t: 10, i: 649, }, D { l: 135, t: 11, i: 1242, }, D { l: 6, t: 10, i: 276, }, D { l: 7, t: 10, i: 282, }, D { l: 7, t: 10, i: 879, }, D { l: 7, t: 10, i: 924, }, D { l: 8, t: 10, i: 459, }, D { l: 9, t: 10, i: 599, }, D { l: 9, t: 10, i: 754, }, D { l: 11, t: 10, i: 574, }, D { l: 12, t: 10, i: 128, }, D { l: 12, t: 10, i: 494, }, D { l: 13, t: 10, i: 52, }, D { l: 13, t: 10, i: 301, }, D { l: 15, t: 10, i: 30, }, D { l: 143, t: 10, i: 132, }, D { l: 132, t: 10, i: 200, }, D { l: 4, t: 11, i: 111, }, D { l: 135, t: 11, i: 302, }, D { l: 9, t: 0, i: 197 }, D { l: 10, t: 0, i: 300, }, D { l: 12, t: 0, i: 473, }, D { l: 13, t: 0, i: 90 }, D { l: 141, t: 0, i: 405, }, D { l: 132, t: 11, i: 767, }, D { l: 6, t: 11, i: 42 }, D { l: 7, t: 11, i: 1416, }, D { l: 7, t: 11, i: 1590, }, D { l: 7, t: 11, i: 2005, }, D { l: 8, t: 11, i: 131, }, D { l: 8, t: 11, i: 466, }, D { l: 9, t: 11, i: 672, }, D { l: 13, t: 11, i: 252, }, D { l: 148, t: 11, i: 103, }, D { l: 8, t: 0, i: 958 }, D { l: 8, t: 0, i: 999 }, D { l: 10, t: 0, i: 963, }, D { l: 138, t: 0, i: 1001, }, D { l: 135, t: 10, i: 1621, }, D { l: 135, t: 0, i: 858, }, D { l: 4, t: 0, i: 606 }, D { l: 137, t: 11, i: 444, }, D { l: 6, t: 11, i: 44 }, D { l: 136, t: 11, i: 368, }, D { l: 139, t: 11, i: 172, }, D { l: 4, t: 11, i: 570, }, D { l: 133, t: 11, i: 120, }, D { l: 139, t: 11, i: 624, }, D { l: 7, t: 0, i: 1978, }, D { l: 8, t: 0, i: 676 }, D { l: 6, t: 10, i: 225, }, D { l: 137, t: 10, i: 211, }, D { l: 7, t: 0, i: 972 }, D { l: 11, t: 0, i: 102, }, D { l: 136, t: 10, i: 687, }, D { l: 6, t: 11, i: 227, }, D { l: 135, t: 11, i: 1589, }, D { l: 8, t: 10, i: 58 }, D { l: 9, t: 10, i: 724, }, D { l: 11, t: 10, i: 809, }, D { l: 13, t: 10, i: 113, }, D { l: 145, t: 10, i: 72, }, D { l: 4, t: 0, i: 361 }, D { l: 133, t: 0, i: 315, }, D { l: 132, t: 0, i: 461, }, D { l: 6, t: 10, i: 345, }, D { l: 135, t: 10, i: 1247, }, D { l: 132, t: 0, i: 472, }, D { l: 8, t: 10, i: 767, }, D { l: 8, t: 10, i: 803, }, D { l: 9, t: 10, i: 301, }, D { l: 137, t: 10, i: 903, }, D { l: 135, t: 11, i: 1333, }, D { l: 135, t: 11, i: 477, }, D { l: 7, t: 10, i: 1949, }, D { l: 136, t: 10, i: 674, }, D { l: 6, t: 0, i: 905 }, D { l: 138, t: 0, i: 747, }, D { l: 133, t: 0, i: 155, }, D { l: 134, t: 10, i: 259, }, D { l: 7, t: 0, i: 163 }, D { l: 8, t: 0, i: 319 }, D { l: 9, t: 0, i: 402 }, D { l: 10, t: 0, i: 24 }, D { l: 10, t: 0, i: 681, }, D { l: 11, t: 0, i: 200, }, D { l: 12, t: 0, i: 253, }, D { l: 12, t: 0, i: 410, }, D { l: 142, t: 0, i: 219, }, D { l: 5, t: 0, i: 475 }, D { l: 7, t: 0, i: 1780, }, D { l: 9, t: 0, i: 230 }, D { l: 11, t: 0, i: 297, }, D { l: 11, t: 0, i: 558, }, D { l: 14, t: 0, i: 322, }, D { l: 19, t: 0, i: 76 }, D { l: 6, t: 11, i: 1667, }, D { l: 7, t: 11, i: 2036, }, D { l: 138, t: 11, i: 600, }, D { l: 136, t: 10, i: 254, }, D { l: 6, t: 0, i: 848 }, D { l: 135, t: 0, i: 1956, }, D { l: 6, t: 11, i: 511, }, D { l: 140, t: 11, i: 132, }, D { l: 5, t: 11, i: 568, }, D { l: 6, t: 11, i: 138, }, D { l: 135, t: 11, i: 1293, }, D { l: 6, t: 0, i: 631 }, D { l: 137, t: 0, i: 838, }, D { l: 149, t: 0, i: 36, }, D { l: 4, t: 11, i: 565, }, D { l: 8, t: 11, i: 23 }, D { l: 136, t: 11, i: 827, }, D { l: 5, t: 0, i: 944 }, D { l: 134, t: 0, i: 1769, }, D { l: 4, t: 0, i: 144 }, D { l: 6, t: 0, i: 842 }, D { l: 6, t: 0, i: 1400, }, D { l: 4, t: 11, i: 922, }, D { l: 133, t: 11, i: 1023, }, D { l: 133, t: 10, i: 248, }, D { l: 9, t: 10, i: 800, }, D { l: 10, t: 10, i: 693, }, D { l: 11, t: 10, i: 482, }, D { l: 11, t: 10, i: 734, }, D { l: 139, t: 10, i: 789, }, D { l: 7, t: 11, i: 1002, }, D { l: 139, t: 11, i: 145, }, D { l: 4, t: 10, i: 116, }, D { l: 5, t: 10, i: 95 }, D { l: 5, t: 10, i: 445, }, D { l: 7, t: 10, i: 1688, }, D { l: 8, t: 10, i: 29 }, D { l: 9, t: 10, i: 272, }, D { l: 11, t: 10, i: 509, }, D { l: 139, t: 10, i: 915, }, D { l: 14, t: 0, i: 369, }, D { l: 146, t: 0, i: 72, }, D { l: 135, t: 10, i: 1641, }, D { l: 132, t: 11, i: 740, }, D { l: 133, t: 10, i: 543, }, D { l: 140, t: 11, i: 116, }, D { l: 6, t: 0, i: 247 }, D { l: 9, t: 0, i: 555 }, D { l: 5, t: 10, i: 181, }, D { l: 136, t: 10, i: 41, }, D { l: 133, t: 10, i: 657, }, D { l: 136, t: 0, i: 996, }, D { l: 138, t: 10, i: 709, }, D { l: 7, t: 0, i: 189 }, D { l: 8, t: 10, i: 202, }, D { l: 138, t: 10, i: 536, }, D { l: 136, t: 11, i: 402, }, D { l: 4, t: 11, i: 716, }, D { l: 141, t: 11, i: 31, }, D { l: 10, t: 0, i: 280, }, D { l: 138, t: 0, i: 797, }, D { l: 9, t: 10, i: 423, }, D { l: 140, t: 10, i: 89, }, D { l: 8, t: 10, i: 113, }, D { l: 9, t: 10, i: 877, }, D { l: 10, t: 10, i: 554, }, D { l: 11, t: 10, i: 83, }, D { l: 12, t: 10, i: 136, }, D { l: 147, t: 10, i: 109, }, D { l: 133, t: 10, i: 976, }, D { l: 7, t: 0, i: 746 }, D { l: 132, t: 10, i: 206, }, D { l: 136, t: 0, i: 526, }, D { l: 139, t: 0, i: 345, }, D { l: 136, t: 0, i: 1017, }, D { l: 8, t: 11, i: 152, }, D { l: 9, t: 11, i: 53 }, D { l: 9, t: 11, i: 268, }, D { l: 9, t: 11, i: 901, }, D { l: 10, t: 11, i: 518, }, D { l: 10, t: 11, i: 829, }, D { l: 11, t: 11, i: 188, }, D { l: 13, t: 11, i: 74, }, D { l: 14, t: 11, i: 46, }, D { l: 15, t: 11, i: 17, }, D { l: 15, t: 11, i: 33, }, D { l: 17, t: 11, i: 40, }, D { l: 18, t: 11, i: 36, }, D { l: 19, t: 11, i: 20, }, D { l: 22, t: 11, i: 1 }, D { l: 152, t: 11, i: 2, }, D { l: 133, t: 11, i: 736, }, D { l: 136, t: 11, i: 532, }, D { l: 5, t: 0, i: 428 }, D { l: 138, t: 0, i: 651, }, D { l: 135, t: 11, i: 681, }, D { l: 135, t: 0, i: 1162, }, D { l: 7, t: 0, i: 327 }, D { l: 13, t: 0, i: 230, }, D { l: 17, t: 0, i: 113, }, D { l: 8, t: 10, i: 226, }, D { l: 10, t: 10, i: 537, }, D { l: 11, t: 10, i: 570, }, D { l: 11, t: 10, i: 605, }, D { l: 11, t: 10, i: 799, }, D { l: 11, t: 10, i: 804, }, D { l: 12, t: 10, i: 85, }, D { l: 12, t: 10, i: 516, }, D { l: 12, t: 10, i: 623, }, D { l: 12, t: 11, i: 677, }, D { l: 13, t: 10, i: 361, }, D { l: 14, t: 10, i: 77, }, D { l: 14, t: 10, i: 78, }, D { l: 147, t: 10, i: 110, }, D { l: 4, t: 0, i: 792 }, D { l: 7, t: 0, i: 1717, }, D { l: 10, t: 0, i: 546, }, D { l: 132, t: 10, i: 769, }, D { l: 4, t: 11, i: 684, }, D { l: 136, t: 11, i: 384, }, D { l: 132, t: 10, i: 551, }, D { l: 134, t: 0, i: 1203, }, D { l: 9, t: 10, i: 57 }, D { l: 9, t: 10, i: 459, }, D { l: 10, t: 10, i: 425, }, D { l: 11, t: 10, i: 119, }, D { l: 12, t: 10, i: 184, }, D { l: 12, t: 10, i: 371, }, D { l: 13, t: 10, i: 358, }, D { l: 145, t: 10, i: 51, }, D { l: 5, t: 0, i: 672 }, D { l: 5, t: 10, i: 814, }, D { l: 8, t: 10, i: 10 }, D { l: 9, t: 10, i: 421, }, D { l: 9, t: 10, i: 729, }, D { l: 10, t: 10, i: 609, }, D { l: 139, t: 10, i: 689, }, D { l: 138, t: 0, i: 189, }, D { l: 134, t: 10, i: 624, }, D { l: 7, t: 11, i: 110, }, D { l: 7, t: 11, i: 188, }, D { l: 8, t: 11, i: 290, }, D { l: 8, t: 11, i: 591, }, D { l: 9, t: 11, i: 382, }, D { l: 9, t: 11, i: 649, }, D { l: 11, t: 11, i: 71, }, D { l: 11, t: 11, i: 155, }, D { l: 11, t: 11, i: 313, }, D { l: 12, t: 11, i: 5 }, D { l: 13, t: 11, i: 325, }, D { l: 142, t: 11, i: 287, }, D { l: 133, t: 0, i: 99, }, D { l: 6, t: 0, i: 1053, }, D { l: 135, t: 0, i: 298, }, D { l: 7, t: 11, i: 360, }, D { l: 7, t: 11, i: 425, }, D { l: 9, t: 11, i: 66 }, D { l: 9, t: 11, i: 278, }, D { l: 138, t: 11, i: 644, }, D { l: 4, t: 0, i: 397 }, D { l: 136, t: 0, i: 555, }, D { l: 137, t: 10, i: 269, }, D { l: 132, t: 10, i: 528, }, D { l: 4, t: 11, i: 900, }, D { l: 133, t: 11, i: 861, }, D { l: 6, t: 0, i: 1157, }, D { l: 5, t: 11, i: 254, }, D { l: 7, t: 11, i: 985, }, D { l: 136, t: 11, i: 73, }, D { l: 7, t: 11, i: 1959, }, D { l: 136, t: 11, i: 683, }, D { l: 12, t: 0, i: 398, }, D { l: 20, t: 0, i: 39 }, D { l: 21, t: 0, i: 11 }, D { l: 150, t: 0, i: 41, }, D { l: 4, t: 0, i: 485 }, D { l: 7, t: 0, i: 353 }, D { l: 135, t: 0, i: 1523, }, D { l: 6, t: 0, i: 366 }, D { l: 7, t: 0, i: 1384, }, D { l: 135, t: 0, i: 1601, }, D { l: 138, t: 0, i: 787, }, D { l: 137, t: 0, i: 282, }, D { l: 5, t: 10, i: 104, }, D { l: 6, t: 10, i: 173, }, D { l: 135, t: 10, i: 1631, }, D { l: 139, t: 11, i: 146, }, D { l: 4, t: 0, i: 157 }, D { l: 133, t: 0, i: 471, }, D { l: 134, t: 0, i: 941, }, D { l: 132, t: 11, i: 725, }, D { l: 7, t: 0, i: 1336, }, D { l: 8, t: 10, i: 138, }, D { l: 8, t: 10, i: 342, }, D { l: 9, t: 10, i: 84 }, D { l: 10, t: 10, i: 193, }, D { l: 11, t: 10, i: 883, }, D { l: 140, t: 10, i: 359, }, D { l: 134, t: 11, i: 196, }, D { l: 136, t: 0, i: 116, }, D { l: 133, t: 11, i: 831, }, D { l: 134, t: 0, i: 787, }, D { l: 134, t: 10, i: 95, }, D { l: 6, t: 10, i: 406, }, D { l: 10, t: 10, i: 409, }, D { l: 10, t: 10, i: 447, }, D { l: 11, t: 10, i: 44, }, D { l: 140, t: 10, i: 100, }, D { l: 5, t: 0, i: 160 }, D { l: 7, t: 0, i: 363 }, D { l: 7, t: 0, i: 589 }, D { l: 10, t: 0, i: 170, }, D { l: 141, t: 0, i: 55, }, D { l: 134, t: 0, i: 1815, }, D { l: 132, t: 0, i: 866, }, D { l: 6, t: 0, i: 889 }, D { l: 6, t: 0, i: 1067, }, D { l: 6, t: 0, i: 1183, }, D { l: 4, t: 11, i: 321, }, D { l: 134, t: 11, i: 569, }, D { l: 5, t: 11, i: 848, }, D { l: 134, t: 11, i: 66, }, D { l: 4, t: 11, i: 36 }, D { l: 6, t: 10, i: 1636, }, D { l: 7, t: 11, i: 1387, }, D { l: 10, t: 11, i: 205, }, D { l: 11, t: 11, i: 755, }, D { l: 141, t: 11, i: 271, }, D { l: 132, t: 0, i: 689, }, D { l: 9, t: 0, i: 820 }, D { l: 4, t: 10, i: 282, }, D { l: 7, t: 10, i: 1034, }, D { l: 11, t: 10, i: 398, }, D { l: 11, t: 10, i: 634, }, D { l: 12, t: 10, i: 1 }, D { l: 12, t: 10, i: 79, }, D { l: 12, t: 10, i: 544, }, D { l: 14, t: 10, i: 237, }, D { l: 17, t: 10, i: 10, }, D { l: 146, t: 10, i: 20, }, D { l: 4, t: 0, i: 108 }, D { l: 7, t: 0, i: 804 }, D { l: 139, t: 0, i: 498, }, D { l: 132, t: 11, i: 887, }, D { l: 6, t: 0, i: 1119, }, D { l: 135, t: 11, i: 620, }, D { l: 6, t: 11, i: 165, }, D { l: 138, t: 11, i: 388, }, D { l: 5, t: 0, i: 244 }, D { l: 5, t: 10, i: 499, }, D { l: 6, t: 10, i: 476, }, D { l: 7, t: 10, i: 600, }, D { l: 7, t: 10, i: 888, }, D { l: 135, t: 10, i: 1096, }, D { l: 140, t: 0, i: 609, }, D { l: 135, t: 0, i: 1005, }, D { l: 4, t: 0, i: 412 }, D { l: 133, t: 0, i: 581, }, D { l: 4, t: 11, i: 719, }, D { l: 135, t: 11, i: 155, }, D { l: 7, t: 10, i: 296, }, D { l: 7, t: 10, i: 596, }, D { l: 8, t: 10, i: 560, }, D { l: 8, t: 10, i: 586, }, D { l: 9, t: 10, i: 612, }, D { l: 11, t: 10, i: 304, }, D { l: 12, t: 10, i: 46, }, D { l: 13, t: 10, i: 89, }, D { l: 14, t: 10, i: 112, }, D { l: 145, t: 10, i: 122, }, D { l: 4, t: 0, i: 895 }, D { l: 133, t: 0, i: 772, }, D { l: 142, t: 11, i: 307, }, D { l: 135, t: 0, i: 1898, }, D { l: 4, t: 0, i: 926 }, D { l: 133, t: 0, i: 983, }, D { l: 4, t: 11, i: 353, }, D { l: 6, t: 11, i: 146, }, D { l: 6, t: 11, i: 1789, }, D { l: 7, t: 11, i: 288, }, D { l: 7, t: 11, i: 990, }, D { l: 7, t: 11, i: 1348, }, D { l: 9, t: 11, i: 665, }, D { l: 9, t: 11, i: 898, }, D { l: 11, t: 11, i: 893, }, D { l: 142, t: 11, i: 212, }, D { l: 132, t: 0, i: 538, }, D { l: 133, t: 11, i: 532, }, D { l: 6, t: 0, i: 294 }, D { l: 7, t: 0, i: 1267, }, D { l: 8, t: 0, i: 624 }, D { l: 141, t: 0, i: 496, }, D { l: 7, t: 0, i: 1325, }, D { l: 4, t: 11, i: 45 }, D { l: 135, t: 11, i: 1257, }, D { l: 138, t: 0, i: 301, }, D { l: 9, t: 0, i: 298 }, D { l: 12, t: 0, i: 291, }, D { l: 13, t: 0, i: 276, }, D { l: 14, t: 0, i: 6 }, D { l: 17, t: 0, i: 18 }, D { l: 21, t: 0, i: 32 }, D { l: 7, t: 10, i: 1599, }, D { l: 7, t: 10, i: 1723, }, D { l: 8, t: 10, i: 79 }, D { l: 8, t: 10, i: 106, }, D { l: 8, t: 10, i: 190, }, D { l: 8, t: 10, i: 302, }, D { l: 8, t: 10, i: 383, }, D { l: 8, t: 10, i: 713, }, D { l: 9, t: 10, i: 119, }, D { l: 9, t: 10, i: 233, }, D { l: 9, t: 10, i: 419, }, D { l: 9, t: 10, i: 471, }, D { l: 10, t: 10, i: 181, }, D { l: 10, t: 10, i: 406, }, D { l: 11, t: 10, i: 57, }, D { l: 11, t: 10, i: 85, }, D { l: 11, t: 10, i: 120, }, D { l: 11, t: 10, i: 177, }, D { l: 11, t: 10, i: 296, }, D { l: 11, t: 10, i: 382, }, D { l: 11, t: 10, i: 454, }, D { l: 11, t: 10, i: 758, }, D { l: 11, t: 10, i: 999, }, D { l: 12, t: 10, i: 27, }, D { l: 12, t: 10, i: 131, }, D { l: 12, t: 10, i: 245, }, D { l: 12, t: 10, i: 312, }, D { l: 12, t: 10, i: 446, }, D { l: 12, t: 10, i: 454, }, D { l: 13, t: 10, i: 98, }, D { l: 13, t: 10, i: 426, }, D { l: 13, t: 10, i: 508, }, D { l: 14, t: 10, i: 163, }, D { l: 14, t: 10, i: 272, }, D { l: 14, t: 10, i: 277, }, D { l: 14, t: 10, i: 370, }, D { l: 15, t: 10, i: 95, }, D { l: 15, t: 10, i: 138, }, D { l: 15, t: 10, i: 167, }, D { l: 17, t: 10, i: 38, }, D { l: 148, t: 10, i: 96, }, D { l: 132, t: 0, i: 757, }, D { l: 134, t: 0, i: 1263, }, D { l: 4, t: 0, i: 820 }, D { l: 134, t: 10, i: 1759, }, D { l: 133, t: 0, i: 722, }, D { l: 136, t: 11, i: 816, }, D { l: 138, t: 10, i: 372, }, D { l: 145, t: 10, i: 16, }, D { l: 134, t: 0, i: 1039, }, D { l: 4, t: 0, i: 991 }, D { l: 134, t: 0, i: 2028, }, D { l: 133, t: 10, i: 258, }, D { l: 7, t: 0, i: 1875, }, D { l: 139, t: 0, i: 124, }, D { l: 6, t: 11, i: 559, }, D { l: 6, t: 11, i: 1691, }, D { l: 135, t: 11, i: 586, }, D { l: 5, t: 0, i: 324 }, D { l: 7, t: 0, i: 881 }, D { l: 8, t: 10, i: 134, }, D { l: 9, t: 10, i: 788, }, D { l: 140, t: 10, i: 438, }, D { l: 7, t: 11, i: 1823, }, D { l: 139, t: 11, i: 693, }, D { l: 6, t: 0, i: 1348, }, D { l: 134, t: 0, i: 1545, }, D { l: 134, t: 0, i: 911, }, D { l: 132, t: 0, i: 954, }, D { l: 8, t: 0, i: 329 }, D { l: 8, t: 0, i: 414 }, D { l: 7, t: 10, i: 1948, }, D { l: 135, t: 10, i: 2004, }, D { l: 5, t: 0, i: 517 }, D { l: 6, t: 10, i: 439, }, D { l: 7, t: 10, i: 780, }, D { l: 135, t: 10, i: 1040, }, D { l: 132, t: 0, i: 816, }, D { l: 5, t: 10, i: 1 }, D { l: 6, t: 10, i: 81 }, D { l: 138, t: 10, i: 520, }, D { l: 9, t: 0, i: 713 }, D { l: 10, t: 0, i: 222, }, D { l: 5, t: 10, i: 482, }, D { l: 8, t: 10, i: 98 }, D { l: 10, t: 10, i: 700, }, D { l: 10, t: 10, i: 822, }, D { l: 11, t: 10, i: 302, }, D { l: 11, t: 10, i: 778, }, D { l: 12, t: 10, i: 50, }, D { l: 12, t: 10, i: 127, }, D { l: 12, t: 10, i: 396, }, D { l: 13, t: 10, i: 62, }, D { l: 13, t: 10, i: 328, }, D { l: 14, t: 10, i: 122, }, D { l: 147, t: 10, i: 72, }, D { l: 137, t: 0, i: 33, }, D { l: 5, t: 10, i: 2 }, D { l: 7, t: 10, i: 1494, }, D { l: 136, t: 10, i: 589, }, D { l: 6, t: 10, i: 512, }, D { l: 7, t: 10, i: 797, }, D { l: 8, t: 10, i: 253, }, D { l: 9, t: 10, i: 77 }, D { l: 10, t: 10, i: 1 }, D { l: 10, t: 11, i: 108, }, D { l: 10, t: 10, i: 129, }, D { l: 10, t: 10, i: 225, }, D { l: 11, t: 11, i: 116, }, D { l: 11, t: 10, i: 118, }, D { l: 11, t: 10, i: 226, }, D { l: 11, t: 10, i: 251, }, D { l: 11, t: 10, i: 430, }, D { l: 11, t: 10, i: 701, }, D { l: 11, t: 10, i: 974, }, D { l: 11, t: 10, i: 982, }, D { l: 12, t: 10, i: 64, }, D { l: 12, t: 10, i: 260, }, D { l: 12, t: 10, i: 488, }, D { l: 140, t: 10, i: 690, }, D { l: 134, t: 11, i: 456, }, D { l: 133, t: 11, i: 925, }, D { l: 5, t: 0, i: 150 }, D { l: 7, t: 0, i: 106 }, D { l: 7, t: 0, i: 774 }, D { l: 8, t: 0, i: 603 }, D { l: 9, t: 0, i: 593 }, D { l: 9, t: 0, i: 634 }, D { l: 10, t: 0, i: 44 }, D { l: 10, t: 0, i: 173, }, D { l: 11, t: 0, i: 462, }, D { l: 11, t: 0, i: 515, }, D { l: 13, t: 0, i: 216, }, D { l: 13, t: 0, i: 288, }, D { l: 142, t: 0, i: 400, }, D { l: 137, t: 10, i: 347, }, D { l: 5, t: 0, i: 748 }, D { l: 134, t: 0, i: 553, }, D { l: 12, t: 0, i: 108, }, D { l: 141, t: 0, i: 291, }, D { l: 7, t: 0, i: 420 }, D { l: 4, t: 10, i: 12 }, D { l: 7, t: 10, i: 522, }, D { l: 7, t: 10, i: 809, }, D { l: 8, t: 10, i: 797, }, D { l: 141, t: 10, i: 88, }, D { l: 6, t: 11, i: 193, }, D { l: 7, t: 11, i: 240, }, D { l: 7, t: 11, i: 1682, }, D { l: 10, t: 11, i: 51, }, D { l: 10, t: 11, i: 640, }, D { l: 11, t: 11, i: 410, }, D { l: 13, t: 11, i: 82, }, D { l: 14, t: 11, i: 247, }, D { l: 14, t: 11, i: 331, }, D { l: 142, t: 11, i: 377, }, D { l: 133, t: 10, i: 528, }, D { l: 135, t: 0, i: 1777, }, D { l: 4, t: 0, i: 493 }, D { l: 144, t: 0, i: 55, }, D { l: 136, t: 11, i: 633, }, D { l: 139, t: 0, i: 81, }, D { l: 6, t: 0, i: 980 }, D { l: 136, t: 0, i: 321, }, D { l: 148, t: 10, i: 109, }, D { l: 5, t: 10, i: 266, }, D { l: 9, t: 10, i: 290, }, D { l: 9, t: 10, i: 364, }, D { l: 10, t: 10, i: 293, }, D { l: 11, t: 10, i: 606, }, D { l: 142, t: 10, i: 45, }, D { l: 6, t: 0, i: 568 }, D { l: 7, t: 0, i: 112 }, D { l: 7, t: 0, i: 1804, }, D { l: 8, t: 0, i: 362 }, D { l: 8, t: 0, i: 410 }, D { l: 8, t: 0, i: 830 }, D { l: 9, t: 0, i: 514 }, D { l: 11, t: 0, i: 649, }, D { l: 142, t: 0, i: 157, }, D { l: 4, t: 0, i: 74 }, D { l: 6, t: 0, i: 510 }, D { l: 6, t: 10, i: 594, }, D { l: 9, t: 10, i: 121, }, D { l: 10, t: 10, i: 49, }, D { l: 10, t: 10, i: 412, }, D { l: 139, t: 10, i: 834, }, D { l: 134, t: 0, i: 838, }, D { l: 136, t: 10, i: 748, }, D { l: 132, t: 10, i: 466, }, D { l: 132, t: 0, i: 625, }, D { l: 135, t: 11, i: 1443, }, D { l: 4, t: 11, i: 237, }, D { l: 135, t: 11, i: 514, }, D { l: 9, t: 10, i: 378, }, D { l: 141, t: 10, i: 162, }, D { l: 6, t: 0, i: 16 }, D { l: 6, t: 0, i: 158 }, D { l: 7, t: 0, i: 43 }, D { l: 7, t: 0, i: 129 }, D { l: 7, t: 0, i: 181 }, D { l: 8, t: 0, i: 276 }, D { l: 8, t: 0, i: 377 }, D { l: 10, t: 0, i: 523, }, D { l: 11, t: 0, i: 816, }, D { l: 12, t: 0, i: 455, }, D { l: 13, t: 0, i: 303, }, D { l: 142, t: 0, i: 135, }, D { l: 135, t: 0, i: 281, }, D { l: 4, t: 0, i: 1 }, D { l: 7, t: 0, i: 1143, }, D { l: 7, t: 0, i: 1463, }, D { l: 8, t: 0, i: 61 }, D { l: 9, t: 0, i: 207 }, D { l: 9, t: 0, i: 390 }, D { l: 9, t: 0, i: 467 }, D { l: 139, t: 0, i: 836, }, D { l: 6, t: 11, i: 392, }, D { l: 7, t: 11, i: 65 }, D { l: 135, t: 11, i: 2019, }, D { l: 132, t: 10, i: 667, }, D { l: 4, t: 0, i: 723 }, D { l: 5, t: 0, i: 895 }, D { l: 7, t: 0, i: 1031, }, D { l: 8, t: 0, i: 199 }, D { l: 8, t: 0, i: 340 }, D { l: 9, t: 0, i: 153 }, D { l: 9, t: 0, i: 215 }, D { l: 10, t: 0, i: 21 }, D { l: 10, t: 0, i: 59 }, D { l: 10, t: 0, i: 80 }, D { l: 10, t: 0, i: 224, }, D { l: 10, t: 0, i: 838, }, D { l: 11, t: 0, i: 229, }, D { l: 11, t: 0, i: 652, }, D { l: 12, t: 0, i: 192, }, D { l: 13, t: 0, i: 146, }, D { l: 142, t: 0, i: 91, }, D { l: 132, t: 0, i: 295, }, D { l: 137, t: 0, i: 51, }, D { l: 9, t: 11, i: 222, }, D { l: 10, t: 11, i: 43, }, D { l: 139, t: 11, i: 900, }, D { l: 5, t: 0, i: 309 }, D { l: 140, t: 0, i: 211, }, D { l: 5, t: 0, i: 125 }, D { l: 8, t: 0, i: 77 }, D { l: 138, t: 0, i: 15, }, D { l: 136, t: 11, i: 604, }, D { l: 138, t: 0, i: 789, }, D { l: 5, t: 0, i: 173 }, D { l: 4, t: 10, i: 39 }, D { l: 7, t: 10, i: 1843, }, D { l: 8, t: 10, i: 407, }, D { l: 11, t: 10, i: 144, }, D { l: 140, t: 10, i: 523, }, D { l: 138, t: 11, i: 265, }, D { l: 133, t: 0, i: 439, }, D { l: 132, t: 10, i: 510, }, D { l: 7, t: 0, i: 648 }, D { l: 7, t: 0, i: 874 }, D { l: 11, t: 0, i: 164, }, D { l: 12, t: 0, i: 76 }, D { l: 18, t: 0, i: 9 }, D { l: 7, t: 10, i: 1980, }, D { l: 10, t: 10, i: 487, }, D { l: 138, t: 10, i: 809, }, D { l: 12, t: 0, i: 111, }, D { l: 14, t: 0, i: 294, }, D { l: 19, t: 0, i: 45 }, D { l: 13, t: 10, i: 260, }, D { l: 146, t: 10, i: 63, }, D { l: 133, t: 11, i: 549, }, D { l: 134, t: 10, i: 570, }, D { l: 4, t: 0, i: 8 }, D { l: 7, t: 0, i: 1152, }, D { l: 7, t: 0, i: 1153, }, D { l: 7, t: 0, i: 1715, }, D { l: 9, t: 0, i: 374 }, D { l: 10, t: 0, i: 478, }, D { l: 139, t: 0, i: 648, }, D { l: 135, t: 0, i: 1099, }, D { l: 5, t: 0, i: 575 }, D { l: 6, t: 0, i: 354 }, D { l: 135, t: 0, i: 701, }, D { l: 7, t: 11, i: 36 }, D { l: 8, t: 11, i: 201, }, D { l: 136, t: 11, i: 605, }, D { l: 4, t: 10, i: 787, }, D { l: 136, t: 11, i: 156, }, D { l: 6, t: 0, i: 518 }, D { l: 149, t: 11, i: 13, }, D { l: 140, t: 11, i: 224, }, D { l: 134, t: 0, i: 702, }, D { l: 132, t: 10, i: 516, }, D { l: 5, t: 11, i: 724, }, D { l: 10, t: 11, i: 305, }, D { l: 11, t: 11, i: 151, }, D { l: 12, t: 11, i: 33, }, D { l: 12, t: 11, i: 121, }, D { l: 12, t: 11, i: 381, }, D { l: 17, t: 11, i: 3 }, D { l: 17, t: 11, i: 27, }, D { l: 17, t: 11, i: 78, }, D { l: 18, t: 11, i: 18, }, D { l: 19, t: 11, i: 54, }, D { l: 149, t: 11, i: 5, }, D { l: 8, t: 0, i: 87 }, D { l: 4, t: 11, i: 523, }, D { l: 5, t: 11, i: 638, }, D { l: 11, t: 10, i: 887, }, D { l: 14, t: 10, i: 365, }, D { l: 142, t: 10, i: 375, }, D { l: 138, t: 0, i: 438, }, D { l: 136, t: 10, i: 821, }, D { l: 135, t: 11, i: 1908, }, D { l: 6, t: 11, i: 242, }, D { l: 7, t: 11, i: 227, }, D { l: 7, t: 11, i: 1581, }, D { l: 8, t: 11, i: 104, }, D { l: 9, t: 11, i: 113, }, D { l: 9, t: 11, i: 220, }, D { l: 9, t: 11, i: 427, }, D { l: 10, t: 11, i: 74, }, D { l: 10, t: 11, i: 239, }, D { l: 11, t: 11, i: 579, }, D { l: 11, t: 11, i: 1023, }, D { l: 13, t: 11, i: 4 }, D { l: 13, t: 11, i: 204, }, D { l: 13, t: 11, i: 316, }, D { l: 18, t: 11, i: 95, }, D { l: 148, t: 11, i: 86, }, D { l: 4, t: 0, i: 69 }, D { l: 5, t: 0, i: 122 }, D { l: 5, t: 0, i: 849 }, D { l: 6, t: 0, i: 1633, }, D { l: 9, t: 0, i: 656 }, D { l: 138, t: 0, i: 464, }, D { l: 7, t: 0, i: 1802, }, D { l: 4, t: 10, i: 10 }, D { l: 139, t: 10, i: 786, }, D { l: 135, t: 11, i: 861, }, D { l: 139, t: 0, i: 499, }, D { l: 7, t: 0, i: 476 }, D { l: 7, t: 0, i: 1592, }, D { l: 138, t: 0, i: 87, }, D { l: 133, t: 10, i: 684, }, D { l: 4, t: 0, i: 840 }, D { l: 134, t: 10, i: 27, }, D { l: 142, t: 0, i: 283, }, D { l: 6, t: 0, i: 1620, }, D { l: 7, t: 11, i: 1328, }, D { l: 136, t: 11, i: 494, }, D { l: 5, t: 0, i: 859 }, D { l: 7, t: 0, i: 1160, }, D { l: 8, t: 0, i: 107 }, D { l: 9, t: 0, i: 291 }, D { l: 9, t: 0, i: 439 }, D { l: 10, t: 0, i: 663, }, D { l: 11, t: 0, i: 609, }, D { l: 140, t: 0, i: 197, }, D { l: 7, t: 11, i: 1306, }, D { l: 8, t: 11, i: 505, }, D { l: 9, t: 11, i: 482, }, D { l: 10, t: 11, i: 126, }, D { l: 11, t: 11, i: 225, }, D { l: 12, t: 11, i: 347, }, D { l: 12, t: 11, i: 449, }, D { l: 13, t: 11, i: 19, }, D { l: 142, t: 11, i: 218, }, D { l: 5, t: 11, i: 268, }, D { l: 10, t: 11, i: 764, }, D { l: 12, t: 11, i: 120, }, D { l: 13, t: 11, i: 39, }, D { l: 145, t: 11, i: 127, }, D { l: 145, t: 10, i: 56, }, D { l: 7, t: 11, i: 1672, }, D { l: 10, t: 11, i: 472, }, D { l: 11, t: 11, i: 189, }, D { l: 143, t: 11, i: 51, }, D { l: 6, t: 10, i: 342, }, D { l: 6, t: 10, i: 496, }, D { l: 8, t: 10, i: 275, }, D { l: 137, t: 10, i: 206, }, D { l: 133, t: 0, i: 600, }, D { l: 4, t: 0, i: 117 }, D { l: 6, t: 0, i: 372 }, D { l: 7, t: 0, i: 1905, }, D { l: 142, t: 0, i: 323, }, D { l: 4, t: 10, i: 909, }, D { l: 5, t: 10, i: 940, }, D { l: 135, t: 11, i: 1471, }, D { l: 132, t: 10, i: 891, }, D { l: 4, t: 0, i: 722 }, D { l: 139, t: 0, i: 471, }, D { l: 4, t: 11, i: 384, }, D { l: 135, t: 11, i: 1022, }, D { l: 132, t: 10, i: 687, }, D { l: 9, t: 0, i: 5 }, D { l: 12, t: 0, i: 216, }, D { l: 12, t: 0, i: 294, }, D { l: 12, t: 0, i: 298, }, D { l: 12, t: 0, i: 400, }, D { l: 12, t: 0, i: 518, }, D { l: 13, t: 0, i: 229, }, D { l: 143, t: 0, i: 139, }, D { l: 135, t: 11, i: 1703, }, D { l: 7, t: 11, i: 1602, }, D { l: 10, t: 11, i: 698, }, D { l: 12, t: 11, i: 212, }, D { l: 141, t: 11, i: 307, }, D { l: 6, t: 10, i: 41 }, D { l: 141, t: 10, i: 160, }, D { l: 135, t: 11, i: 1077, }, D { l: 9, t: 11, i: 159, }, D { l: 11, t: 11, i: 28, }, D { l: 140, t: 11, i: 603, }, D { l: 4, t: 0, i: 514 }, D { l: 7, t: 0, i: 1304, }, D { l: 138, t: 0, i: 477, }, D { l: 134, t: 0, i: 1774, }, D { l: 9, t: 0, i: 88 }, D { l: 139, t: 0, i: 270, }, D { l: 5, t: 0, i: 12 }, D { l: 7, t: 0, i: 375 }, D { l: 9, t: 0, i: 438 }, D { l: 134, t: 10, i: 1718, }, D { l: 132, t: 11, i: 515, }, D { l: 136, t: 10, i: 778, }, D { l: 8, t: 11, i: 632, }, D { l: 8, t: 11, i: 697, }, D { l: 137, t: 11, i: 854, }, D { l: 6, t: 0, i: 362 }, D { l: 6, t: 0, i: 997 }, D { l: 146, t: 0, i: 51, }, D { l: 7, t: 0, i: 816 }, D { l: 7, t: 0, i: 1241, }, D { l: 9, t: 0, i: 283 }, D { l: 9, t: 0, i: 520 }, D { l: 10, t: 0, i: 213, }, D { l: 10, t: 0, i: 307, }, D { l: 10, t: 0, i: 463, }, D { l: 10, t: 0, i: 671, }, D { l: 10, t: 0, i: 746, }, D { l: 11, t: 0, i: 401, }, D { l: 11, t: 0, i: 794, }, D { l: 12, t: 0, i: 517, }, D { l: 18, t: 0, i: 107, }, D { l: 147, t: 0, i: 115, }, D { l: 133, t: 10, i: 115, }, D { l: 150, t: 11, i: 28, }, D { l: 4, t: 11, i: 136, }, D { l: 133, t: 11, i: 551, }, D { l: 142, t: 10, i: 314, }, D { l: 132, t: 0, i: 258, }, D { l: 6, t: 0, i: 22 }, D { l: 7, t: 0, i: 903 }, D { l: 7, t: 0, i: 1963, }, D { l: 8, t: 0, i: 639 }, D { l: 138, t: 0, i: 577, }, D { l: 5, t: 0, i: 681 }, D { l: 8, t: 0, i: 782 }, D { l: 13, t: 0, i: 130, }, D { l: 17, t: 0, i: 84 }, D { l: 5, t: 10, i: 193, }, D { l: 140, t: 10, i: 178, }, D { l: 9, t: 11, i: 17 }, D { l: 138, t: 11, i: 291, }, D { l: 7, t: 11, i: 1287, }, D { l: 9, t: 11, i: 44 }, D { l: 10, t: 11, i: 552, }, D { l: 10, t: 11, i: 642, }, D { l: 11, t: 11, i: 839, }, D { l: 12, t: 11, i: 274, }, D { l: 12, t: 11, i: 275, }, D { l: 12, t: 11, i: 372, }, D { l: 13, t: 11, i: 91, }, D { l: 142, t: 11, i: 125, }, D { l: 135, t: 10, i: 174, }, D { l: 4, t: 0, i: 664 }, D { l: 5, t: 0, i: 804 }, D { l: 139, t: 0, i: 1013, }, D { l: 134, t: 0, i: 942, }, D { l: 6, t: 0, i: 1349, }, D { l: 6, t: 0, i: 1353, }, D { l: 6, t: 0, i: 1450, }, D { l: 7, t: 11, i: 1518, }, D { l: 139, t: 11, i: 694, }, D { l: 11, t: 0, i: 356, }, D { l: 4, t: 10, i: 122, }, D { l: 5, t: 10, i: 796, }, D { l: 5, t: 10, i: 952, }, D { l: 6, t: 10, i: 1660, }, D { l: 6, t: 10, i: 1671, }, D { l: 8, t: 10, i: 567, }, D { l: 9, t: 10, i: 687, }, D { l: 9, t: 10, i: 742, }, D { l: 10, t: 10, i: 686, }, D { l: 11, t: 10, i: 682, }, D { l: 140, t: 10, i: 281, }, D { l: 5, t: 0, i: 32 }, D { l: 6, t: 11, i: 147, }, D { l: 7, t: 11, i: 886, }, D { l: 9, t: 11, i: 753, }, D { l: 138, t: 11, i: 268, }, D { l: 5, t: 10, i: 179, }, D { l: 7, t: 10, i: 1095, }, D { l: 135, t: 10, i: 1213, }, D { l: 4, t: 10, i: 66 }, D { l: 7, t: 10, i: 722, }, D { l: 135, t: 10, i: 904, }, D { l: 135, t: 10, i: 352, }, D { l: 9, t: 11, i: 245, }, D { l: 138, t: 11, i: 137, }, D { l: 4, t: 0, i: 289 }, D { l: 7, t: 0, i: 629 }, D { l: 7, t: 0, i: 1698, }, D { l: 7, t: 0, i: 1711, }, D { l: 12, t: 0, i: 215, }, D { l: 133, t: 11, i: 414, }, D { l: 6, t: 0, i: 1975, }, D { l: 135, t: 11, i: 1762, }, D { l: 6, t: 0, i: 450 }, D { l: 136, t: 0, i: 109, }, D { l: 141, t: 10, i: 35, }, D { l: 134, t: 11, i: 599, }, D { l: 136, t: 0, i: 705, }, D { l: 133, t: 0, i: 664, }, D { l: 134, t: 11, i: 1749, }, D { l: 11, t: 11, i: 402, }, D { l: 12, t: 11, i: 109, }, D { l: 12, t: 11, i: 431, }, D { l: 13, t: 11, i: 179, }, D { l: 13, t: 11, i: 206, }, D { l: 14, t: 11, i: 175, }, D { l: 14, t: 11, i: 217, }, D { l: 16, t: 11, i: 3 }, D { l: 148, t: 11, i: 53, }, D { l: 135, t: 0, i: 1238, }, D { l: 134, t: 11, i: 1627, }, D { l: 132, t: 11, i: 488, }, D { l: 13, t: 0, i: 318, }, D { l: 10, t: 10, i: 592, }, D { l: 10, t: 10, i: 753, }, D { l: 12, t: 10, i: 317, }, D { l: 12, t: 10, i: 355, }, D { l: 12, t: 10, i: 465, }, D { l: 12, t: 10, i: 469, }, D { l: 12, t: 10, i: 560, }, D { l: 140, t: 10, i: 578, }, D { l: 133, t: 10, i: 564, }, D { l: 132, t: 11, i: 83, }, D { l: 140, t: 11, i: 676, }, D { l: 6, t: 0, i: 1872, }, D { l: 6, t: 0, i: 1906, }, D { l: 6, t: 0, i: 1907, }, D { l: 9, t: 0, i: 934 }, D { l: 9, t: 0, i: 956 }, D { l: 9, t: 0, i: 960 }, D { l: 9, t: 0, i: 996 }, D { l: 12, t: 0, i: 794, }, D { l: 12, t: 0, i: 876, }, D { l: 12, t: 0, i: 880, }, D { l: 12, t: 0, i: 918, }, D { l: 15, t: 0, i: 230, }, D { l: 18, t: 0, i: 234, }, D { l: 18, t: 0, i: 238, }, D { l: 21, t: 0, i: 38 }, D { l: 149, t: 0, i: 62, }, D { l: 134, t: 10, i: 556, }, D { l: 134, t: 11, i: 278, }, D { l: 137, t: 0, i: 103, }, D { l: 7, t: 10, i: 544, }, D { l: 8, t: 10, i: 719, }, D { l: 138, t: 10, i: 61, }, D { l: 4, t: 10, i: 5 }, D { l: 5, t: 10, i: 498, }, D { l: 8, t: 10, i: 637, }, D { l: 137, t: 10, i: 521, }, D { l: 7, t: 0, i: 777 }, D { l: 12, t: 0, i: 229, }, D { l: 12, t: 0, i: 239, }, D { l: 15, t: 0, i: 12 }, D { l: 12, t: 11, i: 229, }, D { l: 12, t: 11, i: 239, }, D { l: 143, t: 11, i: 12, }, D { l: 6, t: 0, i: 26 }, D { l: 7, t: 11, i: 388, }, D { l: 7, t: 11, i: 644, }, D { l: 139, t: 11, i: 781, }, D { l: 7, t: 11, i: 229, }, D { l: 8, t: 11, i: 59 }, D { l: 9, t: 11, i: 190, }, D { l: 9, t: 11, i: 257, }, D { l: 10, t: 11, i: 378, }, D { l: 140, t: 11, i: 191, }, D { l: 133, t: 10, i: 927, }, D { l: 135, t: 10, i: 1441, }, D { l: 4, t: 10, i: 893, }, D { l: 5, t: 10, i: 780, }, D { l: 133, t: 10, i: 893, }, D { l: 4, t: 0, i: 414 }, D { l: 5, t: 0, i: 467 }, D { l: 9, t: 0, i: 654 }, D { l: 10, t: 0, i: 451, }, D { l: 12, t: 0, i: 59 }, D { l: 141, t: 0, i: 375, }, D { l: 142, t: 0, i: 173, }, D { l: 135, t: 0, i: 17, }, D { l: 7, t: 0, i: 1350, }, D { l: 133, t: 10, i: 238, }, D { l: 135, t: 0, i: 955, }, D { l: 4, t: 0, i: 960 }, D { l: 10, t: 0, i: 887, }, D { l: 12, t: 0, i: 753, }, D { l: 18, t: 0, i: 161, }, D { l: 18, t: 0, i: 162, }, D { l: 152, t: 0, i: 19, }, D { l: 136, t: 11, i: 344, }, D { l: 6, t: 10, i: 1729, }, D { l: 137, t: 11, i: 288, }, D { l: 132, t: 11, i: 660, }, D { l: 4, t: 0, i: 217 }, D { l: 5, t: 0, i: 710 }, D { l: 7, t: 0, i: 760 }, D { l: 7, t: 0, i: 1926, }, D { l: 9, t: 0, i: 428 }, D { l: 9, t: 0, i: 708 }, D { l: 10, t: 0, i: 254, }, D { l: 10, t: 0, i: 296, }, D { l: 10, t: 0, i: 720, }, D { l: 11, t: 0, i: 109, }, D { l: 11, t: 0, i: 255, }, D { l: 12, t: 0, i: 165, }, D { l: 12, t: 0, i: 315, }, D { l: 13, t: 0, i: 107, }, D { l: 13, t: 0, i: 203, }, D { l: 14, t: 0, i: 54 }, D { l: 14, t: 0, i: 99 }, D { l: 14, t: 0, i: 114, }, D { l: 14, t: 0, i: 388, }, D { l: 16, t: 0, i: 85 }, D { l: 17, t: 0, i: 9 }, D { l: 17, t: 0, i: 33 }, D { l: 20, t: 0, i: 25 }, D { l: 20, t: 0, i: 28 }, D { l: 20, t: 0, i: 29 }, D { l: 21, t: 0, i: 9 }, D { l: 21, t: 0, i: 10 }, D { l: 21, t: 0, i: 34 }, D { l: 22, t: 0, i: 17 }, D { l: 4, t: 10, i: 60 }, D { l: 7, t: 10, i: 1800, }, D { l: 8, t: 10, i: 314, }, D { l: 9, t: 10, i: 700, }, D { l: 139, t: 10, i: 487, }, D { l: 7, t: 11, i: 1035, }, D { l: 138, t: 11, i: 737, }, D { l: 7, t: 11, i: 690, }, D { l: 9, t: 11, i: 217, }, D { l: 9, t: 11, i: 587, }, D { l: 140, t: 11, i: 521, }, D { l: 6, t: 0, i: 919 }, D { l: 7, t: 11, i: 706, }, D { l: 7, t: 11, i: 1058, }, D { l: 138, t: 11, i: 538, }, D { l: 7, t: 10, i: 1853, }, D { l: 138, t: 10, i: 437, }, D { l: 136, t: 10, i: 419, }, D { l: 6, t: 0, i: 280 }, D { l: 10, t: 0, i: 502, }, D { l: 11, t: 0, i: 344, }, D { l: 140, t: 0, i: 38, }, D { l: 5, t: 0, i: 45 }, D { l: 7, t: 0, i: 1161, }, D { l: 11, t: 0, i: 448, }, D { l: 11, t: 0, i: 880, }, D { l: 13, t: 0, i: 139, }, D { l: 13, t: 0, i: 407, }, D { l: 15, t: 0, i: 16 }, D { l: 17, t: 0, i: 95 }, D { l: 18, t: 0, i: 66 }, D { l: 18, t: 0, i: 88 }, D { l: 18, t: 0, i: 123, }, D { l: 149, t: 0, i: 7 }, D { l: 11, t: 11, i: 92, }, D { l: 11, t: 11, i: 196, }, D { l: 11, t: 11, i: 409, }, D { l: 11, t: 11, i: 450, }, D { l: 11, t: 11, i: 666, }, D { l: 11, t: 11, i: 777, }, D { l: 12, t: 11, i: 262, }, D { l: 13, t: 11, i: 385, }, D { l: 13, t: 11, i: 393, }, D { l: 15, t: 11, i: 115, }, D { l: 16, t: 11, i: 45, }, D { l: 145, t: 11, i: 82, }, D { l: 136, t: 0, i: 777, }, D { l: 134, t: 11, i: 1744, }, D { l: 4, t: 0, i: 410 }, D { l: 7, t: 0, i: 521 }, D { l: 133, t: 10, i: 828, }, D { l: 134, t: 0, i: 673, }, D { l: 7, t: 0, i: 1110, }, D { l: 7, t: 0, i: 1778, }, D { l: 7, t: 10, i: 176, }, D { l: 135, t: 10, i: 178, }, D { l: 5, t: 10, i: 806, }, D { l: 7, t: 11, i: 268, }, D { l: 7, t: 10, i: 1976, }, D { l: 136, t: 11, i: 569, }, D { l: 4, t: 11, i: 733, }, D { l: 9, t: 11, i: 194, }, D { l: 10, t: 11, i: 92, }, D { l: 11, t: 11, i: 198, }, D { l: 12, t: 11, i: 84, }, D { l: 12, t: 11, i: 87, }, D { l: 13, t: 11, i: 128, }, D { l: 144, t: 11, i: 74, }, D { l: 5, t: 0, i: 341 }, D { l: 7, t: 0, i: 1129, }, D { l: 11, t: 0, i: 414, }, D { l: 4, t: 10, i: 51 }, D { l: 6, t: 10, i: 4 }, D { l: 7, t: 10, i: 591, }, D { l: 7, t: 10, i: 849, }, D { l: 7, t: 10, i: 951, }, D { l: 7, t: 10, i: 1613, }, D { l: 7, t: 10, i: 1760, }, D { l: 7, t: 10, i: 1988, }, D { l: 9, t: 10, i: 434, }, D { l: 10, t: 10, i: 754, }, D { l: 11, t: 10, i: 25, }, D { l: 139, t: 10, i: 37, }, D { l: 133, t: 10, i: 902, }, D { l: 135, t: 10, i: 928, }, D { l: 135, t: 0, i: 787, }, D { l: 132, t: 0, i: 436, }, D { l: 134, t: 10, i: 270, }, D { l: 7, t: 0, i: 1587, }, D { l: 135, t: 0, i: 1707, }, D { l: 6, t: 0, i: 377 }, D { l: 7, t: 0, i: 1025, }, D { l: 9, t: 0, i: 613 }, D { l: 145, t: 0, i: 104, }, D { l: 7, t: 11, i: 982, }, D { l: 7, t: 11, i: 1361, }, D { l: 10, t: 11, i: 32, }, D { l: 143, t: 11, i: 56, }, D { l: 139, t: 0, i: 96, }, D { l: 132, t: 0, i: 451, }, D { l: 132, t: 10, i: 416, }, D { l: 142, t: 10, i: 372, }, D { l: 5, t: 10, i: 152, }, D { l: 5, t: 10, i: 197, }, D { l: 7, t: 11, i: 306, }, D { l: 7, t: 10, i: 340, }, D { l: 7, t: 10, i: 867, }, D { l: 10, t: 10, i: 548, }, D { l: 10, t: 10, i: 581, }, D { l: 11, t: 10, i: 6 }, D { l: 12, t: 10, i: 3 }, D { l: 12, t: 10, i: 19, }, D { l: 14, t: 10, i: 110, }, D { l: 142, t: 10, i: 289, }, D { l: 134, t: 0, i: 680, }, D { l: 134, t: 11, i: 609, }, D { l: 7, t: 0, i: 483 }, D { l: 7, t: 10, i: 190, }, D { l: 8, t: 10, i: 28 }, D { l: 8, t: 10, i: 141, }, D { l: 8, t: 10, i: 444, }, D { l: 8, t: 10, i: 811, }, D { l: 9, t: 10, i: 468, }, D { l: 11, t: 10, i: 334, }, D { l: 12, t: 10, i: 24, }, D { l: 12, t: 10, i: 386, }, D { l: 140, t: 10, i: 576, }, D { l: 10, t: 0, i: 916, }, D { l: 133, t: 10, i: 757, }, D { l: 5, t: 10, i: 721, }, D { l: 135, t: 10, i: 1553, }, D { l: 133, t: 11, i: 178, }, D { l: 134, t: 0, i: 937, }, D { l: 132, t: 10, i: 898, }, D { l: 133, t: 0, i: 739, }, D { l: 147, t: 0, i: 82, }, D { l: 135, t: 0, i: 663, }, D { l: 146, t: 0, i: 128, }, D { l: 5, t: 10, i: 277, }, D { l: 141, t: 10, i: 247, }, D { l: 134, t: 0, i: 1087, }, D { l: 132, t: 10, i: 435, }, D { l: 6, t: 11, i: 381, }, D { l: 7, t: 11, i: 645, }, D { l: 7, t: 11, i: 694, }, D { l: 136, t: 11, i: 546, }, D { l: 7, t: 0, i: 503 }, D { l: 135, t: 0, i: 1885, }, D { l: 6, t: 0, i: 1965, }, D { l: 8, t: 0, i: 925 }, D { l: 138, t: 0, i: 955, }, D { l: 4, t: 0, i: 113 }, D { l: 5, t: 0, i: 163 }, D { l: 5, t: 0, i: 735 }, D { l: 7, t: 0, i: 1009, }, D { l: 9, t: 0, i: 9 }, D { l: 9, t: 0, i: 771 }, D { l: 12, t: 0, i: 90 }, D { l: 13, t: 0, i: 138, }, D { l: 13, t: 0, i: 410, }, D { l: 143, t: 0, i: 128, }, D { l: 4, t: 0, i: 324 }, D { l: 138, t: 0, i: 104, }, D { l: 7, t: 0, i: 460 }, D { l: 5, t: 10, i: 265, }, D { l: 134, t: 10, i: 212, }, D { l: 133, t: 11, i: 105, }, D { l: 7, t: 11, i: 261, }, D { l: 7, t: 11, i: 1107, }, D { l: 7, t: 11, i: 1115, }, D { l: 7, t: 11, i: 1354, }, D { l: 7, t: 11, i: 1588, }, D { l: 7, t: 11, i: 1705, }, D { l: 7, t: 11, i: 1902, }, D { l: 9, t: 11, i: 465, }, D { l: 10, t: 11, i: 248, }, D { l: 10, t: 11, i: 349, }, D { l: 10, t: 11, i: 647, }, D { l: 11, t: 11, i: 527, }, D { l: 11, t: 11, i: 660, }, D { l: 11, t: 11, i: 669, }, D { l: 12, t: 11, i: 529, }, D { l: 141, t: 11, i: 305, }, D { l: 5, t: 11, i: 438, }, D { l: 9, t: 11, i: 694, }, D { l: 12, t: 11, i: 627, }, D { l: 141, t: 11, i: 210, }, D { l: 152, t: 11, i: 11, }, D { l: 4, t: 0, i: 935 }, D { l: 133, t: 0, i: 823, }, D { l: 132, t: 10, i: 702, }, D { l: 5, t: 0, i: 269 }, D { l: 7, t: 0, i: 434 }, D { l: 7, t: 0, i: 891 }, D { l: 8, t: 0, i: 339 }, D { l: 9, t: 0, i: 702 }, D { l: 11, t: 0, i: 594, }, D { l: 11, t: 0, i: 718, }, D { l: 17, t: 0, i: 100, }, D { l: 5, t: 10, i: 808, }, D { l: 135, t: 10, i: 2045, }, D { l: 7, t: 0, i: 1014, }, D { l: 9, t: 0, i: 485 }, D { l: 141, t: 0, i: 264, }, D { l: 134, t: 0, i: 1713, }, D { l: 7, t: 0, i: 1810, }, D { l: 11, t: 0, i: 866, }, D { l: 12, t: 0, i: 103, }, D { l: 13, t: 0, i: 495, }, D { l: 140, t: 11, i: 233, }, D { l: 4, t: 0, i: 423 }, D { l: 10, t: 0, i: 949, }, D { l: 138, t: 0, i: 1013, }, D { l: 135, t: 0, i: 900, }, D { l: 8, t: 11, i: 25 }, D { l: 138, t: 11, i: 826, }, D { l: 5, t: 10, i: 166, }, D { l: 8, t: 10, i: 739, }, D { l: 140, t: 10, i: 511, }, D { l: 134, t: 0, i: 2018, }, D { l: 7, t: 11, i: 1270, }, D { l: 139, t: 11, i: 612, }, D { l: 4, t: 10, i: 119, }, D { l: 5, t: 10, i: 170, }, D { l: 5, t: 10, i: 447, }, D { l: 7, t: 10, i: 1708, }, D { l: 7, t: 10, i: 1889, }, D { l: 9, t: 10, i: 357, }, D { l: 9, t: 10, i: 719, }, D { l: 12, t: 10, i: 486, }, D { l: 140, t: 10, i: 596, }, D { l: 12, t: 0, i: 574, }, D { l: 140, t: 11, i: 574, }, D { l: 132, t: 11, i: 308, }, D { l: 6, t: 0, i: 964 }, D { l: 6, t: 0, i: 1206, }, D { l: 134, t: 0, i: 1302, }, D { l: 4, t: 10, i: 450, }, D { l: 135, t: 10, i: 1158, }, D { l: 135, t: 11, i: 150, }, D { l: 136, t: 11, i: 649, }, D { l: 14, t: 0, i: 213, }, D { l: 148, t: 0, i: 38, }, D { l: 9, t: 11, i: 45 }, D { l: 9, t: 11, i: 311, }, D { l: 141, t: 11, i: 42, }, D { l: 134, t: 11, i: 521, }, D { l: 7, t: 10, i: 1375, }, D { l: 7, t: 10, i: 1466, }, D { l: 138, t: 10, i: 331, }, D { l: 132, t: 10, i: 754, }, D { l: 5, t: 11, i: 339, }, D { l: 7, t: 11, i: 1442, }, D { l: 14, t: 11, i: 3 }, D { l: 15, t: 11, i: 41, }, D { l: 147, t: 11, i: 66, }, D { l: 136, t: 11, i: 378, }, D { l: 134, t: 0, i: 1022, }, D { l: 5, t: 10, i: 850, }, D { l: 136, t: 10, i: 799, }, D { l: 142, t: 0, i: 143, }, D { l: 135, t: 0, i: 2029, }, D { l: 134, t: 11, i: 1628, }, D { l: 8, t: 0, i: 523 }, D { l: 150, t: 0, i: 34, }, D { l: 5, t: 0, i: 625 }, D { l: 135, t: 0, i: 1617, }, D { l: 7, t: 0, i: 275 }, D { l: 7, t: 10, i: 238, }, D { l: 7, t: 10, i: 2033, }, D { l: 8, t: 10, i: 120, }, D { l: 8, t: 10, i: 188, }, D { l: 8, t: 10, i: 659, }, D { l: 9, t: 10, i: 598, }, D { l: 10, t: 10, i: 466, }, D { l: 12, t: 10, i: 342, }, D { l: 12, t: 10, i: 588, }, D { l: 13, t: 10, i: 503, }, D { l: 14, t: 10, i: 246, }, D { l: 143, t: 10, i: 92, }, D { l: 7, t: 0, i: 37 }, D { l: 8, t: 0, i: 425 }, D { l: 8, t: 0, i: 693 }, D { l: 9, t: 0, i: 720 }, D { l: 10, t: 0, i: 380, }, D { l: 10, t: 0, i: 638, }, D { l: 11, t: 0, i: 273, }, D { l: 11, t: 0, i: 473, }, D { l: 12, t: 0, i: 61 }, D { l: 143, t: 0, i: 43, }, D { l: 135, t: 11, i: 829, }, D { l: 135, t: 0, i: 1943, }, D { l: 132, t: 0, i: 765, }, D { l: 5, t: 11, i: 486, }, D { l: 135, t: 11, i: 1349, }, D { l: 7, t: 11, i: 1635, }, D { l: 8, t: 11, i: 17 }, D { l: 10, t: 11, i: 217, }, D { l: 138, t: 11, i: 295, }, D { l: 4, t: 10, i: 201, }, D { l: 7, t: 10, i: 1744, }, D { l: 8, t: 10, i: 602, }, D { l: 11, t: 10, i: 247, }, D { l: 11, t: 10, i: 826, }, D { l: 145, t: 10, i: 65, }, D { l: 138, t: 11, i: 558, }, D { l: 11, t: 0, i: 551, }, D { l: 142, t: 0, i: 159, }, D { l: 8, t: 10, i: 164, }, D { l: 146, t: 10, i: 62, }, D { l: 139, t: 11, i: 176, }, D { l: 132, t: 0, i: 168, }, D { l: 136, t: 0, i: 1010, }, D { l: 134, t: 0, i: 1994, }, D { l: 135, t: 0, i: 91, }, D { l: 138, t: 0, i: 532, }, D { l: 135, t: 10, i: 1243, }, D { l: 135, t: 0, i: 1884, }, D { l: 132, t: 10, i: 907, }, D { l: 5, t: 10, i: 100, }, D { l: 10, t: 10, i: 329, }, D { l: 12, t: 10, i: 416, }, D { l: 149, t: 10, i: 29, }, D { l: 134, t: 11, i: 447, }, D { l: 132, t: 10, i: 176, }, D { l: 5, t: 10, i: 636, }, D { l: 5, t: 10, i: 998, }, D { l: 7, t: 10, i: 9 }, D { l: 7, t: 10, i: 1508, }, D { l: 8, t: 10, i: 26 }, D { l: 9, t: 10, i: 317, }, D { l: 9, t: 10, i: 358, }, D { l: 10, t: 10, i: 210, }, D { l: 10, t: 10, i: 292, }, D { l: 10, t: 10, i: 533, }, D { l: 11, t: 10, i: 555, }, D { l: 12, t: 10, i: 526, }, D { l: 12, t: 10, i: 607, }, D { l: 13, t: 10, i: 263, }, D { l: 13, t: 10, i: 459, }, D { l: 142, t: 10, i: 271, }, D { l: 4, t: 11, i: 609, }, D { l: 135, t: 11, i: 756, }, D { l: 6, t: 0, i: 15 }, D { l: 7, t: 0, i: 70 }, D { l: 10, t: 0, i: 240, }, D { l: 147, t: 0, i: 93, }, D { l: 4, t: 11, i: 930, }, D { l: 133, t: 11, i: 947, }, D { l: 134, t: 0, i: 1227, }, D { l: 134, t: 0, i: 1534, }, D { l: 133, t: 11, i: 939, }, D { l: 133, t: 11, i: 962, }, D { l: 5, t: 11, i: 651, }, D { l: 8, t: 11, i: 170, }, D { l: 9, t: 11, i: 61 }, D { l: 9, t: 11, i: 63 }, D { l: 10, t: 11, i: 23, }, D { l: 10, t: 11, i: 37, }, D { l: 10, t: 11, i: 834, }, D { l: 11, t: 11, i: 4 }, D { l: 11, t: 11, i: 187, }, D { l: 11, t: 11, i: 281, }, D { l: 11, t: 11, i: 503, }, D { l: 11, t: 11, i: 677, }, D { l: 12, t: 11, i: 96, }, D { l: 12, t: 11, i: 130, }, D { l: 12, t: 11, i: 244, }, D { l: 14, t: 11, i: 5 }, D { l: 14, t: 11, i: 40, }, D { l: 14, t: 11, i: 162, }, D { l: 14, t: 11, i: 202, }, D { l: 146, t: 11, i: 133, }, D { l: 4, t: 11, i: 406, }, D { l: 5, t: 11, i: 579, }, D { l: 12, t: 11, i: 492, }, D { l: 150, t: 11, i: 15, }, D { l: 139, t: 0, i: 392, }, D { l: 6, t: 10, i: 610, }, D { l: 10, t: 10, i: 127, }, D { l: 141, t: 10, i: 27, }, D { l: 7, t: 0, i: 655 }, D { l: 7, t: 0, i: 1844, }, D { l: 136, t: 10, i: 119, }, D { l: 4, t: 0, i: 145 }, D { l: 6, t: 0, i: 176 }, D { l: 7, t: 0, i: 395 }, D { l: 137, t: 0, i: 562, }, D { l: 132, t: 0, i: 501, }, D { l: 140, t: 11, i: 145, }, D { l: 136, t: 0, i: 1019, }, D { l: 134, t: 0, i: 509, }, D { l: 139, t: 0, i: 267, }, D { l: 6, t: 11, i: 17 }, D { l: 7, t: 11, i: 16 }, D { l: 7, t: 11, i: 1001, }, D { l: 7, t: 11, i: 1982, }, D { l: 9, t: 11, i: 886, }, D { l: 10, t: 11, i: 489, }, D { l: 10, t: 11, i: 800, }, D { l: 11, t: 11, i: 782, }, D { l: 12, t: 11, i: 320, }, D { l: 13, t: 11, i: 467, }, D { l: 14, t: 11, i: 145, }, D { l: 14, t: 11, i: 387, }, D { l: 143, t: 11, i: 119, }, D { l: 145, t: 11, i: 17, }, D { l: 6, t: 0, i: 1099, }, D { l: 133, t: 11, i: 458, }, D { l: 7, t: 11, i: 1983, }, D { l: 8, t: 11, i: 0 }, D { l: 8, t: 11, i: 171, }, D { l: 9, t: 11, i: 120, }, D { l: 9, t: 11, i: 732, }, D { l: 10, t: 11, i: 473, }, D { l: 11, t: 11, i: 656, }, D { l: 11, t: 11, i: 998, }, D { l: 18, t: 11, i: 0 }, D { l: 18, t: 11, i: 2 }, D { l: 147, t: 11, i: 21, }, D { l: 12, t: 11, i: 427, }, D { l: 146, t: 11, i: 38, }, D { l: 10, t: 0, i: 948, }, D { l: 138, t: 0, i: 968, }, D { l: 7, t: 10, i: 126, }, D { l: 136, t: 10, i: 84, }, D { l: 136, t: 10, i: 790, }, D { l: 4, t: 0, i: 114 }, D { l: 9, t: 0, i: 492 }, D { l: 13, t: 0, i: 462, }, D { l: 142, t: 0, i: 215, }, D { l: 6, t: 10, i: 64 }, D { l: 12, t: 10, i: 377, }, D { l: 141, t: 10, i: 309, }, D { l: 4, t: 0, i: 77 }, D { l: 5, t: 0, i: 361 }, D { l: 6, t: 0, i: 139 }, D { l: 6, t: 0, i: 401 }, D { l: 6, t: 0, i: 404 }, D { l: 7, t: 0, i: 413 }, D { l: 7, t: 0, i: 715 }, D { l: 7, t: 0, i: 1716, }, D { l: 11, t: 0, i: 279, }, D { l: 12, t: 0, i: 179, }, D { l: 12, t: 0, i: 258, }, D { l: 13, t: 0, i: 244, }, D { l: 142, t: 0, i: 358, }, D { l: 134, t: 0, i: 1717, }, D { l: 7, t: 0, i: 772 }, D { l: 7, t: 0, i: 1061, }, D { l: 7, t: 0, i: 1647, }, D { l: 8, t: 0, i: 82 }, D { l: 11, t: 0, i: 250, }, D { l: 11, t: 0, i: 607, }, D { l: 12, t: 0, i: 311, }, D { l: 12, t: 0, i: 420, }, D { l: 13, t: 0, i: 184, }, D { l: 13, t: 0, i: 367, }, D { l: 7, t: 10, i: 1104, }, D { l: 11, t: 10, i: 269, }, D { l: 11, t: 10, i: 539, }, D { l: 11, t: 10, i: 627, }, D { l: 11, t: 10, i: 706, }, D { l: 11, t: 10, i: 975, }, D { l: 12, t: 10, i: 248, }, D { l: 12, t: 10, i: 434, }, D { l: 12, t: 10, i: 600, }, D { l: 12, t: 10, i: 622, }, D { l: 13, t: 10, i: 297, }, D { l: 13, t: 10, i: 485, }, D { l: 14, t: 10, i: 69, }, D { l: 14, t: 10, i: 409, }, D { l: 143, t: 10, i: 108, }, D { l: 135, t: 0, i: 724, }, D { l: 4, t: 11, i: 512, }, D { l: 4, t: 11, i: 519, }, D { l: 133, t: 11, i: 342, }, D { l: 134, t: 0, i: 1133, }, D { l: 145, t: 11, i: 29, }, D { l: 11, t: 10, i: 977, }, D { l: 141, t: 10, i: 507, }, D { l: 6, t: 0, i: 841 }, D { l: 6, t: 0, i: 1042, }, D { l: 6, t: 0, i: 1194, }, D { l: 10, t: 0, i: 993, }, D { l: 140, t: 0, i: 1021, }, D { l: 6, t: 11, i: 31 }, D { l: 7, t: 11, i: 491, }, D { l: 7, t: 11, i: 530, }, D { l: 8, t: 11, i: 592, }, D { l: 9, t: 10, i: 34 }, D { l: 11, t: 11, i: 53, }, D { l: 11, t: 10, i: 484, }, D { l: 11, t: 11, i: 779, }, D { l: 12, t: 11, i: 167, }, D { l: 12, t: 11, i: 411, }, D { l: 14, t: 11, i: 14, }, D { l: 14, t: 11, i: 136, }, D { l: 15, t: 11, i: 72, }, D { l: 16, t: 11, i: 17, }, D { l: 144, t: 11, i: 72, }, D { l: 4, t: 0, i: 1021, }, D { l: 6, t: 0, i: 2037, }, D { l: 133, t: 11, i: 907, }, D { l: 7, t: 0, i: 373 }, D { l: 8, t: 0, i: 335 }, D { l: 8, t: 0, i: 596 }, D { l: 9, t: 0, i: 488 }, D { l: 6, t: 10, i: 1700, }, D { l: 7, t: 10, i: 293, }, D { l: 7, t: 10, i: 382, }, D { l: 7, t: 10, i: 1026, }, D { l: 7, t: 10, i: 1087, }, D { l: 7, t: 10, i: 2027, }, D { l: 8, t: 10, i: 252, }, D { l: 8, t: 10, i: 727, }, D { l: 8, t: 10, i: 729, }, D { l: 9, t: 10, i: 30 }, D { l: 9, t: 10, i: 199, }, D { l: 9, t: 10, i: 231, }, D { l: 9, t: 10, i: 251, }, D { l: 9, t: 10, i: 334, }, D { l: 9, t: 10, i: 361, }, D { l: 9, t: 10, i: 712, }, D { l: 10, t: 10, i: 55, }, D { l: 10, t: 10, i: 60, }, D { l: 10, t: 10, i: 232, }, D { l: 10, t: 10, i: 332, }, D { l: 10, t: 10, i: 384, }, D { l: 10, t: 10, i: 396, }, D { l: 10, t: 10, i: 504, }, D { l: 10, t: 10, i: 542, }, D { l: 10, t: 10, i: 652, }, D { l: 11, t: 10, i: 20, }, D { l: 11, t: 10, i: 48, }, D { l: 11, t: 10, i: 207, }, D { l: 11, t: 10, i: 291, }, D { l: 11, t: 10, i: 298, }, D { l: 11, t: 10, i: 342, }, D { l: 11, t: 10, i: 365, }, D { l: 11, t: 10, i: 394, }, D { l: 11, t: 10, i: 620, }, D { l: 11, t: 10, i: 705, }, D { l: 11, t: 10, i: 1017, }, D { l: 12, t: 10, i: 123, }, D { l: 12, t: 10, i: 340, }, D { l: 12, t: 10, i: 406, }, D { l: 12, t: 10, i: 643, }, D { l: 13, t: 10, i: 61, }, D { l: 13, t: 10, i: 269, }, D { l: 13, t: 10, i: 311, }, D { l: 13, t: 10, i: 319, }, D { l: 13, t: 10, i: 486, }, D { l: 14, t: 10, i: 234, }, D { l: 15, t: 10, i: 62, }, D { l: 15, t: 10, i: 85, }, D { l: 16, t: 10, i: 71, }, D { l: 18, t: 10, i: 119, }, D { l: 148, t: 10, i: 105, }, D { l: 150, t: 0, i: 37, }, D { l: 4, t: 11, i: 208, }, D { l: 5, t: 11, i: 106, }, D { l: 6, t: 11, i: 531, }, D { l: 8, t: 11, i: 408, }, D { l: 9, t: 11, i: 188, }, D { l: 138, t: 11, i: 572, }, D { l: 132, t: 0, i: 564, }, D { l: 6, t: 0, i: 513 }, D { l: 135, t: 0, i: 1052, }, D { l: 132, t: 0, i: 825, }, D { l: 9, t: 0, i: 899 }, D { l: 140, t: 11, i: 441, }, D { l: 134, t: 0, i: 778, }, D { l: 133, t: 11, i: 379, }, D { l: 7, t: 0, i: 1417, }, D { l: 12, t: 0, i: 382, }, D { l: 17, t: 0, i: 48 }, D { l: 152, t: 0, i: 12, }, D { l: 132, t: 11, i: 241, }, D { l: 7, t: 0, i: 1116, }, D { l: 6, t: 10, i: 379, }, D { l: 7, t: 10, i: 270, }, D { l: 8, t: 10, i: 176, }, D { l: 8, t: 10, i: 183, }, D { l: 9, t: 10, i: 432, }, D { l: 9, t: 10, i: 661, }, D { l: 12, t: 10, i: 247, }, D { l: 12, t: 10, i: 617, }, D { l: 146, t: 10, i: 125, }, D { l: 5, t: 10, i: 792, }, D { l: 133, t: 10, i: 900, }, D { l: 6, t: 0, i: 545 }, D { l: 7, t: 0, i: 565 }, D { l: 7, t: 0, i: 1669, }, D { l: 10, t: 0, i: 114, }, D { l: 11, t: 0, i: 642, }, D { l: 140, t: 0, i: 618, }, D { l: 133, t: 0, i: 5 }, D { l: 138, t: 11, i: 7, }, D { l: 132, t: 11, i: 259, }, D { l: 135, t: 0, i: 192, }, D { l: 134, t: 0, i: 701, }, D { l: 136, t: 0, i: 763, }, D { l: 135, t: 10, i: 1979, }, D { l: 4, t: 10, i: 901, }, D { l: 133, t: 10, i: 776, }, D { l: 10, t: 0, i: 755, }, D { l: 147, t: 0, i: 29, }, D { l: 133, t: 0, i: 759, }, D { l: 4, t: 11, i: 173, }, D { l: 5, t: 11, i: 312, }, D { l: 5, t: 11, i: 512, }, D { l: 135, t: 11, i: 1285, }, D { l: 7, t: 11, i: 1603, }, D { l: 7, t: 11, i: 1691, }, D { l: 9, t: 11, i: 464, }, D { l: 11, t: 11, i: 195, }, D { l: 12, t: 11, i: 279, }, D { l: 12, t: 11, i: 448, }, D { l: 14, t: 11, i: 11, }, D { l: 147, t: 11, i: 102, }, D { l: 7, t: 0, i: 370 }, D { l: 7, t: 0, i: 1007, }, D { l: 7, t: 0, i: 1177, }, D { l: 135, t: 0, i: 1565, }, D { l: 135, t: 0, i: 1237, }, D { l: 4, t: 0, i: 87 }, D { l: 5, t: 0, i: 250 }, D { l: 141, t: 0, i: 298, }, D { l: 4, t: 11, i: 452, }, D { l: 5, t: 11, i: 583, }, D { l: 5, t: 11, i: 817, }, D { l: 6, t: 11, i: 433, }, D { l: 7, t: 11, i: 593, }, D { l: 7, t: 11, i: 720, }, D { l: 7, t: 11, i: 1378, }, D { l: 8, t: 11, i: 161, }, D { l: 9, t: 11, i: 284, }, D { l: 10, t: 11, i: 313, }, D { l: 139, t: 11, i: 886, }, D { l: 4, t: 11, i: 547, }, D { l: 135, t: 11, i: 1409, }, D { l: 136, t: 11, i: 722, }, D { l: 4, t: 10, i: 37 }, D { l: 5, t: 10, i: 334, }, D { l: 135, t: 10, i: 1253, }, D { l: 132, t: 10, i: 508, }, D { l: 12, t: 0, i: 107, }, D { l: 146, t: 0, i: 31, }, D { l: 8, t: 11, i: 420, }, D { l: 139, t: 11, i: 193, }, D { l: 135, t: 0, i: 814, }, D { l: 135, t: 11, i: 409, }, D { l: 140, t: 0, i: 991, }, D { l: 4, t: 0, i: 57 }, D { l: 7, t: 0, i: 1195, }, D { l: 7, t: 0, i: 1438, }, D { l: 7, t: 0, i: 1548, }, D { l: 7, t: 0, i: 1835, }, D { l: 7, t: 0, i: 1904, }, D { l: 9, t: 0, i: 757 }, D { l: 10, t: 0, i: 604, }, D { l: 139, t: 0, i: 519, }, D { l: 132, t: 0, i: 540, }, D { l: 138, t: 11, i: 308, }, D { l: 132, t: 10, i: 533, }, D { l: 136, t: 0, i: 608, }, D { l: 144, t: 11, i: 65, }, D { l: 4, t: 0, i: 1014, }, D { l: 134, t: 0, i: 2029, }, D { l: 4, t: 0, i: 209 }, D { l: 7, t: 0, i: 902 }, D { l: 5, t: 11, i: 1002, }, D { l: 136, t: 11, i: 745, }, D { l: 134, t: 0, i: 2030, }, D { l: 6, t: 0, i: 303 }, D { l: 7, t: 0, i: 335 }, D { l: 7, t: 0, i: 1437, }, D { l: 7, t: 0, i: 1668, }, D { l: 8, t: 0, i: 553 }, D { l: 8, t: 0, i: 652 }, D { l: 8, t: 0, i: 656 }, D { l: 9, t: 0, i: 558 }, D { l: 11, t: 0, i: 743, }, D { l: 149, t: 0, i: 18, }, D { l: 5, t: 11, i: 575, }, D { l: 6, t: 11, i: 354, }, D { l: 135, t: 11, i: 701, }, D { l: 4, t: 11, i: 239, }, D { l: 6, t: 11, i: 477, }, D { l: 7, t: 11, i: 1607, }, D { l: 11, t: 11, i: 68, }, D { l: 139, t: 11, i: 617, }, D { l: 132, t: 0, i: 559, }, D { l: 8, t: 0, i: 527 }, D { l: 18, t: 0, i: 60 }, D { l: 147, t: 0, i: 24, }, D { l: 133, t: 10, i: 920, }, D { l: 138, t: 0, i: 511, }, D { l: 133, t: 0, i: 1017, }, D { l: 133, t: 0, i: 675, }, D { l: 138, t: 10, i: 391, }, D { l: 11, t: 0, i: 156, }, D { l: 135, t: 10, i: 1952, }, D { l: 138, t: 11, i: 369, }, D { l: 132, t: 11, i: 367, }, D { l: 133, t: 0, i: 709, }, D { l: 6, t: 0, i: 698 }, D { l: 134, t: 0, i: 887, }, D { l: 142, t: 10, i: 126, }, D { l: 134, t: 0, i: 1745, }, D { l: 132, t: 10, i: 483, }, D { l: 13, t: 11, i: 299, }, D { l: 142, t: 11, i: 75, }, D { l: 133, t: 0, i: 714, }, D { l: 7, t: 0, i: 8 }, D { l: 136, t: 0, i: 206, }, D { l: 138, t: 10, i: 480, }, D { l: 4, t: 11, i: 694, }, D { l: 9, t: 10, i: 495, }, D { l: 146, t: 10, i: 104, }, D { l: 7, t: 11, i: 1248, }, D { l: 11, t: 11, i: 621, }, D { l: 139, t: 11, i: 702, }, D { l: 140, t: 11, i: 687, }, D { l: 132, t: 0, i: 776, }, D { l: 139, t: 10, i: 1009, }, D { l: 135, t: 0, i: 1272, }, D { l: 134, t: 0, i: 1059, }, D { l: 8, t: 10, i: 653, }, D { l: 13, t: 10, i: 93, }, D { l: 147, t: 10, i: 14, }, D { l: 135, t: 11, i: 213, }, D { l: 136, t: 0, i: 406, }, D { l: 133, t: 10, i: 172, }, D { l: 132, t: 0, i: 947, }, D { l: 8, t: 0, i: 175 }, D { l: 10, t: 0, i: 168, }, D { l: 138, t: 0, i: 573, }, D { l: 132, t: 0, i: 870, }, D { l: 6, t: 0, i: 1567, }, D { l: 151, t: 11, i: 28, }, D { l: 134, t: 11, i: 472, }, D { l: 5, t: 10, i: 260, }, D { l: 136, t: 11, i: 132, }, D { l: 4, t: 11, i: 751, }, D { l: 11, t: 11, i: 390, }, D { l: 140, t: 11, i: 32, }, D { l: 4, t: 11, i: 409, }, D { l: 133, t: 11, i: 78, }, D { l: 12, t: 0, i: 554, }, D { l: 6, t: 11, i: 473, }, D { l: 145, t: 11, i: 105, }, D { l: 133, t: 0, i: 784, }, D { l: 8, t: 0, i: 908 }, D { l: 136, t: 11, i: 306, }, D { l: 139, t: 0, i: 882, }, D { l: 6, t: 0, i: 358 }, D { l: 7, t: 0, i: 1393, }, D { l: 8, t: 0, i: 396 }, D { l: 10, t: 0, i: 263, }, D { l: 14, t: 0, i: 154, }, D { l: 16, t: 0, i: 48 }, D { l: 17, t: 0, i: 8 }, D { l: 7, t: 11, i: 1759, }, D { l: 8, t: 11, i: 396, }, D { l: 10, t: 11, i: 263, }, D { l: 14, t: 11, i: 154, }, D { l: 16, t: 11, i: 48, }, D { l: 145, t: 11, i: 8, }, D { l: 13, t: 11, i: 163, }, D { l: 13, t: 11, i: 180, }, D { l: 18, t: 11, i: 78, }, D { l: 148, t: 11, i: 35, }, D { l: 14, t: 0, i: 32 }, D { l: 18, t: 0, i: 85 }, D { l: 20, t: 0, i: 2 }, D { l: 152, t: 0, i: 16, }, D { l: 7, t: 0, i: 228 }, D { l: 10, t: 0, i: 770, }, D { l: 8, t: 10, i: 167, }, D { l: 8, t: 10, i: 375, }, D { l: 9, t: 10, i: 82 }, D { l: 9, t: 10, i: 561, }, D { l: 138, t: 10, i: 620, }, D { l: 132, t: 0, i: 845, }, D { l: 9, t: 0, i: 14 }, D { l: 9, t: 0, i: 441 }, D { l: 10, t: 0, i: 306, }, D { l: 139, t: 0, i: 9 }, D { l: 11, t: 0, i: 966, }, D { l: 12, t: 0, i: 287, }, D { l: 13, t: 0, i: 342, }, D { l: 13, t: 0, i: 402, }, D { l: 15, t: 0, i: 110, }, D { l: 15, t: 0, i: 163, }, D { l: 8, t: 10, i: 194, }, D { l: 136, t: 10, i: 756, }, D { l: 134, t: 0, i: 1578, }, D { l: 4, t: 0, i: 967 }, D { l: 6, t: 0, i: 1820, }, D { l: 6, t: 0, i: 1847, }, D { l: 140, t: 0, i: 716, }, D { l: 136, t: 0, i: 594, }, D { l: 7, t: 0, i: 1428, }, D { l: 7, t: 0, i: 1640, }, D { l: 7, t: 0, i: 1867, }, D { l: 9, t: 0, i: 169 }, D { l: 9, t: 0, i: 182 }, D { l: 9, t: 0, i: 367 }, D { l: 9, t: 0, i: 478 }, D { l: 9, t: 0, i: 506 }, D { l: 9, t: 0, i: 551 }, D { l: 9, t: 0, i: 557 }, D { l: 9, t: 0, i: 648 }, D { l: 9, t: 0, i: 697 }, D { l: 9, t: 0, i: 705 }, D { l: 9, t: 0, i: 725 }, D { l: 9, t: 0, i: 787 }, D { l: 9, t: 0, i: 794 }, D { l: 10, t: 0, i: 198, }, D { l: 10, t: 0, i: 214, }, D { l: 10, t: 0, i: 267, }, D { l: 10, t: 0, i: 275, }, D { l: 10, t: 0, i: 456, }, D { l: 10, t: 0, i: 551, }, D { l: 10, t: 0, i: 561, }, D { l: 10, t: 0, i: 613, }, D { l: 10, t: 0, i: 627, }, D { l: 10, t: 0, i: 668, }, D { l: 10, t: 0, i: 675, }, D { l: 10, t: 0, i: 691, }, D { l: 10, t: 0, i: 695, }, D { l: 10, t: 0, i: 707, }, D { l: 10, t: 0, i: 715, }, D { l: 11, t: 0, i: 183, }, D { l: 11, t: 0, i: 201, }, D { l: 11, t: 0, i: 244, }, D { l: 11, t: 0, i: 262, }, D { l: 11, t: 0, i: 352, }, D { l: 11, t: 0, i: 439, }, D { l: 11, t: 0, i: 493, }, D { l: 11, t: 0, i: 572, }, D { l: 11, t: 0, i: 591, }, D { l: 11, t: 0, i: 608, }, D { l: 11, t: 0, i: 611, }, D { l: 11, t: 0, i: 646, }, D { l: 11, t: 0, i: 674, }, D { l: 11, t: 0, i: 711, }, D { l: 11, t: 0, i: 751, }, D { l: 11, t: 0, i: 761, }, D { l: 11, t: 0, i: 776, }, D { l: 11, t: 0, i: 785, }, D { l: 11, t: 0, i: 850, }, D { l: 11, t: 0, i: 853, }, D { l: 11, t: 0, i: 862, }, D { l: 11, t: 0, i: 865, }, D { l: 11, t: 0, i: 868, }, D { l: 11, t: 0, i: 875, }, D { l: 11, t: 0, i: 898, }, D { l: 11, t: 0, i: 902, }, D { l: 11, t: 0, i: 903, }, D { l: 11, t: 0, i: 910, }, D { l: 11, t: 0, i: 932, }, D { l: 11, t: 0, i: 942, }, D { l: 11, t: 0, i: 957, }, D { l: 11, t: 0, i: 967, }, D { l: 11, t: 0, i: 972, }, D { l: 12, t: 0, i: 148, }, D { l: 12, t: 0, i: 195, }, D { l: 12, t: 0, i: 220, }, D { l: 12, t: 0, i: 237, }, D { l: 12, t: 0, i: 318, }, D { l: 12, t: 0, i: 339, }, D { l: 12, t: 0, i: 393, }, D { l: 12, t: 0, i: 445, }, D { l: 12, t: 0, i: 450, }, D { l: 12, t: 0, i: 474, }, D { l: 12, t: 0, i: 505, }, D { l: 12, t: 0, i: 509, }, D { l: 12, t: 0, i: 533, }, D { l: 12, t: 0, i: 591, }, D { l: 12, t: 0, i: 594, }, D { l: 12, t: 0, i: 597, }, D { l: 12, t: 0, i: 621, }, D { l: 12, t: 0, i: 633, }, D { l: 12, t: 0, i: 642, }, D { l: 13, t: 0, i: 59 }, D { l: 13, t: 0, i: 60 }, D { l: 13, t: 0, i: 145, }, D { l: 13, t: 0, i: 239, }, D { l: 13, t: 0, i: 250, }, D { l: 13, t: 0, i: 329, }, D { l: 13, t: 0, i: 344, }, D { l: 13, t: 0, i: 365, }, D { l: 13, t: 0, i: 372, }, D { l: 13, t: 0, i: 387, }, D { l: 13, t: 0, i: 403, }, D { l: 13, t: 0, i: 414, }, D { l: 13, t: 0, i: 456, }, D { l: 13, t: 0, i: 470, }, D { l: 13, t: 0, i: 478, }, D { l: 13, t: 0, i: 483, }, D { l: 13, t: 0, i: 489, }, D { l: 14, t: 0, i: 55 }, D { l: 14, t: 0, i: 57 }, D { l: 14, t: 0, i: 81 }, D { l: 14, t: 0, i: 90 }, D { l: 14, t: 0, i: 148, }, D { l: 14, t: 0, i: 239, }, D { l: 14, t: 0, i: 266, }, D { l: 14, t: 0, i: 321, }, D { l: 14, t: 0, i: 326, }, D { l: 14, t: 0, i: 327, }, D { l: 14, t: 0, i: 330, }, D { l: 14, t: 0, i: 347, }, D { l: 14, t: 0, i: 355, }, D { l: 14, t: 0, i: 401, }, D { l: 14, t: 0, i: 404, }, D { l: 14, t: 0, i: 411, }, D { l: 14, t: 0, i: 414, }, D { l: 14, t: 0, i: 416, }, D { l: 14, t: 0, i: 420, }, D { l: 15, t: 0, i: 61 }, D { l: 15, t: 0, i: 74 }, D { l: 15, t: 0, i: 87 }, D { l: 15, t: 0, i: 88 }, D { l: 15, t: 0, i: 94 }, D { l: 15, t: 0, i: 96 }, D { l: 15, t: 0, i: 116, }, D { l: 15, t: 0, i: 149, }, D { l: 15, t: 0, i: 154, }, D { l: 16, t: 0, i: 50 }, D { l: 16, t: 0, i: 63 }, D { l: 16, t: 0, i: 73 }, D { l: 17, t: 0, i: 2 }, D { l: 17, t: 0, i: 66 }, D { l: 17, t: 0, i: 92 }, D { l: 17, t: 0, i: 103, }, D { l: 17, t: 0, i: 112, }, D { l: 17, t: 0, i: 120, }, D { l: 18, t: 0, i: 50 }, D { l: 18, t: 0, i: 54 }, D { l: 18, t: 0, i: 82 }, D { l: 18, t: 0, i: 86 }, D { l: 18, t: 0, i: 90 }, D { l: 18, t: 0, i: 111, }, D { l: 18, t: 0, i: 115, }, D { l: 18, t: 0, i: 156, }, D { l: 19, t: 0, i: 40 }, D { l: 19, t: 0, i: 79 }, D { l: 20, t: 0, i: 78 }, D { l: 21, t: 0, i: 22 }, D { l: 135, t: 11, i: 883, }, D { l: 5, t: 0, i: 161 }, D { l: 135, t: 0, i: 839, }, D { l: 4, t: 0, i: 782 }, D { l: 13, t: 11, i: 293, }, D { l: 142, t: 11, i: 56, }, D { l: 133, t: 11, i: 617, }, D { l: 139, t: 11, i: 50, }, D { l: 135, t: 10, i: 22, }, D { l: 145, t: 0, i: 64, }, D { l: 5, t: 10, i: 639, }, D { l: 7, t: 10, i: 1249, }, D { l: 139, t: 10, i: 896, }, D { l: 138, t: 0, i: 998, }, D { l: 135, t: 11, i: 2042, }, D { l: 4, t: 11, i: 546, }, D { l: 142, t: 11, i: 233, }, D { l: 6, t: 0, i: 1043, }, D { l: 134, t: 0, i: 1574, }, D { l: 134, t: 0, i: 1496, }, D { l: 4, t: 10, i: 102, }, D { l: 7, t: 10, i: 815, }, D { l: 7, t: 10, i: 1699, }, D { l: 139, t: 10, i: 964, }, D { l: 12, t: 0, i: 781, }, D { l: 142, t: 0, i: 461, }, D { l: 4, t: 11, i: 313, }, D { l: 133, t: 11, i: 577, }, D { l: 6, t: 0, i: 639 }, D { l: 6, t: 0, i: 1114, }, D { l: 137, t: 0, i: 817, }, D { l: 8, t: 11, i: 184, }, D { l: 141, t: 11, i: 433, }, D { l: 7, t: 0, i: 1814, }, D { l: 135, t: 11, i: 935, }, D { l: 10, t: 0, i: 997, }, D { l: 140, t: 0, i: 958, }, D { l: 4, t: 0, i: 812 }, D { l: 137, t: 11, i: 625, }, D { l: 132, t: 10, i: 899, }, D { l: 136, t: 10, i: 795, }, D { l: 5, t: 11, i: 886, }, D { l: 6, t: 11, i: 46 }, D { l: 6, t: 11, i: 1790, }, D { l: 7, t: 11, i: 14 }, D { l: 7, t: 11, i: 732, }, D { l: 7, t: 11, i: 1654, }, D { l: 8, t: 11, i: 95 }, D { l: 8, t: 11, i: 327, }, D { l: 8, t: 11, i: 616, }, D { l: 10, t: 11, i: 598, }, D { l: 10, t: 11, i: 769, }, D { l: 11, t: 11, i: 134, }, D { l: 11, t: 11, i: 747, }, D { l: 12, t: 11, i: 378, }, D { l: 142, t: 11, i: 97, }, D { l: 136, t: 0, i: 139, }, D { l: 6, t: 10, i: 52 }, D { l: 9, t: 10, i: 104, }, D { l: 9, t: 10, i: 559, }, D { l: 12, t: 10, i: 308, }, D { l: 147, t: 10, i: 87, }, D { l: 133, t: 11, i: 1021, }, D { l: 132, t: 10, i: 604, }, D { l: 132, t: 10, i: 301, }, D { l: 136, t: 10, i: 779, }, D { l: 7, t: 0, i: 643 }, D { l: 136, t: 0, i: 236, }, D { l: 132, t: 11, i: 153, }, D { l: 134, t: 0, i: 1172, }, D { l: 147, t: 10, i: 32, }, D { l: 133, t: 11, i: 798, }, D { l: 6, t: 0, i: 1338, }, D { l: 132, t: 11, i: 587, }, D { l: 6, t: 11, i: 598, }, D { l: 7, t: 11, i: 42 }, D { l: 8, t: 11, i: 695, }, D { l: 10, t: 11, i: 212, }, D { l: 11, t: 11, i: 158, }, D { l: 14, t: 11, i: 196, }, D { l: 145, t: 11, i: 85, }, D { l: 135, t: 10, i: 508, }, D { l: 5, t: 11, i: 957, }, D { l: 5, t: 11, i: 1008, }, D { l: 135, t: 11, i: 249, }, D { l: 4, t: 11, i: 129, }, D { l: 135, t: 11, i: 465, }, D { l: 5, t: 0, i: 54 }, D { l: 7, t: 11, i: 470, }, D { l: 7, t: 11, i: 1057, }, D { l: 7, t: 11, i: 1201, }, D { l: 9, t: 11, i: 755, }, D { l: 11, t: 11, i: 906, }, D { l: 140, t: 11, i: 527, }, D { l: 7, t: 11, i: 908, }, D { l: 146, t: 11, i: 7, }, D { l: 5, t: 11, i: 148, }, D { l: 136, t: 11, i: 450, }, D { l: 144, t: 11, i: 1, }, D { l: 4, t: 0, i: 256 }, D { l: 135, t: 0, i: 1488, }, D { l: 9, t: 0, i: 351 }, D { l: 6, t: 10, i: 310, }, D { l: 7, t: 10, i: 1849, }, D { l: 8, t: 10, i: 72 }, D { l: 8, t: 10, i: 272, }, D { l: 8, t: 10, i: 431, }, D { l: 9, t: 10, i: 12 }, D { l: 10, t: 10, i: 563, }, D { l: 10, t: 10, i: 630, }, D { l: 10, t: 10, i: 796, }, D { l: 10, t: 10, i: 810, }, D { l: 11, t: 10, i: 367, }, D { l: 11, t: 10, i: 599, }, D { l: 11, t: 10, i: 686, }, D { l: 140, t: 10, i: 672, }, D { l: 6, t: 0, i: 1885, }, D { l: 6, t: 0, i: 1898, }, D { l: 6, t: 0, i: 1899, }, D { l: 140, t: 0, i: 955, }, D { l: 4, t: 0, i: 714 }, D { l: 133, t: 0, i: 469, }, D { l: 6, t: 0, i: 1270, }, D { l: 134, t: 0, i: 1456, }, D { l: 132, t: 0, i: 744, }, D { l: 6, t: 0, i: 313 }, D { l: 7, t: 10, i: 537, }, D { l: 8, t: 10, i: 64 }, D { l: 9, t: 10, i: 127, }, D { l: 10, t: 10, i: 496, }, D { l: 12, t: 10, i: 510, }, D { l: 141, t: 10, i: 384, }, D { l: 4, t: 11, i: 217, }, D { l: 4, t: 10, i: 244, }, D { l: 5, t: 11, i: 710, }, D { l: 7, t: 10, i: 233, }, D { l: 7, t: 11, i: 1926, }, D { l: 9, t: 11, i: 428, }, D { l: 9, t: 11, i: 708, }, D { l: 10, t: 11, i: 254, }, D { l: 10, t: 11, i: 296, }, D { l: 10, t: 11, i: 720, }, D { l: 11, t: 11, i: 109, }, D { l: 11, t: 11, i: 255, }, D { l: 12, t: 11, i: 165, }, D { l: 12, t: 11, i: 315, }, D { l: 13, t: 11, i: 107, }, D { l: 13, t: 11, i: 203, }, D { l: 14, t: 11, i: 54, }, D { l: 14, t: 11, i: 99, }, D { l: 14, t: 11, i: 114, }, D { l: 14, t: 11, i: 388, }, D { l: 16, t: 11, i: 85, }, D { l: 17, t: 11, i: 9 }, D { l: 17, t: 11, i: 33, }, D { l: 20, t: 11, i: 25, }, D { l: 20, t: 11, i: 28, }, D { l: 20, t: 11, i: 29, }, D { l: 21, t: 11, i: 9 }, D { l: 21, t: 11, i: 10, }, D { l: 21, t: 11, i: 34, }, D { l: 150, t: 11, i: 17, }, D { l: 138, t: 0, i: 402, }, D { l: 7, t: 0, i: 969 }, D { l: 146, t: 0, i: 55, }, D { l: 8, t: 0, i: 50 }, D { l: 137, t: 0, i: 624, }, D { l: 134, t: 0, i: 1355, }, D { l: 132, t: 0, i: 572, }, D { l: 134, t: 10, i: 1650, }, D { l: 10, t: 10, i: 702, }, D { l: 139, t: 10, i: 245, }, D { l: 10, t: 0, i: 847, }, D { l: 142, t: 0, i: 445, }, D { l: 6, t: 0, i: 43 }, D { l: 7, t: 0, i: 38 }, D { l: 8, t: 0, i: 248 }, D { l: 138, t: 0, i: 513, }, D { l: 133, t: 0, i: 369, }, D { l: 137, t: 10, i: 338, }, D { l: 133, t: 0, i: 766, }, D { l: 133, t: 0, i: 363, }, D { l: 133, t: 10, i: 896, }, D { l: 8, t: 11, i: 392, }, D { l: 11, t: 11, i: 54, }, D { l: 13, t: 11, i: 173, }, D { l: 13, t: 11, i: 294, }, D { l: 148, t: 11, i: 7, }, D { l: 134, t: 0, i: 678, }, D { l: 7, t: 11, i: 1230, }, D { l: 136, t: 11, i: 531, }, D { l: 6, t: 0, i: 258 }, D { l: 140, t: 0, i: 409, }, D { l: 5, t: 0, i: 249 }, D { l: 148, t: 0, i: 82, }, D { l: 7, t: 10, i: 1117, }, D { l: 136, t: 10, i: 539, }, D { l: 5, t: 0, i: 393 }, D { l: 6, t: 0, i: 378 }, D { l: 7, t: 0, i: 1981, }, D { l: 9, t: 0, i: 32 }, D { l: 9, t: 0, i: 591 }, D { l: 10, t: 0, i: 685, }, D { l: 10, t: 0, i: 741, }, D { l: 142, t: 0, i: 382, }, D { l: 133, t: 0, i: 788, }, D { l: 134, t: 0, i: 1281, }, D { l: 134, t: 0, i: 1295, }, D { l: 7, t: 0, i: 1968, }, D { l: 141, t: 0, i: 509, }, D { l: 4, t: 0, i: 61 }, D { l: 5, t: 0, i: 58 }, D { l: 5, t: 0, i: 171 }, D { l: 5, t: 0, i: 683 }, D { l: 6, t: 0, i: 291 }, D { l: 6, t: 0, i: 566 }, D { l: 7, t: 0, i: 1650, }, D { l: 11, t: 0, i: 523, }, D { l: 12, t: 0, i: 273, }, D { l: 12, t: 0, i: 303, }, D { l: 15, t: 0, i: 39 }, D { l: 143, t: 0, i: 111, }, D { l: 6, t: 0, i: 706 }, D { l: 134, t: 0, i: 1283, }, D { l: 134, t: 0, i: 589, }, D { l: 135, t: 11, i: 1433, }, D { l: 133, t: 11, i: 435, }, D { l: 7, t: 0, i: 1059, }, D { l: 13, t: 0, i: 54 }, D { l: 5, t: 10, i: 4 }, D { l: 5, t: 10, i: 810, }, D { l: 6, t: 10, i: 13 }, D { l: 6, t: 10, i: 538, }, D { l: 6, t: 10, i: 1690, }, D { l: 6, t: 10, i: 1726, }, D { l: 7, t: 10, i: 1819, }, D { l: 8, t: 10, i: 148, }, D { l: 8, t: 10, i: 696, }, D { l: 8, t: 10, i: 791, }, D { l: 12, t: 10, i: 125, }, D { l: 143, t: 10, i: 9, }, D { l: 135, t: 10, i: 1268, }, D { l: 5, t: 11, i: 85 }, D { l: 6, t: 11, i: 419, }, D { l: 7, t: 11, i: 134, }, D { l: 7, t: 11, i: 305, }, D { l: 7, t: 11, i: 361, }, D { l: 7, t: 11, i: 1337, }, D { l: 8, t: 11, i: 71 }, D { l: 140, t: 11, i: 519, }, D { l: 137, t: 0, i: 824, }, D { l: 140, t: 11, i: 688, }, D { l: 5, t: 11, i: 691, }, D { l: 7, t: 11, i: 345, }, D { l: 7, t: 10, i: 1385, }, D { l: 9, t: 11, i: 94 }, D { l: 11, t: 10, i: 582, }, D { l: 11, t: 10, i: 650, }, D { l: 11, t: 10, i: 901, }, D { l: 11, t: 10, i: 949, }, D { l: 12, t: 11, i: 169, }, D { l: 12, t: 10, i: 232, }, D { l: 12, t: 10, i: 236, }, D { l: 13, t: 10, i: 413, }, D { l: 13, t: 10, i: 501, }, D { l: 146, t: 10, i: 116, }, D { l: 4, t: 0, i: 917 }, D { l: 133, t: 0, i: 1005, }, D { l: 7, t: 0, i: 1598, }, D { l: 5, t: 11, i: 183, }, D { l: 6, t: 11, i: 582, }, D { l: 9, t: 11, i: 344, }, D { l: 10, t: 11, i: 679, }, D { l: 140, t: 11, i: 435, }, D { l: 4, t: 10, i: 925, }, D { l: 5, t: 10, i: 803, }, D { l: 8, t: 10, i: 698, }, D { l: 138, t: 10, i: 828, }, D { l: 132, t: 0, i: 919, }, D { l: 135, t: 11, i: 511, }, D { l: 139, t: 10, i: 992, }, D { l: 4, t: 0, i: 255 }, D { l: 5, t: 0, i: 302 }, D { l: 6, t: 0, i: 132 }, D { l: 7, t: 0, i: 128 }, D { l: 7, t: 0, i: 283 }, D { l: 7, t: 0, i: 1299, }, D { l: 10, t: 0, i: 52 }, D { l: 10, t: 0, i: 514, }, D { l: 11, t: 0, i: 925, }, D { l: 13, t: 0, i: 92 }, D { l: 142, t: 0, i: 309, }, D { l: 134, t: 0, i: 1369, }, D { l: 135, t: 10, i: 1847, }, D { l: 134, t: 0, i: 328, }, D { l: 7, t: 11, i: 1993, }, D { l: 136, t: 11, i: 684, }, D { l: 133, t: 10, i: 383, }, D { l: 137, t: 0, i: 173, }, D { l: 134, t: 11, i: 583, }, D { l: 134, t: 0, i: 1411, }, D { l: 19, t: 0, i: 65 }, D { l: 5, t: 11, i: 704, }, D { l: 8, t: 11, i: 357, }, D { l: 10, t: 11, i: 745, }, D { l: 14, t: 11, i: 426, }, D { l: 17, t: 11, i: 94, }, D { l: 147, t: 11, i: 57, }, D { l: 9, t: 10, i: 660, }, D { l: 138, t: 10, i: 347, }, D { l: 4, t: 11, i: 179, }, D { l: 5, t: 11, i: 198, }, D { l: 133, t: 11, i: 697, }, D { l: 7, t: 11, i: 347, }, D { l: 7, t: 11, i: 971, }, D { l: 8, t: 11, i: 181, }, D { l: 138, t: 11, i: 711, }, D { l: 141, t: 0, i: 442, }, D { l: 11, t: 0, i: 842, }, D { l: 11, t: 0, i: 924, }, D { l: 13, t: 0, i: 317, }, D { l: 13, t: 0, i: 370, }, D { l: 13, t: 0, i: 469, }, D { l: 13, t: 0, i: 471, }, D { l: 14, t: 0, i: 397, }, D { l: 18, t: 0, i: 69 }, D { l: 18, t: 0, i: 145, }, D { l: 7, t: 10, i: 572, }, D { l: 9, t: 10, i: 592, }, D { l: 11, t: 10, i: 680, }, D { l: 12, t: 10, i: 356, }, D { l: 140, t: 10, i: 550, }, D { l: 14, t: 11, i: 19, }, D { l: 14, t: 11, i: 28, }, D { l: 144, t: 11, i: 29, }, D { l: 136, t: 0, i: 534, }, D { l: 4, t: 11, i: 243, }, D { l: 5, t: 11, i: 203, }, D { l: 7, t: 11, i: 19 }, D { l: 7, t: 11, i: 71 }, D { l: 7, t: 11, i: 113, }, D { l: 10, t: 11, i: 405, }, D { l: 11, t: 11, i: 357, }, D { l: 142, t: 11, i: 240, }, D { l: 6, t: 0, i: 210 }, D { l: 10, t: 0, i: 845, }, D { l: 138, t: 0, i: 862, }, D { l: 7, t: 11, i: 1351, }, D { l: 9, t: 11, i: 581, }, D { l: 10, t: 11, i: 639, }, D { l: 11, t: 11, i: 453, }, D { l: 140, t: 11, i: 584, }, D { l: 7, t: 11, i: 1450, }, D { l: 139, t: 11, i: 99, }, D { l: 10, t: 0, i: 892, }, D { l: 12, t: 0, i: 719, }, D { l: 144, t: 0, i: 105, }, D { l: 4, t: 0, i: 284 }, D { l: 6, t: 0, i: 223 }, D { l: 134, t: 11, i: 492, }, D { l: 5, t: 11, i: 134, }, D { l: 6, t: 11, i: 408, }, D { l: 6, t: 11, i: 495, }, D { l: 135, t: 11, i: 1593, }, D { l: 136, t: 0, i: 529, }, D { l: 137, t: 0, i: 807, }, D { l: 4, t: 0, i: 218 }, D { l: 7, t: 0, i: 526 }, D { l: 143, t: 0, i: 137, }, D { l: 6, t: 0, i: 1444, }, D { l: 142, t: 11, i: 4, }, D { l: 132, t: 11, i: 665, }, D { l: 4, t: 0, i: 270 }, D { l: 5, t: 0, i: 192 }, D { l: 6, t: 0, i: 332 }, D { l: 7, t: 0, i: 1322, }, D { l: 4, t: 11, i: 248, }, D { l: 7, t: 11, i: 137, }, D { l: 137, t: 11, i: 349, }, D { l: 140, t: 0, i: 661, }, D { l: 7, t: 0, i: 1517, }, D { l: 11, t: 0, i: 597, }, D { l: 14, t: 0, i: 76 }, D { l: 14, t: 0, i: 335, }, D { l: 20, t: 0, i: 33 }, D { l: 7, t: 10, i: 748, }, D { l: 139, t: 10, i: 700, }, D { l: 5, t: 11, i: 371, }, D { l: 135, t: 11, i: 563, }, D { l: 146, t: 11, i: 57, }, D { l: 133, t: 10, i: 127, }, D { l: 133, t: 0, i: 418, }, D { l: 4, t: 11, i: 374, }, D { l: 7, t: 11, i: 547, }, D { l: 7, t: 11, i: 1700, }, D { l: 7, t: 11, i: 1833, }, D { l: 139, t: 11, i: 858, }, D { l: 6, t: 10, i: 198, }, D { l: 140, t: 10, i: 83, }, D { l: 7, t: 11, i: 1812, }, D { l: 13, t: 11, i: 259, }, D { l: 13, t: 11, i: 356, }, D { l: 14, t: 11, i: 242, }, D { l: 147, t: 11, i: 114, }, D { l: 7, t: 0, i: 379 }, D { l: 8, t: 0, i: 481 }, D { l: 9, t: 0, i: 377 }, D { l: 5, t: 10, i: 276, }, D { l: 6, t: 10, i: 55 }, D { l: 135, t: 10, i: 1369, }, D { l: 138, t: 11, i: 286, }, D { l: 5, t: 0, i: 1003, }, D { l: 6, t: 0, i: 149 }, D { l: 6, t: 10, i: 1752, }, D { l: 136, t: 10, i: 726, }, D { l: 8, t: 0, i: 262 }, D { l: 9, t: 0, i: 627 }, D { l: 10, t: 0, i: 18 }, D { l: 11, t: 0, i: 214, }, D { l: 11, t: 0, i: 404, }, D { l: 11, t: 0, i: 457, }, D { l: 11, t: 0, i: 780, }, D { l: 11, t: 0, i: 913, }, D { l: 13, t: 0, i: 401, }, D { l: 14, t: 0, i: 200, }, D { l: 6, t: 11, i: 1647, }, D { l: 7, t: 11, i: 1552, }, D { l: 7, t: 11, i: 2010, }, D { l: 9, t: 11, i: 494, }, D { l: 137, t: 11, i: 509, }, D { l: 135, t: 0, i: 742, }, D { l: 136, t: 0, i: 304, }, D { l: 132, t: 0, i: 142, }, D { l: 133, t: 10, i: 764, }, D { l: 6, t: 10, i: 309, }, D { l: 7, t: 10, i: 331, }, D { l: 138, t: 10, i: 550, }, D { l: 135, t: 10, i: 1062, }, D { l: 6, t: 11, i: 123, }, D { l: 7, t: 11, i: 214, }, D { l: 7, t: 10, i: 986, }, D { l: 9, t: 11, i: 728, }, D { l: 10, t: 11, i: 157, }, D { l: 11, t: 11, i: 346, }, D { l: 11, t: 11, i: 662, }, D { l: 143, t: 11, i: 106, }, D { l: 135, t: 10, i: 1573, }, D { l: 7, t: 0, i: 925 }, D { l: 137, t: 0, i: 799, }, D { l: 4, t: 0, i: 471 }, D { l: 5, t: 0, i: 51 }, D { l: 6, t: 0, i: 602 }, D { l: 8, t: 0, i: 484 }, D { l: 138, t: 0, i: 195, }, D { l: 136, t: 0, i: 688, }, D { l: 132, t: 0, i: 697, }, D { l: 6, t: 0, i: 1169, }, D { l: 6, t: 0, i: 1241, }, D { l: 6, t: 10, i: 194, }, D { l: 7, t: 10, i: 133, }, D { l: 10, t: 10, i: 493, }, D { l: 10, t: 10, i: 570, }, D { l: 139, t: 10, i: 664, }, D { l: 140, t: 0, i: 751, }, D { l: 7, t: 0, i: 929 }, D { l: 10, t: 0, i: 452, }, D { l: 11, t: 0, i: 878, }, D { l: 16, t: 0, i: 33 }, D { l: 5, t: 10, i: 24 }, D { l: 5, t: 10, i: 569, }, D { l: 6, t: 10, i: 3 }, D { l: 6, t: 10, i: 119, }, D { l: 6, t: 10, i: 143, }, D { l: 6, t: 10, i: 440, }, D { l: 7, t: 10, i: 599, }, D { l: 7, t: 10, i: 1686, }, D { l: 7, t: 10, i: 1854, }, D { l: 8, t: 10, i: 424, }, D { l: 9, t: 10, i: 43 }, D { l: 9, t: 10, i: 584, }, D { l: 9, t: 10, i: 760, }, D { l: 10, t: 10, i: 328, }, D { l: 11, t: 10, i: 159, }, D { l: 11, t: 10, i: 253, }, D { l: 12, t: 10, i: 487, }, D { l: 140, t: 10, i: 531, }, D { l: 4, t: 11, i: 707, }, D { l: 13, t: 11, i: 106, }, D { l: 18, t: 11, i: 49, }, D { l: 147, t: 11, i: 41, }, D { l: 5, t: 0, i: 221 }, D { l: 5, t: 11, i: 588, }, D { l: 134, t: 11, i: 393, }, D { l: 134, t: 0, i: 1437, }, D { l: 6, t: 11, i: 211, }, D { l: 7, t: 11, i: 1690, }, D { l: 11, t: 11, i: 486, }, D { l: 140, t: 11, i: 369, }, D { l: 5, t: 10, i: 14 }, D { l: 5, t: 10, i: 892, }, D { l: 6, t: 10, i: 283, }, D { l: 7, t: 10, i: 234, }, D { l: 136, t: 10, i: 537, }, D { l: 4, t: 0, i: 988 }, D { l: 136, t: 0, i: 955, }, D { l: 135, t: 0, i: 1251, }, D { l: 4, t: 10, i: 126, }, D { l: 8, t: 10, i: 635, }, D { l: 147, t: 10, i: 34, }, D { l: 4, t: 10, i: 316, }, D { l: 135, t: 10, i: 1561, }, D { l: 137, t: 10, i: 861, }, D { l: 4, t: 10, i: 64 }, D { l: 5, t: 10, i: 352, }, D { l: 5, t: 10, i: 720, }, D { l: 6, t: 10, i: 368, }, D { l: 139, t: 10, i: 359, }, D { l: 134, t: 0, i: 192, }, D { l: 4, t: 0, i: 132 }, D { l: 5, t: 0, i: 69 }, D { l: 135, t: 0, i: 1242, }, D { l: 7, t: 10, i: 1577, }, D { l: 10, t: 10, i: 304, }, D { l: 10, t: 10, i: 549, }, D { l: 12, t: 10, i: 365, }, D { l: 13, t: 10, i: 220, }, D { l: 13, t: 10, i: 240, }, D { l: 142, t: 10, i: 33, }, D { l: 4, t: 0, i: 111 }, D { l: 7, t: 0, i: 865 }, D { l: 134, t: 11, i: 219, }, D { l: 5, t: 11, i: 582, }, D { l: 6, t: 11, i: 1646, }, D { l: 7, t: 11, i: 99 }, D { l: 7, t: 11, i: 1962, }, D { l: 7, t: 11, i: 1986, }, D { l: 8, t: 11, i: 515, }, D { l: 8, t: 11, i: 773, }, D { l: 9, t: 11, i: 23 }, D { l: 9, t: 11, i: 491, }, D { l: 12, t: 11, i: 620, }, D { l: 14, t: 11, i: 52, }, D { l: 145, t: 11, i: 50, }, D { l: 132, t: 0, i: 767, }, D { l: 7, t: 11, i: 568, }, D { l: 148, t: 11, i: 21, }, D { l: 6, t: 0, i: 42 }, D { l: 7, t: 0, i: 1416, }, D { l: 7, t: 0, i: 2005, }, D { l: 8, t: 0, i: 131 }, D { l: 8, t: 0, i: 466 }, D { l: 9, t: 0, i: 672 }, D { l: 13, t: 0, i: 252, }, D { l: 20, t: 0, i: 103, }, D { l: 133, t: 11, i: 851, }, D { l: 135, t: 0, i: 1050, }, D { l: 6, t: 10, i: 175, }, D { l: 137, t: 10, i: 289, }, D { l: 5, t: 10, i: 432, }, D { l: 133, t: 10, i: 913, }, D { l: 6, t: 0, i: 44 }, D { l: 136, t: 0, i: 368, }, D { l: 135, t: 11, i: 784, }, D { l: 132, t: 0, i: 570, }, D { l: 133, t: 0, i: 120, }, D { l: 139, t: 10, i: 595, }, D { l: 140, t: 0, i: 29, }, D { l: 6, t: 0, i: 227 }, D { l: 135, t: 0, i: 1589, }, D { l: 4, t: 11, i: 98 }, D { l: 7, t: 11, i: 1365, }, D { l: 9, t: 11, i: 422, }, D { l: 9, t: 11, i: 670, }, D { l: 10, t: 11, i: 775, }, D { l: 11, t: 11, i: 210, }, D { l: 13, t: 11, i: 26, }, D { l: 13, t: 11, i: 457, }, D { l: 141, t: 11, i: 476, }, D { l: 140, t: 10, i: 80, }, D { l: 5, t: 10, i: 931, }, D { l: 134, t: 10, i: 1698, }, D { l: 133, t: 0, i: 522, }, D { l: 134, t: 0, i: 1120, }, D { l: 135, t: 0, i: 1529, }, D { l: 12, t: 0, i: 739, }, D { l: 14, t: 0, i: 448, }, D { l: 142, t: 0, i: 467, }, D { l: 11, t: 10, i: 526, }, D { l: 11, t: 10, i: 939, }, D { l: 141, t: 10, i: 290, }, D { l: 5, t: 10, i: 774, }, D { l: 6, t: 10, i: 1637, }, D { l: 6, t: 10, i: 1686, }, D { l: 134, t: 10, i: 1751, }, D { l: 6, t: 0, i: 1667, }, D { l: 135, t: 0, i: 2036, }, D { l: 7, t: 10, i: 1167, }, D { l: 11, t: 10, i: 934, }, D { l: 13, t: 10, i: 391, }, D { l: 145, t: 10, i: 76, }, D { l: 137, t: 11, i: 147, }, D { l: 6, t: 10, i: 260, }, D { l: 7, t: 10, i: 1484, }, D { l: 11, t: 11, i: 821, }, D { l: 12, t: 11, i: 110, }, D { l: 12, t: 11, i: 153, }, D { l: 18, t: 11, i: 41, }, D { l: 150, t: 11, i: 19, }, D { l: 6, t: 0, i: 511 }, D { l: 12, t: 0, i: 132, }, D { l: 134, t: 10, i: 573, }, D { l: 5, t: 0, i: 568 }, D { l: 6, t: 0, i: 138 }, D { l: 135, t: 0, i: 1293, }, D { l: 132, t: 0, i: 1020, }, D { l: 8, t: 0, i: 258 }, D { l: 9, t: 0, i: 208 }, D { l: 137, t: 0, i: 359, }, D { l: 4, t: 0, i: 565 }, D { l: 8, t: 0, i: 23 }, D { l: 136, t: 0, i: 827, }, D { l: 134, t: 0, i: 344, }, D { l: 4, t: 0, i: 922 }, D { l: 5, t: 0, i: 1023, }, D { l: 13, t: 11, i: 477, }, D { l: 14, t: 11, i: 120, }, D { l: 148, t: 11, i: 61, }, D { l: 134, t: 0, i: 240, }, D { l: 5, t: 11, i: 209, }, D { l: 6, t: 11, i: 30 }, D { l: 11, t: 11, i: 56, }, D { l: 139, t: 11, i: 305, }, D { l: 6, t: 0, i: 171 }, D { l: 7, t: 0, i: 1002, }, D { l: 7, t: 0, i: 1324, }, D { l: 9, t: 0, i: 415 }, D { l: 14, t: 0, i: 230, }, D { l: 18, t: 0, i: 68 }, D { l: 4, t: 10, i: 292, }, D { l: 4, t: 10, i: 736, }, D { l: 5, t: 10, i: 871, }, D { l: 6, t: 10, i: 1689, }, D { l: 7, t: 10, i: 1944, }, D { l: 137, t: 10, i: 580, }, D { l: 9, t: 11, i: 635, }, D { l: 139, t: 11, i: 559, }, D { l: 4, t: 11, i: 150, }, D { l: 5, t: 11, i: 303, }, D { l: 134, t: 11, i: 327, }, D { l: 6, t: 10, i: 63 }, D { l: 135, t: 10, i: 920, }, D { l: 133, t: 10, i: 793, }, D { l: 8, t: 11, i: 192, }, D { l: 10, t: 11, i: 78, }, D { l: 10, t: 11, i: 555, }, D { l: 11, t: 11, i: 308, }, D { l: 13, t: 11, i: 359, }, D { l: 147, t: 11, i: 95, }, D { l: 135, t: 11, i: 786, }, D { l: 135, t: 11, i: 1712, }, D { l: 136, t: 0, i: 402, }, D { l: 6, t: 0, i: 754 }, D { l: 6, t: 11, i: 1638, }, D { l: 7, t: 11, i: 79 }, D { l: 7, t: 11, i: 496, }, D { l: 9, t: 11, i: 138, }, D { l: 10, t: 11, i: 336, }, D { l: 11, t: 11, i: 12, }, D { l: 12, t: 11, i: 412, }, D { l: 12, t: 11, i: 440, }, D { l: 142, t: 11, i: 305, }, D { l: 4, t: 0, i: 716 }, D { l: 141, t: 0, i: 31, }, D { l: 133, t: 0, i: 982, }, D { l: 8, t: 0, i: 691 }, D { l: 8, t: 0, i: 731 }, D { l: 5, t: 10, i: 67 }, D { l: 6, t: 10, i: 62 }, D { l: 6, t: 10, i: 374, }, D { l: 135, t: 10, i: 1391, }, D { l: 9, t: 10, i: 790, }, D { l: 140, t: 10, i: 47, }, D { l: 139, t: 11, i: 556, }, D { l: 151, t: 11, i: 1, }, D { l: 7, t: 11, i: 204, }, D { l: 7, t: 11, i: 415, }, D { l: 8, t: 11, i: 42 }, D { l: 10, t: 11, i: 85, }, D { l: 11, t: 11, i: 33, }, D { l: 11, t: 11, i: 564, }, D { l: 12, t: 11, i: 571, }, D { l: 149, t: 11, i: 1, }, D { l: 8, t: 0, i: 888 }, D { l: 7, t: 11, i: 610, }, D { l: 135, t: 11, i: 1501, }, D { l: 4, t: 10, i: 391, }, D { l: 135, t: 10, i: 1169, }, D { l: 5, t: 0, i: 847 }, D { l: 9, t: 0, i: 840 }, D { l: 138, t: 0, i: 803, }, D { l: 137, t: 0, i: 823, }, D { l: 134, t: 0, i: 785, }, D { l: 8, t: 0, i: 152 }, D { l: 9, t: 0, i: 53 }, D { l: 9, t: 0, i: 268 }, D { l: 9, t: 0, i: 901 }, D { l: 10, t: 0, i: 518, }, D { l: 10, t: 0, i: 829, }, D { l: 11, t: 0, i: 188, }, D { l: 13, t: 0, i: 74 }, D { l: 14, t: 0, i: 46 }, D { l: 15, t: 0, i: 17 }, D { l: 15, t: 0, i: 33 }, D { l: 17, t: 0, i: 40 }, D { l: 18, t: 0, i: 36 }, D { l: 19, t: 0, i: 20 }, D { l: 22, t: 0, i: 1 }, D { l: 152, t: 0, i: 2 }, D { l: 4, t: 11, i: 3 }, D { l: 5, t: 11, i: 247, }, D { l: 5, t: 11, i: 644, }, D { l: 7, t: 11, i: 744, }, D { l: 7, t: 11, i: 1207, }, D { l: 7, t: 11, i: 1225, }, D { l: 7, t: 11, i: 1909, }, D { l: 146, t: 11, i: 147, }, D { l: 136, t: 0, i: 532, }, D { l: 135, t: 0, i: 681, }, D { l: 132, t: 10, i: 271, }, D { l: 140, t: 0, i: 314, }, D { l: 140, t: 0, i: 677, }, D { l: 4, t: 0, i: 684 }, D { l: 136, t: 0, i: 384, }, D { l: 5, t: 11, i: 285, }, D { l: 9, t: 11, i: 67 }, D { l: 13, t: 11, i: 473, }, D { l: 143, t: 11, i: 82, }, D { l: 4, t: 10, i: 253, }, D { l: 5, t: 10, i: 544, }, D { l: 7, t: 10, i: 300, }, D { l: 137, t: 10, i: 340, }, D { l: 7, t: 0, i: 110 }, D { l: 7, t: 0, i: 447 }, D { l: 8, t: 0, i: 290 }, D { l: 8, t: 0, i: 591 }, D { l: 9, t: 0, i: 382 }, D { l: 9, t: 0, i: 649 }, D { l: 11, t: 0, i: 71 }, D { l: 11, t: 0, i: 155, }, D { l: 11, t: 0, i: 313, }, D { l: 12, t: 0, i: 5 }, D { l: 13, t: 0, i: 325, }, D { l: 142, t: 0, i: 287, }, D { l: 134, t: 0, i: 1818, }, D { l: 136, t: 0, i: 1007, }, D { l: 138, t: 0, i: 321, }, D { l: 7, t: 0, i: 360 }, D { l: 7, t: 0, i: 425 }, D { l: 9, t: 0, i: 66 }, D { l: 9, t: 0, i: 278 }, D { l: 138, t: 0, i: 644, }, D { l: 133, t: 10, i: 818, }, D { l: 5, t: 0, i: 385 }, D { l: 5, t: 10, i: 541, }, D { l: 6, t: 10, i: 94 }, D { l: 6, t: 10, i: 499, }, D { l: 7, t: 10, i: 230, }, D { l: 139, t: 10, i: 321, }, D { l: 4, t: 10, i: 920, }, D { l: 5, t: 10, i: 25 }, D { l: 5, t: 10, i: 790, }, D { l: 6, t: 10, i: 457, }, D { l: 7, t: 10, i: 853, }, D { l: 136, t: 10, i: 788, }, D { l: 4, t: 0, i: 900 }, D { l: 133, t: 0, i: 861, }, D { l: 5, t: 0, i: 254 }, D { l: 7, t: 0, i: 985 }, D { l: 136, t: 0, i: 73, }, D { l: 7, t: 0, i: 1959, }, D { l: 136, t: 0, i: 683, }, D { l: 134, t: 10, i: 1765, }, D { l: 133, t: 10, i: 822, }, D { l: 132, t: 10, i: 634, }, D { l: 4, t: 11, i: 29 }, D { l: 6, t: 11, i: 532, }, D { l: 7, t: 11, i: 1628, }, D { l: 7, t: 11, i: 1648, }, D { l: 9, t: 11, i: 303, }, D { l: 9, t: 11, i: 350, }, D { l: 10, t: 11, i: 433, }, D { l: 11, t: 11, i: 97, }, D { l: 11, t: 11, i: 557, }, D { l: 11, t: 11, i: 745, }, D { l: 12, t: 11, i: 289, }, D { l: 12, t: 11, i: 335, }, D { l: 12, t: 11, i: 348, }, D { l: 12, t: 11, i: 606, }, D { l: 13, t: 11, i: 116, }, D { l: 13, t: 11, i: 233, }, D { l: 13, t: 11, i: 466, }, D { l: 14, t: 11, i: 181, }, D { l: 14, t: 11, i: 209, }, D { l: 14, t: 11, i: 232, }, D { l: 14, t: 11, i: 236, }, D { l: 14, t: 11, i: 300, }, D { l: 16, t: 11, i: 41, }, D { l: 148, t: 11, i: 97, }, D { l: 19, t: 0, i: 86 }, D { l: 6, t: 10, i: 36 }, D { l: 7, t: 10, i: 658, }, D { l: 136, t: 10, i: 454, }, D { l: 135, t: 11, i: 1692, }, D { l: 132, t: 0, i: 725, }, D { l: 5, t: 11, i: 501, }, D { l: 7, t: 11, i: 1704, }, D { l: 9, t: 11, i: 553, }, D { l: 11, t: 11, i: 520, }, D { l: 12, t: 11, i: 557, }, D { l: 141, t: 11, i: 249, }, D { l: 134, t: 0, i: 196, }, D { l: 133, t: 0, i: 831, }, D { l: 136, t: 0, i: 723, }, D { l: 7, t: 0, i: 1897, }, D { l: 13, t: 0, i: 80 }, D { l: 13, t: 0, i: 437, }, D { l: 145, t: 0, i: 74, }, D { l: 4, t: 0, i: 992 }, D { l: 6, t: 0, i: 627 }, D { l: 136, t: 0, i: 994, }, D { l: 135, t: 11, i: 1294, }, D { l: 132, t: 10, i: 104, }, D { l: 5, t: 0, i: 848 }, D { l: 6, t: 0, i: 66 }, D { l: 136, t: 0, i: 764, }, D { l: 4, t: 0, i: 36 }, D { l: 7, t: 0, i: 1387, }, D { l: 10, t: 0, i: 205, }, D { l: 139, t: 0, i: 755, }, D { l: 6, t: 0, i: 1046, }, D { l: 134, t: 0, i: 1485, }, D { l: 134, t: 0, i: 950, }, D { l: 132, t: 0, i: 887, }, D { l: 14, t: 0, i: 450, }, D { l: 148, t: 0, i: 111, }, D { l: 7, t: 0, i: 620 }, D { l: 7, t: 0, i: 831 }, D { l: 9, t: 10, i: 542, }, D { l: 9, t: 10, i: 566, }, D { l: 138, t: 10, i: 728, }, D { l: 6, t: 0, i: 165 }, D { l: 138, t: 0, i: 388, }, D { l: 139, t: 10, i: 263, }, D { l: 4, t: 0, i: 719 }, D { l: 135, t: 0, i: 155, }, D { l: 138, t: 10, i: 468, }, D { l: 6, t: 11, i: 453, }, D { l: 144, t: 11, i: 36, }, D { l: 134, t: 11, i: 129, }, D { l: 5, t: 0, i: 533 }, D { l: 7, t: 0, i: 755 }, D { l: 138, t: 0, i: 780, }, D { l: 134, t: 0, i: 1465, }, D { l: 4, t: 0, i: 353 }, D { l: 6, t: 0, i: 146 }, D { l: 6, t: 0, i: 1789, }, D { l: 7, t: 0, i: 427 }, D { l: 7, t: 0, i: 990 }, D { l: 7, t: 0, i: 1348, }, D { l: 9, t: 0, i: 665 }, D { l: 9, t: 0, i: 898 }, D { l: 11, t: 0, i: 893, }, D { l: 142, t: 0, i: 212, }, D { l: 7, t: 10, i: 87 }, D { l: 142, t: 10, i: 288, }, D { l: 4, t: 0, i: 45 }, D { l: 135, t: 0, i: 1257, }, D { l: 12, t: 0, i: 7 }, D { l: 7, t: 10, i: 988, }, D { l: 7, t: 10, i: 1939, }, D { l: 9, t: 10, i: 64 }, D { l: 9, t: 10, i: 502, }, D { l: 12, t: 10, i: 34, }, D { l: 13, t: 10, i: 12, }, D { l: 13, t: 10, i: 234, }, D { l: 147, t: 10, i: 77, }, D { l: 4, t: 0, i: 607 }, D { l: 5, t: 11, i: 60 }, D { l: 6, t: 11, i: 504, }, D { l: 7, t: 11, i: 614, }, D { l: 7, t: 11, i: 1155, }, D { l: 140, t: 11, i: 0, }, D { l: 135, t: 10, i: 141, }, D { l: 8, t: 11, i: 198, }, D { l: 11, t: 11, i: 29, }, D { l: 140, t: 11, i: 534, }, D { l: 140, t: 0, i: 65, }, D { l: 136, t: 0, i: 816, }, D { l: 132, t: 10, i: 619, }, D { l: 139, t: 0, i: 88, }, D { l: 5, t: 10, i: 246, }, D { l: 8, t: 10, i: 189, }, D { l: 9, t: 10, i: 355, }, D { l: 9, t: 10, i: 512, }, D { l: 10, t: 10, i: 124, }, D { l: 10, t: 10, i: 453, }, D { l: 11, t: 10, i: 143, }, D { l: 11, t: 10, i: 416, }, D { l: 11, t: 10, i: 859, }, D { l: 141, t: 10, i: 341, }, D { l: 4, t: 11, i: 379, }, D { l: 135, t: 11, i: 1397, }, D { l: 4, t: 0, i: 600 }, D { l: 137, t: 0, i: 621, }, D { l: 133, t: 0, i: 367, }, D { l: 134, t: 0, i: 561, }, D { l: 6, t: 0, i: 559 }, D { l: 134, t: 0, i: 1691, }, D { l: 6, t: 0, i: 585 }, D { l: 134, t: 11, i: 585, }, D { l: 135, t: 11, i: 1228, }, D { l: 4, t: 11, i: 118, }, D { l: 5, t: 10, i: 678, }, D { l: 6, t: 11, i: 274, }, D { l: 6, t: 11, i: 361, }, D { l: 7, t: 11, i: 75 }, D { l: 141, t: 11, i: 441, }, D { l: 135, t: 11, i: 1818, }, D { l: 137, t: 11, i: 841, }, D { l: 5, t: 0, i: 573 }, D { l: 6, t: 0, i: 287 }, D { l: 7, t: 10, i: 862, }, D { l: 7, t: 10, i: 1886, }, D { l: 138, t: 10, i: 179, }, D { l: 132, t: 10, i: 517, }, D { l: 140, t: 11, i: 693, }, D { l: 5, t: 11, i: 314, }, D { l: 6, t: 11, i: 221, }, D { l: 7, t: 11, i: 419, }, D { l: 10, t: 11, i: 650, }, D { l: 11, t: 11, i: 396, }, D { l: 12, t: 11, i: 156, }, D { l: 13, t: 11, i: 369, }, D { l: 14, t: 11, i: 333, }, D { l: 145, t: 11, i: 47, }, D { l: 140, t: 10, i: 540, }, D { l: 136, t: 10, i: 667, }, D { l: 11, t: 10, i: 403, }, D { l: 146, t: 10, i: 83, }, D { l: 6, t: 0, i: 672 }, D { l: 133, t: 10, i: 761, }, D { l: 9, t: 0, i: 157 }, D { l: 10, t: 10, i: 131, }, D { l: 140, t: 10, i: 72, }, D { l: 7, t: 0, i: 714 }, D { l: 134, t: 11, i: 460, }, D { l: 134, t: 0, i: 456, }, D { l: 133, t: 0, i: 925, }, D { l: 5, t: 11, i: 682, }, D { l: 135, t: 11, i: 1887, }, D { l: 136, t: 11, i: 510, }, D { l: 136, t: 11, i: 475, }, D { l: 133, t: 11, i: 1016, }, D { l: 9, t: 0, i: 19 }, D { l: 7, t: 11, i: 602, }, D { l: 8, t: 11, i: 179, }, D { l: 10, t: 11, i: 781, }, D { l: 140, t: 11, i: 126, }, D { l: 6, t: 11, i: 329, }, D { l: 138, t: 11, i: 111, }, D { l: 6, t: 0, i: 822 }, D { l: 134, t: 0, i: 1473, }, D { l: 144, t: 11, i: 86, }, D { l: 11, t: 0, i: 113, }, D { l: 139, t: 11, i: 113, }, D { l: 5, t: 11, i: 821, }, D { l: 134, t: 11, i: 1687, }, D { l: 133, t: 10, i: 449, }, D { l: 7, t: 0, i: 463 }, D { l: 17, t: 0, i: 69 }, D { l: 136, t: 10, i: 103, }, D { l: 7, t: 10, i: 2028, }, D { l: 138, t: 10, i: 641, }, D { l: 6, t: 0, i: 193 }, D { l: 7, t: 0, i: 240 }, D { l: 7, t: 0, i: 1682, }, D { l: 10, t: 0, i: 51 }, D { l: 10, t: 0, i: 640, }, D { l: 11, t: 0, i: 410, }, D { l: 13, t: 0, i: 82 }, D { l: 14, t: 0, i: 247, }, D { l: 14, t: 0, i: 331, }, D { l: 142, t: 0, i: 377, }, D { l: 6, t: 0, i: 471 }, D { l: 11, t: 0, i: 411, }, D { l: 142, t: 0, i: 2 }, D { l: 5, t: 11, i: 71 }, D { l: 7, t: 11, i: 1407, }, D { l: 9, t: 11, i: 388, }, D { l: 9, t: 11, i: 704, }, D { l: 10, t: 11, i: 261, }, D { l: 10, t: 11, i: 619, }, D { l: 11, t: 11, i: 547, }, D { l: 11, t: 11, i: 619, }, D { l: 143, t: 11, i: 157, }, D { l: 136, t: 0, i: 633, }, D { l: 135, t: 0, i: 1148, }, D { l: 6, t: 0, i: 554 }, D { l: 7, t: 0, i: 1392, }, D { l: 12, t: 0, i: 129, }, D { l: 7, t: 10, i: 1274, }, D { l: 7, t: 10, i: 1386, }, D { l: 7, t: 11, i: 2008, }, D { l: 9, t: 11, i: 337, }, D { l: 10, t: 11, i: 517, }, D { l: 146, t: 10, i: 87, }, D { l: 7, t: 0, i: 803 }, D { l: 8, t: 0, i: 542 }, D { l: 6, t: 10, i: 187, }, D { l: 7, t: 10, i: 1203, }, D { l: 8, t: 10, i: 380, }, D { l: 14, t: 10, i: 117, }, D { l: 149, t: 10, i: 28, }, D { l: 6, t: 10, i: 297, }, D { l: 7, t: 10, i: 793, }, D { l: 139, t: 10, i: 938, }, D { l: 8, t: 0, i: 438 }, D { l: 11, t: 0, i: 363, }, D { l: 7, t: 10, i: 464, }, D { l: 11, t: 10, i: 105, }, D { l: 12, t: 10, i: 231, }, D { l: 14, t: 10, i: 386, }, D { l: 15, t: 10, i: 102, }, D { l: 148, t: 10, i: 75, }, D { l: 5, t: 11, i: 16 }, D { l: 6, t: 11, i: 86 }, D { l: 6, t: 11, i: 603, }, D { l: 7, t: 11, i: 292, }, D { l: 7, t: 11, i: 561, }, D { l: 8, t: 11, i: 257, }, D { l: 8, t: 11, i: 382, }, D { l: 9, t: 11, i: 721, }, D { l: 9, t: 11, i: 778, }, D { l: 11, t: 11, i: 581, }, D { l: 140, t: 11, i: 466, }, D { l: 6, t: 0, i: 717 }, D { l: 4, t: 11, i: 486, }, D { l: 133, t: 11, i: 491, }, D { l: 132, t: 0, i: 875, }, D { l: 132, t: 11, i: 72, }, D { l: 6, t: 11, i: 265, }, D { l: 135, t: 11, i: 847, }, D { l: 4, t: 0, i: 237 }, D { l: 135, t: 0, i: 514, }, D { l: 6, t: 0, i: 392 }, D { l: 7, t: 0, i: 65 }, D { l: 135, t: 0, i: 2019, }, D { l: 140, t: 11, i: 261, }, D { l: 135, t: 11, i: 922, }, D { l: 137, t: 11, i: 404, }, D { l: 12, t: 0, i: 563, }, D { l: 14, t: 0, i: 101, }, D { l: 18, t: 0, i: 129, }, D { l: 7, t: 10, i: 1010, }, D { l: 11, t: 10, i: 733, }, D { l: 11, t: 10, i: 759, }, D { l: 13, t: 10, i: 34, }, D { l: 146, t: 10, i: 45, }, D { l: 7, t: 10, i: 1656, }, D { l: 9, t: 10, i: 369, }, D { l: 10, t: 10, i: 338, }, D { l: 10, t: 10, i: 490, }, D { l: 11, t: 10, i: 154, }, D { l: 11, t: 10, i: 545, }, D { l: 11, t: 10, i: 775, }, D { l: 13, t: 10, i: 77, }, D { l: 141, t: 10, i: 274, }, D { l: 4, t: 0, i: 444 }, D { l: 10, t: 0, i: 146, }, D { l: 140, t: 0, i: 9 }, D { l: 139, t: 11, i: 163, }, D { l: 7, t: 0, i: 1260, }, D { l: 135, t: 0, i: 1790, }, D { l: 9, t: 0, i: 222 }, D { l: 10, t: 0, i: 43 }, D { l: 139, t: 0, i: 900, }, D { l: 137, t: 11, i: 234, }, D { l: 138, t: 0, i: 971, }, D { l: 137, t: 0, i: 761, }, D { l: 134, t: 0, i: 699, }, D { l: 136, t: 11, i: 434, }, D { l: 6, t: 0, i: 1116, }, D { l: 7, t: 0, i: 1366, }, D { l: 5, t: 10, i: 20 }, D { l: 6, t: 11, i: 197, }, D { l: 6, t: 10, i: 298, }, D { l: 7, t: 10, i: 659, }, D { l: 8, t: 11, i: 205, }, D { l: 137, t: 10, i: 219, }, D { l: 132, t: 11, i: 490, }, D { l: 11, t: 11, i: 820, }, D { l: 150, t: 11, i: 51, }, D { l: 7, t: 10, i: 1440, }, D { l: 11, t: 10, i: 854, }, D { l: 11, t: 10, i: 872, }, D { l: 11, t: 10, i: 921, }, D { l: 12, t: 10, i: 551, }, D { l: 13, t: 10, i: 472, }, D { l: 142, t: 10, i: 367, }, D { l: 140, t: 11, i: 13, }, D { l: 132, t: 0, i: 829, }, D { l: 12, t: 0, i: 242, }, D { l: 132, t: 10, i: 439, }, D { l: 136, t: 10, i: 669, }, D { l: 6, t: 0, i: 593 }, D { l: 6, t: 11, i: 452, }, D { l: 7, t: 11, i: 312, }, D { l: 138, t: 11, i: 219, }, D { l: 4, t: 11, i: 333, }, D { l: 9, t: 11, i: 176, }, D { l: 12, t: 11, i: 353, }, D { l: 141, t: 11, i: 187, }, D { l: 7, t: 0, i: 36 }, D { l: 8, t: 0, i: 201 }, D { l: 136, t: 0, i: 605, }, D { l: 140, t: 0, i: 224, }, D { l: 132, t: 10, i: 233, }, D { l: 134, t: 0, i: 1430, }, D { l: 134, t: 0, i: 1806, }, D { l: 4, t: 0, i: 523 }, D { l: 133, t: 0, i: 638, }, D { l: 6, t: 0, i: 1889, }, D { l: 9, t: 0, i: 958 }, D { l: 9, t: 0, i: 971 }, D { l: 9, t: 0, i: 976 }, D { l: 12, t: 0, i: 796, }, D { l: 12, t: 0, i: 799, }, D { l: 12, t: 0, i: 808, }, D { l: 12, t: 0, i: 835, }, D { l: 12, t: 0, i: 836, }, D { l: 12, t: 0, i: 914, }, D { l: 12, t: 0, i: 946, }, D { l: 15, t: 0, i: 216, }, D { l: 15, t: 0, i: 232, }, D { l: 18, t: 0, i: 183, }, D { l: 18, t: 0, i: 187, }, D { l: 18, t: 0, i: 194, }, D { l: 18, t: 0, i: 212, }, D { l: 18, t: 0, i: 232, }, D { l: 149, t: 0, i: 49, }, D { l: 132, t: 10, i: 482, }, D { l: 6, t: 0, i: 827 }, D { l: 134, t: 0, i: 1434, }, D { l: 135, t: 10, i: 346, }, D { l: 134, t: 0, i: 2043, }, D { l: 6, t: 0, i: 242 }, D { l: 7, t: 0, i: 227 }, D { l: 7, t: 0, i: 1581, }, D { l: 8, t: 0, i: 104 }, D { l: 9, t: 0, i: 113 }, D { l: 9, t: 0, i: 220 }, D { l: 9, t: 0, i: 427 }, D { l: 10, t: 0, i: 136, }, D { l: 10, t: 0, i: 239, }, D { l: 11, t: 0, i: 579, }, D { l: 11, t: 0, i: 1023, }, D { l: 13, t: 0, i: 4 }, D { l: 13, t: 0, i: 204, }, D { l: 13, t: 0, i: 316, }, D { l: 148, t: 0, i: 86, }, D { l: 134, t: 11, i: 1685, }, D { l: 7, t: 0, i: 148 }, D { l: 8, t: 0, i: 284 }, D { l: 141, t: 0, i: 63, }, D { l: 142, t: 0, i: 10, }, D { l: 135, t: 11, i: 584, }, D { l: 134, t: 0, i: 1249, }, D { l: 7, t: 0, i: 861 }, D { l: 135, t: 10, i: 334, }, D { l: 5, t: 10, i: 795, }, D { l: 6, t: 10, i: 1741, }, D { l: 137, t: 11, i: 70, }, D { l: 132, t: 0, i: 807, }, D { l: 7, t: 11, i: 135, }, D { l: 8, t: 11, i: 7 }, D { l: 8, t: 11, i: 62 }, D { l: 9, t: 11, i: 243, }, D { l: 10, t: 11, i: 658, }, D { l: 10, t: 11, i: 697, }, D { l: 11, t: 11, i: 456, }, D { l: 139, t: 11, i: 756, }, D { l: 9, t: 11, i: 395, }, D { l: 138, t: 11, i: 79, }, D { l: 137, t: 11, i: 108, }, D { l: 147, t: 0, i: 94, }, D { l: 136, t: 0, i: 494, }, D { l: 135, t: 11, i: 631, }, D { l: 135, t: 10, i: 622, }, D { l: 7, t: 0, i: 1510, }, D { l: 135, t: 10, i: 1750, }, D { l: 4, t: 10, i: 203, }, D { l: 135, t: 10, i: 1936, }, D { l: 7, t: 11, i: 406, }, D { l: 7, t: 11, i: 459, }, D { l: 8, t: 11, i: 606, }, D { l: 139, t: 11, i: 726, }, D { l: 7, t: 0, i: 1306, }, D { l: 8, t: 0, i: 505 }, D { l: 9, t: 0, i: 482 }, D { l: 10, t: 0, i: 126, }, D { l: 11, t: 0, i: 225, }, D { l: 12, t: 0, i: 347, }, D { l: 12, t: 0, i: 449, }, D { l: 13, t: 0, i: 19 }, D { l: 14, t: 0, i: 218, }, D { l: 142, t: 0, i: 435, }, D { l: 5, t: 0, i: 268 }, D { l: 10, t: 0, i: 764, }, D { l: 12, t: 0, i: 120, }, D { l: 13, t: 0, i: 39 }, D { l: 145, t: 0, i: 127, }, D { l: 142, t: 11, i: 68, }, D { l: 11, t: 10, i: 678, }, D { l: 140, t: 10, i: 307, }, D { l: 12, t: 11, i: 268, }, D { l: 12, t: 11, i: 640, }, D { l: 142, t: 11, i: 119, }, D { l: 135, t: 10, i: 2044, }, D { l: 133, t: 11, i: 612, }, D { l: 4, t: 11, i: 372, }, D { l: 7, t: 11, i: 482, }, D { l: 8, t: 11, i: 158, }, D { l: 9, t: 11, i: 602, }, D { l: 9, t: 11, i: 615, }, D { l: 10, t: 11, i: 245, }, D { l: 10, t: 11, i: 678, }, D { l: 10, t: 11, i: 744, }, D { l: 11, t: 11, i: 248, }, D { l: 139, t: 11, i: 806, }, D { l: 7, t: 10, i: 311, }, D { l: 9, t: 10, i: 308, }, D { l: 140, t: 10, i: 255, }, D { l: 4, t: 0, i: 384 }, D { l: 135, t: 0, i: 1022, }, D { l: 5, t: 11, i: 854, }, D { l: 135, t: 11, i: 1991, }, D { l: 135, t: 10, i: 1266, }, D { l: 4, t: 10, i: 400, }, D { l: 5, t: 10, i: 267, }, D { l: 135, t: 10, i: 232, }, D { l: 135, t: 0, i: 1703, }, D { l: 9, t: 0, i: 159 }, D { l: 11, t: 0, i: 661, }, D { l: 140, t: 0, i: 603, }, D { l: 4, t: 0, i: 964 }, D { l: 14, t: 0, i: 438, }, D { l: 14, t: 0, i: 444, }, D { l: 14, t: 0, i: 456, }, D { l: 22, t: 0, i: 60 }, D { l: 22, t: 0, i: 63 }, D { l: 9, t: 11, i: 106, }, D { l: 9, t: 11, i: 163, }, D { l: 9, t: 11, i: 296, }, D { l: 10, t: 11, i: 167, }, D { l: 10, t: 11, i: 172, }, D { l: 10, t: 11, i: 777, }, D { l: 139, t: 11, i: 16, }, D { l: 136, t: 0, i: 583, }, D { l: 132, t: 0, i: 515, }, D { l: 8, t: 0, i: 632 }, D { l: 8, t: 0, i: 697 }, D { l: 137, t: 0, i: 854, }, D { l: 5, t: 11, i: 195, }, D { l: 135, t: 11, i: 1685, }, D { l: 6, t: 0, i: 1123, }, D { l: 134, t: 0, i: 1365, }, D { l: 134, t: 11, i: 328, }, D { l: 7, t: 11, i: 1997, }, D { l: 8, t: 11, i: 730, }, D { l: 139, t: 11, i: 1006, }, D { l: 4, t: 0, i: 136 }, D { l: 133, t: 0, i: 551, }, D { l: 134, t: 0, i: 1782, }, D { l: 7, t: 0, i: 1287, }, D { l: 9, t: 0, i: 44 }, D { l: 10, t: 0, i: 552, }, D { l: 10, t: 0, i: 642, }, D { l: 11, t: 0, i: 839, }, D { l: 12, t: 0, i: 274, }, D { l: 12, t: 0, i: 275, }, D { l: 12, t: 0, i: 372, }, D { l: 13, t: 0, i: 91 }, D { l: 142, t: 0, i: 125, }, D { l: 5, t: 11, i: 751, }, D { l: 11, t: 11, i: 797, }, D { l: 140, t: 11, i: 203, }, D { l: 133, t: 0, i: 732, }, D { l: 7, t: 0, i: 679 }, D { l: 8, t: 0, i: 313 }, D { l: 4, t: 10, i: 100, }, D { l: 135, t: 11, i: 821, }, D { l: 10, t: 0, i: 361, }, D { l: 142, t: 0, i: 316, }, D { l: 134, t: 0, i: 595, }, D { l: 6, t: 0, i: 147 }, D { l: 7, t: 0, i: 886 }, D { l: 9, t: 0, i: 753 }, D { l: 138, t: 0, i: 268, }, D { l: 5, t: 10, i: 362, }, D { l: 5, t: 10, i: 443, }, D { l: 6, t: 10, i: 318, }, D { l: 7, t: 10, i: 1019, }, D { l: 139, t: 10, i: 623, }, D { l: 5, t: 10, i: 463, }, D { l: 136, t: 10, i: 296, }, D { l: 4, t: 10, i: 454, }, D { l: 5, t: 11, i: 950, }, D { l: 5, t: 11, i: 994, }, D { l: 134, t: 11, i: 351, }, D { l: 138, t: 0, i: 137, }, D { l: 5, t: 10, i: 48 }, D { l: 5, t: 10, i: 404, }, D { l: 6, t: 10, i: 557, }, D { l: 7, t: 10, i: 458, }, D { l: 8, t: 10, i: 597, }, D { l: 10, t: 10, i: 455, }, D { l: 10, t: 10, i: 606, }, D { l: 11, t: 10, i: 49, }, D { l: 11, t: 10, i: 548, }, D { l: 12, t: 10, i: 476, }, D { l: 13, t: 10, i: 18, }, D { l: 141, t: 10, i: 450, }, D { l: 133, t: 0, i: 414, }, D { l: 135, t: 0, i: 1762, }, D { l: 5, t: 11, i: 421, }, D { l: 135, t: 11, i: 47, }, D { l: 5, t: 10, i: 442, }, D { l: 135, t: 10, i: 1984, }, D { l: 134, t: 0, i: 599, }, D { l: 134, t: 0, i: 1749, }, D { l: 134, t: 0, i: 1627, }, D { l: 4, t: 0, i: 488 }, D { l: 132, t: 11, i: 350, }, D { l: 137, t: 11, i: 751, }, D { l: 132, t: 0, i: 83, }, D { l: 140, t: 0, i: 676, }, D { l: 133, t: 11, i: 967, }, D { l: 7, t: 0, i: 1639, }, D { l: 5, t: 10, i: 55 }, D { l: 140, t: 10, i: 161, }, D { l: 4, t: 11, i: 473, }, D { l: 7, t: 11, i: 623, }, D { l: 8, t: 11, i: 808, }, D { l: 9, t: 11, i: 871, }, D { l: 9, t: 11, i: 893, }, D { l: 11, t: 11, i: 38, }, D { l: 11, t: 11, i: 431, }, D { l: 12, t: 11, i: 112, }, D { l: 12, t: 11, i: 217, }, D { l: 12, t: 11, i: 243, }, D { l: 12, t: 11, i: 562, }, D { l: 12, t: 11, i: 683, }, D { l: 13, t: 11, i: 141, }, D { l: 13, t: 11, i: 197, }, D { l: 13, t: 11, i: 227, }, D { l: 13, t: 11, i: 406, }, D { l: 13, t: 11, i: 487, }, D { l: 14, t: 11, i: 156, }, D { l: 14, t: 11, i: 203, }, D { l: 14, t: 11, i: 224, }, D { l: 14, t: 11, i: 256, }, D { l: 18, t: 11, i: 58, }, D { l: 150, t: 11, i: 0, }, D { l: 133, t: 10, i: 450, }, D { l: 7, t: 11, i: 736, }, D { l: 139, t: 11, i: 264, }, D { l: 134, t: 0, i: 278, }, D { l: 4, t: 11, i: 222, }, D { l: 7, t: 11, i: 286, }, D { l: 136, t: 11, i: 629, }, D { l: 135, t: 10, i: 869, }, D { l: 140, t: 0, i: 97, }, D { l: 144, t: 0, i: 14, }, D { l: 134, t: 0, i: 1085, }, D { l: 4, t: 10, i: 213, }, D { l: 7, t: 10, i: 223, }, D { l: 136, t: 10, i: 80, }, D { l: 7, t: 0, i: 388 }, D { l: 7, t: 0, i: 644 }, D { l: 139, t: 0, i: 781, }, D { l: 132, t: 0, i: 849, }, D { l: 7, t: 0, i: 229 }, D { l: 8, t: 0, i: 59 }, D { l: 9, t: 0, i: 190 }, D { l: 10, t: 0, i: 378, }, D { l: 140, t: 0, i: 191, }, D { l: 7, t: 10, i: 381, }, D { l: 7, t: 10, i: 806, }, D { l: 7, t: 10, i: 820, }, D { l: 8, t: 10, i: 354, }, D { l: 8, t: 10, i: 437, }, D { l: 8, t: 10, i: 787, }, D { l: 9, t: 10, i: 657, }, D { l: 10, t: 10, i: 58, }, D { l: 10, t: 10, i: 339, }, D { l: 10, t: 10, i: 749, }, D { l: 11, t: 10, i: 914, }, D { l: 12, t: 10, i: 162, }, D { l: 13, t: 10, i: 75, }, D { l: 14, t: 10, i: 106, }, D { l: 14, t: 10, i: 198, }, D { l: 14, t: 10, i: 320, }, D { l: 14, t: 10, i: 413, }, D { l: 146, t: 10, i: 43, }, D { l: 141, t: 11, i: 306, }, D { l: 136, t: 10, i: 747, }, D { l: 134, t: 0, i: 1115, }, D { l: 16, t: 0, i: 94 }, D { l: 16, t: 0, i: 108, }, D { l: 136, t: 11, i: 146, }, D { l: 6, t: 0, i: 700 }, D { l: 6, t: 0, i: 817 }, D { l: 134, t: 0, i: 1002, }, D { l: 133, t: 10, i: 692, }, D { l: 4, t: 11, i: 465, }, D { l: 135, t: 11, i: 1663, }, D { l: 134, t: 10, i: 191, }, D { l: 6, t: 0, i: 1414, }, D { l: 135, t: 11, i: 913, }, D { l: 132, t: 0, i: 660, }, D { l: 7, t: 0, i: 1035, }, D { l: 138, t: 0, i: 737, }, D { l: 6, t: 10, i: 162, }, D { l: 7, t: 10, i: 1960, }, D { l: 136, t: 10, i: 831, }, D { l: 132, t: 10, i: 706, }, D { l: 7, t: 0, i: 690 }, D { l: 9, t: 0, i: 217 }, D { l: 9, t: 0, i: 587 }, D { l: 140, t: 0, i: 521, }, D { l: 138, t: 10, i: 426, }, D { l: 135, t: 10, i: 1235, }, D { l: 6, t: 11, i: 82 }, D { l: 7, t: 11, i: 138, }, D { l: 7, t: 11, i: 517, }, D { l: 9, t: 11, i: 673, }, D { l: 139, t: 11, i: 238, }, D { l: 138, t: 0, i: 272, }, D { l: 5, t: 11, i: 495, }, D { l: 7, t: 11, i: 834, }, D { l: 9, t: 11, i: 733, }, D { l: 139, t: 11, i: 378, }, D { l: 134, t: 0, i: 1744, }, D { l: 132, t: 0, i: 1011, }, D { l: 7, t: 11, i: 828, }, D { l: 142, t: 11, i: 116, }, D { l: 4, t: 0, i: 733 }, D { l: 9, t: 0, i: 194 }, D { l: 10, t: 0, i: 92 }, D { l: 11, t: 0, i: 198, }, D { l: 12, t: 0, i: 84 }, D { l: 13, t: 0, i: 128, }, D { l: 133, t: 11, i: 559, }, D { l: 10, t: 0, i: 57 }, D { l: 10, t: 0, i: 277, }, D { l: 6, t: 11, i: 21 }, D { l: 6, t: 11, i: 1737, }, D { l: 7, t: 11, i: 1444, }, D { l: 136, t: 11, i: 224, }, D { l: 4, t: 10, i: 204, }, D { l: 137, t: 10, i: 902, }, D { l: 136, t: 10, i: 833, }, D { l: 11, t: 0, i: 348, }, D { l: 12, t: 0, i: 99 }, D { l: 18, t: 0, i: 1 }, D { l: 18, t: 0, i: 11 }, D { l: 19, t: 0, i: 4 }, D { l: 7, t: 10, i: 366, }, D { l: 9, t: 10, i: 287, }, D { l: 12, t: 10, i: 199, }, D { l: 12, t: 10, i: 556, }, D { l: 140, t: 10, i: 577, }, D { l: 6, t: 0, i: 1981, }, D { l: 136, t: 0, i: 936, }, D { l: 21, t: 0, i: 33 }, D { l: 150, t: 0, i: 40, }, D { l: 5, t: 11, i: 519, }, D { l: 138, t: 11, i: 204, }, D { l: 5, t: 10, i: 356, }, D { l: 135, t: 10, i: 224, }, D { l: 134, t: 0, i: 775, }, D { l: 135, t: 0, i: 306, }, D { l: 7, t: 10, i: 630, }, D { l: 9, t: 10, i: 567, }, D { l: 11, t: 10, i: 150, }, D { l: 11, t: 10, i: 444, }, D { l: 141, t: 10, i: 119, }, D { l: 5, t: 0, i: 979 }, D { l: 134, t: 10, i: 539, }, D { l: 133, t: 0, i: 611, }, D { l: 4, t: 11, i: 402, }, D { l: 135, t: 11, i: 1679, }, D { l: 5, t: 0, i: 178 }, D { l: 7, t: 11, i: 2 }, D { l: 8, t: 11, i: 323, }, D { l: 136, t: 11, i: 479, }, D { l: 5, t: 11, i: 59 }, D { l: 135, t: 11, i: 672, }, D { l: 4, t: 0, i: 1010, }, D { l: 6, t: 0, i: 1969, }, D { l: 138, t: 11, i: 237, }, D { l: 133, t: 11, i: 412, }, D { l: 146, t: 11, i: 34, }, D { l: 7, t: 11, i: 1740, }, D { l: 146, t: 11, i: 48, }, D { l: 134, t: 0, i: 664, }, D { l: 139, t: 10, i: 814, }, D { l: 4, t: 11, i: 85 }, D { l: 135, t: 11, i: 549, }, D { l: 133, t: 11, i: 94, }, D { l: 133, t: 11, i: 457, }, D { l: 132, t: 0, i: 390, }, D { l: 134, t: 0, i: 1510, }, D { l: 4, t: 10, i: 235, }, D { l: 135, t: 10, i: 255, }, D { l: 4, t: 10, i: 194, }, D { l: 5, t: 10, i: 584, }, D { l: 6, t: 11, i: 11 }, D { l: 6, t: 10, i: 384, }, D { l: 7, t: 11, i: 187, }, D { l: 7, t: 10, i: 583, }, D { l: 10, t: 10, i: 761, }, D { l: 11, t: 10, i: 760, }, D { l: 139, t: 10, i: 851, }, D { l: 4, t: 11, i: 522, }, D { l: 139, t: 11, i: 802, }, D { l: 135, t: 0, i: 493, }, D { l: 10, t: 11, i: 776, }, D { l: 13, t: 11, i: 345, }, D { l: 142, t: 11, i: 425, }, D { l: 146, t: 0, i: 37, }, D { l: 4, t: 11, i: 52 }, D { l: 135, t: 11, i: 661, }, D { l: 134, t: 0, i: 724, }, D { l: 134, t: 0, i: 829, }, D { l: 133, t: 11, i: 520, }, D { l: 133, t: 10, i: 562, }, D { l: 4, t: 11, i: 281, }, D { l: 5, t: 11, i: 38 }, D { l: 7, t: 11, i: 194, }, D { l: 7, t: 11, i: 668, }, D { l: 7, t: 11, i: 1893, }, D { l: 137, t: 11, i: 397, }, D { l: 5, t: 10, i: 191, }, D { l: 137, t: 10, i: 271, }, D { l: 7, t: 0, i: 1537, }, D { l: 14, t: 0, i: 96 }, D { l: 143, t: 0, i: 73, }, D { l: 5, t: 0, i: 473 }, D { l: 11, t: 0, i: 168, }, D { l: 4, t: 10, i: 470, }, D { l: 6, t: 10, i: 153, }, D { l: 7, t: 10, i: 1503, }, D { l: 7, t: 10, i: 1923, }, D { l: 10, t: 10, i: 701, }, D { l: 11, t: 10, i: 132, }, D { l: 11, t: 10, i: 227, }, D { l: 11, t: 10, i: 320, }, D { l: 11, t: 10, i: 436, }, D { l: 11, t: 10, i: 525, }, D { l: 11, t: 10, i: 855, }, D { l: 12, t: 10, i: 41, }, D { l: 12, t: 10, i: 286, }, D { l: 13, t: 10, i: 103, }, D { l: 13, t: 10, i: 284, }, D { l: 14, t: 10, i: 255, }, D { l: 14, t: 10, i: 262, }, D { l: 15, t: 10, i: 117, }, D { l: 143, t: 10, i: 127, }, D { l: 133, t: 0, i: 105, }, D { l: 5, t: 0, i: 438 }, D { l: 9, t: 0, i: 694 }, D { l: 12, t: 0, i: 627, }, D { l: 141, t: 0, i: 210, }, D { l: 133, t: 10, i: 327, }, D { l: 6, t: 10, i: 552, }, D { l: 7, t: 10, i: 1754, }, D { l: 137, t: 10, i: 604, }, D { l: 134, t: 0, i: 1256, }, D { l: 152, t: 0, i: 11, }, D { l: 5, t: 11, i: 448, }, D { l: 11, t: 11, i: 98, }, D { l: 139, t: 11, i: 524, }, D { l: 7, t: 0, i: 1626, }, D { l: 5, t: 10, i: 80 }, D { l: 6, t: 10, i: 405, }, D { l: 7, t: 10, i: 403, }, D { l: 7, t: 10, i: 1502, }, D { l: 8, t: 10, i: 456, }, D { l: 9, t: 10, i: 487, }, D { l: 9, t: 10, i: 853, }, D { l: 9, t: 10, i: 889, }, D { l: 10, t: 10, i: 309, }, D { l: 11, t: 10, i: 721, }, D { l: 11, t: 10, i: 994, }, D { l: 12, t: 10, i: 430, }, D { l: 13, t: 10, i: 165, }, D { l: 14, t: 11, i: 16, }, D { l: 146, t: 11, i: 44, }, D { l: 132, t: 0, i: 779, }, D { l: 8, t: 0, i: 25 }, D { l: 138, t: 0, i: 826, }, D { l: 4, t: 10, i: 453, }, D { l: 5, t: 10, i: 887, }, D { l: 6, t: 10, i: 535, }, D { l: 8, t: 10, i: 6 }, D { l: 8, t: 10, i: 543, }, D { l: 136, t: 10, i: 826, }, D { l: 137, t: 11, i: 461, }, D { l: 140, t: 11, i: 632, }, D { l: 132, t: 0, i: 308, }, D { l: 135, t: 0, i: 741, }, D { l: 132, t: 0, i: 671, }, D { l: 7, t: 0, i: 150 }, D { l: 8, t: 0, i: 649 }, D { l: 136, t: 0, i: 1020, }, D { l: 9, t: 0, i: 99 }, D { l: 6, t: 11, i: 336, }, D { l: 8, t: 11, i: 552, }, D { l: 9, t: 11, i: 285, }, D { l: 10, t: 11, i: 99, }, D { l: 139, t: 11, i: 568, }, D { l: 134, t: 0, i: 521, }, D { l: 5, t: 0, i: 339 }, D { l: 14, t: 0, i: 3 }, D { l: 15, t: 0, i: 41 }, D { l: 15, t: 0, i: 166, }, D { l: 147, t: 0, i: 66, }, D { l: 6, t: 11, i: 423, }, D { l: 7, t: 11, i: 665, }, D { l: 7, t: 11, i: 1210, }, D { l: 9, t: 11, i: 218, }, D { l: 141, t: 11, i: 222, }, D { l: 6, t: 0, i: 543 }, D { l: 5, t: 10, i: 101, }, D { l: 5, t: 11, i: 256, }, D { l: 6, t: 10, i: 88 }, D { l: 7, t: 10, i: 1677, }, D { l: 9, t: 10, i: 100, }, D { l: 10, t: 10, i: 677, }, D { l: 14, t: 10, i: 169, }, D { l: 14, t: 10, i: 302, }, D { l: 14, t: 10, i: 313, }, D { l: 15, t: 10, i: 48, }, D { l: 143, t: 10, i: 84, }, D { l: 4, t: 10, i: 310, }, D { l: 7, t: 10, i: 708, }, D { l: 7, t: 10, i: 996, }, D { l: 9, t: 10, i: 795, }, D { l: 10, t: 10, i: 390, }, D { l: 10, t: 10, i: 733, }, D { l: 11, t: 10, i: 451, }, D { l: 12, t: 10, i: 249, }, D { l: 14, t: 10, i: 115, }, D { l: 14, t: 10, i: 286, }, D { l: 143, t: 10, i: 100, }, D { l: 133, t: 10, i: 587, }, D { l: 13, t: 11, i: 417, }, D { l: 14, t: 11, i: 129, }, D { l: 143, t: 11, i: 15, }, D { l: 134, t: 0, i: 1358, }, D { l: 136, t: 11, i: 554, }, D { l: 132, t: 10, i: 498, }, D { l: 7, t: 10, i: 217, }, D { l: 8, t: 10, i: 140, }, D { l: 138, t: 10, i: 610, }, D { l: 135, t: 11, i: 989, }, D { l: 135, t: 11, i: 634, }, D { l: 6, t: 0, i: 155 }, D { l: 140, t: 0, i: 234, }, D { l: 135, t: 11, i: 462, }, D { l: 132, t: 11, i: 618, }, D { l: 134, t: 0, i: 1628, }, D { l: 132, t: 0, i: 766, }, D { l: 4, t: 11, i: 339, }, D { l: 5, t: 10, i: 905, }, D { l: 135, t: 11, i: 259, }, D { l: 135, t: 0, i: 829, }, D { l: 4, t: 11, i: 759, }, D { l: 141, t: 11, i: 169, }, D { l: 7, t: 0, i: 1445, }, D { l: 4, t: 10, i: 456, }, D { l: 7, t: 10, i: 358, }, D { l: 7, t: 10, i: 1637, }, D { l: 8, t: 10, i: 643, }, D { l: 139, t: 10, i: 483, }, D { l: 5, t: 0, i: 486 }, D { l: 135, t: 0, i: 1349, }, D { l: 5, t: 11, i: 688, }, D { l: 135, t: 11, i: 712, }, D { l: 7, t: 0, i: 1635, }, D { l: 8, t: 0, i: 17 }, D { l: 10, t: 0, i: 217, }, D { l: 10, t: 0, i: 295, }, D { l: 12, t: 0, i: 2 }, D { l: 140, t: 11, i: 2, }, D { l: 138, t: 0, i: 558, }, D { l: 150, t: 10, i: 56, }, D { l: 4, t: 11, i: 278, }, D { l: 5, t: 11, i: 465, }, D { l: 135, t: 11, i: 1367, }, D { l: 136, t: 11, i: 482, }, D { l: 133, t: 10, i: 535, }, D { l: 6, t: 0, i: 1362, }, D { l: 6, t: 0, i: 1461, }, D { l: 10, t: 11, i: 274, }, D { l: 10, t: 11, i: 625, }, D { l: 139, t: 11, i: 530, }, D { l: 5, t: 0, i: 599 }, D { l: 5, t: 11, i: 336, }, D { l: 6, t: 11, i: 341, }, D { l: 6, t: 11, i: 478, }, D { l: 6, t: 11, i: 1763, }, D { l: 136, t: 11, i: 386, }, D { l: 7, t: 10, i: 1748, }, D { l: 137, t: 11, i: 151, }, D { l: 134, t: 0, i: 1376, }, D { l: 133, t: 10, i: 539, }, D { l: 135, t: 11, i: 73, }, D { l: 135, t: 11, i: 1971, }, D { l: 139, t: 11, i: 283, }, D { l: 9, t: 0, i: 93 }, D { l: 139, t: 0, i: 474, }, D { l: 6, t: 10, i: 91 }, D { l: 135, t: 10, i: 435, }, D { l: 6, t: 0, i: 447 }, D { l: 5, t: 11, i: 396, }, D { l: 134, t: 11, i: 501, }, D { l: 4, t: 10, i: 16 }, D { l: 5, t: 10, i: 316, }, D { l: 5, t: 10, i: 842, }, D { l: 6, t: 10, i: 370, }, D { l: 6, t: 10, i: 1778, }, D { l: 8, t: 10, i: 166, }, D { l: 11, t: 10, i: 812, }, D { l: 12, t: 10, i: 206, }, D { l: 12, t: 10, i: 351, }, D { l: 14, t: 10, i: 418, }, D { l: 16, t: 10, i: 15, }, D { l: 16, t: 10, i: 34, }, D { l: 18, t: 10, i: 3 }, D { l: 19, t: 10, i: 3 }, D { l: 19, t: 10, i: 7 }, D { l: 20, t: 10, i: 4 }, D { l: 149, t: 10, i: 21, }, D { l: 7, t: 0, i: 577 }, D { l: 7, t: 0, i: 1432, }, D { l: 9, t: 0, i: 475 }, D { l: 9, t: 0, i: 505 }, D { l: 9, t: 0, i: 526 }, D { l: 9, t: 0, i: 609 }, D { l: 9, t: 0, i: 689 }, D { l: 9, t: 0, i: 726 }, D { l: 9, t: 0, i: 735 }, D { l: 9, t: 0, i: 738 }, D { l: 10, t: 0, i: 556, }, D { l: 10, t: 0, i: 674, }, D { l: 10, t: 0, i: 684, }, D { l: 11, t: 0, i: 89 }, D { l: 11, t: 0, i: 202, }, D { l: 11, t: 0, i: 272, }, D { l: 11, t: 0, i: 380, }, D { l: 11, t: 0, i: 415, }, D { l: 11, t: 0, i: 505, }, D { l: 11, t: 0, i: 537, }, D { l: 11, t: 0, i: 550, }, D { l: 11, t: 0, i: 562, }, D { l: 11, t: 0, i: 640, }, D { l: 11, t: 0, i: 667, }, D { l: 11, t: 0, i: 688, }, D { l: 11, t: 0, i: 847, }, D { l: 11, t: 0, i: 927, }, D { l: 11, t: 0, i: 930, }, D { l: 11, t: 0, i: 940, }, D { l: 12, t: 0, i: 144, }, D { l: 12, t: 0, i: 325, }, D { l: 12, t: 0, i: 329, }, D { l: 12, t: 0, i: 389, }, D { l: 12, t: 0, i: 403, }, D { l: 12, t: 0, i: 451, }, D { l: 12, t: 0, i: 515, }, D { l: 12, t: 0, i: 604, }, D { l: 12, t: 0, i: 616, }, D { l: 12, t: 0, i: 626, }, D { l: 13, t: 0, i: 66 }, D { l: 13, t: 0, i: 131, }, D { l: 13, t: 0, i: 167, }, D { l: 13, t: 0, i: 236, }, D { l: 13, t: 0, i: 368, }, D { l: 13, t: 0, i: 411, }, D { l: 13, t: 0, i: 434, }, D { l: 13, t: 0, i: 453, }, D { l: 13, t: 0, i: 461, }, D { l: 13, t: 0, i: 474, }, D { l: 14, t: 0, i: 59 }, D { l: 14, t: 0, i: 60 }, D { l: 14, t: 0, i: 139, }, D { l: 14, t: 0, i: 152, }, D { l: 14, t: 0, i: 276, }, D { l: 14, t: 0, i: 353, }, D { l: 14, t: 0, i: 402, }, D { l: 15, t: 0, i: 28 }, D { l: 15, t: 0, i: 81 }, D { l: 15, t: 0, i: 123, }, D { l: 15, t: 0, i: 152, }, D { l: 18, t: 0, i: 136, }, D { l: 148, t: 0, i: 88, }, D { l: 4, t: 11, i: 929, }, D { l: 133, t: 11, i: 799, }, D { l: 136, t: 11, i: 46, }, D { l: 142, t: 0, i: 307, }, D { l: 4, t: 0, i: 609 }, D { l: 7, t: 0, i: 756 }, D { l: 9, t: 0, i: 544 }, D { l: 11, t: 0, i: 413, }, D { l: 144, t: 0, i: 25, }, D { l: 10, t: 0, i: 687, }, D { l: 7, t: 10, i: 619, }, D { l: 10, t: 10, i: 547, }, D { l: 11, t: 10, i: 122, }, D { l: 140, t: 10, i: 601, }, D { l: 4, t: 0, i: 930 }, D { l: 133, t: 0, i: 947, }, D { l: 133, t: 0, i: 939, }, D { l: 142, t: 0, i: 21, }, D { l: 4, t: 11, i: 892, }, D { l: 133, t: 11, i: 770, }, D { l: 133, t: 0, i: 962, }, D { l: 5, t: 0, i: 651 }, D { l: 8, t: 0, i: 170 }, D { l: 9, t: 0, i: 61 }, D { l: 9, t: 0, i: 63 }, D { l: 10, t: 0, i: 23 }, D { l: 10, t: 0, i: 37 }, D { l: 10, t: 0, i: 834, }, D { l: 11, t: 0, i: 4 }, D { l: 11, t: 0, i: 187, }, D { l: 11, t: 0, i: 281, }, D { l: 11, t: 0, i: 503, }, D { l: 11, t: 0, i: 677, }, D { l: 12, t: 0, i: 96 }, D { l: 12, t: 0, i: 130, }, D { l: 12, t: 0, i: 244, }, D { l: 14, t: 0, i: 5 }, D { l: 14, t: 0, i: 40 }, D { l: 14, t: 0, i: 162, }, D { l: 14, t: 0, i: 202, }, D { l: 146, t: 0, i: 133, }, D { l: 4, t: 0, i: 406 }, D { l: 5, t: 0, i: 579 }, D { l: 12, t: 0, i: 492, }, D { l: 150, t: 0, i: 15, }, D { l: 135, t: 11, i: 158, }, D { l: 135, t: 0, i: 597, }, D { l: 132, t: 0, i: 981, }, D { l: 132, t: 10, i: 888, }, D { l: 4, t: 10, i: 149, }, D { l: 138, t: 10, i: 368, }, D { l: 132, t: 0, i: 545, }, D { l: 4, t: 10, i: 154, }, D { l: 7, t: 10, i: 1134, }, D { l: 136, t: 10, i: 105, }, D { l: 135, t: 11, i: 2001, }, D { l: 134, t: 0, i: 1558, }, D { l: 4, t: 10, i: 31 }, D { l: 6, t: 10, i: 429, }, D { l: 7, t: 10, i: 962, }, D { l: 9, t: 10, i: 458, }, D { l: 139, t: 10, i: 691, }, D { l: 132, t: 10, i: 312, }, D { l: 135, t: 10, i: 1642, }, D { l: 6, t: 0, i: 17 }, D { l: 6, t: 0, i: 1304, }, D { l: 7, t: 0, i: 16 }, D { l: 7, t: 0, i: 1001, }, D { l: 9, t: 0, i: 886 }, D { l: 10, t: 0, i: 489, }, D { l: 10, t: 0, i: 800, }, D { l: 11, t: 0, i: 782, }, D { l: 12, t: 0, i: 320, }, D { l: 13, t: 0, i: 467, }, D { l: 14, t: 0, i: 145, }, D { l: 14, t: 0, i: 387, }, D { l: 143, t: 0, i: 119, }, D { l: 135, t: 0, i: 1982, }, D { l: 17, t: 0, i: 17 }, D { l: 7, t: 11, i: 1461, }, D { l: 140, t: 11, i: 91, }, D { l: 4, t: 10, i: 236, }, D { l: 132, t: 11, i: 602, }, D { l: 138, t: 0, i: 907, }, D { l: 136, t: 0, i: 110, }, D { l: 7, t: 0, i: 272 }, D { l: 19, t: 0, i: 53 }, D { l: 5, t: 10, i: 836, }, D { l: 5, t: 10, i: 857, }, D { l: 134, t: 10, i: 1680, }, D { l: 5, t: 0, i: 458 }, D { l: 7, t: 11, i: 1218, }, D { l: 136, t: 11, i: 303, }, D { l: 7, t: 0, i: 1983, }, D { l: 8, t: 0, i: 0 }, D { l: 8, t: 0, i: 171 }, D { l: 9, t: 0, i: 120 }, D { l: 9, t: 0, i: 732 }, D { l: 10, t: 0, i: 473, }, D { l: 11, t: 0, i: 656, }, D { l: 11, t: 0, i: 998, }, D { l: 18, t: 0, i: 0 }, D { l: 18, t: 0, i: 2 }, D { l: 19, t: 0, i: 21 }, D { l: 10, t: 10, i: 68, }, D { l: 139, t: 10, i: 494, }, D { l: 137, t: 11, i: 662, }, D { l: 4, t: 11, i: 13 }, D { l: 5, t: 11, i: 567, }, D { l: 7, t: 11, i: 1498, }, D { l: 9, t: 11, i: 124, }, D { l: 11, t: 11, i: 521, }, D { l: 140, t: 11, i: 405, }, D { l: 4, t: 10, i: 81 }, D { l: 139, t: 10, i: 867, }, D { l: 135, t: 11, i: 1006, }, D { l: 7, t: 11, i: 800, }, D { l: 7, t: 11, i: 1783, }, D { l: 138, t: 11, i: 12, }, D { l: 9, t: 0, i: 295 }, D { l: 10, t: 0, i: 443, }, D { l: 5, t: 10, i: 282, }, D { l: 8, t: 10, i: 650, }, D { l: 137, t: 10, i: 907, }, D { l: 132, t: 11, i: 735, }, D { l: 4, t: 11, i: 170, }, D { l: 4, t: 10, i: 775, }, D { l: 135, t: 11, i: 323, }, D { l: 6, t: 0, i: 1844, }, D { l: 10, t: 0, i: 924, }, D { l: 11, t: 11, i: 844, }, D { l: 12, t: 11, i: 104, }, D { l: 140, t: 11, i: 625, }, D { l: 5, t: 11, i: 304, }, D { l: 7, t: 11, i: 1403, }, D { l: 140, t: 11, i: 498, }, D { l: 134, t: 0, i: 1232, }, D { l: 4, t: 0, i: 519 }, D { l: 10, t: 0, i: 70 }, D { l: 12, t: 0, i: 26 }, D { l: 14, t: 0, i: 17 }, D { l: 14, t: 0, i: 178, }, D { l: 15, t: 0, i: 34 }, D { l: 149, t: 0, i: 12, }, D { l: 132, t: 0, i: 993, }, D { l: 4, t: 11, i: 148, }, D { l: 133, t: 11, i: 742, }, D { l: 6, t: 0, i: 31 }, D { l: 7, t: 0, i: 491 }, D { l: 7, t: 0, i: 530 }, D { l: 8, t: 0, i: 592 }, D { l: 11, t: 0, i: 53 }, D { l: 11, t: 0, i: 779, }, D { l: 12, t: 0, i: 167, }, D { l: 12, t: 0, i: 411, }, D { l: 14, t: 0, i: 14 }, D { l: 14, t: 0, i: 136, }, D { l: 15, t: 0, i: 72 }, D { l: 16, t: 0, i: 17 }, D { l: 144, t: 0, i: 72, }, D { l: 133, t: 0, i: 907, }, D { l: 134, t: 0, i: 733, }, D { l: 133, t: 11, i: 111, }, D { l: 4, t: 10, i: 71 }, D { l: 5, t: 10, i: 376, }, D { l: 7, t: 10, i: 119, }, D { l: 138, t: 10, i: 665, }, D { l: 136, t: 0, i: 55, }, D { l: 8, t: 0, i: 430 }, D { l: 136, t: 11, i: 430, }, D { l: 4, t: 0, i: 208 }, D { l: 5, t: 0, i: 106 }, D { l: 6, t: 0, i: 531 }, D { l: 8, t: 0, i: 408 }, D { l: 9, t: 0, i: 188 }, D { l: 138, t: 0, i: 572, }, D { l: 12, t: 0, i: 56 }, D { l: 11, t: 10, i: 827, }, D { l: 14, t: 10, i: 34, }, D { l: 143, t: 10, i: 148, }, D { l: 134, t: 0, i: 1693, }, D { l: 133, t: 11, i: 444, }, D { l: 132, t: 10, i: 479, }, D { l: 140, t: 0, i: 441, }, D { l: 9, t: 0, i: 449 }, D { l: 10, t: 0, i: 192, }, D { l: 138, t: 0, i: 740, }, D { l: 134, t: 0, i: 928, }, D { l: 4, t: 0, i: 241 }, D { l: 7, t: 10, i: 607, }, D { l: 136, t: 10, i: 99, }, D { l: 8, t: 11, i: 123, }, D { l: 15, t: 11, i: 6 }, D { l: 144, t: 11, i: 7, }, D { l: 6, t: 11, i: 285, }, D { l: 8, t: 11, i: 654, }, D { l: 11, t: 11, i: 749, }, D { l: 12, t: 11, i: 190, }, D { l: 12, t: 11, i: 327, }, D { l: 13, t: 11, i: 120, }, D { l: 13, t: 11, i: 121, }, D { l: 13, t: 11, i: 327, }, D { l: 15, t: 11, i: 47, }, D { l: 146, t: 11, i: 40, }, D { l: 4, t: 10, i: 41 }, D { l: 5, t: 10, i: 74 }, D { l: 7, t: 10, i: 1627, }, D { l: 11, t: 10, i: 871, }, D { l: 140, t: 10, i: 619, }, D { l: 7, t: 0, i: 1525, }, D { l: 11, t: 10, i: 329, }, D { l: 11, t: 10, i: 965, }, D { l: 12, t: 10, i: 241, }, D { l: 14, t: 10, i: 354, }, D { l: 15, t: 10, i: 22, }, D { l: 148, t: 10, i: 63, }, D { l: 132, t: 0, i: 259, }, D { l: 135, t: 11, i: 183, }, D { l: 9, t: 10, i: 209, }, D { l: 137, t: 10, i: 300, }, D { l: 5, t: 11, i: 937, }, D { l: 135, t: 11, i: 100, }, D { l: 133, t: 10, i: 98, }, D { l: 4, t: 0, i: 173 }, D { l: 5, t: 0, i: 312 }, D { l: 5, t: 0, i: 512 }, D { l: 135, t: 0, i: 1285, }, D { l: 141, t: 0, i: 185, }, D { l: 7, t: 0, i: 1603, }, D { l: 7, t: 0, i: 1691, }, D { l: 9, t: 0, i: 464 }, D { l: 11, t: 0, i: 195, }, D { l: 12, t: 0, i: 279, }, D { l: 12, t: 0, i: 448, }, D { l: 14, t: 0, i: 11 }, D { l: 147, t: 0, i: 102, }, D { l: 135, t: 0, i: 1113, }, D { l: 133, t: 10, i: 984, }, D { l: 4, t: 0, i: 452 }, D { l: 5, t: 0, i: 583 }, D { l: 135, t: 0, i: 720, }, D { l: 4, t: 0, i: 547 }, D { l: 5, t: 0, i: 817 }, D { l: 6, t: 0, i: 433 }, D { l: 7, t: 0, i: 593 }, D { l: 7, t: 0, i: 1378, }, D { l: 8, t: 0, i: 161 }, D { l: 9, t: 0, i: 284 }, D { l: 10, t: 0, i: 313, }, D { l: 139, t: 0, i: 886, }, D { l: 8, t: 0, i: 722 }, D { l: 4, t: 10, i: 182, }, D { l: 6, t: 10, i: 205, }, D { l: 135, t: 10, i: 220, }, D { l: 150, t: 0, i: 13, }, D { l: 4, t: 10, i: 42 }, D { l: 9, t: 10, i: 205, }, D { l: 9, t: 10, i: 786, }, D { l: 138, t: 10, i: 659, }, D { l: 6, t: 0, i: 289 }, D { l: 7, t: 0, i: 1670, }, D { l: 12, t: 0, i: 57 }, D { l: 151, t: 0, i: 4 }, D { l: 132, t: 10, i: 635, }, D { l: 14, t: 0, i: 43 }, D { l: 146, t: 0, i: 21, }, D { l: 139, t: 10, i: 533, }, D { l: 135, t: 0, i: 1694, }, D { l: 8, t: 0, i: 420 }, D { l: 139, t: 0, i: 193, }, D { l: 135, t: 0, i: 409, }, D { l: 132, t: 10, i: 371, }, D { l: 4, t: 10, i: 272, }, D { l: 135, t: 10, i: 836, }, D { l: 5, t: 10, i: 825, }, D { l: 134, t: 10, i: 1640, }, D { l: 5, t: 11, i: 251, }, D { l: 5, t: 11, i: 956, }, D { l: 8, t: 11, i: 268, }, D { l: 9, t: 11, i: 214, }, D { l: 146, t: 11, i: 142, }, D { l: 138, t: 0, i: 308, }, D { l: 6, t: 0, i: 1863, }, D { l: 141, t: 11, i: 37, }, D { l: 137, t: 10, i: 879, }, D { l: 7, t: 10, i: 317, }, D { l: 135, t: 10, i: 569, }, D { l: 132, t: 11, i: 294, }, D { l: 134, t: 0, i: 790, }, D { l: 5, t: 0, i: 1002, }, D { l: 136, t: 0, i: 745, }, D { l: 5, t: 11, i: 346, }, D { l: 5, t: 11, i: 711, }, D { l: 136, t: 11, i: 390, }, D { l: 135, t: 0, i: 289, }, D { l: 5, t: 0, i: 504 }, D { l: 11, t: 0, i: 68 }, D { l: 137, t: 10, i: 307, }, D { l: 4, t: 0, i: 239 }, D { l: 6, t: 0, i: 477 }, D { l: 7, t: 0, i: 1607, }, D { l: 139, t: 0, i: 617, }, D { l: 149, t: 0, i: 13, }, D { l: 133, t: 0, i: 609, }, D { l: 133, t: 11, i: 624, }, D { l: 5, t: 11, i: 783, }, D { l: 7, t: 11, i: 1998, }, D { l: 135, t: 11, i: 2047, }, D { l: 133, t: 10, i: 525, }, D { l: 132, t: 0, i: 367, }, D { l: 132, t: 11, i: 594, }, D { l: 6, t: 0, i: 528 }, D { l: 133, t: 10, i: 493, }, D { l: 4, t: 10, i: 174, }, D { l: 135, t: 10, i: 911, }, D { l: 8, t: 10, i: 417, }, D { l: 137, t: 10, i: 782, }, D { l: 132, t: 0, i: 694, }, D { l: 7, t: 0, i: 548 }, D { l: 137, t: 0, i: 58, }, D { l: 4, t: 10, i: 32 }, D { l: 5, t: 10, i: 215, }, D { l: 6, t: 10, i: 269, }, D { l: 7, t: 10, i: 1782, }, D { l: 7, t: 10, i: 1892, }, D { l: 10, t: 10, i: 16, }, D { l: 11, t: 10, i: 822, }, D { l: 11, t: 10, i: 954, }, D { l: 141, t: 10, i: 481, }, D { l: 140, t: 0, i: 687, }, D { l: 7, t: 0, i: 1749, }, D { l: 136, t: 10, i: 477, }, D { l: 132, t: 11, i: 569, }, D { l: 133, t: 10, i: 308, }, D { l: 135, t: 10, i: 1088, }, D { l: 4, t: 0, i: 661 }, D { l: 138, t: 0, i: 1004, }, D { l: 5, t: 11, i: 37 }, D { l: 6, t: 11, i: 39 }, D { l: 6, t: 11, i: 451, }, D { l: 7, t: 11, i: 218, }, D { l: 7, t: 11, i: 667, }, D { l: 7, t: 11, i: 1166, }, D { l: 7, t: 11, i: 1687, }, D { l: 8, t: 11, i: 662, }, D { l: 144, t: 11, i: 2, }, D { l: 9, t: 0, i: 445 }, D { l: 12, t: 0, i: 53 }, D { l: 13, t: 0, i: 492, }, D { l: 5, t: 10, i: 126, }, D { l: 8, t: 10, i: 297, }, D { l: 9, t: 10, i: 366, }, D { l: 140, t: 10, i: 374, }, D { l: 7, t: 10, i: 1551, }, D { l: 139, t: 10, i: 361, }, D { l: 148, t: 0, i: 74, }, D { l: 134, t: 11, i: 508, }, D { l: 135, t: 0, i: 213, }, D { l: 132, t: 10, i: 175, }, D { l: 132, t: 10, i: 685, }, D { l: 6, t: 0, i: 760 }, D { l: 6, t: 0, i: 834 }, D { l: 134, t: 0, i: 1248, }, D { l: 7, t: 11, i: 453, }, D { l: 7, t: 11, i: 635, }, D { l: 7, t: 11, i: 796, }, D { l: 8, t: 11, i: 331, }, D { l: 9, t: 11, i: 328, }, D { l: 9, t: 11, i: 330, }, D { l: 9, t: 11, i: 865, }, D { l: 10, t: 11, i: 119, }, D { l: 10, t: 11, i: 235, }, D { l: 11, t: 11, i: 111, }, D { l: 11, t: 11, i: 129, }, D { l: 11, t: 11, i: 240, }, D { l: 12, t: 11, i: 31, }, D { l: 12, t: 11, i: 66, }, D { l: 12, t: 11, i: 222, }, D { l: 12, t: 11, i: 269, }, D { l: 12, t: 11, i: 599, }, D { l: 12, t: 11, i: 689, }, D { l: 13, t: 11, i: 186, }, D { l: 13, t: 11, i: 364, }, D { l: 142, t: 11, i: 345, }, D { l: 7, t: 0, i: 1672, }, D { l: 139, t: 0, i: 189, }, D { l: 133, t: 10, i: 797, }, D { l: 133, t: 10, i: 565, }, D { l: 6, t: 0, i: 1548, }, D { l: 6, t: 11, i: 98 }, D { l: 7, t: 11, i: 585, }, D { l: 135, t: 11, i: 702, }, D { l: 9, t: 0, i: 968 }, D { l: 15, t: 0, i: 192, }, D { l: 149, t: 0, i: 56, }, D { l: 4, t: 10, i: 252, }, D { l: 6, t: 11, i: 37 }, D { l: 7, t: 11, i: 299, }, D { l: 7, t: 10, i: 1068, }, D { l: 7, t: 11, i: 1666, }, D { l: 8, t: 11, i: 195, }, D { l: 8, t: 11, i: 316, }, D { l: 9, t: 11, i: 178, }, D { l: 9, t: 11, i: 276, }, D { l: 9, t: 11, i: 339, }, D { l: 9, t: 11, i: 536, }, D { l: 10, t: 11, i: 102, }, D { l: 10, t: 11, i: 362, }, D { l: 10, t: 10, i: 434, }, D { l: 10, t: 11, i: 785, }, D { l: 11, t: 11, i: 55, }, D { l: 11, t: 11, i: 149, }, D { l: 11, t: 10, i: 228, }, D { l: 11, t: 10, i: 426, }, D { l: 11, t: 11, i: 773, }, D { l: 13, t: 10, i: 231, }, D { l: 13, t: 11, i: 416, }, D { l: 13, t: 11, i: 419, }, D { l: 14, t: 11, i: 38, }, D { l: 14, t: 11, i: 41, }, D { l: 14, t: 11, i: 210, }, D { l: 18, t: 10, i: 106, }, D { l: 148, t: 10, i: 87, }, D { l: 4, t: 0, i: 751 }, D { l: 11, t: 0, i: 390, }, D { l: 140, t: 0, i: 32, }, D { l: 4, t: 0, i: 409 }, D { l: 133, t: 0, i: 78, }, D { l: 11, t: 11, i: 458, }, D { l: 12, t: 11, i: 15, }, D { l: 140, t: 11, i: 432, }, D { l: 7, t: 0, i: 1602, }, D { l: 10, t: 0, i: 257, }, D { l: 10, t: 0, i: 698, }, D { l: 11, t: 0, i: 544, }, D { l: 11, t: 0, i: 585, }, D { l: 12, t: 0, i: 212, }, D { l: 13, t: 0, i: 307, }, D { l: 5, t: 10, i: 231, }, D { l: 7, t: 10, i: 601, }, D { l: 9, t: 10, i: 277, }, D { l: 9, t: 10, i: 674, }, D { l: 10, t: 10, i: 178, }, D { l: 10, t: 10, i: 418, }, D { l: 10, t: 10, i: 509, }, D { l: 11, t: 10, i: 531, }, D { l: 12, t: 10, i: 113, }, D { l: 12, t: 10, i: 475, }, D { l: 13, t: 10, i: 99, }, D { l: 142, t: 10, i: 428, }, D { l: 6, t: 0, i: 473 }, D { l: 145, t: 0, i: 105, }, D { l: 6, t: 0, i: 1949, }, D { l: 15, t: 0, i: 156, }, D { l: 133, t: 11, i: 645, }, D { l: 7, t: 10, i: 1591, }, D { l: 144, t: 10, i: 43, }, D { l: 135, t: 0, i: 1779, }, D { l: 135, t: 10, i: 1683, }, D { l: 4, t: 11, i: 290, }, D { l: 135, t: 11, i: 1356, }, D { l: 134, t: 0, i: 763, }, D { l: 6, t: 11, i: 70 }, D { l: 7, t: 11, i: 1292, }, D { l: 10, t: 11, i: 762, }, D { l: 139, t: 11, i: 288, }, D { l: 142, t: 0, i: 29, }, D { l: 140, t: 11, i: 428, }, D { l: 7, t: 0, i: 883 }, D { l: 7, t: 11, i: 131, }, D { l: 7, t: 11, i: 422, }, D { l: 8, t: 11, i: 210, }, D { l: 140, t: 11, i: 573, }, D { l: 134, t: 0, i: 488, }, D { l: 4, t: 10, i: 399, }, D { l: 5, t: 10, i: 119, }, D { l: 5, t: 10, i: 494, }, D { l: 7, t: 10, i: 751, }, D { l: 137, t: 10, i: 556, }, D { l: 133, t: 0, i: 617, }, D { l: 132, t: 11, i: 936, }, D { l: 139, t: 0, i: 50, }, D { l: 7, t: 0, i: 1518, }, D { l: 139, t: 0, i: 694, }, D { l: 137, t: 0, i: 785, }, D { l: 4, t: 0, i: 546 }, D { l: 135, t: 0, i: 2042, }, D { l: 7, t: 11, i: 716, }, D { l: 13, t: 11, i: 97, }, D { l: 141, t: 11, i: 251, }, D { l: 132, t: 11, i: 653, }, D { l: 145, t: 0, i: 22, }, D { l: 134, t: 0, i: 1016, }, D { l: 4, t: 0, i: 313 }, D { l: 133, t: 0, i: 577, }, D { l: 136, t: 11, i: 657, }, D { l: 8, t: 0, i: 184 }, D { l: 141, t: 0, i: 433, }, D { l: 135, t: 0, i: 935, }, D { l: 6, t: 0, i: 720 }, D { l: 9, t: 0, i: 114 }, D { l: 146, t: 11, i: 80, }, D { l: 12, t: 0, i: 186, }, D { l: 12, t: 0, i: 292, }, D { l: 14, t: 0, i: 100, }, D { l: 18, t: 0, i: 70 }, D { l: 7, t: 10, i: 594, }, D { l: 7, t: 10, i: 851, }, D { l: 7, t: 10, i: 1858, }, D { l: 9, t: 10, i: 411, }, D { l: 9, t: 10, i: 574, }, D { l: 9, t: 10, i: 666, }, D { l: 9, t: 10, i: 737, }, D { l: 10, t: 10, i: 346, }, D { l: 10, t: 10, i: 712, }, D { l: 11, t: 10, i: 246, }, D { l: 11, t: 10, i: 432, }, D { l: 11, t: 10, i: 517, }, D { l: 11, t: 10, i: 647, }, D { l: 11, t: 10, i: 679, }, D { l: 11, t: 10, i: 727, }, D { l: 12, t: 10, i: 304, }, D { l: 12, t: 10, i: 305, }, D { l: 12, t: 10, i: 323, }, D { l: 12, t: 10, i: 483, }, D { l: 12, t: 10, i: 572, }, D { l: 12, t: 10, i: 593, }, D { l: 12, t: 10, i: 602, }, D { l: 13, t: 10, i: 95, }, D { l: 13, t: 10, i: 101, }, D { l: 13, t: 10, i: 171, }, D { l: 13, t: 10, i: 315, }, D { l: 13, t: 10, i: 378, }, D { l: 13, t: 10, i: 425, }, D { l: 13, t: 10, i: 475, }, D { l: 14, t: 10, i: 63, }, D { l: 14, t: 10, i: 380, }, D { l: 14, t: 10, i: 384, }, D { l: 15, t: 10, i: 133, }, D { l: 18, t: 10, i: 112, }, D { l: 148, t: 10, i: 72, }, D { l: 135, t: 10, i: 1093, }, D { l: 135, t: 11, i: 1836, }, D { l: 132, t: 10, i: 679, }, D { l: 137, t: 10, i: 203, }, D { l: 11, t: 0, i: 402, }, D { l: 12, t: 0, i: 109, }, D { l: 12, t: 0, i: 431, }, D { l: 13, t: 0, i: 179, }, D { l: 13, t: 0, i: 206, }, D { l: 14, t: 0, i: 217, }, D { l: 16, t: 0, i: 3 }, D { l: 148, t: 0, i: 53, }, D { l: 7, t: 11, i: 1368, }, D { l: 8, t: 11, i: 232, }, D { l: 8, t: 11, i: 361, }, D { l: 10, t: 11, i: 682, }, D { l: 138, t: 11, i: 742, }, D { l: 137, t: 10, i: 714, }, D { l: 5, t: 0, i: 886 }, D { l: 6, t: 0, i: 46 }, D { l: 6, t: 0, i: 1790, }, D { l: 7, t: 0, i: 14 }, D { l: 7, t: 0, i: 732 }, D { l: 7, t: 0, i: 1654, }, D { l: 8, t: 0, i: 95 }, D { l: 8, t: 0, i: 327 }, D { l: 8, t: 0, i: 616 }, D { l: 9, t: 0, i: 892 }, D { l: 10, t: 0, i: 598, }, D { l: 10, t: 0, i: 769, }, D { l: 11, t: 0, i: 134, }, D { l: 11, t: 0, i: 747, }, D { l: 12, t: 0, i: 378, }, D { l: 14, t: 0, i: 97 }, D { l: 137, t: 11, i: 534, }, D { l: 4, t: 0, i: 969 }, D { l: 136, t: 10, i: 825, }, D { l: 137, t: 11, i: 27, }, D { l: 6, t: 0, i: 727 }, D { l: 142, t: 11, i: 12, }, D { l: 133, t: 0, i: 1021, }, D { l: 134, t: 0, i: 1190, }, D { l: 134, t: 11, i: 1657, }, D { l: 5, t: 10, i: 143, }, D { l: 5, t: 10, i: 769, }, D { l: 6, t: 10, i: 1760, }, D { l: 7, t: 10, i: 682, }, D { l: 7, t: 10, i: 1992, }, D { l: 136, t: 10, i: 736, }, D { l: 132, t: 0, i: 153, }, D { l: 135, t: 11, i: 127, }, D { l: 133, t: 0, i: 798, }, D { l: 132, t: 0, i: 587, }, D { l: 6, t: 0, i: 598 }, D { l: 7, t: 0, i: 42 }, D { l: 8, t: 0, i: 695 }, D { l: 10, t: 0, i: 212, }, D { l: 11, t: 0, i: 158, }, D { l: 14, t: 0, i: 196, }, D { l: 145, t: 0, i: 85, }, D { l: 133, t: 10, i: 860, }, D { l: 6, t: 0, i: 1929, }, D { l: 134, t: 0, i: 1933, }, D { l: 5, t: 0, i: 957 }, D { l: 5, t: 0, i: 1008, }, D { l: 9, t: 0, i: 577 }, D { l: 12, t: 0, i: 141, }, D { l: 6, t: 10, i: 422, }, D { l: 7, t: 10, i: 0 }, D { l: 7, t: 10, i: 1544, }, D { l: 8, t: 11, i: 364, }, D { l: 11, t: 10, i: 990, }, D { l: 12, t: 10, i: 453, }, D { l: 13, t: 10, i: 47, }, D { l: 141, t: 10, i: 266, }, D { l: 134, t: 0, i: 1319, }, D { l: 4, t: 0, i: 129 }, D { l: 135, t: 0, i: 465, }, D { l: 7, t: 0, i: 470 }, D { l: 7, t: 0, i: 1057, }, D { l: 7, t: 0, i: 1201, }, D { l: 9, t: 0, i: 755 }, D { l: 11, t: 0, i: 906, }, D { l: 140, t: 0, i: 527, }, D { l: 7, t: 0, i: 908 }, D { l: 146, t: 0, i: 7 }, D { l: 5, t: 0, i: 148 }, D { l: 136, t: 0, i: 450, }, D { l: 5, t: 10, i: 515, }, D { l: 137, t: 10, i: 131, }, D { l: 7, t: 10, i: 1605, }, D { l: 11, t: 10, i: 962, }, D { l: 146, t: 10, i: 139, }, D { l: 132, t: 10, i: 646, }, D { l: 134, t: 0, i: 1166, }, D { l: 4, t: 10, i: 396, }, D { l: 7, t: 10, i: 728, }, D { l: 9, t: 10, i: 117, }, D { l: 13, t: 10, i: 202, }, D { l: 148, t: 10, i: 51, }, D { l: 6, t: 10, i: 121, }, D { l: 6, t: 10, i: 124, }, D { l: 6, t: 10, i: 357, }, D { l: 7, t: 10, i: 1138, }, D { l: 7, t: 10, i: 1295, }, D { l: 8, t: 10, i: 162, }, D { l: 139, t: 10, i: 655, }, D { l: 14, t: 0, i: 374, }, D { l: 142, t: 11, i: 374, }, D { l: 138, t: 0, i: 253, }, D { l: 139, t: 0, i: 1003, }, D { l: 5, t: 11, i: 909, }, D { l: 9, t: 11, i: 849, }, D { l: 138, t: 11, i: 805, }, D { l: 133, t: 10, i: 237, }, D { l: 7, t: 11, i: 525, }, D { l: 7, t: 11, i: 1579, }, D { l: 8, t: 11, i: 497, }, D { l: 136, t: 11, i: 573, }, D { l: 137, t: 0, i: 46, }, D { l: 132, t: 0, i: 879, }, D { l: 134, t: 0, i: 806, }, D { l: 135, t: 0, i: 1868, }, D { l: 6, t: 0, i: 1837, }, D { l: 134, t: 0, i: 1846, }, D { l: 6, t: 0, i: 730 }, D { l: 134, t: 0, i: 881, }, D { l: 7, t: 0, i: 965 }, D { l: 7, t: 0, i: 1460, }, D { l: 7, t: 0, i: 1604, }, D { l: 7, t: 11, i: 193, }, D { l: 7, t: 11, i: 397, }, D { l: 7, t: 11, i: 1105, }, D { l: 8, t: 11, i: 124, }, D { l: 8, t: 11, i: 619, }, D { l: 9, t: 11, i: 305, }, D { l: 10, t: 11, i: 264, }, D { l: 11, t: 11, i: 40, }, D { l: 12, t: 11, i: 349, }, D { l: 13, t: 11, i: 134, }, D { l: 13, t: 11, i: 295, }, D { l: 14, t: 11, i: 155, }, D { l: 15, t: 11, i: 120, }, D { l: 146, t: 11, i: 105, }, D { l: 136, t: 0, i: 506, }, D { l: 143, t: 0, i: 10, }, D { l: 4, t: 11, i: 262, }, D { l: 7, t: 11, i: 342, }, D { l: 7, t: 10, i: 571, }, D { l: 7, t: 10, i: 1877, }, D { l: 10, t: 10, i: 366, }, D { l: 141, t: 11, i: 23, }, D { l: 133, t: 11, i: 641, }, D { l: 10, t: 0, i: 22 }, D { l: 9, t: 10, i: 513, }, D { l: 10, t: 10, i: 39, }, D { l: 12, t: 10, i: 122, }, D { l: 140, t: 10, i: 187, }, D { l: 135, t: 11, i: 1431, }, D { l: 150, t: 11, i: 49, }, D { l: 4, t: 11, i: 99 }, D { l: 6, t: 11, i: 250, }, D { l: 6, t: 11, i: 346, }, D { l: 8, t: 11, i: 127, }, D { l: 138, t: 11, i: 81, }, D { l: 6, t: 0, i: 2014, }, D { l: 8, t: 0, i: 928 }, D { l: 10, t: 0, i: 960, }, D { l: 10, t: 0, i: 979, }, D { l: 140, t: 0, i: 996, }, D { l: 134, t: 0, i: 296, }, D { l: 132, t: 11, i: 915, }, D { l: 5, t: 11, i: 75 }, D { l: 9, t: 11, i: 517, }, D { l: 10, t: 11, i: 470, }, D { l: 12, t: 11, i: 155, }, D { l: 141, t: 11, i: 224, }, D { l: 137, t: 10, i: 873, }, D { l: 4, t: 0, i: 854 }, D { l: 140, t: 11, i: 18, }, D { l: 134, t: 0, i: 587, }, D { l: 7, t: 10, i: 107, }, D { l: 7, t: 10, i: 838, }, D { l: 8, t: 10, i: 550, }, D { l: 138, t: 10, i: 401, }, D { l: 11, t: 0, i: 636, }, D { l: 15, t: 0, i: 145, }, D { l: 17, t: 0, i: 34 }, D { l: 19, t: 0, i: 50 }, D { l: 23, t: 0, i: 20 }, D { l: 11, t: 10, i: 588, }, D { l: 11, t: 10, i: 864, }, D { l: 11, t: 10, i: 968, }, D { l: 143, t: 10, i: 160, }, D { l: 135, t: 11, i: 216, }, D { l: 7, t: 0, i: 982 }, D { l: 10, t: 0, i: 32 }, D { l: 143, t: 0, i: 56, }, D { l: 133, t: 10, i: 768, }, D { l: 133, t: 11, i: 954, }, D { l: 6, t: 11, i: 304, }, D { l: 7, t: 11, i: 1114, }, D { l: 8, t: 11, i: 418, }, D { l: 10, t: 11, i: 345, }, D { l: 11, t: 11, i: 341, }, D { l: 11, t: 11, i: 675, }, D { l: 141, t: 11, i: 40, }, D { l: 9, t: 11, i: 410, }, D { l: 139, t: 11, i: 425, }, D { l: 136, t: 0, i: 941, }, D { l: 5, t: 0, i: 435 }, D { l: 132, t: 10, i: 894, }, D { l: 5, t: 0, i: 85 }, D { l: 6, t: 0, i: 419 }, D { l: 7, t: 0, i: 134 }, D { l: 7, t: 0, i: 305 }, D { l: 7, t: 0, i: 361 }, D { l: 7, t: 0, i: 1337, }, D { l: 8, t: 0, i: 71 }, D { l: 140, t: 0, i: 519, }, D { l: 140, t: 0, i: 688, }, D { l: 135, t: 0, i: 740, }, D { l: 5, t: 0, i: 691 }, D { l: 7, t: 0, i: 345 }, D { l: 9, t: 0, i: 94 }, D { l: 140, t: 0, i: 169, }, D { l: 5, t: 0, i: 183 }, D { l: 6, t: 0, i: 582 }, D { l: 10, t: 0, i: 679, }, D { l: 140, t: 0, i: 435, }, D { l: 134, t: 11, i: 14, }, D { l: 6, t: 0, i: 945 }, D { l: 135, t: 0, i: 511, }, D { l: 134, t: 11, i: 1708, }, D { l: 5, t: 11, i: 113, }, D { l: 6, t: 11, i: 243, }, D { l: 7, t: 11, i: 1865, }, D { l: 11, t: 11, i: 161, }, D { l: 16, t: 11, i: 37, }, D { l: 145, t: 11, i: 99, }, D { l: 132, t: 11, i: 274, }, D { l: 137, t: 0, i: 539, }, D { l: 7, t: 0, i: 1993, }, D { l: 8, t: 0, i: 684 }, D { l: 134, t: 10, i: 272, }, D { l: 6, t: 0, i: 659 }, D { l: 134, t: 0, i: 982, }, D { l: 4, t: 10, i: 9 }, D { l: 5, t: 10, i: 128, }, D { l: 7, t: 10, i: 368, }, D { l: 11, t: 10, i: 480, }, D { l: 148, t: 10, i: 3, }, D { l: 134, t: 0, i: 583, }, D { l: 132, t: 0, i: 803, }, D { l: 133, t: 0, i: 704, }, D { l: 4, t: 0, i: 179 }, D { l: 5, t: 0, i: 198 }, D { l: 133, t: 0, i: 697, }, D { l: 7, t: 0, i: 347 }, D { l: 7, t: 0, i: 971 }, D { l: 8, t: 0, i: 181 }, D { l: 10, t: 0, i: 711, }, D { l: 135, t: 11, i: 166, }, D { l: 136, t: 10, i: 682, }, D { l: 4, t: 10, i: 2 }, D { l: 7, t: 10, i: 545, }, D { l: 7, t: 10, i: 894, }, D { l: 136, t: 11, i: 521, }, D { l: 135, t: 0, i: 481, }, D { l: 132, t: 0, i: 243, }, D { l: 5, t: 0, i: 203 }, D { l: 7, t: 0, i: 19 }, D { l: 7, t: 0, i: 71 }, D { l: 7, t: 0, i: 113 }, D { l: 10, t: 0, i: 405, }, D { l: 11, t: 0, i: 357, }, D { l: 142, t: 0, i: 240, }, D { l: 5, t: 11, i: 725, }, D { l: 5, t: 11, i: 727, }, D { l: 135, t: 11, i: 1811, }, D { l: 6, t: 0, i: 826 }, D { l: 137, t: 11, i: 304, }, D { l: 7, t: 0, i: 1450, }, D { l: 139, t: 0, i: 99, }, D { l: 133, t: 11, i: 654, }, D { l: 134, t: 0, i: 492, }, D { l: 5, t: 0, i: 134 }, D { l: 6, t: 0, i: 408 }, D { l: 6, t: 0, i: 495 }, D { l: 7, t: 0, i: 1593, }, D { l: 6, t: 11, i: 273, }, D { l: 10, t: 11, i: 188, }, D { l: 13, t: 11, i: 377, }, D { l: 146, t: 11, i: 77, }, D { l: 9, t: 10, i: 769, }, D { l: 140, t: 10, i: 185, }, D { l: 135, t: 11, i: 410, }, D { l: 142, t: 0, i: 4 }, D { l: 4, t: 0, i: 665 }, D { l: 134, t: 11, i: 1785, }, D { l: 4, t: 0, i: 248 }, D { l: 7, t: 0, i: 137 }, D { l: 137, t: 0, i: 349, }, D { l: 5, t: 10, i: 530, }, D { l: 142, t: 10, i: 113, }, D { l: 7, t: 0, i: 1270, }, D { l: 139, t: 0, i: 612, }, D { l: 132, t: 11, i: 780, }, D { l: 5, t: 0, i: 371 }, D { l: 135, t: 0, i: 563, }, D { l: 135, t: 0, i: 826, }, D { l: 6, t: 0, i: 1535, }, D { l: 23, t: 0, i: 21 }, D { l: 151, t: 0, i: 23, }, D { l: 4, t: 0, i: 374 }, D { l: 7, t: 0, i: 547 }, D { l: 7, t: 0, i: 1700, }, D { l: 7, t: 0, i: 1833, }, D { l: 139, t: 0, i: 858, }, D { l: 133, t: 10, i: 556, }, D { l: 7, t: 11, i: 612, }, D { l: 8, t: 11, i: 545, }, D { l: 8, t: 11, i: 568, }, D { l: 8, t: 11, i: 642, }, D { l: 9, t: 11, i: 717, }, D { l: 10, t: 11, i: 541, }, D { l: 10, t: 11, i: 763, }, D { l: 11, t: 11, i: 449, }, D { l: 12, t: 11, i: 489, }, D { l: 13, t: 11, i: 153, }, D { l: 13, t: 11, i: 296, }, D { l: 14, t: 11, i: 138, }, D { l: 14, t: 11, i: 392, }, D { l: 15, t: 11, i: 50, }, D { l: 16, t: 11, i: 6 }, D { l: 16, t: 11, i: 12, }, D { l: 148, t: 11, i: 9, }, D { l: 9, t: 0, i: 311 }, D { l: 141, t: 0, i: 42, }, D { l: 8, t: 10, i: 16 }, D { l: 140, t: 10, i: 568, }, D { l: 6, t: 0, i: 1968, }, D { l: 6, t: 0, i: 2027, }, D { l: 138, t: 0, i: 991, }, D { l: 6, t: 0, i: 1647, }, D { l: 7, t: 0, i: 1552, }, D { l: 7, t: 0, i: 2010, }, D { l: 9, t: 0, i: 494 }, D { l: 137, t: 0, i: 509, }, D { l: 133, t: 11, i: 948, }, D { l: 6, t: 10, i: 186, }, D { l: 137, t: 10, i: 426, }, D { l: 134, t: 0, i: 769, }, D { l: 134, t: 0, i: 642, }, D { l: 132, t: 10, i: 585, }, D { l: 6, t: 0, i: 123 }, D { l: 7, t: 0, i: 214 }, D { l: 9, t: 0, i: 728 }, D { l: 10, t: 0, i: 157, }, D { l: 11, t: 0, i: 346, }, D { l: 11, t: 0, i: 662, }, D { l: 143, t: 0, i: 106, }, D { l: 142, t: 11, i: 381, }, D { l: 135, t: 0, i: 1435, }, D { l: 4, t: 11, i: 532, }, D { l: 5, t: 11, i: 706, }, D { l: 135, t: 11, i: 662, }, D { l: 5, t: 11, i: 837, }, D { l: 134, t: 11, i: 1651, }, D { l: 4, t: 10, i: 93 }, D { l: 5, t: 10, i: 252, }, D { l: 6, t: 10, i: 229, }, D { l: 7, t: 10, i: 291, }, D { l: 9, t: 10, i: 550, }, D { l: 139, t: 10, i: 644, }, D { l: 148, t: 0, i: 79, }, D { l: 137, t: 10, i: 749, }, D { l: 134, t: 0, i: 1425, }, D { l: 137, t: 10, i: 162, }, D { l: 4, t: 11, i: 362, }, D { l: 7, t: 11, i: 52 }, D { l: 7, t: 11, i: 303, }, D { l: 140, t: 11, i: 166, }, D { l: 132, t: 10, i: 381, }, D { l: 4, t: 11, i: 330, }, D { l: 7, t: 11, i: 933, }, D { l: 7, t: 11, i: 2012, }, D { l: 136, t: 11, i: 292, }, D { l: 135, t: 11, i: 767, }, D { l: 4, t: 0, i: 707 }, D { l: 5, t: 0, i: 588 }, D { l: 6, t: 0, i: 393 }, D { l: 13, t: 0, i: 106, }, D { l: 18, t: 0, i: 49 }, D { l: 147, t: 0, i: 41, }, D { l: 6, t: 0, i: 211 }, D { l: 7, t: 0, i: 1690, }, D { l: 11, t: 0, i: 486, }, D { l: 140, t: 0, i: 369, }, D { l: 137, t: 11, i: 883, }, D { l: 4, t: 11, i: 703, }, D { l: 135, t: 11, i: 207, }, D { l: 4, t: 0, i: 187 }, D { l: 5, t: 0, i: 184 }, D { l: 5, t: 0, i: 690 }, D { l: 7, t: 0, i: 1869, }, D { l: 10, t: 0, i: 756, }, D { l: 139, t: 0, i: 783, }, D { l: 132, t: 11, i: 571, }, D { l: 134, t: 0, i: 1382, }, D { l: 5, t: 0, i: 175 }, D { l: 6, t: 10, i: 77 }, D { l: 6, t: 10, i: 157, }, D { l: 7, t: 10, i: 974, }, D { l: 7, t: 10, i: 1301, }, D { l: 7, t: 10, i: 1339, }, D { l: 7, t: 10, i: 1490, }, D { l: 7, t: 10, i: 1873, }, D { l: 137, t: 10, i: 628, }, D { l: 134, t: 0, i: 1493, }, D { l: 5, t: 11, i: 873, }, D { l: 133, t: 11, i: 960, }, D { l: 134, t: 0, i: 1007, }, D { l: 12, t: 11, i: 93, }, D { l: 12, t: 11, i: 501, }, D { l: 13, t: 11, i: 362, }, D { l: 14, t: 11, i: 151, }, D { l: 15, t: 11, i: 40, }, D { l: 15, t: 11, i: 59, }, D { l: 16, t: 11, i: 46, }, D { l: 17, t: 11, i: 25, }, D { l: 18, t: 11, i: 14, }, D { l: 18, t: 11, i: 134, }, D { l: 19, t: 11, i: 25, }, D { l: 19, t: 11, i: 69, }, D { l: 20, t: 11, i: 16, }, D { l: 20, t: 11, i: 19, }, D { l: 20, t: 11, i: 66, }, D { l: 21, t: 11, i: 23, }, D { l: 21, t: 11, i: 25, }, D { l: 150, t: 11, i: 42, }, D { l: 11, t: 10, i: 919, }, D { l: 141, t: 10, i: 409, }, D { l: 134, t: 0, i: 219, }, D { l: 5, t: 0, i: 582 }, D { l: 6, t: 0, i: 1646, }, D { l: 7, t: 0, i: 99 }, D { l: 7, t: 0, i: 1962, }, D { l: 7, t: 0, i: 1986, }, D { l: 8, t: 0, i: 515 }, D { l: 8, t: 0, i: 773 }, D { l: 9, t: 0, i: 23 }, D { l: 9, t: 0, i: 491 }, D { l: 12, t: 0, i: 620, }, D { l: 142, t: 0, i: 93, }, D { l: 133, t: 0, i: 851, }, D { l: 5, t: 11, i: 33 }, D { l: 134, t: 11, i: 470, }, D { l: 135, t: 11, i: 1291, }, D { l: 134, t: 0, i: 1278, }, D { l: 135, t: 11, i: 1882, }, D { l: 135, t: 10, i: 1489, }, D { l: 132, t: 0, i: 1000, }, D { l: 138, t: 0, i: 982, }, D { l: 8, t: 0, i: 762 }, D { l: 8, t: 0, i: 812 }, D { l: 137, t: 0, i: 910, }, D { l: 6, t: 11, i: 47 }, D { l: 7, t: 11, i: 90 }, D { l: 7, t: 11, i: 664, }, D { l: 7, t: 11, i: 830, }, D { l: 7, t: 11, i: 1380, }, D { l: 7, t: 11, i: 2025, }, D { l: 8, t: 11, i: 448, }, D { l: 136, t: 11, i: 828, }, D { l: 4, t: 0, i: 98 }, D { l: 4, t: 0, i: 940 }, D { l: 6, t: 0, i: 1819, }, D { l: 6, t: 0, i: 1834, }, D { l: 6, t: 0, i: 1841, }, D { l: 7, t: 0, i: 1365, }, D { l: 8, t: 0, i: 859 }, D { l: 8, t: 0, i: 897 }, D { l: 8, t: 0, i: 918 }, D { l: 9, t: 0, i: 422 }, D { l: 9, t: 0, i: 670 }, D { l: 10, t: 0, i: 775, }, D { l: 10, t: 0, i: 894, }, D { l: 10, t: 0, i: 909, }, D { l: 10, t: 0, i: 910, }, D { l: 10, t: 0, i: 935, }, D { l: 11, t: 0, i: 210, }, D { l: 12, t: 0, i: 750, }, D { l: 12, t: 0, i: 755, }, D { l: 13, t: 0, i: 26 }, D { l: 13, t: 0, i: 457, }, D { l: 13, t: 0, i: 476, }, D { l: 16, t: 0, i: 100, }, D { l: 16, t: 0, i: 109, }, D { l: 18, t: 0, i: 173, }, D { l: 18, t: 0, i: 175, }, D { l: 8, t: 10, i: 398, }, D { l: 9, t: 10, i: 681, }, D { l: 139, t: 10, i: 632, }, D { l: 9, t: 11, i: 417, }, D { l: 137, t: 11, i: 493, }, D { l: 136, t: 10, i: 645, }, D { l: 138, t: 0, i: 906, }, D { l: 134, t: 0, i: 1730, }, D { l: 134, t: 10, i: 20, }, D { l: 133, t: 11, i: 1019, }, D { l: 134, t: 0, i: 1185, }, D { l: 10, t: 0, i: 40 }, D { l: 136, t: 10, i: 769, }, D { l: 9, t: 0, i: 147 }, D { l: 134, t: 11, i: 208, }, D { l: 140, t: 0, i: 650, }, D { l: 5, t: 0, i: 209 }, D { l: 6, t: 0, i: 30 }, D { l: 11, t: 0, i: 56 }, D { l: 139, t: 0, i: 305, }, D { l: 132, t: 0, i: 553, }, D { l: 138, t: 11, i: 344, }, D { l: 6, t: 11, i: 68 }, D { l: 7, t: 11, i: 398, }, D { l: 7, t: 11, i: 448, }, D { l: 7, t: 11, i: 1629, }, D { l: 7, t: 11, i: 1813, }, D { l: 8, t: 11, i: 387, }, D { l: 8, t: 11, i: 442, }, D { l: 9, t: 11, i: 710, }, D { l: 10, t: 11, i: 282, }, D { l: 138, t: 11, i: 722, }, D { l: 5, t: 0, i: 597 }, D { l: 14, t: 0, i: 20 }, D { l: 142, t: 11, i: 20, }, D { l: 135, t: 0, i: 1614, }, D { l: 135, t: 10, i: 1757, }, D { l: 4, t: 0, i: 150 }, D { l: 5, t: 0, i: 303 }, D { l: 6, t: 0, i: 327 }, D { l: 135, t: 10, i: 937, }, D { l: 16, t: 0, i: 49 }, D { l: 7, t: 10, i: 1652, }, D { l: 144, t: 11, i: 49, }, D { l: 8, t: 0, i: 192 }, D { l: 10, t: 0, i: 78 }, D { l: 141, t: 0, i: 359, }, D { l: 135, t: 0, i: 786, }, D { l: 143, t: 0, i: 134, }, D { l: 6, t: 0, i: 1638, }, D { l: 7, t: 0, i: 79 }, D { l: 7, t: 0, i: 496 }, D { l: 9, t: 0, i: 138 }, D { l: 10, t: 0, i: 336, }, D { l: 11, t: 0, i: 12 }, D { l: 12, t: 0, i: 412, }, D { l: 12, t: 0, i: 440, }, D { l: 142, t: 0, i: 305, }, D { l: 136, t: 11, i: 491, }, D { l: 4, t: 10, i: 579, }, D { l: 5, t: 10, i: 226, }, D { l: 5, t: 10, i: 323, }, D { l: 135, t: 10, i: 960, }, D { l: 7, t: 0, i: 204 }, D { l: 7, t: 0, i: 415 }, D { l: 8, t: 0, i: 42 }, D { l: 10, t: 0, i: 85 }, D { l: 139, t: 0, i: 564, }, D { l: 132, t: 0, i: 614, }, D { l: 4, t: 11, i: 403, }, D { l: 5, t: 11, i: 441, }, D { l: 7, t: 11, i: 450, }, D { l: 11, t: 11, i: 101, }, D { l: 12, t: 11, i: 193, }, D { l: 141, t: 11, i: 430, }, D { l: 135, t: 11, i: 1927, }, D { l: 135, t: 11, i: 1330, }, D { l: 4, t: 0, i: 3 }, D { l: 5, t: 0, i: 247 }, D { l: 5, t: 0, i: 644 }, D { l: 7, t: 0, i: 744 }, D { l: 7, t: 0, i: 1207, }, D { l: 7, t: 0, i: 1225, }, D { l: 7, t: 0, i: 1909, }, D { l: 146, t: 0, i: 147, }, D { l: 136, t: 0, i: 942, }, D { l: 4, t: 0, i: 1019, }, D { l: 134, t: 0, i: 2023, }, D { l: 5, t: 11, i: 679, }, D { l: 133, t: 10, i: 973, }, D { l: 5, t: 0, i: 285 }, D { l: 9, t: 0, i: 67 }, D { l: 13, t: 0, i: 473, }, D { l: 143, t: 0, i: 82, }, D { l: 7, t: 11, i: 328, }, D { l: 137, t: 11, i: 326, }, D { l: 151, t: 0, i: 8 }, D { l: 6, t: 10, i: 135, }, D { l: 135, t: 10, i: 1176, }, D { l: 135, t: 11, i: 1128, }, D { l: 134, t: 0, i: 1309, }, D { l: 135, t: 11, i: 1796, }, D { l: 135, t: 10, i: 314, }, D { l: 4, t: 11, i: 574, }, D { l: 7, t: 11, i: 350, }, D { l: 7, t: 11, i: 1024, }, D { l: 8, t: 11, i: 338, }, D { l: 9, t: 11, i: 677, }, D { l: 10, t: 11, i: 808, }, D { l: 139, t: 11, i: 508, }, D { l: 7, t: 11, i: 818, }, D { l: 17, t: 11, i: 14, }, D { l: 17, t: 11, i: 45, }, D { l: 18, t: 11, i: 75, }, D { l: 148, t: 11, i: 18, }, D { l: 146, t: 10, i: 4, }, D { l: 135, t: 11, i: 1081, }, D { l: 4, t: 0, i: 29 }, D { l: 6, t: 0, i: 532 }, D { l: 7, t: 0, i: 1628, }, D { l: 7, t: 0, i: 1648, }, D { l: 9, t: 0, i: 350 }, D { l: 10, t: 0, i: 433, }, D { l: 11, t: 0, i: 97 }, D { l: 11, t: 0, i: 557, }, D { l: 11, t: 0, i: 745, }, D { l: 12, t: 0, i: 289, }, D { l: 12, t: 0, i: 335, }, D { l: 12, t: 0, i: 348, }, D { l: 12, t: 0, i: 606, }, D { l: 13, t: 0, i: 116, }, D { l: 13, t: 0, i: 233, }, D { l: 13, t: 0, i: 466, }, D { l: 14, t: 0, i: 181, }, D { l: 14, t: 0, i: 209, }, D { l: 14, t: 0, i: 232, }, D { l: 14, t: 0, i: 236, }, D { l: 14, t: 0, i: 300, }, D { l: 16, t: 0, i: 41 }, D { l: 148, t: 0, i: 97, }, D { l: 7, t: 0, i: 318 }, D { l: 6, t: 10, i: 281, }, D { l: 8, t: 10, i: 282, }, D { l: 8, t: 10, i: 480, }, D { l: 8, t: 10, i: 499, }, D { l: 9, t: 10, i: 198, }, D { l: 10, t: 10, i: 143, }, D { l: 10, t: 10, i: 169, }, D { l: 10, t: 10, i: 211, }, D { l: 10, t: 10, i: 417, }, D { l: 10, t: 10, i: 574, }, D { l: 11, t: 10, i: 147, }, D { l: 11, t: 10, i: 395, }, D { l: 12, t: 10, i: 75, }, D { l: 12, t: 10, i: 407, }, D { l: 12, t: 10, i: 608, }, D { l: 13, t: 10, i: 500, }, D { l: 142, t: 10, i: 251, }, D { l: 135, t: 11, i: 1676, }, D { l: 135, t: 11, i: 2037, }, D { l: 135, t: 0, i: 1692, }, D { l: 5, t: 0, i: 501 }, D { l: 7, t: 0, i: 1704, }, D { l: 9, t: 0, i: 553 }, D { l: 11, t: 0, i: 520, }, D { l: 12, t: 0, i: 557, }, D { l: 141, t: 0, i: 249, }, D { l: 6, t: 0, i: 1527, }, D { l: 14, t: 0, i: 324, }, D { l: 15, t: 0, i: 55 }, D { l: 15, t: 0, i: 80 }, D { l: 14, t: 11, i: 324, }, D { l: 15, t: 11, i: 55, }, D { l: 143, t: 11, i: 80, }, D { l: 135, t: 10, i: 1776, }, D { l: 8, t: 0, i: 988 }, D { l: 137, t: 11, i: 297, }, D { l: 132, t: 10, i: 419, }, D { l: 142, t: 0, i: 223, }, D { l: 139, t: 11, i: 234, }, D { l: 7, t: 0, i: 1123, }, D { l: 12, t: 0, i: 508, }, D { l: 14, t: 0, i: 102, }, D { l: 14, t: 0, i: 226, }, D { l: 144, t: 0, i: 57, }, D { l: 4, t: 10, i: 138, }, D { l: 7, t: 10, i: 1012, }, D { l: 7, t: 10, i: 1280, }, D { l: 137, t: 10, i: 76, }, D { l: 7, t: 0, i: 1764, }, D { l: 5, t: 10, i: 29 }, D { l: 140, t: 10, i: 638, }, D { l: 134, t: 0, i: 2015, }, D { l: 134, t: 0, i: 1599, }, D { l: 138, t: 11, i: 56, }, D { l: 6, t: 11, i: 306, }, D { l: 7, t: 11, i: 1140, }, D { l: 7, t: 11, i: 1340, }, D { l: 8, t: 11, i: 133, }, D { l: 138, t: 11, i: 449, }, D { l: 139, t: 11, i: 1011, }, D { l: 6, t: 10, i: 1710, }, D { l: 135, t: 10, i: 2038, }, D { l: 7, t: 11, i: 1763, }, D { l: 140, t: 11, i: 310, }, D { l: 6, t: 0, i: 129 }, D { l: 4, t: 10, i: 17 }, D { l: 5, t: 10, i: 23 }, D { l: 7, t: 10, i: 995, }, D { l: 11, t: 10, i: 383, }, D { l: 11, t: 10, i: 437, }, D { l: 12, t: 10, i: 460, }, D { l: 140, t: 10, i: 532, }, D { l: 5, t: 11, i: 329, }, D { l: 136, t: 11, i: 260, }, D { l: 133, t: 10, i: 862, }, D { l: 132, t: 0, i: 534, }, D { l: 6, t: 0, i: 811 }, D { l: 135, t: 0, i: 626, }, D { l: 132, t: 11, i: 657, }, D { l: 4, t: 0, i: 25 }, D { l: 5, t: 0, i: 60 }, D { l: 6, t: 0, i: 504 }, D { l: 7, t: 0, i: 614 }, D { l: 7, t: 0, i: 1155, }, D { l: 12, t: 0, i: 0 }, D { l: 152, t: 11, i: 7, }, D { l: 7, t: 0, i: 1248, }, D { l: 11, t: 0, i: 621, }, D { l: 139, t: 0, i: 702, }, D { l: 137, t: 0, i: 321, }, D { l: 8, t: 10, i: 70 }, D { l: 12, t: 10, i: 171, }, D { l: 141, t: 10, i: 272, }, D { l: 10, t: 10, i: 233, }, D { l: 139, t: 10, i: 76, }, D { l: 4, t: 0, i: 379 }, D { l: 7, t: 0, i: 1397, }, D { l: 134, t: 10, i: 442, }, D { l: 5, t: 11, i: 66 }, D { l: 7, t: 11, i: 1896, }, D { l: 136, t: 11, i: 288, }, D { l: 134, t: 11, i: 1643, }, D { l: 134, t: 10, i: 1709, }, D { l: 4, t: 11, i: 21 }, D { l: 5, t: 11, i: 91 }, D { l: 5, t: 11, i: 570, }, D { l: 5, t: 11, i: 648, }, D { l: 5, t: 11, i: 750, }, D { l: 5, t: 11, i: 781, }, D { l: 6, t: 11, i: 54 }, D { l: 6, t: 11, i: 112, }, D { l: 6, t: 11, i: 402, }, D { l: 6, t: 11, i: 1732, }, D { l: 7, t: 11, i: 315, }, D { l: 7, t: 11, i: 749, }, D { l: 7, t: 11, i: 1347, }, D { l: 7, t: 11, i: 1900, }, D { l: 9, t: 11, i: 78 }, D { l: 9, t: 11, i: 508, }, D { l: 10, t: 11, i: 611, }, D { l: 11, t: 11, i: 510, }, D { l: 11, t: 11, i: 728, }, D { l: 13, t: 11, i: 36, }, D { l: 14, t: 11, i: 39, }, D { l: 16, t: 11, i: 83, }, D { l: 17, t: 11, i: 124, }, D { l: 148, t: 11, i: 30, }, D { l: 4, t: 0, i: 118 }, D { l: 6, t: 0, i: 274 }, D { l: 6, t: 0, i: 361 }, D { l: 7, t: 0, i: 75 }, D { l: 141, t: 0, i: 441, }, D { l: 10, t: 11, i: 322, }, D { l: 10, t: 11, i: 719, }, D { l: 139, t: 11, i: 407, }, D { l: 147, t: 10, i: 119, }, D { l: 12, t: 11, i: 549, }, D { l: 14, t: 11, i: 67, }, D { l: 147, t: 11, i: 60, }, D { l: 11, t: 10, i: 69, }, D { l: 12, t: 10, i: 105, }, D { l: 12, t: 10, i: 117, }, D { l: 13, t: 10, i: 213, }, D { l: 14, t: 10, i: 13, }, D { l: 14, t: 10, i: 62, }, D { l: 14, t: 10, i: 177, }, D { l: 14, t: 10, i: 421, }, D { l: 15, t: 10, i: 19, }, D { l: 146, t: 10, i: 141, }, D { l: 9, t: 0, i: 841 }, D { l: 137, t: 10, i: 309, }, D { l: 7, t: 10, i: 608, }, D { l: 7, t: 10, i: 976, }, D { l: 8, t: 11, i: 125, }, D { l: 8, t: 11, i: 369, }, D { l: 8, t: 11, i: 524, }, D { l: 9, t: 10, i: 146, }, D { l: 10, t: 10, i: 206, }, D { l: 10, t: 11, i: 486, }, D { l: 10, t: 10, i: 596, }, D { l: 11, t: 11, i: 13, }, D { l: 11, t: 11, i: 381, }, D { l: 11, t: 11, i: 736, }, D { l: 11, t: 11, i: 766, }, D { l: 11, t: 11, i: 845, }, D { l: 13, t: 11, i: 114, }, D { l: 13, t: 10, i: 218, }, D { l: 13, t: 11, i: 292, }, D { l: 14, t: 11, i: 47, }, D { l: 142, t: 10, i: 153, }, D { l: 12, t: 0, i: 693, }, D { l: 135, t: 11, i: 759, }, D { l: 5, t: 0, i: 314 }, D { l: 6, t: 0, i: 221 }, D { l: 7, t: 0, i: 419 }, D { l: 10, t: 0, i: 650, }, D { l: 11, t: 0, i: 396, }, D { l: 12, t: 0, i: 156, }, D { l: 13, t: 0, i: 369, }, D { l: 14, t: 0, i: 333, }, D { l: 145, t: 0, i: 47, }, D { l: 6, t: 11, i: 1684, }, D { l: 6, t: 11, i: 1731, }, D { l: 7, t: 11, i: 356, }, D { l: 7, t: 11, i: 1932, }, D { l: 8, t: 11, i: 54 }, D { l: 8, t: 11, i: 221, }, D { l: 9, t: 11, i: 225, }, D { l: 9, t: 11, i: 356, }, D { l: 10, t: 11, i: 77, }, D { l: 10, t: 11, i: 446, }, D { l: 10, t: 11, i: 731, }, D { l: 12, t: 11, i: 404, }, D { l: 141, t: 11, i: 491, }, D { l: 132, t: 11, i: 375, }, D { l: 4, t: 10, i: 518, }, D { l: 135, t: 10, i: 1136, }, D { l: 4, t: 0, i: 913 }, D { l: 4, t: 11, i: 411, }, D { l: 11, t: 11, i: 643, }, D { l: 140, t: 11, i: 115, }, D { l: 4, t: 11, i: 80 }, D { l: 133, t: 11, i: 44, }, D { l: 8, t: 10, i: 689, }, D { l: 137, t: 10, i: 863, }, D { l: 138, t: 0, i: 880, }, D { l: 4, t: 10, i: 18 }, D { l: 7, t: 10, i: 145, }, D { l: 7, t: 10, i: 444, }, D { l: 7, t: 10, i: 1278, }, D { l: 8, t: 10, i: 49 }, D { l: 8, t: 10, i: 400, }, D { l: 9, t: 10, i: 71 }, D { l: 9, t: 10, i: 250, }, D { l: 10, t: 10, i: 459, }, D { l: 12, t: 10, i: 160, }, D { l: 144, t: 10, i: 24, }, D { l: 136, t: 0, i: 475, }, D { l: 5, t: 0, i: 1016, }, D { l: 5, t: 11, i: 299, }, D { l: 135, t: 11, i: 1083, }, D { l: 7, t: 0, i: 602 }, D { l: 8, t: 0, i: 179 }, D { l: 10, t: 0, i: 781, }, D { l: 140, t: 0, i: 126, }, D { l: 6, t: 0, i: 329 }, D { l: 138, t: 0, i: 111, }, D { l: 135, t: 0, i: 1864, }, D { l: 4, t: 11, i: 219, }, D { l: 7, t: 11, i: 1761, }, D { l: 137, t: 11, i: 86, }, D { l: 6, t: 0, i: 1888, }, D { l: 6, t: 0, i: 1892, }, D { l: 6, t: 0, i: 1901, }, D { l: 6, t: 0, i: 1904, }, D { l: 9, t: 0, i: 953 }, D { l: 9, t: 0, i: 985 }, D { l: 9, t: 0, i: 991 }, D { l: 9, t: 0, i: 1001, }, D { l: 12, t: 0, i: 818, }, D { l: 12, t: 0, i: 846, }, D { l: 12, t: 0, i: 847, }, D { l: 12, t: 0, i: 861, }, D { l: 12, t: 0, i: 862, }, D { l: 12, t: 0, i: 873, }, D { l: 12, t: 0, i: 875, }, D { l: 12, t: 0, i: 877, }, D { l: 12, t: 0, i: 879, }, D { l: 12, t: 0, i: 881, }, D { l: 12, t: 0, i: 884, }, D { l: 12, t: 0, i: 903, }, D { l: 12, t: 0, i: 915, }, D { l: 12, t: 0, i: 926, }, D { l: 12, t: 0, i: 939, }, D { l: 15, t: 0, i: 182, }, D { l: 15, t: 0, i: 219, }, D { l: 15, t: 0, i: 255, }, D { l: 18, t: 0, i: 191, }, D { l: 18, t: 0, i: 209, }, D { l: 18, t: 0, i: 211, }, D { l: 149, t: 0, i: 41, }, D { l: 5, t: 11, i: 328, }, D { l: 135, t: 11, i: 918, }, D { l: 137, t: 0, i: 780, }, D { l: 12, t: 0, i: 82 }, D { l: 143, t: 0, i: 36, }, D { l: 133, t: 10, i: 1010, }, D { l: 5, t: 0, i: 821 }, D { l: 134, t: 0, i: 1687, }, D { l: 133, t: 11, i: 514, }, D { l: 132, t: 0, i: 956, }, D { l: 134, t: 0, i: 1180, }, D { l: 10, t: 0, i: 112, }, D { l: 5, t: 10, i: 87 }, D { l: 7, t: 10, i: 313, }, D { l: 7, t: 10, i: 1103, }, D { l: 10, t: 10, i: 582, }, D { l: 11, t: 10, i: 389, }, D { l: 11, t: 10, i: 813, }, D { l: 12, t: 10, i: 385, }, D { l: 13, t: 10, i: 286, }, D { l: 14, t: 10, i: 124, }, D { l: 146, t: 10, i: 108, }, D { l: 5, t: 0, i: 71 }, D { l: 7, t: 0, i: 1407, }, D { l: 9, t: 0, i: 704 }, D { l: 10, t: 0, i: 261, }, D { l: 10, t: 0, i: 619, }, D { l: 11, t: 0, i: 547, }, D { l: 11, t: 0, i: 619, }, D { l: 143, t: 0, i: 157, }, D { l: 4, t: 0, i: 531 }, D { l: 5, t: 0, i: 455 }, D { l: 5, t: 11, i: 301, }, D { l: 6, t: 11, i: 571, }, D { l: 14, t: 11, i: 49, }, D { l: 146, t: 11, i: 102, }, D { l: 132, t: 10, i: 267, }, D { l: 6, t: 0, i: 385 }, D { l: 7, t: 0, i: 2008, }, D { l: 9, t: 0, i: 337 }, D { l: 138, t: 0, i: 517, }, D { l: 133, t: 11, i: 726, }, D { l: 133, t: 11, i: 364, }, D { l: 4, t: 11, i: 76 }, D { l: 7, t: 11, i: 1550, }, D { l: 9, t: 11, i: 306, }, D { l: 9, t: 11, i: 430, }, D { l: 9, t: 11, i: 663, }, D { l: 10, t: 11, i: 683, }, D { l: 11, t: 11, i: 427, }, D { l: 11, t: 11, i: 753, }, D { l: 12, t: 11, i: 334, }, D { l: 12, t: 11, i: 442, }, D { l: 14, t: 11, i: 258, }, D { l: 14, t: 11, i: 366, }, D { l: 143, t: 11, i: 131, }, D { l: 6, t: 0, i: 1865, }, D { l: 6, t: 0, i: 1879, }, D { l: 6, t: 0, i: 1881, }, D { l: 6, t: 0, i: 1894, }, D { l: 6, t: 0, i: 1908, }, D { l: 9, t: 0, i: 915 }, D { l: 9, t: 0, i: 926 }, D { l: 9, t: 0, i: 940 }, D { l: 9, t: 0, i: 943 }, D { l: 9, t: 0, i: 966 }, D { l: 9, t: 0, i: 980 }, D { l: 9, t: 0, i: 989 }, D { l: 9, t: 0, i: 1005, }, D { l: 9, t: 0, i: 1010, }, D { l: 12, t: 0, i: 813, }, D { l: 12, t: 0, i: 817, }, D { l: 12, t: 0, i: 840, }, D { l: 12, t: 0, i: 843, }, D { l: 12, t: 0, i: 855, }, D { l: 12, t: 0, i: 864, }, D { l: 12, t: 0, i: 871, }, D { l: 12, t: 0, i: 872, }, D { l: 12, t: 0, i: 899, }, D { l: 12, t: 0, i: 905, }, D { l: 12, t: 0, i: 924, }, D { l: 15, t: 0, i: 171, }, D { l: 15, t: 0, i: 181, }, D { l: 15, t: 0, i: 224, }, D { l: 15, t: 0, i: 235, }, D { l: 15, t: 0, i: 251, }, D { l: 146, t: 0, i: 184, }, D { l: 137, t: 11, i: 52, }, D { l: 5, t: 0, i: 16 }, D { l: 6, t: 0, i: 86 }, D { l: 6, t: 0, i: 603 }, D { l: 7, t: 0, i: 292 }, D { l: 7, t: 0, i: 561 }, D { l: 8, t: 0, i: 257 }, D { l: 8, t: 0, i: 382 }, D { l: 9, t: 0, i: 721 }, D { l: 9, t: 0, i: 778 }, D { l: 11, t: 0, i: 581, }, D { l: 140, t: 0, i: 466, }, D { l: 4, t: 0, i: 486 }, D { l: 5, t: 0, i: 491 }, D { l: 135, t: 10, i: 1121, }, D { l: 4, t: 0, i: 72 }, D { l: 6, t: 0, i: 265 }, D { l: 135, t: 0, i: 1300, }, D { l: 135, t: 11, i: 1183, }, D { l: 10, t: 10, i: 249, }, D { l: 139, t: 10, i: 209, }, D { l: 132, t: 10, i: 561, }, D { l: 137, t: 11, i: 519, }, D { l: 4, t: 11, i: 656, }, D { l: 4, t: 10, i: 760, }, D { l: 135, t: 11, i: 779, }, D { l: 9, t: 10, i: 154, }, D { l: 140, t: 10, i: 485, }, D { l: 135, t: 11, i: 1793, }, D { l: 135, t: 11, i: 144, }, D { l: 136, t: 10, i: 255, }, D { l: 133, t: 0, i: 621, }, D { l: 4, t: 10, i: 368, }, D { l: 135, t: 10, i: 641, }, D { l: 135, t: 11, i: 1373, }, D { l: 7, t: 11, i: 554, }, D { l: 7, t: 11, i: 605, }, D { l: 141, t: 11, i: 10, }, D { l: 137, t: 0, i: 234, }, D { l: 5, t: 0, i: 815 }, D { l: 6, t: 0, i: 1688, }, D { l: 134, t: 0, i: 1755, }, D { l: 5, t: 11, i: 838, }, D { l: 5, t: 11, i: 841, }, D { l: 134, t: 11, i: 1649, }, D { l: 7, t: 0, i: 1987, }, D { l: 7, t: 0, i: 2040, }, D { l: 136, t: 0, i: 743, }, D { l: 133, t: 11, i: 1012, }, D { l: 6, t: 0, i: 197 }, D { l: 136, t: 0, i: 205, }, D { l: 6, t: 0, i: 314 }, D { l: 134, t: 11, i: 314, }, D { l: 144, t: 11, i: 53, }, D { l: 6, t: 11, i: 251, }, D { l: 7, t: 11, i: 365, }, D { l: 7, t: 11, i: 1357, }, D { l: 7, t: 11, i: 1497, }, D { l: 8, t: 11, i: 154, }, D { l: 141, t: 11, i: 281, }, D { l: 133, t: 11, i: 340, }, D { l: 6, t: 0, i: 452 }, D { l: 7, t: 0, i: 312 }, D { l: 138, t: 0, i: 219, }, D { l: 138, t: 0, i: 589, }, D { l: 4, t: 0, i: 333 }, D { l: 9, t: 0, i: 176 }, D { l: 12, t: 0, i: 353, }, D { l: 141, t: 0, i: 187, }, D { l: 9, t: 10, i: 92 }, D { l: 147, t: 10, i: 91, }, D { l: 134, t: 0, i: 1110, }, D { l: 11, t: 0, i: 47 }, D { l: 139, t: 11, i: 495, }, D { l: 6, t: 10, i: 525, }, D { l: 8, t: 10, i: 806, }, D { l: 9, t: 10, i: 876, }, D { l: 140, t: 10, i: 284, }, D { l: 8, t: 11, i: 261, }, D { l: 9, t: 11, i: 144, }, D { l: 9, t: 11, i: 466, }, D { l: 10, t: 11, i: 370, }, D { l: 12, t: 11, i: 470, }, D { l: 13, t: 11, i: 144, }, D { l: 142, t: 11, i: 348, }, D { l: 137, t: 11, i: 897, }, D { l: 8, t: 0, i: 863 }, D { l: 8, t: 0, i: 864 }, D { l: 8, t: 0, i: 868 }, D { l: 8, t: 0, i: 884 }, D { l: 10, t: 0, i: 866, }, D { l: 10, t: 0, i: 868, }, D { l: 10, t: 0, i: 873, }, D { l: 10, t: 0, i: 911, }, D { l: 10, t: 0, i: 912, }, D { l: 10, t: 0, i: 944, }, D { l: 12, t: 0, i: 727, }, D { l: 6, t: 11, i: 248, }, D { l: 9, t: 11, i: 546, }, D { l: 10, t: 11, i: 535, }, D { l: 11, t: 11, i: 681, }, D { l: 141, t: 11, i: 135, }, D { l: 6, t: 0, i: 300 }, D { l: 135, t: 0, i: 1515, }, D { l: 134, t: 0, i: 1237, }, D { l: 139, t: 10, i: 958, }, D { l: 133, t: 10, i: 594, }, D { l: 140, t: 11, i: 250, }, D { l: 134, t: 0, i: 1685, }, D { l: 134, t: 11, i: 567, }, D { l: 7, t: 0, i: 135 }, D { l: 8, t: 0, i: 7 }, D { l: 8, t: 0, i: 62 }, D { l: 9, t: 0, i: 243 }, D { l: 10, t: 0, i: 658, }, D { l: 10, t: 0, i: 697, }, D { l: 11, t: 0, i: 456, }, D { l: 139, t: 0, i: 756, }, D { l: 9, t: 0, i: 395 }, D { l: 138, t: 0, i: 79, }, D { l: 6, t: 10, i: 1641, }, D { l: 136, t: 10, i: 820, }, D { l: 4, t: 10, i: 302, }, D { l: 135, t: 10, i: 1766, }, D { l: 134, t: 11, i: 174, }, D { l: 135, t: 10, i: 1313, }, D { l: 135, t: 0, i: 631, }, D { l: 134, t: 10, i: 1674, }, D { l: 134, t: 11, i: 395, }, D { l: 138, t: 0, i: 835, }, D { l: 7, t: 0, i: 406 }, D { l: 7, t: 0, i: 459 }, D { l: 8, t: 0, i: 606 }, D { l: 139, t: 0, i: 726, }, D { l: 134, t: 11, i: 617, }, D { l: 134, t: 0, i: 979, }, D { l: 6, t: 10, i: 389, }, D { l: 7, t: 10, i: 149, }, D { l: 9, t: 10, i: 142, }, D { l: 138, t: 10, i: 94, }, D { l: 5, t: 11, i: 878, }, D { l: 133, t: 11, i: 972, }, D { l: 6, t: 10, i: 8 }, D { l: 7, t: 10, i: 1881, }, D { l: 8, t: 10, i: 91 }, D { l: 136, t: 11, i: 511, }, D { l: 133, t: 0, i: 612, }, D { l: 132, t: 11, i: 351, }, D { l: 4, t: 0, i: 372 }, D { l: 7, t: 0, i: 482 }, D { l: 8, t: 0, i: 158 }, D { l: 9, t: 0, i: 602 }, D { l: 9, t: 0, i: 615 }, D { l: 10, t: 0, i: 245, }, D { l: 10, t: 0, i: 678, }, D { l: 10, t: 0, i: 744, }, D { l: 11, t: 0, i: 248, }, D { l: 139, t: 0, i: 806, }, D { l: 5, t: 0, i: 854 }, D { l: 135, t: 0, i: 1991, }, D { l: 132, t: 11, i: 286, }, D { l: 135, t: 11, i: 344, }, D { l: 7, t: 11, i: 438, }, D { l: 7, t: 11, i: 627, }, D { l: 7, t: 11, i: 1516, }, D { l: 8, t: 11, i: 40 }, D { l: 9, t: 11, i: 56 }, D { l: 9, t: 11, i: 294, }, D { l: 10, t: 11, i: 30, }, D { l: 10, t: 11, i: 259, }, D { l: 11, t: 11, i: 969, }, D { l: 146, t: 11, i: 148, }, D { l: 135, t: 0, i: 1492, }, D { l: 5, t: 11, i: 259, }, D { l: 7, t: 11, i: 414, }, D { l: 7, t: 11, i: 854, }, D { l: 142, t: 11, i: 107, }, D { l: 135, t: 10, i: 1746, }, D { l: 6, t: 0, i: 833 }, D { l: 134, t: 0, i: 998, }, D { l: 135, t: 10, i: 24, }, D { l: 6, t: 0, i: 750 }, D { l: 135, t: 0, i: 1739, }, D { l: 4, t: 10, i: 503, }, D { l: 135, t: 10, i: 1661, }, D { l: 5, t: 10, i: 130, }, D { l: 7, t: 10, i: 1314, }, D { l: 9, t: 10, i: 610, }, D { l: 10, t: 10, i: 718, }, D { l: 11, t: 10, i: 601, }, D { l: 11, t: 10, i: 819, }, D { l: 11, t: 10, i: 946, }, D { l: 140, t: 10, i: 536, }, D { l: 10, t: 10, i: 149, }, D { l: 11, t: 10, i: 280, }, D { l: 142, t: 10, i: 336, }, D { l: 132, t: 11, i: 738, }, D { l: 135, t: 10, i: 1946, }, D { l: 5, t: 0, i: 195 }, D { l: 135, t: 0, i: 1685, }, D { l: 7, t: 0, i: 1997, }, D { l: 8, t: 0, i: 730 }, D { l: 139, t: 0, i: 1006, }, D { l: 151, t: 11, i: 17, }, D { l: 133, t: 11, i: 866, }, D { l: 14, t: 0, i: 463, }, D { l: 14, t: 0, i: 470, }, D { l: 150, t: 0, i: 61, }, D { l: 5, t: 0, i: 751 }, D { l: 8, t: 0, i: 266 }, D { l: 11, t: 0, i: 578, }, D { l: 4, t: 10, i: 392, }, D { l: 135, t: 10, i: 1597, }, D { l: 5, t: 10, i: 433, }, D { l: 9, t: 10, i: 633, }, D { l: 139, t: 10, i: 629, }, D { l: 135, t: 0, i: 821, }, D { l: 6, t: 0, i: 715 }, D { l: 134, t: 0, i: 1325, }, D { l: 133, t: 11, i: 116, }, D { l: 6, t: 0, i: 868 }, D { l: 132, t: 11, i: 457, }, D { l: 134, t: 0, i: 959, }, D { l: 6, t: 10, i: 234, }, D { l: 138, t: 11, i: 199, }, D { l: 7, t: 0, i: 1053, }, D { l: 7, t: 10, i: 1950, }, D { l: 8, t: 10, i: 680, }, D { l: 11, t: 10, i: 817, }, D { l: 147, t: 10, i: 88, }, D { l: 7, t: 10, i: 1222, }, D { l: 138, t: 10, i: 386, }, D { l: 5, t: 0, i: 950 }, D { l: 5, t: 0, i: 994 }, D { l: 6, t: 0, i: 351 }, D { l: 134, t: 0, i: 1124, }, D { l: 134, t: 0, i: 1081, }, D { l: 7, t: 0, i: 1595, }, D { l: 6, t: 10, i: 5 }, D { l: 11, t: 10, i: 249, }, D { l: 12, t: 10, i: 313, }, D { l: 16, t: 10, i: 66, }, D { l: 145, t: 10, i: 26, }, D { l: 148, t: 0, i: 59, }, D { l: 5, t: 11, i: 527, }, D { l: 6, t: 11, i: 189, }, D { l: 135, t: 11, i: 859, }, D { l: 5, t: 10, i: 963, }, D { l: 6, t: 10, i: 1773, }, D { l: 11, t: 11, i: 104, }, D { l: 11, t: 11, i: 554, }, D { l: 15, t: 11, i: 60, }, D { l: 143, t: 11, i: 125, }, D { l: 135, t: 0, i: 47, }, D { l: 137, t: 0, i: 684, }, D { l: 134, t: 11, i: 116, }, D { l: 134, t: 0, i: 1606, }, D { l: 134, t: 0, i: 777, }, D { l: 7, t: 0, i: 1020, }, D { l: 8, t: 10, i: 509, }, D { l: 136, t: 10, i: 792, }, D { l: 135, t: 0, i: 1094, }, D { l: 132, t: 0, i: 350, }, D { l: 133, t: 11, i: 487, }, D { l: 4, t: 11, i: 86 }, D { l: 5, t: 11, i: 667, }, D { l: 5, t: 11, i: 753, }, D { l: 6, t: 11, i: 316, }, D { l: 6, t: 11, i: 455, }, D { l: 135, t: 11, i: 946, }, D { l: 7, t: 0, i: 1812, }, D { l: 13, t: 0, i: 259, }, D { l: 13, t: 0, i: 356, }, D { l: 14, t: 0, i: 242, }, D { l: 147, t: 0, i: 114, }, D { l: 132, t: 10, i: 931, }, D { l: 133, t: 0, i: 967, }, D { l: 4, t: 0, i: 473 }, D { l: 7, t: 0, i: 623 }, D { l: 8, t: 0, i: 808 }, D { l: 9, t: 0, i: 871 }, D { l: 9, t: 0, i: 893 }, D { l: 11, t: 0, i: 38 }, D { l: 11, t: 0, i: 431, }, D { l: 12, t: 0, i: 112, }, D { l: 12, t: 0, i: 217, }, D { l: 12, t: 0, i: 243, }, D { l: 12, t: 0, i: 562, }, D { l: 12, t: 0, i: 663, }, D { l: 12, t: 0, i: 683, }, D { l: 13, t: 0, i: 141, }, D { l: 13, t: 0, i: 197, }, D { l: 13, t: 0, i: 227, }, D { l: 13, t: 0, i: 406, }, D { l: 13, t: 0, i: 487, }, D { l: 14, t: 0, i: 156, }, D { l: 14, t: 0, i: 203, }, D { l: 14, t: 0, i: 224, }, D { l: 14, t: 0, i: 256, }, D { l: 18, t: 0, i: 58 }, D { l: 150, t: 0, i: 0 }, D { l: 138, t: 0, i: 286, }, D { l: 7, t: 10, i: 943, }, D { l: 139, t: 10, i: 614, }, D { l: 135, t: 10, i: 1837, }, D { l: 150, t: 11, i: 45, }, D { l: 132, t: 0, i: 798, }, D { l: 4, t: 0, i: 222 }, D { l: 7, t: 0, i: 286 }, D { l: 136, t: 0, i: 629, }, D { l: 4, t: 11, i: 79 }, D { l: 7, t: 11, i: 1773, }, D { l: 10, t: 11, i: 450, }, D { l: 11, t: 11, i: 589, }, D { l: 13, t: 11, i: 332, }, D { l: 13, t: 11, i: 493, }, D { l: 14, t: 11, i: 183, }, D { l: 14, t: 11, i: 334, }, D { l: 14, t: 11, i: 362, }, D { l: 14, t: 11, i: 368, }, D { l: 14, t: 11, i: 376, }, D { l: 14, t: 11, i: 379, }, D { l: 19, t: 11, i: 90, }, D { l: 19, t: 11, i: 103, }, D { l: 19, t: 11, i: 127, }, D { l: 148, t: 11, i: 90, }, D { l: 5, t: 0, i: 337 }, D { l: 11, t: 0, i: 513, }, D { l: 11, t: 0, i: 889, }, D { l: 11, t: 0, i: 961, }, D { l: 12, t: 0, i: 461, }, D { l: 13, t: 0, i: 79 }, D { l: 15, t: 0, i: 121, }, D { l: 4, t: 10, i: 90 }, D { l: 5, t: 10, i: 545, }, D { l: 7, t: 10, i: 754, }, D { l: 9, t: 10, i: 186, }, D { l: 10, t: 10, i: 72, }, D { l: 10, t: 10, i: 782, }, D { l: 11, t: 10, i: 577, }, D { l: 11, t: 10, i: 610, }, D { l: 12, t: 10, i: 354, }, D { l: 12, t: 10, i: 362, }, D { l: 140, t: 10, i: 595, }, D { l: 141, t: 0, i: 306, }, D { l: 136, t: 0, i: 146, }, D { l: 7, t: 0, i: 1646, }, D { l: 9, t: 10, i: 329, }, D { l: 11, t: 10, i: 254, }, D { l: 141, t: 11, i: 124, }, D { l: 4, t: 0, i: 465 }, D { l: 135, t: 0, i: 1663, }, D { l: 132, t: 0, i: 525, }, D { l: 133, t: 11, i: 663, }, D { l: 10, t: 0, i: 299, }, D { l: 18, t: 0, i: 74 }, D { l: 9, t: 10, i: 187, }, D { l: 11, t: 10, i: 1016, }, D { l: 145, t: 10, i: 44, }, D { l: 7, t: 0, i: 165 }, D { l: 7, t: 0, i: 919 }, D { l: 4, t: 10, i: 506, }, D { l: 136, t: 10, i: 517, }, D { l: 5, t: 10, i: 295, }, D { l: 135, t: 10, i: 1680, }, D { l: 133, t: 11, i: 846, }, D { l: 134, t: 0, i: 1064, }, D { l: 5, t: 11, i: 378, }, D { l: 7, t: 11, i: 1402, }, D { l: 7, t: 11, i: 1414, }, D { l: 8, t: 11, i: 465, }, D { l: 9, t: 11, i: 286, }, D { l: 10, t: 11, i: 185, }, D { l: 10, t: 11, i: 562, }, D { l: 10, t: 11, i: 635, }, D { l: 11, t: 11, i: 31, }, D { l: 11, t: 11, i: 393, }, D { l: 12, t: 11, i: 456, }, D { l: 13, t: 11, i: 312, }, D { l: 18, t: 11, i: 65, }, D { l: 18, t: 11, i: 96, }, D { l: 147, t: 11, i: 89, }, D { l: 132, t: 0, i: 596, }, D { l: 7, t: 10, i: 987, }, D { l: 9, t: 10, i: 688, }, D { l: 10, t: 10, i: 522, }, D { l: 11, t: 10, i: 788, }, D { l: 140, t: 10, i: 566, }, D { l: 6, t: 0, i: 82 }, D { l: 7, t: 0, i: 138 }, D { l: 7, t: 0, i: 517 }, D { l: 7, t: 0, i: 1741, }, D { l: 11, t: 0, i: 238, }, D { l: 4, t: 11, i: 648, }, D { l: 134, t: 10, i: 1775, }, D { l: 7, t: 0, i: 1233, }, D { l: 7, t: 10, i: 700, }, D { l: 7, t: 10, i: 940, }, D { l: 8, t: 10, i: 514, }, D { l: 9, t: 10, i: 116, }, D { l: 9, t: 10, i: 535, }, D { l: 10, t: 10, i: 118, }, D { l: 11, t: 10, i: 107, }, D { l: 11, t: 10, i: 148, }, D { l: 11, t: 10, i: 922, }, D { l: 12, t: 10, i: 254, }, D { l: 12, t: 10, i: 421, }, D { l: 142, t: 10, i: 238, }, D { l: 4, t: 0, i: 962 }, D { l: 6, t: 0, i: 1824, }, D { l: 8, t: 0, i: 894 }, D { l: 12, t: 0, i: 708, }, D { l: 12, t: 0, i: 725, }, D { l: 14, t: 0, i: 451, }, D { l: 20, t: 0, i: 94 }, D { l: 22, t: 0, i: 59 }, D { l: 150, t: 0, i: 62, }, D { l: 5, t: 11, i: 945, }, D { l: 6, t: 11, i: 1656, }, D { l: 6, t: 11, i: 1787, }, D { l: 7, t: 11, i: 167, }, D { l: 8, t: 11, i: 824, }, D { l: 9, t: 11, i: 391, }, D { l: 10, t: 11, i: 375, }, D { l: 139, t: 11, i: 185, }, D { l: 5, t: 0, i: 495 }, D { l: 7, t: 0, i: 834 }, D { l: 9, t: 0, i: 733 }, D { l: 139, t: 0, i: 378, }, D { l: 4, t: 10, i: 743, }, D { l: 135, t: 11, i: 1273, }, D { l: 6, t: 0, i: 1204, }, D { l: 7, t: 11, i: 1645, }, D { l: 8, t: 11, i: 352, }, D { l: 137, t: 11, i: 249, }, D { l: 139, t: 10, i: 292, }, D { l: 133, t: 0, i: 559, }, D { l: 132, t: 11, i: 152, }, D { l: 9, t: 0, i: 499 }, D { l: 10, t: 0, i: 341, }, D { l: 15, t: 0, i: 144, }, D { l: 19, t: 0, i: 49 }, D { l: 7, t: 10, i: 1283, }, D { l: 9, t: 10, i: 227, }, D { l: 11, t: 10, i: 325, }, D { l: 11, t: 10, i: 408, }, D { l: 14, t: 10, i: 180, }, D { l: 146, t: 10, i: 47, }, D { l: 6, t: 0, i: 21 }, D { l: 6, t: 0, i: 1737, }, D { l: 7, t: 0, i: 1444, }, D { l: 136, t: 0, i: 224, }, D { l: 133, t: 11, i: 1006, }, D { l: 7, t: 0, i: 1446, }, D { l: 9, t: 0, i: 97 }, D { l: 17, t: 0, i: 15 }, D { l: 5, t: 10, i: 81 }, D { l: 7, t: 10, i: 146, }, D { l: 7, t: 10, i: 1342, }, D { l: 8, t: 10, i: 53 }, D { l: 8, t: 10, i: 561, }, D { l: 8, t: 10, i: 694, }, D { l: 8, t: 10, i: 754, }, D { l: 9, t: 10, i: 115, }, D { l: 9, t: 10, i: 894, }, D { l: 10, t: 10, i: 462, }, D { l: 10, t: 10, i: 813, }, D { l: 11, t: 10, i: 230, }, D { l: 11, t: 10, i: 657, }, D { l: 11, t: 10, i: 699, }, D { l: 11, t: 10, i: 748, }, D { l: 12, t: 10, i: 119, }, D { l: 12, t: 10, i: 200, }, D { l: 12, t: 10, i: 283, }, D { l: 142, t: 10, i: 273, }, D { l: 5, t: 10, i: 408, }, D { l: 137, t: 10, i: 747, }, D { l: 135, t: 11, i: 431, }, D { l: 135, t: 11, i: 832, }, D { l: 6, t: 0, i: 729 }, D { l: 134, t: 0, i: 953, }, D { l: 4, t: 0, i: 727 }, D { l: 8, t: 0, i: 565 }, D { l: 5, t: 11, i: 351, }, D { l: 7, t: 11, i: 264, }, D { l: 136, t: 11, i: 565, }, D { l: 134, t: 0, i: 1948, }, D { l: 5, t: 0, i: 519 }, D { l: 5, t: 11, i: 40 }, D { l: 7, t: 11, i: 598, }, D { l: 7, t: 11, i: 1638, }, D { l: 8, t: 11, i: 78 }, D { l: 9, t: 11, i: 166, }, D { l: 9, t: 11, i: 640, }, D { l: 9, t: 11, i: 685, }, D { l: 9, t: 11, i: 773, }, D { l: 11, t: 11, i: 215, }, D { l: 13, t: 11, i: 65, }, D { l: 14, t: 11, i: 172, }, D { l: 14, t: 11, i: 317, }, D { l: 145, t: 11, i: 6, }, D { l: 8, t: 11, i: 60 }, D { l: 9, t: 11, i: 343, }, D { l: 139, t: 11, i: 769, }, D { l: 137, t: 11, i: 455, }, D { l: 134, t: 0, i: 1193, }, D { l: 140, t: 0, i: 790, }, D { l: 7, t: 11, i: 1951, }, D { l: 8, t: 11, i: 765, }, D { l: 8, t: 11, i: 772, }, D { l: 140, t: 11, i: 671, }, D { l: 7, t: 11, i: 108, }, D { l: 8, t: 11, i: 219, }, D { l: 8, t: 11, i: 388, }, D { l: 9, t: 11, i: 639, }, D { l: 9, t: 11, i: 775, }, D { l: 11, t: 11, i: 275, }, D { l: 140, t: 11, i: 464, }, D { l: 132, t: 11, i: 468, }, D { l: 7, t: 10, i: 30 }, D { l: 8, t: 10, i: 86 }, D { l: 8, t: 10, i: 315, }, D { l: 8, t: 10, i: 700, }, D { l: 9, t: 10, i: 576, }, D { l: 9, t: 10, i: 858, }, D { l: 11, t: 10, i: 310, }, D { l: 11, t: 10, i: 888, }, D { l: 11, t: 10, i: 904, }, D { l: 12, t: 10, i: 361, }, D { l: 141, t: 10, i: 248, }, D { l: 5, t: 11, i: 15 }, D { l: 6, t: 11, i: 56 }, D { l: 7, t: 11, i: 1758, }, D { l: 8, t: 11, i: 500, }, D { l: 9, t: 11, i: 730, }, D { l: 11, t: 11, i: 331, }, D { l: 13, t: 11, i: 150, }, D { l: 142, t: 11, i: 282, }, D { l: 4, t: 0, i: 402 }, D { l: 7, t: 0, i: 2 }, D { l: 8, t: 0, i: 323 }, D { l: 136, t: 0, i: 479, }, D { l: 138, t: 10, i: 839, }, D { l: 11, t: 0, i: 580, }, D { l: 142, t: 0, i: 201, }, D { l: 5, t: 0, i: 59 }, D { l: 135, t: 0, i: 672, }, D { l: 137, t: 10, i: 617, }, D { l: 146, t: 0, i: 34, }, D { l: 134, t: 11, i: 1886, }, D { l: 4, t: 0, i: 961 }, D { l: 136, t: 0, i: 896, }, D { l: 6, t: 0, i: 1285, }, D { l: 5, t: 11, i: 205, }, D { l: 6, t: 11, i: 438, }, D { l: 137, t: 11, i: 711, }, D { l: 134, t: 10, i: 428, }, D { l: 7, t: 10, i: 524, }, D { l: 8, t: 10, i: 169, }, D { l: 8, t: 10, i: 234, }, D { l: 9, t: 10, i: 480, }, D { l: 138, t: 10, i: 646, }, D { l: 148, t: 0, i: 46, }, D { l: 141, t: 0, i: 479, }, D { l: 133, t: 11, i: 534, }, D { l: 6, t: 0, i: 2019, }, D { l: 134, t: 10, i: 1648, }, D { l: 4, t: 0, i: 85 }, D { l: 7, t: 0, i: 549 }, D { l: 7, t: 10, i: 1205, }, D { l: 138, t: 10, i: 637, }, D { l: 4, t: 0, i: 663 }, D { l: 5, t: 0, i: 94 }, D { l: 7, t: 11, i: 235, }, D { l: 7, t: 11, i: 1475, }, D { l: 15, t: 11, i: 68, }, D { l: 146, t: 11, i: 120, }, D { l: 6, t: 11, i: 443, }, D { l: 9, t: 11, i: 237, }, D { l: 9, t: 11, i: 571, }, D { l: 9, t: 11, i: 695, }, D { l: 10, t: 11, i: 139, }, D { l: 11, t: 11, i: 715, }, D { l: 12, t: 11, i: 417, }, D { l: 141, t: 11, i: 421, }, D { l: 132, t: 0, i: 783, }, D { l: 4, t: 0, i: 682 }, D { l: 8, t: 0, i: 65 }, D { l: 9, t: 10, i: 39 }, D { l: 10, t: 10, i: 166, }, D { l: 11, t: 10, i: 918, }, D { l: 12, t: 10, i: 635, }, D { l: 20, t: 10, i: 10, }, D { l: 22, t: 10, i: 27, }, D { l: 22, t: 10, i: 43, }, D { l: 150, t: 10, i: 52, }, D { l: 6, t: 0, i: 11 }, D { l: 135, t: 0, i: 187, }, D { l: 132, t: 0, i: 522, }, D { l: 4, t: 0, i: 52 }, D { l: 135, t: 0, i: 661, }, D { l: 4, t: 0, i: 383 }, D { l: 133, t: 0, i: 520, }, D { l: 135, t: 11, i: 546, }, D { l: 11, t: 0, i: 343, }, D { l: 142, t: 0, i: 127, }, D { l: 4, t: 11, i: 578, }, D { l: 7, t: 10, i: 157, }, D { l: 7, t: 11, i: 624, }, D { l: 7, t: 11, i: 916, }, D { l: 8, t: 10, i: 279, }, D { l: 10, t: 11, i: 256, }, D { l: 11, t: 11, i: 87, }, D { l: 139, t: 11, i: 703, }, D { l: 134, t: 10, i: 604, }, D { l: 4, t: 0, i: 281 }, D { l: 5, t: 0, i: 38 }, D { l: 7, t: 0, i: 194 }, D { l: 7, t: 0, i: 668 }, D { l: 7, t: 0, i: 1893, }, D { l: 137, t: 0, i: 397, }, D { l: 7, t: 10, i: 945, }, D { l: 11, t: 10, i: 713, }, D { l: 139, t: 10, i: 744, }, D { l: 139, t: 10, i: 1022, }, D { l: 9, t: 0, i: 635 }, D { l: 139, t: 0, i: 559, }, D { l: 5, t: 11, i: 923, }, D { l: 7, t: 11, i: 490, }, D { l: 12, t: 11, i: 553, }, D { l: 13, t: 11, i: 100, }, D { l: 14, t: 11, i: 118, }, D { l: 143, t: 11, i: 75, }, D { l: 132, t: 0, i: 975, }, D { l: 132, t: 10, i: 567, }, D { l: 137, t: 10, i: 859, }, D { l: 7, t: 10, i: 1846, }, D { l: 7, t: 11, i: 1846, }, D { l: 8, t: 10, i: 628, }, D { l: 136, t: 11, i: 628, }, D { l: 148, t: 0, i: 116, }, D { l: 138, t: 11, i: 750, }, D { l: 14, t: 0, i: 51 }, D { l: 14, t: 11, i: 51, }, D { l: 15, t: 11, i: 7 }, D { l: 148, t: 11, i: 20, }, D { l: 132, t: 0, i: 858, }, D { l: 134, t: 0, i: 1075, }, D { l: 4, t: 11, i: 924, }, D { l: 133, t: 10, i: 762, }, D { l: 136, t: 0, i: 535, }, D { l: 133, t: 0, i: 448, }, D { l: 10, t: 10, i: 784, }, D { l: 141, t: 10, i: 191, }, D { l: 133, t: 10, i: 298, }, D { l: 7, t: 0, i: 610 }, D { l: 135, t: 0, i: 1501, }, D { l: 7, t: 10, i: 633, }, D { l: 7, t: 10, i: 905, }, D { l: 7, t: 10, i: 909, }, D { l: 7, t: 10, i: 1538, }, D { l: 9, t: 10, i: 767, }, D { l: 140, t: 10, i: 636, }, D { l: 4, t: 11, i: 265, }, D { l: 7, t: 11, i: 807, }, D { l: 135, t: 11, i: 950, }, D { l: 5, t: 11, i: 93 }, D { l: 12, t: 11, i: 267, }, D { l: 144, t: 11, i: 26, }, D { l: 136, t: 0, i: 191, }, D { l: 139, t: 10, i: 301, }, D { l: 135, t: 10, i: 1970, }, D { l: 135, t: 0, i: 267, }, D { l: 4, t: 0, i: 319 }, D { l: 5, t: 0, i: 699 }, D { l: 138, t: 0, i: 673, }, D { l: 6, t: 0, i: 336 }, D { l: 7, t: 0, i: 92 }, D { l: 7, t: 0, i: 182 }, D { l: 8, t: 0, i: 453 }, D { l: 8, t: 0, i: 552 }, D { l: 9, t: 0, i: 204 }, D { l: 9, t: 0, i: 285 }, D { l: 10, t: 0, i: 99 }, D { l: 11, t: 0, i: 568, }, D { l: 11, t: 0, i: 950, }, D { l: 12, t: 0, i: 94 }, D { l: 16, t: 0, i: 20 }, D { l: 16, t: 0, i: 70 }, D { l: 19, t: 0, i: 55 }, D { l: 12, t: 10, i: 644, }, D { l: 144, t: 10, i: 90, }, D { l: 6, t: 0, i: 551 }, D { l: 7, t: 0, i: 1308, }, D { l: 7, t: 10, i: 845, }, D { l: 7, t: 11, i: 994, }, D { l: 8, t: 10, i: 160, }, D { l: 137, t: 10, i: 318, }, D { l: 19, t: 11, i: 1 }, D { l: 19, t: 11, i: 26, }, D { l: 150, t: 11, i: 9, }, D { l: 7, t: 0, i: 1406, }, D { l: 9, t: 0, i: 218 }, D { l: 141, t: 0, i: 222, }, D { l: 5, t: 0, i: 256 }, D { l: 138, t: 0, i: 69, }, D { l: 5, t: 11, i: 233, }, D { l: 5, t: 11, i: 320, }, D { l: 6, t: 11, i: 140, }, D { l: 7, t: 11, i: 330, }, D { l: 136, t: 11, i: 295, }, D { l: 6, t: 0, i: 1980, }, D { l: 136, t: 0, i: 952, }, D { l: 4, t: 0, i: 833 }, D { l: 137, t: 11, i: 678, }, D { l: 133, t: 11, i: 978, }, D { l: 4, t: 11, i: 905, }, D { l: 6, t: 11, i: 1701, }, D { l: 137, t: 11, i: 843, }, D { l: 138, t: 10, i: 735, }, D { l: 136, t: 10, i: 76, }, D { l: 17, t: 0, i: 39 }, D { l: 148, t: 0, i: 36, }, D { l: 18, t: 0, i: 81 }, D { l: 146, t: 11, i: 81, }, D { l: 14, t: 0, i: 352, }, D { l: 17, t: 0, i: 53 }, D { l: 18, t: 0, i: 146, }, D { l: 18, t: 0, i: 152, }, D { l: 19, t: 0, i: 11 }, D { l: 150, t: 0, i: 54, }, D { l: 135, t: 0, i: 634, }, D { l: 138, t: 10, i: 841, }, D { l: 132, t: 0, i: 618, }, D { l: 4, t: 0, i: 339 }, D { l: 7, t: 0, i: 259 }, D { l: 17, t: 0, i: 73 }, D { l: 4, t: 11, i: 275, }, D { l: 140, t: 11, i: 376, }, D { l: 132, t: 11, i: 509, }, D { l: 7, t: 11, i: 273, }, D { l: 139, t: 11, i: 377, }, D { l: 4, t: 0, i: 759 }, D { l: 13, t: 0, i: 169, }, D { l: 137, t: 10, i: 804, }, D { l: 6, t: 10, i: 96 }, D { l: 135, t: 10, i: 1426, }, D { l: 4, t: 10, i: 651, }, D { l: 133, t: 10, i: 289, }, D { l: 7, t: 0, i: 1075, }, D { l: 8, t: 10, i: 35 }, D { l: 9, t: 10, i: 511, }, D { l: 10, t: 10, i: 767, }, D { l: 147, t: 10, i: 118, }, D { l: 6, t: 0, i: 649 }, D { l: 6, t: 0, i: 670 }, D { l: 136, t: 0, i: 482, }, D { l: 5, t: 0, i: 336 }, D { l: 6, t: 0, i: 341 }, D { l: 6, t: 0, i: 478 }, D { l: 6, t: 0, i: 1763, }, D { l: 136, t: 0, i: 386, }, D { l: 5, t: 11, i: 802, }, D { l: 7, t: 11, i: 2021, }, D { l: 8, t: 11, i: 805, }, D { l: 14, t: 11, i: 94, }, D { l: 15, t: 11, i: 65, }, D { l: 16, t: 11, i: 4 }, D { l: 16, t: 11, i: 77, }, D { l: 16, t: 11, i: 80, }, D { l: 145, t: 11, i: 5, }, D { l: 6, t: 0, i: 1035, }, D { l: 5, t: 11, i: 167, }, D { l: 5, t: 11, i: 899, }, D { l: 6, t: 11, i: 410, }, D { l: 137, t: 11, i: 777, }, D { l: 134, t: 11, i: 1705, }, D { l: 5, t: 0, i: 924 }, D { l: 133, t: 0, i: 969, }, D { l: 132, t: 10, i: 704, }, D { l: 135, t: 0, i: 73, }, D { l: 135, t: 11, i: 10, }, D { l: 135, t: 10, i: 1078, }, D { l: 5, t: 11, i: 11 }, D { l: 6, t: 11, i: 117, }, D { l: 6, t: 11, i: 485, }, D { l: 7, t: 11, i: 1133, }, D { l: 9, t: 11, i: 582, }, D { l: 9, t: 11, i: 594, }, D { l: 11, t: 11, i: 21, }, D { l: 11, t: 11, i: 818, }, D { l: 12, t: 11, i: 535, }, D { l: 141, t: 11, i: 86, }, D { l: 135, t: 0, i: 1971, }, D { l: 4, t: 11, i: 264, }, D { l: 7, t: 11, i: 1067, }, D { l: 8, t: 11, i: 204, }, D { l: 8, t: 11, i: 385, }, D { l: 139, t: 11, i: 953, }, D { l: 6, t: 0, i: 1458, }, D { l: 135, t: 0, i: 1344, }, D { l: 5, t: 0, i: 396 }, D { l: 134, t: 0, i: 501, }, D { l: 4, t: 10, i: 720, }, D { l: 133, t: 10, i: 306, }, D { l: 4, t: 0, i: 929 }, D { l: 5, t: 0, i: 799 }, D { l: 8, t: 0, i: 46 }, D { l: 8, t: 0, i: 740 }, D { l: 133, t: 10, i: 431, }, D { l: 7, t: 11, i: 646, }, D { l: 7, t: 11, i: 1730, }, D { l: 11, t: 11, i: 446, }, D { l: 141, t: 11, i: 178, }, D { l: 7, t: 0, i: 276 }, D { l: 5, t: 10, i: 464, }, D { l: 6, t: 10, i: 236, }, D { l: 7, t: 10, i: 696, }, D { l: 7, t: 10, i: 914, }, D { l: 7, t: 10, i: 1108, }, D { l: 7, t: 10, i: 1448, }, D { l: 9, t: 10, i: 15 }, D { l: 9, t: 10, i: 564, }, D { l: 10, t: 10, i: 14, }, D { l: 12, t: 10, i: 565, }, D { l: 13, t: 10, i: 449, }, D { l: 14, t: 10, i: 53, }, D { l: 15, t: 10, i: 13, }, D { l: 16, t: 10, i: 64, }, D { l: 145, t: 10, i: 41, }, D { l: 4, t: 0, i: 892 }, D { l: 133, t: 0, i: 770, }, D { l: 6, t: 10, i: 1767, }, D { l: 12, t: 10, i: 194, }, D { l: 145, t: 10, i: 107, }, D { l: 135, t: 0, i: 158, }, D { l: 5, t: 10, i: 840, }, D { l: 138, t: 11, i: 608, }, D { l: 134, t: 0, i: 1432, }, D { l: 138, t: 11, i: 250, }, D { l: 8, t: 11, i: 794, }, D { l: 9, t: 11, i: 400, }, D { l: 10, t: 11, i: 298, }, D { l: 142, t: 11, i: 228, }, D { l: 151, t: 0, i: 25, }, D { l: 7, t: 11, i: 1131, }, D { l: 135, t: 11, i: 1468, }, D { l: 135, t: 0, i: 2001, }, D { l: 9, t: 10, i: 642, }, D { l: 11, t: 10, i: 236, }, D { l: 142, t: 10, i: 193, }, D { l: 4, t: 10, i: 68 }, D { l: 5, t: 10, i: 634, }, D { l: 6, t: 10, i: 386, }, D { l: 7, t: 10, i: 794, }, D { l: 8, t: 10, i: 273, }, D { l: 9, t: 10, i: 563, }, D { l: 10, t: 10, i: 105, }, D { l: 10, t: 10, i: 171, }, D { l: 11, t: 10, i: 94, }, D { l: 139, t: 10, i: 354, }, D { l: 136, t: 11, i: 724, }, D { l: 132, t: 0, i: 478, }, D { l: 11, t: 11, i: 512, }, D { l: 13, t: 11, i: 205, }, D { l: 19, t: 11, i: 30, }, D { l: 22, t: 11, i: 36, }, D { l: 151, t: 11, i: 19, }, D { l: 7, t: 0, i: 1461, }, D { l: 140, t: 0, i: 91, }, D { l: 6, t: 11, i: 190, }, D { l: 7, t: 11, i: 768, }, D { l: 135, t: 11, i: 1170, }, D { l: 4, t: 0, i: 602 }, D { l: 8, t: 0, i: 211 }, D { l: 4, t: 10, i: 95 }, D { l: 7, t: 10, i: 416, }, D { l: 139, t: 10, i: 830, }, D { l: 7, t: 10, i: 731, }, D { l: 13, t: 10, i: 20, }, D { l: 143, t: 10, i: 11, }, D { l: 6, t: 0, i: 1068, }, D { l: 135, t: 0, i: 1872, }, D { l: 4, t: 0, i: 13 }, D { l: 5, t: 0, i: 567 }, D { l: 7, t: 0, i: 1498, }, D { l: 9, t: 0, i: 124 }, D { l: 11, t: 0, i: 521, }, D { l: 12, t: 0, i: 405, }, D { l: 135, t: 11, i: 1023, }, D { l: 135, t: 0, i: 1006, }, D { l: 132, t: 0, i: 735, }, D { l: 138, t: 0, i: 812, }, D { l: 4, t: 0, i: 170 }, D { l: 135, t: 0, i: 323, }, D { l: 6, t: 11, i: 137, }, D { l: 9, t: 11, i: 75 }, D { l: 9, t: 11, i: 253, }, D { l: 10, t: 11, i: 194, }, D { l: 138, t: 11, i: 444, }, D { l: 5, t: 0, i: 304 }, D { l: 7, t: 0, i: 1403, }, D { l: 5, t: 10, i: 864, }, D { l: 10, t: 10, i: 648, }, D { l: 11, t: 10, i: 671, }, D { l: 143, t: 10, i: 46, }, D { l: 135, t: 11, i: 1180, }, D { l: 133, t: 10, i: 928, }, D { l: 4, t: 0, i: 148 }, D { l: 133, t: 0, i: 742, }, D { l: 11, t: 10, i: 986, }, D { l: 140, t: 10, i: 682, }, D { l: 133, t: 0, i: 523, }, D { l: 135, t: 11, i: 1743, }, D { l: 7, t: 0, i: 730 }, D { l: 18, t: 0, i: 144, }, D { l: 19, t: 0, i: 61 }, D { l: 8, t: 10, i: 44 }, D { l: 9, t: 10, i: 884, }, D { l: 10, t: 10, i: 580, }, D { l: 11, t: 10, i: 399, }, D { l: 11, t: 10, i: 894, }, D { l: 143, t: 10, i: 122, }, D { l: 5, t: 11, i: 760, }, D { l: 7, t: 11, i: 542, }, D { l: 8, t: 11, i: 135, }, D { l: 136, t: 11, i: 496, }, D { l: 136, t: 0, i: 981, }, D { l: 133, t: 0, i: 111, }, D { l: 10, t: 0, i: 132, }, D { l: 11, t: 0, i: 191, }, D { l: 11, t: 0, i: 358, }, D { l: 139, t: 0, i: 460, }, D { l: 7, t: 11, i: 319, }, D { l: 7, t: 11, i: 355, }, D { l: 7, t: 11, i: 763, }, D { l: 10, t: 11, i: 389, }, D { l: 145, t: 11, i: 43, }, D { l: 134, t: 0, i: 890, }, D { l: 134, t: 0, i: 1420, }, D { l: 136, t: 11, i: 557, }, D { l: 133, t: 10, i: 518, }, D { l: 133, t: 0, i: 444, }, D { l: 135, t: 0, i: 1787, }, D { l: 135, t: 10, i: 1852, }, D { l: 8, t: 0, i: 123 }, D { l: 15, t: 0, i: 6 }, D { l: 144, t: 0, i: 7 }, D { l: 6, t: 0, i: 2041, }, D { l: 10, t: 11, i: 38, }, D { l: 139, t: 11, i: 784, }, D { l: 136, t: 0, i: 932, }, D { l: 5, t: 0, i: 937 }, D { l: 135, t: 0, i: 100, }, D { l: 6, t: 0, i: 995 }, D { l: 4, t: 11, i: 58 }, D { l: 5, t: 11, i: 286, }, D { l: 6, t: 11, i: 319, }, D { l: 7, t: 11, i: 402, }, D { l: 7, t: 11, i: 1254, }, D { l: 7, t: 11, i: 1903, }, D { l: 8, t: 11, i: 356, }, D { l: 140, t: 11, i: 408, }, D { l: 4, t: 11, i: 389, }, D { l: 9, t: 11, i: 181, }, D { l: 9, t: 11, i: 255, }, D { l: 10, t: 11, i: 8 }, D { l: 10, t: 11, i: 29, }, D { l: 10, t: 11, i: 816, }, D { l: 11, t: 11, i: 311, }, D { l: 11, t: 11, i: 561, }, D { l: 12, t: 11, i: 67, }, D { l: 141, t: 11, i: 181, }, D { l: 138, t: 0, i: 255, }, D { l: 5, t: 0, i: 138 }, D { l: 4, t: 10, i: 934, }, D { l: 136, t: 10, i: 610, }, D { l: 4, t: 0, i: 965 }, D { l: 10, t: 0, i: 863, }, D { l: 138, t: 0, i: 898, }, D { l: 10, t: 10, i: 804, }, D { l: 138, t: 10, i: 832, }, D { l: 12, t: 0, i: 631, }, D { l: 8, t: 10, i: 96 }, D { l: 9, t: 10, i: 36 }, D { l: 10, t: 10, i: 607, }, D { l: 11, t: 10, i: 423, }, D { l: 11, t: 10, i: 442, }, D { l: 12, t: 10, i: 309, }, D { l: 14, t: 10, i: 199, }, D { l: 15, t: 10, i: 90, }, D { l: 145, t: 10, i: 110, }, D { l: 134, t: 0, i: 1394, }, D { l: 4, t: 0, i: 652 }, D { l: 8, t: 0, i: 320 }, D { l: 22, t: 0, i: 6 }, D { l: 22, t: 0, i: 16 }, D { l: 9, t: 10, i: 13 }, D { l: 9, t: 10, i: 398, }, D { l: 9, t: 10, i: 727, }, D { l: 10, t: 10, i: 75, }, D { l: 10, t: 10, i: 184, }, D { l: 10, t: 10, i: 230, }, D { l: 10, t: 10, i: 564, }, D { l: 10, t: 10, i: 569, }, D { l: 11, t: 10, i: 973, }, D { l: 12, t: 10, i: 70, }, D { l: 12, t: 10, i: 189, }, D { l: 13, t: 10, i: 57, }, D { l: 141, t: 10, i: 257, }, D { l: 6, t: 0, i: 897 }, D { l: 134, t: 0, i: 1333, }, D { l: 4, t: 0, i: 692 }, D { l: 133, t: 0, i: 321, }, D { l: 133, t: 11, i: 373, }, D { l: 135, t: 0, i: 922, }, D { l: 5, t: 0, i: 619 }, D { l: 133, t: 0, i: 698, }, D { l: 137, t: 10, i: 631, }, D { l: 5, t: 10, i: 345, }, D { l: 135, t: 10, i: 1016, }, D { l: 9, t: 0, i: 957 }, D { l: 9, t: 0, i: 1018, }, D { l: 12, t: 0, i: 828, }, D { l: 12, t: 0, i: 844, }, D { l: 12, t: 0, i: 897, }, D { l: 12, t: 0, i: 901, }, D { l: 12, t: 0, i: 943, }, D { l: 15, t: 0, i: 180, }, D { l: 18, t: 0, i: 197, }, D { l: 18, t: 0, i: 200, }, D { l: 18, t: 0, i: 213, }, D { l: 18, t: 0, i: 214, }, D { l: 146, t: 0, i: 226, }, D { l: 5, t: 0, i: 917 }, D { l: 134, t: 0, i: 1659, }, D { l: 135, t: 0, i: 1100, }, D { l: 134, t: 0, i: 1173, }, D { l: 134, t: 0, i: 1930, }, D { l: 5, t: 0, i: 251 }, D { l: 5, t: 0, i: 956 }, D { l: 8, t: 0, i: 268 }, D { l: 9, t: 0, i: 214 }, D { l: 146, t: 0, i: 142, }, D { l: 133, t: 10, i: 673, }, D { l: 137, t: 10, i: 850, }, D { l: 4, t: 10, i: 287, }, D { l: 133, t: 10, i: 1018, }, D { l: 132, t: 11, i: 672, }, D { l: 5, t: 0, i: 346 }, D { l: 5, t: 0, i: 711 }, D { l: 8, t: 0, i: 390 }, D { l: 11, t: 11, i: 752, }, D { l: 139, t: 11, i: 885, }, D { l: 5, t: 10, i: 34 }, D { l: 10, t: 10, i: 724, }, D { l: 12, t: 10, i: 444, }, D { l: 13, t: 10, i: 354, }, D { l: 18, t: 10, i: 32, }, D { l: 23, t: 10, i: 24, }, D { l: 23, t: 10, i: 31, }, D { l: 152, t: 10, i: 5, }, D { l: 4, t: 11, i: 710, }, D { l: 134, t: 11, i: 606, }, D { l: 134, t: 0, i: 744, }, D { l: 134, t: 10, i: 382, }, D { l: 133, t: 11, i: 145, }, D { l: 4, t: 10, i: 329, }, D { l: 7, t: 11, i: 884, }, D { l: 140, t: 11, i: 124, }, D { l: 4, t: 11, i: 467, }, D { l: 5, t: 11, i: 405, }, D { l: 134, t: 11, i: 544, }, D { l: 9, t: 10, i: 846, }, D { l: 138, t: 10, i: 827, }, D { l: 133, t: 0, i: 624, }, D { l: 9, t: 11, i: 372, }, D { l: 15, t: 11, i: 2 }, D { l: 19, t: 11, i: 10, }, D { l: 147, t: 11, i: 18, }, D { l: 4, t: 11, i: 387, }, D { l: 135, t: 11, i: 1288, }, D { l: 5, t: 0, i: 783 }, D { l: 7, t: 0, i: 1998, }, D { l: 135, t: 0, i: 2047, }, D { l: 132, t: 10, i: 906, }, D { l: 136, t: 10, i: 366, }, D { l: 135, t: 11, i: 550, }, D { l: 4, t: 10, i: 123, }, D { l: 4, t: 10, i: 649, }, D { l: 5, t: 10, i: 605, }, D { l: 7, t: 10, i: 1509, }, D { l: 136, t: 10, i: 36, }, D { l: 134, t: 0, i: 1125, }, D { l: 132, t: 0, i: 594, }, D { l: 133, t: 10, i: 767, }, D { l: 135, t: 11, i: 1227, }, D { l: 136, t: 11, i: 467, }, D { l: 4, t: 11, i: 576, }, D { l: 135, t: 11, i: 1263, }, D { l: 4, t: 0, i: 268 }, D { l: 7, t: 0, i: 1534, }, D { l: 135, t: 11, i: 1534, }, D { l: 4, t: 10, i: 273, }, D { l: 5, t: 10, i: 658, }, D { l: 5, t: 11, i: 919, }, D { l: 5, t: 10, i: 995, }, D { l: 134, t: 11, i: 1673, }, D { l: 133, t: 0, i: 563, }, D { l: 134, t: 10, i: 72, }, D { l: 135, t: 10, i: 1345, }, D { l: 4, t: 11, i: 82 }, D { l: 5, t: 11, i: 333, }, D { l: 5, t: 11, i: 904, }, D { l: 6, t: 11, i: 207, }, D { l: 7, t: 11, i: 325, }, D { l: 7, t: 11, i: 1726, }, D { l: 8, t: 11, i: 101, }, D { l: 10, t: 11, i: 778, }, D { l: 139, t: 11, i: 220, }, D { l: 5, t: 0, i: 37 }, D { l: 6, t: 0, i: 39 }, D { l: 6, t: 0, i: 451 }, D { l: 7, t: 0, i: 218 }, D { l: 7, t: 0, i: 667 }, D { l: 7, t: 0, i: 1166, }, D { l: 7, t: 0, i: 1687, }, D { l: 8, t: 0, i: 662 }, D { l: 16, t: 0, i: 2 }, D { l: 133, t: 10, i: 589, }, D { l: 134, t: 0, i: 1332, }, D { l: 133, t: 11, i: 903, }, D { l: 134, t: 0, i: 508, }, D { l: 5, t: 10, i: 117, }, D { l: 6, t: 10, i: 514, }, D { l: 6, t: 10, i: 541, }, D { l: 7, t: 10, i: 1164, }, D { l: 7, t: 10, i: 1436, }, D { l: 8, t: 10, i: 220, }, D { l: 8, t: 10, i: 648, }, D { l: 10, t: 10, i: 688, }, D { l: 11, t: 10, i: 560, }, D { l: 140, t: 11, i: 147, }, D { l: 6, t: 11, i: 555, }, D { l: 135, t: 11, i: 485, }, D { l: 133, t: 10, i: 686, }, D { l: 7, t: 0, i: 453 }, D { l: 7, t: 0, i: 635 }, D { l: 7, t: 0, i: 796 }, D { l: 8, t: 0, i: 331 }, D { l: 9, t: 0, i: 330 }, D { l: 9, t: 0, i: 865 }, D { l: 10, t: 0, i: 119, }, D { l: 10, t: 0, i: 235, }, D { l: 11, t: 0, i: 111, }, D { l: 11, t: 0, i: 129, }, D { l: 11, t: 0, i: 240, }, D { l: 12, t: 0, i: 31 }, D { l: 12, t: 0, i: 66 }, D { l: 12, t: 0, i: 222, }, D { l: 12, t: 0, i: 269, }, D { l: 12, t: 0, i: 599, }, D { l: 12, t: 0, i: 684, }, D { l: 12, t: 0, i: 689, }, D { l: 12, t: 0, i: 691, }, D { l: 142, t: 0, i: 345, }, D { l: 135, t: 0, i: 1834, }, D { l: 4, t: 11, i: 705, }, D { l: 7, t: 11, i: 615, }, D { l: 138, t: 11, i: 251, }, D { l: 136, t: 11, i: 345, }, D { l: 137, t: 0, i: 527, }, D { l: 6, t: 0, i: 98 }, D { l: 7, t: 0, i: 702 }, D { l: 135, t: 0, i: 991, }, D { l: 11, t: 0, i: 576, }, D { l: 14, t: 0, i: 74 }, D { l: 7, t: 10, i: 196, }, D { l: 10, t: 10, i: 765, }, D { l: 11, t: 10, i: 347, }, D { l: 11, t: 10, i: 552, }, D { l: 11, t: 10, i: 790, }, D { l: 12, t: 10, i: 263, }, D { l: 13, t: 10, i: 246, }, D { l: 13, t: 10, i: 270, }, D { l: 13, t: 10, i: 395, }, D { l: 14, t: 10, i: 176, }, D { l: 14, t: 10, i: 190, }, D { l: 14, t: 10, i: 398, }, D { l: 14, t: 10, i: 412, }, D { l: 15, t: 10, i: 32, }, D { l: 15, t: 10, i: 63, }, D { l: 16, t: 10, i: 88, }, D { l: 147, t: 10, i: 105, }, D { l: 134, t: 11, i: 90, }, D { l: 13, t: 0, i: 84 }, D { l: 141, t: 0, i: 122, }, D { l: 6, t: 0, i: 37 }, D { l: 7, t: 0, i: 299 }, D { l: 7, t: 0, i: 1666, }, D { l: 8, t: 0, i: 195 }, D { l: 8, t: 0, i: 316 }, D { l: 9, t: 0, i: 178 }, D { l: 9, t: 0, i: 276 }, D { l: 9, t: 0, i: 339 }, D { l: 9, t: 0, i: 536 }, D { l: 10, t: 0, i: 102, }, D { l: 10, t: 0, i: 362, }, D { l: 10, t: 0, i: 785, }, D { l: 11, t: 0, i: 55 }, D { l: 11, t: 0, i: 149, }, D { l: 11, t: 0, i: 773, }, D { l: 13, t: 0, i: 416, }, D { l: 13, t: 0, i: 419, }, D { l: 14, t: 0, i: 38 }, D { l: 14, t: 0, i: 41 }, D { l: 142, t: 0, i: 210, }, D { l: 5, t: 10, i: 381, }, D { l: 135, t: 10, i: 1792, }, D { l: 7, t: 11, i: 813, }, D { l: 12, t: 11, i: 497, }, D { l: 141, t: 11, i: 56, }, D { l: 7, t: 10, i: 616, }, D { l: 138, t: 10, i: 413, }, D { l: 133, t: 0, i: 645, }, D { l: 6, t: 11, i: 125, }, D { l: 135, t: 11, i: 1277, }, D { l: 132, t: 0, i: 290, }, D { l: 6, t: 0, i: 70 }, D { l: 7, t: 0, i: 1292, }, D { l: 10, t: 0, i: 762, }, D { l: 139, t: 0, i: 288, }, D { l: 6, t: 10, i: 120, }, D { l: 7, t: 10, i: 1188, }, D { l: 7, t: 10, i: 1710, }, D { l: 8, t: 10, i: 286, }, D { l: 9, t: 10, i: 667, }, D { l: 11, t: 10, i: 592, }, D { l: 139, t: 10, i: 730, }, D { l: 135, t: 11, i: 1784, }, D { l: 7, t: 0, i: 1315, }, D { l: 135, t: 11, i: 1315, }, D { l: 134, t: 0, i: 1955, }, D { l: 135, t: 10, i: 1146, }, D { l: 7, t: 0, i: 131 }, D { l: 7, t: 0, i: 422 }, D { l: 8, t: 0, i: 210 }, D { l: 140, t: 0, i: 573, }, D { l: 4, t: 10, i: 352, }, D { l: 135, t: 10, i: 687, }, D { l: 139, t: 0, i: 797, }, D { l: 143, t: 0, i: 38, }, D { l: 14, t: 0, i: 179, }, D { l: 15, t: 0, i: 151, }, D { l: 150, t: 0, i: 11, }, D { l: 7, t: 0, i: 488 }, D { l: 4, t: 10, i: 192, }, D { l: 5, t: 10, i: 49 }, D { l: 6, t: 10, i: 200, }, D { l: 6, t: 10, i: 293, }, D { l: 134, t: 10, i: 1696, }, D { l: 132, t: 0, i: 936, }, D { l: 135, t: 11, i: 703, }, D { l: 6, t: 11, i: 160, }, D { l: 7, t: 11, i: 1106, }, D { l: 9, t: 11, i: 770, }, D { l: 10, t: 11, i: 618, }, D { l: 11, t: 11, i: 112, }, D { l: 140, t: 11, i: 413, }, D { l: 5, t: 0, i: 453 }, D { l: 134, t: 0, i: 441, }, D { l: 135, t: 0, i: 595, }, D { l: 132, t: 10, i: 650, }, D { l: 132, t: 10, i: 147, }, D { l: 6, t: 0, i: 991 }, D { l: 6, t: 0, i: 1182, }, D { l: 12, t: 11, i: 271, }, D { l: 145, t: 11, i: 109, }, D { l: 133, t: 10, i: 934, }, D { l: 140, t: 11, i: 221, }, D { l: 132, t: 0, i: 653, }, D { l: 7, t: 0, i: 505 }, D { l: 135, t: 0, i: 523, }, D { l: 134, t: 0, i: 903, }, D { l: 135, t: 11, i: 479, }, D { l: 7, t: 11, i: 304, }, D { l: 9, t: 11, i: 646, }, D { l: 9, t: 11, i: 862, }, D { l: 10, t: 11, i: 262, }, D { l: 11, t: 11, i: 696, }, D { l: 12, t: 11, i: 208, }, D { l: 15, t: 11, i: 79, }, D { l: 147, t: 11, i: 108, }, D { l: 146, t: 0, i: 80, }, D { l: 135, t: 11, i: 981, }, D { l: 142, t: 0, i: 432, }, D { l: 132, t: 0, i: 314, }, D { l: 137, t: 11, i: 152, }, D { l: 7, t: 0, i: 1368, }, D { l: 8, t: 0, i: 232 }, D { l: 8, t: 0, i: 361 }, D { l: 10, t: 0, i: 682, }, D { l: 138, t: 0, i: 742, }, D { l: 135, t: 11, i: 1586, }, D { l: 9, t: 0, i: 534 }, D { l: 4, t: 11, i: 434, }, D { l: 11, t: 11, i: 663, }, D { l: 12, t: 11, i: 210, }, D { l: 13, t: 11, i: 166, }, D { l: 13, t: 11, i: 310, }, D { l: 14, t: 11, i: 373, }, D { l: 147, t: 11, i: 43, }, D { l: 7, t: 11, i: 1091, }, D { l: 135, t: 11, i: 1765, }, D { l: 6, t: 11, i: 550, }, D { l: 135, t: 11, i: 652, }, D { l: 137, t: 0, i: 27, }, D { l: 142, t: 0, i: 12, }, D { l: 4, t: 10, i: 637, }, D { l: 5, t: 11, i: 553, }, D { l: 7, t: 11, i: 766, }, D { l: 138, t: 11, i: 824, }, D { l: 7, t: 11, i: 737, }, D { l: 8, t: 11, i: 298, }, D { l: 136, t: 11, i: 452, }, D { l: 7, t: 0, i: 736 }, D { l: 139, t: 0, i: 264, }, D { l: 134, t: 0, i: 1657, }, D { l: 133, t: 11, i: 292, }, D { l: 138, t: 11, i: 135, }, D { l: 6, t: 0, i: 844 }, D { l: 134, t: 0, i: 1117, }, D { l: 135, t: 0, i: 127, }, D { l: 9, t: 10, i: 867, }, D { l: 138, t: 10, i: 837, }, D { l: 6, t: 0, i: 1184, }, D { l: 134, t: 0, i: 1208, }, D { l: 134, t: 0, i: 1294, }, D { l: 136, t: 0, i: 364, }, D { l: 6, t: 0, i: 1415, }, D { l: 7, t: 0, i: 1334, }, D { l: 11, t: 0, i: 125, }, D { l: 6, t: 10, i: 170, }, D { l: 7, t: 11, i: 393, }, D { l: 8, t: 10, i: 395, }, D { l: 8, t: 10, i: 487, }, D { l: 10, t: 11, i: 603, }, D { l: 11, t: 11, i: 206, }, D { l: 141, t: 10, i: 147, }, D { l: 137, t: 11, i: 748, }, D { l: 4, t: 11, i: 912, }, D { l: 137, t: 11, i: 232, }, D { l: 4, t: 10, i: 535, }, D { l: 136, t: 10, i: 618, }, D { l: 137, t: 0, i: 792, }, D { l: 7, t: 11, i: 1973, }, D { l: 136, t: 11, i: 716, }, D { l: 135, t: 11, i: 98, }, D { l: 5, t: 0, i: 909 }, D { l: 9, t: 0, i: 849 }, D { l: 138, t: 0, i: 805, }, D { l: 4, t: 0, i: 630 }, D { l: 132, t: 0, i: 699, }, D { l: 5, t: 11, i: 733, }, D { l: 14, t: 11, i: 103, }, D { l: 150, t: 10, i: 23, }, D { l: 12, t: 11, i: 158, }, D { l: 18, t: 11, i: 8 }, D { l: 19, t: 11, i: 62, }, D { l: 20, t: 11, i: 6 }, D { l: 22, t: 11, i: 4 }, D { l: 23, t: 11, i: 2 }, D { l: 151, t: 11, i: 9, }, D { l: 132, t: 0, i: 968, }, D { l: 132, t: 10, i: 778, }, D { l: 132, t: 10, i: 46, }, D { l: 5, t: 10, i: 811, }, D { l: 6, t: 10, i: 1679, }, D { l: 6, t: 10, i: 1714, }, D { l: 135, t: 10, i: 2032, }, D { l: 6, t: 0, i: 1446, }, D { l: 7, t: 10, i: 1458, }, D { l: 9, t: 10, i: 407, }, D { l: 139, t: 10, i: 15, }, D { l: 7, t: 0, i: 206 }, D { l: 7, t: 0, i: 397 }, D { l: 7, t: 0, i: 621 }, D { l: 7, t: 0, i: 640 }, D { l: 8, t: 0, i: 124 }, D { l: 8, t: 0, i: 619 }, D { l: 9, t: 0, i: 305 }, D { l: 9, t: 0, i: 643 }, D { l: 10, t: 0, i: 264, }, D { l: 10, t: 0, i: 628, }, D { l: 11, t: 0, i: 40 }, D { l: 12, t: 0, i: 349, }, D { l: 13, t: 0, i: 134, }, D { l: 13, t: 0, i: 295, }, D { l: 14, t: 0, i: 155, }, D { l: 15, t: 0, i: 120, }, D { l: 18, t: 0, i: 105, }, D { l: 6, t: 10, i: 34 }, D { l: 7, t: 10, i: 1089, }, D { l: 8, t: 10, i: 708, }, D { l: 8, t: 10, i: 721, }, D { l: 9, t: 10, i: 363, }, D { l: 148, t: 10, i: 98, }, D { l: 4, t: 0, i: 262 }, D { l: 5, t: 0, i: 641 }, D { l: 135, t: 0, i: 342, }, D { l: 137, t: 11, i: 72, }, D { l: 4, t: 0, i: 99 }, D { l: 6, t: 0, i: 250 }, D { l: 6, t: 0, i: 346 }, D { l: 8, t: 0, i: 127 }, D { l: 138, t: 0, i: 81, }, D { l: 132, t: 0, i: 915, }, D { l: 5, t: 0, i: 75 }, D { l: 9, t: 0, i: 517 }, D { l: 10, t: 0, i: 470, }, D { l: 12, t: 0, i: 155, }, D { l: 141, t: 0, i: 224, }, D { l: 132, t: 10, i: 462, }, D { l: 11, t: 11, i: 600, }, D { l: 11, t: 11, i: 670, }, D { l: 141, t: 11, i: 245, }, D { l: 142, t: 0, i: 83, }, D { l: 5, t: 10, i: 73 }, D { l: 6, t: 10, i: 23 }, D { l: 134, t: 10, i: 338, }, D { l: 6, t: 0, i: 1031, }, D { l: 139, t: 11, i: 923, }, D { l: 7, t: 11, i: 164, }, D { l: 7, t: 11, i: 1571, }, D { l: 9, t: 11, i: 107, }, D { l: 140, t: 11, i: 225, }, D { l: 134, t: 0, i: 1470, }, D { l: 133, t: 0, i: 954, }, D { l: 6, t: 0, i: 304 }, D { l: 8, t: 0, i: 418 }, D { l: 10, t: 0, i: 345, }, D { l: 11, t: 0, i: 341, }, D { l: 139, t: 0, i: 675, }, D { l: 9, t: 0, i: 410 }, D { l: 139, t: 0, i: 425, }, D { l: 4, t: 11, i: 27 }, D { l: 5, t: 11, i: 484, }, D { l: 5, t: 11, i: 510, }, D { l: 6, t: 11, i: 434, }, D { l: 7, t: 11, i: 1000, }, D { l: 7, t: 11, i: 1098, }, D { l: 8, t: 11, i: 2 }, D { l: 136, t: 11, i: 200, }, D { l: 134, t: 0, i: 734, }, D { l: 140, t: 11, i: 257, }, D { l: 7, t: 10, i: 725, }, D { l: 8, t: 10, i: 498, }, D { l: 139, t: 10, i: 268, }, D { l: 134, t: 0, i: 1822, }, D { l: 135, t: 0, i: 1798, }, D { l: 135, t: 10, i: 773, }, D { l: 132, t: 11, i: 460, }, D { l: 4, t: 11, i: 932, }, D { l: 133, t: 11, i: 891, }, D { l: 134, t: 0, i: 14, }, D { l: 132, t: 10, i: 583, }, D { l: 7, t: 10, i: 1462, }, D { l: 8, t: 11, i: 625, }, D { l: 139, t: 10, i: 659, }, D { l: 5, t: 0, i: 113 }, D { l: 6, t: 0, i: 243 }, D { l: 6, t: 0, i: 1708, }, D { l: 7, t: 0, i: 1865, }, D { l: 11, t: 0, i: 161, }, D { l: 16, t: 0, i: 37 }, D { l: 17, t: 0, i: 99 }, D { l: 133, t: 10, i: 220, }, D { l: 134, t: 11, i: 76, }, D { l: 5, t: 11, i: 461, }, D { l: 135, t: 11, i: 1925, }, D { l: 140, t: 0, i: 69, }, D { l: 8, t: 11, i: 92 }, D { l: 137, t: 11, i: 221, }, D { l: 139, t: 10, i: 803, }, D { l: 132, t: 10, i: 544, }, D { l: 4, t: 0, i: 274 }, D { l: 134, t: 0, i: 922, }, D { l: 132, t: 0, i: 541, }, D { l: 5, t: 0, i: 627 }, D { l: 6, t: 10, i: 437, }, D { l: 6, t: 10, i: 564, }, D { l: 11, t: 10, i: 181, }, D { l: 141, t: 10, i: 183, }, D { l: 135, t: 10, i: 1192, }, D { l: 7, t: 0, i: 166 }, D { l: 132, t: 11, i: 763, }, D { l: 133, t: 11, i: 253, }, D { l: 134, t: 0, i: 849, }, D { l: 9, t: 11, i: 73 }, D { l: 10, t: 11, i: 110, }, D { l: 14, t: 11, i: 185, }, D { l: 145, t: 11, i: 119, }, D { l: 5, t: 11, i: 212, }, D { l: 12, t: 11, i: 35, }, D { l: 141, t: 11, i: 382, }, D { l: 133, t: 0, i: 717, }, D { l: 137, t: 0, i: 304, }, D { l: 136, t: 0, i: 600, }, D { l: 133, t: 0, i: 654, }, D { l: 6, t: 0, i: 273 }, D { l: 10, t: 0, i: 188, }, D { l: 13, t: 0, i: 377, }, D { l: 146, t: 0, i: 77, }, D { l: 4, t: 10, i: 790, }, D { l: 5, t: 10, i: 273, }, D { l: 134, t: 10, i: 394, }, D { l: 132, t: 0, i: 543, }, D { l: 135, t: 0, i: 410, }, D { l: 11, t: 0, i: 98 }, D { l: 11, t: 0, i: 524, }, D { l: 141, t: 0, i: 87, }, D { l: 132, t: 0, i: 941, }, D { l: 135, t: 11, i: 1175, }, D { l: 4, t: 0, i: 250 }, D { l: 7, t: 0, i: 1612, }, D { l: 11, t: 0, i: 186, }, D { l: 12, t: 0, i: 133, }, D { l: 6, t: 10, i: 127, }, D { l: 7, t: 10, i: 1511, }, D { l: 8, t: 10, i: 613, }, D { l: 12, t: 10, i: 495, }, D { l: 12, t: 10, i: 586, }, D { l: 12, t: 10, i: 660, }, D { l: 12, t: 10, i: 668, }, D { l: 14, t: 10, i: 385, }, D { l: 15, t: 10, i: 118, }, D { l: 17, t: 10, i: 20, }, D { l: 146, t: 10, i: 98, }, D { l: 6, t: 0, i: 1785, }, D { l: 133, t: 11, i: 816, }, D { l: 134, t: 0, i: 1339, }, D { l: 7, t: 0, i: 961 }, D { l: 7, t: 0, i: 1085, }, D { l: 7, t: 0, i: 1727, }, D { l: 8, t: 0, i: 462 }, D { l: 6, t: 10, i: 230, }, D { l: 135, t: 11, i: 1727, }, D { l: 9, t: 0, i: 636 }, D { l: 135, t: 10, i: 1954, }, D { l: 132, t: 0, i: 780, }, D { l: 5, t: 11, i: 869, }, D { l: 5, t: 11, i: 968, }, D { l: 6, t: 11, i: 1626, }, D { l: 8, t: 11, i: 734, }, D { l: 136, t: 11, i: 784, }, D { l: 4, t: 11, i: 542, }, D { l: 6, t: 11, i: 1716, }, D { l: 6, t: 11, i: 1727, }, D { l: 7, t: 11, i: 1082, }, D { l: 7, t: 11, i: 1545, }, D { l: 8, t: 11, i: 56 }, D { l: 8, t: 11, i: 118, }, D { l: 8, t: 11, i: 412, }, D { l: 8, t: 11, i: 564, }, D { l: 9, t: 11, i: 888, }, D { l: 9, t: 11, i: 908, }, D { l: 10, t: 11, i: 50, }, D { l: 10, t: 11, i: 423, }, D { l: 11, t: 11, i: 685, }, D { l: 11, t: 11, i: 697, }, D { l: 11, t: 11, i: 933, }, D { l: 12, t: 11, i: 299, }, D { l: 13, t: 11, i: 126, }, D { l: 13, t: 11, i: 136, }, D { l: 13, t: 11, i: 170, }, D { l: 141, t: 11, i: 190, }, D { l: 134, t: 11, i: 226, }, D { l: 4, t: 11, i: 232, }, D { l: 9, t: 11, i: 202, }, D { l: 10, t: 11, i: 474, }, D { l: 140, t: 11, i: 433, }, D { l: 137, t: 11, i: 500, }, D { l: 5, t: 0, i: 529 }, D { l: 136, t: 10, i: 68, }, D { l: 132, t: 10, i: 654, }, D { l: 4, t: 10, i: 156, }, D { l: 7, t: 10, i: 998, }, D { l: 7, t: 10, i: 1045, }, D { l: 7, t: 10, i: 1860, }, D { l: 9, t: 10, i: 48 }, D { l: 9, t: 10, i: 692, }, D { l: 11, t: 10, i: 419, }, D { l: 139, t: 10, i: 602, }, D { l: 7, t: 0, i: 1276, }, D { l: 8, t: 0, i: 474 }, D { l: 9, t: 0, i: 652 }, D { l: 6, t: 11, i: 108, }, D { l: 7, t: 11, i: 1003, }, D { l: 7, t: 11, i: 1181, }, D { l: 136, t: 11, i: 343, }, D { l: 7, t: 11, i: 1264, }, D { l: 7, t: 11, i: 1678, }, D { l: 11, t: 11, i: 945, }, D { l: 12, t: 11, i: 341, }, D { l: 12, t: 11, i: 471, }, D { l: 140, t: 11, i: 569, }, D { l: 134, t: 11, i: 1712, }, D { l: 5, t: 0, i: 948 }, D { l: 12, t: 0, i: 468, }, D { l: 19, t: 0, i: 96 }, D { l: 148, t: 0, i: 24, }, D { l: 4, t: 11, i: 133, }, D { l: 7, t: 11, i: 711, }, D { l: 7, t: 11, i: 1298, }, D { l: 7, t: 11, i: 1585, }, D { l: 135, t: 11, i: 1929, }, D { l: 6, t: 0, i: 753 }, D { l: 140, t: 0, i: 657, }, D { l: 139, t: 0, i: 941, }, D { l: 6, t: 11, i: 99 }, D { l: 7, t: 11, i: 1808, }, D { l: 145, t: 11, i: 57, }, D { l: 6, t: 11, i: 574, }, D { l: 7, t: 11, i: 428, }, D { l: 7, t: 11, i: 1250, }, D { l: 10, t: 11, i: 669, }, D { l: 11, t: 11, i: 485, }, D { l: 11, t: 11, i: 840, }, D { l: 12, t: 11, i: 300, }, D { l: 142, t: 11, i: 250, }, D { l: 4, t: 0, i: 532 }, D { l: 5, t: 0, i: 706 }, D { l: 135, t: 0, i: 662, }, D { l: 5, t: 0, i: 837 }, D { l: 6, t: 0, i: 1651, }, D { l: 139, t: 0, i: 985, }, D { l: 7, t: 0, i: 1861, }, D { l: 9, t: 10, i: 197, }, D { l: 10, t: 10, i: 300, }, D { l: 12, t: 10, i: 473, }, D { l: 13, t: 10, i: 90, }, D { l: 141, t: 10, i: 405, }, D { l: 137, t: 11, i: 252, }, D { l: 6, t: 11, i: 323, }, D { l: 135, t: 11, i: 1564, }, D { l: 4, t: 0, i: 330 }, D { l: 4, t: 0, i: 863 }, D { l: 7, t: 0, i: 933 }, D { l: 7, t: 0, i: 2012, }, D { l: 8, t: 0, i: 292 }, D { l: 7, t: 11, i: 461, }, D { l: 8, t: 11, i: 775, }, D { l: 138, t: 11, i: 435, }, D { l: 132, t: 10, i: 606, }, D { l: 4, t: 11, i: 655, }, D { l: 7, t: 11, i: 850, }, D { l: 17, t: 11, i: 75, }, D { l: 146, t: 11, i: 137, }, D { l: 135, t: 0, i: 767, }, D { l: 7, t: 10, i: 1978, }, D { l: 136, t: 10, i: 676, }, D { l: 132, t: 0, i: 641, }, D { l: 135, t: 11, i: 1559, }, D { l: 134, t: 0, i: 1233, }, D { l: 137, t: 0, i: 242, }, D { l: 17, t: 0, i: 114, }, D { l: 4, t: 10, i: 361, }, D { l: 133, t: 10, i: 315, }, D { l: 137, t: 0, i: 883, }, D { l: 132, t: 10, i: 461, }, D { l: 138, t: 0, i: 274, }, D { l: 134, t: 0, i: 2008, }, D { l: 134, t: 0, i: 1794, }, D { l: 4, t: 0, i: 703 }, D { l: 135, t: 0, i: 207, }, D { l: 12, t: 0, i: 285, }, D { l: 132, t: 10, i: 472, }, D { l: 132, t: 0, i: 571, }, D { l: 5, t: 0, i: 873 }, D { l: 5, t: 0, i: 960 }, D { l: 8, t: 0, i: 823 }, D { l: 9, t: 0, i: 881 }, D { l: 136, t: 11, i: 577, }, D { l: 7, t: 0, i: 617 }, D { l: 10, t: 0, i: 498, }, D { l: 11, t: 0, i: 501, }, D { l: 12, t: 0, i: 16 }, D { l: 140, t: 0, i: 150, }, D { l: 138, t: 10, i: 747, }, D { l: 132, t: 0, i: 431, }, D { l: 133, t: 10, i: 155, }, D { l: 11, t: 0, i: 283, }, D { l: 11, t: 0, i: 567, }, D { l: 7, t: 10, i: 163, }, D { l: 8, t: 10, i: 319, }, D { l: 9, t: 10, i: 402, }, D { l: 10, t: 10, i: 24, }, D { l: 10, t: 10, i: 681, }, D { l: 11, t: 10, i: 200, }, D { l: 12, t: 10, i: 253, }, D { l: 12, t: 10, i: 410, }, D { l: 142, t: 10, i: 219, }, D { l: 4, t: 11, i: 413, }, D { l: 5, t: 11, i: 677, }, D { l: 8, t: 11, i: 432, }, D { l: 140, t: 11, i: 280, }, D { l: 9, t: 0, i: 401 }, D { l: 5, t: 10, i: 475, }, D { l: 7, t: 10, i: 1780, }, D { l: 11, t: 10, i: 297, }, D { l: 11, t: 10, i: 558, }, D { l: 14, t: 10, i: 322, }, D { l: 147, t: 10, i: 76, }, D { l: 6, t: 0, i: 781 }, D { l: 9, t: 0, i: 134 }, D { l: 10, t: 0, i: 2 }, D { l: 10, t: 0, i: 27 }, D { l: 10, t: 0, i: 333, }, D { l: 11, t: 0, i: 722, }, D { l: 143, t: 0, i: 1 }, D { l: 5, t: 0, i: 33 }, D { l: 6, t: 0, i: 470 }, D { l: 139, t: 0, i: 424, }, D { l: 135, t: 0, i: 2006, }, D { l: 12, t: 0, i: 783, }, D { l: 135, t: 10, i: 1956, }, D { l: 136, t: 0, i: 274, }, D { l: 135, t: 0, i: 1882, }, D { l: 132, t: 0, i: 794, }, D { l: 135, t: 0, i: 1848, }, D { l: 5, t: 10, i: 944, }, D { l: 134, t: 10, i: 1769, }, D { l: 6, t: 0, i: 47 }, D { l: 7, t: 0, i: 90 }, D { l: 7, t: 0, i: 664 }, D { l: 7, t: 0, i: 830 }, D { l: 7, t: 0, i: 1380, }, D { l: 7, t: 0, i: 2025, }, D { l: 8, t: 0, i: 448 }, D { l: 136, t: 0, i: 828, }, D { l: 132, t: 10, i: 144, }, D { l: 134, t: 0, i: 1199, }, D { l: 4, t: 11, i: 395, }, D { l: 139, t: 11, i: 762, }, D { l: 135, t: 11, i: 1504, }, D { l: 9, t: 0, i: 417 }, D { l: 137, t: 0, i: 493, }, D { l: 9, t: 11, i: 174, }, D { l: 10, t: 11, i: 164, }, D { l: 11, t: 11, i: 440, }, D { l: 11, t: 11, i: 841, }, D { l: 143, t: 11, i: 98, }, D { l: 134, t: 11, i: 426, }, D { l: 139, t: 11, i: 1002, }, D { l: 134, t: 0, i: 295, }, D { l: 134, t: 0, i: 816, }, D { l: 6, t: 10, i: 247, }, D { l: 137, t: 10, i: 555, }, D { l: 133, t: 0, i: 1019, }, D { l: 4, t: 0, i: 620 }, D { l: 5, t: 11, i: 476, }, D { l: 10, t: 10, i: 280, }, D { l: 138, t: 10, i: 797, }, D { l: 139, t: 0, i: 464, }, D { l: 5, t: 11, i: 76 }, D { l: 6, t: 11, i: 458, }, D { l: 6, t: 11, i: 497, }, D { l: 7, t: 11, i: 764, }, D { l: 7, t: 11, i: 868, }, D { l: 9, t: 11, i: 658, }, D { l: 10, t: 11, i: 594, }, D { l: 11, t: 11, i: 173, }, D { l: 11, t: 11, i: 566, }, D { l: 12, t: 11, i: 20, }, D { l: 12, t: 11, i: 338, }, D { l: 141, t: 11, i: 200, }, D { l: 134, t: 0, i: 208, }, D { l: 4, t: 11, i: 526, }, D { l: 7, t: 11, i: 1029, }, D { l: 135, t: 11, i: 1054, }, D { l: 132, t: 11, i: 636, }, D { l: 6, t: 11, i: 233, }, D { l: 7, t: 11, i: 660, }, D { l: 7, t: 11, i: 1124, }, D { l: 17, t: 11, i: 31, }, D { l: 19, t: 11, i: 22, }, D { l: 151, t: 11, i: 14, }, D { l: 10, t: 0, i: 442, }, D { l: 133, t: 10, i: 428, }, D { l: 10, t: 0, i: 930, }, D { l: 140, t: 0, i: 778, }, D { l: 6, t: 0, i: 68 }, D { l: 7, t: 0, i: 448 }, D { l: 7, t: 0, i: 1629, }, D { l: 7, t: 0, i: 1769, }, D { l: 7, t: 0, i: 1813, }, D { l: 8, t: 0, i: 442 }, D { l: 8, t: 0, i: 516 }, D { l: 9, t: 0, i: 710 }, D { l: 10, t: 0, i: 282, }, D { l: 10, t: 0, i: 722, }, D { l: 7, t: 10, i: 1717, }, D { l: 138, t: 10, i: 546, }, D { l: 134, t: 0, i: 1128, }, D { l: 11, t: 0, i: 844, }, D { l: 12, t: 0, i: 104, }, D { l: 140, t: 0, i: 625, }, D { l: 4, t: 11, i: 432, }, D { l: 135, t: 11, i: 824, }, D { l: 138, t: 10, i: 189, }, D { l: 133, t: 0, i: 787, }, D { l: 133, t: 10, i: 99, }, D { l: 4, t: 11, i: 279, }, D { l: 7, t: 11, i: 301, }, D { l: 137, t: 11, i: 362, }, D { l: 8, t: 0, i: 491 }, D { l: 4, t: 10, i: 397, }, D { l: 136, t: 10, i: 555, }, D { l: 4, t: 11, i: 178, }, D { l: 133, t: 11, i: 399, }, D { l: 134, t: 0, i: 711, }, D { l: 144, t: 0, i: 9 }, D { l: 4, t: 0, i: 403 }, D { l: 5, t: 0, i: 441 }, D { l: 7, t: 0, i: 450 }, D { l: 10, t: 0, i: 840, }, D { l: 11, t: 0, i: 101, }, D { l: 12, t: 0, i: 193, }, D { l: 141, t: 0, i: 430, }, D { l: 135, t: 11, i: 1246, }, D { l: 12, t: 10, i: 398, }, D { l: 20, t: 10, i: 39, }, D { l: 21, t: 10, i: 11, }, D { l: 150, t: 10, i: 41, }, D { l: 4, t: 10, i: 485, }, D { l: 7, t: 10, i: 353, }, D { l: 135, t: 10, i: 1523, }, D { l: 6, t: 10, i: 366, }, D { l: 7, t: 10, i: 1384, }, D { l: 7, t: 10, i: 1601, }, D { l: 135, t: 11, i: 1912, }, D { l: 7, t: 0, i: 396 }, D { l: 10, t: 0, i: 160, }, D { l: 135, t: 11, i: 396, }, D { l: 137, t: 10, i: 282, }, D { l: 134, t: 11, i: 1692, }, D { l: 4, t: 10, i: 157, }, D { l: 5, t: 10, i: 471, }, D { l: 6, t: 11, i: 202, }, D { l: 10, t: 11, i: 448, }, D { l: 11, t: 11, i: 208, }, D { l: 12, t: 11, i: 360, }, D { l: 17, t: 11, i: 117, }, D { l: 17, t: 11, i: 118, }, D { l: 18, t: 11, i: 27, }, D { l: 148, t: 11, i: 67, }, D { l: 133, t: 0, i: 679, }, D { l: 137, t: 0, i: 326, }, D { l: 136, t: 10, i: 116, }, D { l: 7, t: 11, i: 872, }, D { l: 10, t: 11, i: 516, }, D { l: 139, t: 11, i: 167, }, D { l: 132, t: 11, i: 224, }, D { l: 5, t: 11, i: 546, }, D { l: 7, t: 11, i: 35 }, D { l: 8, t: 11, i: 11 }, D { l: 8, t: 11, i: 12 }, D { l: 9, t: 11, i: 315, }, D { l: 9, t: 11, i: 533, }, D { l: 10, t: 11, i: 802, }, D { l: 11, t: 11, i: 166, }, D { l: 12, t: 11, i: 525, }, D { l: 142, t: 11, i: 243, }, D { l: 7, t: 0, i: 1128, }, D { l: 135, t: 11, i: 1920, }, D { l: 5, t: 11, i: 241, }, D { l: 8, t: 11, i: 242, }, D { l: 9, t: 11, i: 451, }, D { l: 10, t: 11, i: 667, }, D { l: 11, t: 11, i: 598, }, D { l: 140, t: 11, i: 429, }, D { l: 6, t: 0, i: 737 }, D { l: 5, t: 10, i: 160, }, D { l: 7, t: 10, i: 363, }, D { l: 7, t: 10, i: 589, }, D { l: 10, t: 10, i: 170, }, D { l: 141, t: 10, i: 55, }, D { l: 135, t: 0, i: 1796, }, D { l: 142, t: 11, i: 254, }, D { l: 4, t: 0, i: 574 }, D { l: 7, t: 0, i: 350 }, D { l: 7, t: 0, i: 1024, }, D { l: 8, t: 0, i: 338 }, D { l: 9, t: 0, i: 677 }, D { l: 138, t: 0, i: 808, }, D { l: 134, t: 0, i: 1096, }, D { l: 137, t: 11, i: 516, }, D { l: 7, t: 0, i: 405 }, D { l: 10, t: 0, i: 491, }, D { l: 4, t: 10, i: 108, }, D { l: 4, t: 11, i: 366, }, D { l: 139, t: 10, i: 498, }, D { l: 11, t: 11, i: 337, }, D { l: 142, t: 11, i: 303, }, D { l: 134, t: 11, i: 1736, }, D { l: 7, t: 0, i: 1081, }, D { l: 140, t: 11, i: 364, }, D { l: 7, t: 10, i: 1005, }, D { l: 140, t: 10, i: 609, }, D { l: 7, t: 0, i: 1676, }, D { l: 4, t: 10, i: 895, }, D { l: 133, t: 10, i: 772, }, D { l: 135, t: 0, i: 2037, }, D { l: 6, t: 0, i: 1207, }, D { l: 11, t: 11, i: 916, }, D { l: 142, t: 11, i: 419, }, D { l: 14, t: 11, i: 140, }, D { l: 148, t: 11, i: 41, }, D { l: 6, t: 11, i: 331, }, D { l: 136, t: 11, i: 623, }, D { l: 9, t: 0, i: 944 }, D { l: 9, t: 0, i: 969 }, D { l: 9, t: 0, i: 1022, }, D { l: 12, t: 0, i: 913, }, D { l: 12, t: 0, i: 936, }, D { l: 15, t: 0, i: 177, }, D { l: 15, t: 0, i: 193, }, D { l: 4, t: 10, i: 926, }, D { l: 133, t: 10, i: 983, }, D { l: 5, t: 0, i: 354 }, D { l: 135, t: 11, i: 506, }, D { l: 8, t: 0, i: 598 }, D { l: 9, t: 0, i: 664 }, D { l: 138, t: 0, i: 441, }, D { l: 4, t: 11, i: 640, }, D { l: 133, t: 11, i: 513, }, D { l: 137, t: 0, i: 297, }, D { l: 132, t: 10, i: 538, }, D { l: 6, t: 10, i: 294, }, D { l: 7, t: 10, i: 1267, }, D { l: 136, t: 10, i: 624, }, D { l: 7, t: 0, i: 1772, }, D { l: 7, t: 11, i: 1888, }, D { l: 8, t: 11, i: 289, }, D { l: 11, t: 11, i: 45, }, D { l: 12, t: 11, i: 278, }, D { l: 140, t: 11, i: 537, }, D { l: 135, t: 10, i: 1325, }, D { l: 138, t: 0, i: 751, }, D { l: 141, t: 0, i: 37, }, D { l: 134, t: 0, i: 1828, }, D { l: 132, t: 10, i: 757, }, D { l: 132, t: 11, i: 394, }, D { l: 6, t: 0, i: 257 }, D { l: 135, t: 0, i: 1522, }, D { l: 4, t: 0, i: 582 }, D { l: 9, t: 0, i: 191 }, D { l: 135, t: 11, i: 1931, }, D { l: 7, t: 11, i: 574, }, D { l: 7, t: 11, i: 1719, }, D { l: 137, t: 11, i: 145, }, D { l: 132, t: 11, i: 658, }, D { l: 10, t: 0, i: 790, }, D { l: 132, t: 11, i: 369, }, D { l: 9, t: 11, i: 781, }, D { l: 10, t: 11, i: 144, }, D { l: 11, t: 11, i: 385, }, D { l: 13, t: 11, i: 161, }, D { l: 13, t: 11, i: 228, }, D { l: 13, t: 11, i: 268, }, D { l: 148, t: 11, i: 107, }, D { l: 8, t: 0, i: 469 }, D { l: 10, t: 0, i: 47 }, D { l: 136, t: 11, i: 374, }, D { l: 6, t: 0, i: 306 }, D { l: 7, t: 0, i: 1140, }, D { l: 7, t: 0, i: 1340, }, D { l: 8, t: 0, i: 133 }, D { l: 138, t: 0, i: 449, }, D { l: 139, t: 0, i: 1011, }, D { l: 7, t: 10, i: 1875, }, D { l: 139, t: 10, i: 124, }, D { l: 4, t: 11, i: 344, }, D { l: 6, t: 11, i: 498, }, D { l: 139, t: 11, i: 323, }, D { l: 137, t: 0, i: 299, }, D { l: 132, t: 0, i: 837, }, D { l: 133, t: 11, i: 906, }, D { l: 5, t: 0, i: 329 }, D { l: 8, t: 0, i: 260 }, D { l: 138, t: 0, i: 10, }, D { l: 134, t: 0, i: 1320, }, D { l: 4, t: 0, i: 657 }, D { l: 146, t: 0, i: 158, }, D { l: 135, t: 0, i: 1191, }, D { l: 152, t: 0, i: 7 }, D { l: 6, t: 0, i: 1939, }, D { l: 8, t: 0, i: 974 }, D { l: 138, t: 0, i: 996, }, D { l: 135, t: 0, i: 1665, }, D { l: 11, t: 11, i: 126, }, D { l: 139, t: 11, i: 287, }, D { l: 143, t: 0, i: 8 }, D { l: 14, t: 11, i: 149, }, D { l: 14, t: 11, i: 399, }, D { l: 143, t: 11, i: 57, }, D { l: 5, t: 0, i: 66 }, D { l: 7, t: 0, i: 1896, }, D { l: 136, t: 0, i: 288, }, D { l: 7, t: 0, i: 175 }, D { l: 10, t: 0, i: 494, }, D { l: 5, t: 10, i: 150, }, D { l: 8, t: 10, i: 603, }, D { l: 9, t: 10, i: 593, }, D { l: 9, t: 10, i: 634, }, D { l: 10, t: 10, i: 173, }, D { l: 11, t: 10, i: 462, }, D { l: 11, t: 10, i: 515, }, D { l: 13, t: 10, i: 216, }, D { l: 13, t: 10, i: 288, }, D { l: 142, t: 10, i: 400, }, D { l: 134, t: 0, i: 1643, }, D { l: 136, t: 11, i: 21, }, D { l: 4, t: 0, i: 21 }, D { l: 5, t: 0, i: 91 }, D { l: 5, t: 0, i: 648 }, D { l: 5, t: 0, i: 750 }, D { l: 5, t: 0, i: 781 }, D { l: 6, t: 0, i: 54 }, D { l: 6, t: 0, i: 112 }, D { l: 6, t: 0, i: 402 }, D { l: 6, t: 0, i: 1732, }, D { l: 7, t: 0, i: 315 }, D { l: 7, t: 0, i: 749 }, D { l: 7, t: 0, i: 1427, }, D { l: 7, t: 0, i: 1900, }, D { l: 9, t: 0, i: 78 }, D { l: 9, t: 0, i: 508 }, D { l: 10, t: 0, i: 611, }, D { l: 10, t: 0, i: 811, }, D { l: 11, t: 0, i: 510, }, D { l: 11, t: 0, i: 728, }, D { l: 13, t: 0, i: 36 }, D { l: 14, t: 0, i: 39 }, D { l: 16, t: 0, i: 83 }, D { l: 17, t: 0, i: 124, }, D { l: 148, t: 0, i: 30, }, D { l: 4, t: 0, i: 668 }, D { l: 136, t: 0, i: 570, }, D { l: 10, t: 0, i: 322, }, D { l: 10, t: 0, i: 719, }, D { l: 139, t: 0, i: 407, }, D { l: 135, t: 11, i: 1381, }, D { l: 136, t: 11, i: 193, }, D { l: 12, t: 10, i: 108, }, D { l: 141, t: 10, i: 291, }, D { l: 132, t: 11, i: 616, }, D { l: 136, t: 11, i: 692, }, D { l: 8, t: 0, i: 125 }, D { l: 8, t: 0, i: 369 }, D { l: 8, t: 0, i: 524 }, D { l: 10, t: 0, i: 486, }, D { l: 11, t: 0, i: 13 }, D { l: 11, t: 0, i: 381, }, D { l: 11, t: 0, i: 736, }, D { l: 11, t: 0, i: 766, }, D { l: 11, t: 0, i: 845, }, D { l: 13, t: 0, i: 114, }, D { l: 13, t: 0, i: 292, }, D { l: 142, t: 0, i: 47, }, D { l: 134, t: 0, i: 1247, }, D { l: 6, t: 0, i: 1684, }, D { l: 6, t: 0, i: 1731, }, D { l: 7, t: 0, i: 356 }, D { l: 8, t: 0, i: 54 }, D { l: 8, t: 0, i: 221 }, D { l: 9, t: 0, i: 225 }, D { l: 9, t: 0, i: 356 }, D { l: 10, t: 0, i: 77 }, D { l: 10, t: 0, i: 446, }, D { l: 10, t: 0, i: 731, }, D { l: 12, t: 0, i: 404, }, D { l: 141, t: 0, i: 491, }, D { l: 135, t: 10, i: 1777, }, D { l: 4, t: 11, i: 305, }, D { l: 4, t: 10, i: 493, }, D { l: 144, t: 10, i: 55, }, D { l: 4, t: 0, i: 951 }, D { l: 6, t: 0, i: 1809, }, D { l: 6, t: 0, i: 1849, }, D { l: 8, t: 0, i: 846 }, D { l: 8, t: 0, i: 866 }, D { l: 8, t: 0, i: 899 }, D { l: 10, t: 0, i: 896, }, D { l: 12, t: 0, i: 694, }, D { l: 142, t: 0, i: 468, }, D { l: 5, t: 11, i: 214, }, D { l: 7, t: 11, i: 603, }, D { l: 8, t: 11, i: 611, }, D { l: 9, t: 11, i: 686, }, D { l: 10, t: 11, i: 88, }, D { l: 11, t: 11, i: 459, }, D { l: 11, t: 11, i: 496, }, D { l: 12, t: 11, i: 463, }, D { l: 12, t: 11, i: 590, }, D { l: 13, t: 11, i: 0 }, D { l: 142, t: 11, i: 214, }, D { l: 132, t: 0, i: 411, }, D { l: 4, t: 0, i: 80 }, D { l: 133, t: 0, i: 44, }, D { l: 140, t: 11, i: 74, }, D { l: 143, t: 0, i: 31, }, D { l: 7, t: 0, i: 669 }, D { l: 6, t: 10, i: 568, }, D { l: 7, t: 10, i: 1804, }, D { l: 8, t: 10, i: 362, }, D { l: 8, t: 10, i: 410, }, D { l: 8, t: 10, i: 830, }, D { l: 9, t: 10, i: 514, }, D { l: 11, t: 10, i: 649, }, D { l: 142, t: 10, i: 157, }, D { l: 7, t: 0, i: 673 }, D { l: 134, t: 11, i: 1703, }, D { l: 132, t: 10, i: 625, }, D { l: 134, t: 0, i: 1303, }, D { l: 5, t: 0, i: 299 }, D { l: 135, t: 0, i: 1083, }, D { l: 138, t: 0, i: 704, }, D { l: 6, t: 0, i: 275 }, D { l: 7, t: 0, i: 408 }, D { l: 6, t: 10, i: 158, }, D { l: 7, t: 10, i: 129, }, D { l: 7, t: 10, i: 181, }, D { l: 8, t: 10, i: 276, }, D { l: 8, t: 10, i: 377, }, D { l: 10, t: 10, i: 523, }, D { l: 11, t: 10, i: 816, }, D { l: 12, t: 10, i: 455, }, D { l: 13, t: 10, i: 303, }, D { l: 142, t: 10, i: 135, }, D { l: 4, t: 0, i: 219 }, D { l: 7, t: 0, i: 367 }, D { l: 7, t: 0, i: 1713, }, D { l: 7, t: 0, i: 1761, }, D { l: 9, t: 0, i: 86 }, D { l: 9, t: 0, i: 537 }, D { l: 10, t: 0, i: 165, }, D { l: 12, t: 0, i: 219, }, D { l: 140, t: 0, i: 561, }, D { l: 8, t: 0, i: 216 }, D { l: 4, t: 10, i: 1 }, D { l: 4, t: 11, i: 737, }, D { l: 6, t: 11, i: 317, }, D { l: 7, t: 10, i: 1143, }, D { l: 7, t: 10, i: 1463, }, D { l: 9, t: 10, i: 207, }, D { l: 9, t: 10, i: 390, }, D { l: 9, t: 10, i: 467, }, D { l: 10, t: 11, i: 98, }, D { l: 11, t: 11, i: 294, }, D { l: 11, t: 10, i: 836, }, D { l: 12, t: 11, i: 60, }, D { l: 12, t: 11, i: 437, }, D { l: 13, t: 11, i: 64, }, D { l: 13, t: 11, i: 380, }, D { l: 142, t: 11, i: 430, }, D { l: 6, t: 11, i: 1758, }, D { l: 8, t: 11, i: 520, }, D { l: 9, t: 11, i: 345, }, D { l: 9, t: 11, i: 403, }, D { l: 142, t: 11, i: 350, }, D { l: 5, t: 11, i: 47 }, D { l: 10, t: 11, i: 242, }, D { l: 138, t: 11, i: 579, }, D { l: 5, t: 11, i: 139, }, D { l: 7, t: 11, i: 1168, }, D { l: 138, t: 11, i: 539, }, D { l: 135, t: 0, i: 1319, }, D { l: 4, t: 10, i: 295, }, D { l: 4, t: 10, i: 723, }, D { l: 5, t: 10, i: 895, }, D { l: 7, t: 10, i: 1031, }, D { l: 8, t: 10, i: 199, }, D { l: 8, t: 10, i: 340, }, D { l: 9, t: 10, i: 153, }, D { l: 9, t: 10, i: 215, }, D { l: 10, t: 10, i: 21, }, D { l: 10, t: 10, i: 59, }, D { l: 10, t: 10, i: 80, }, D { l: 10, t: 10, i: 224, }, D { l: 10, t: 10, i: 838, }, D { l: 11, t: 10, i: 229, }, D { l: 11, t: 10, i: 652, }, D { l: 12, t: 10, i: 192, }, D { l: 13, t: 10, i: 146, }, D { l: 142, t: 10, i: 91, }, D { l: 140, t: 0, i: 428, }, D { l: 137, t: 10, i: 51, }, D { l: 133, t: 0, i: 514, }, D { l: 5, t: 10, i: 309, }, D { l: 140, t: 10, i: 211, }, D { l: 6, t: 0, i: 1010, }, D { l: 5, t: 10, i: 125, }, D { l: 8, t: 10, i: 77 }, D { l: 138, t: 10, i: 15, }, D { l: 4, t: 0, i: 55 }, D { l: 5, t: 0, i: 301 }, D { l: 6, t: 0, i: 571 }, D { l: 142, t: 0, i: 49, }, D { l: 146, t: 0, i: 102, }, D { l: 136, t: 11, i: 370, }, D { l: 4, t: 11, i: 107, }, D { l: 7, t: 11, i: 613, }, D { l: 8, t: 11, i: 358, }, D { l: 8, t: 11, i: 439, }, D { l: 8, t: 11, i: 504, }, D { l: 9, t: 11, i: 501, }, D { l: 10, t: 11, i: 383, }, D { l: 139, t: 11, i: 477, }, D { l: 132, t: 11, i: 229, }, D { l: 133, t: 0, i: 364, }, D { l: 133, t: 10, i: 439, }, D { l: 4, t: 11, i: 903, }, D { l: 135, t: 11, i: 1816, }, D { l: 11, t: 0, i: 379, }, D { l: 140, t: 10, i: 76, }, D { l: 4, t: 0, i: 76 }, D { l: 4, t: 0, i: 971 }, D { l: 7, t: 0, i: 1550, }, D { l: 9, t: 0, i: 306 }, D { l: 9, t: 0, i: 430 }, D { l: 9, t: 0, i: 663 }, D { l: 10, t: 0, i: 683, }, D { l: 10, t: 0, i: 921, }, D { l: 11, t: 0, i: 427, }, D { l: 11, t: 0, i: 753, }, D { l: 12, t: 0, i: 334, }, D { l: 12, t: 0, i: 442, }, D { l: 14, t: 0, i: 258, }, D { l: 14, t: 0, i: 366, }, D { l: 143, t: 0, i: 131, }, D { l: 137, t: 0, i: 52, }, D { l: 4, t: 11, i: 47 }, D { l: 6, t: 11, i: 373, }, D { l: 7, t: 11, i: 452, }, D { l: 7, t: 11, i: 543, }, D { l: 7, t: 11, i: 1714, }, D { l: 7, t: 11, i: 1856, }, D { l: 9, t: 11, i: 6 }, D { l: 11, t: 11, i: 257, }, D { l: 139, t: 11, i: 391, }, D { l: 4, t: 10, i: 8 }, D { l: 7, t: 10, i: 1152, }, D { l: 7, t: 10, i: 1153, }, D { l: 7, t: 10, i: 1715, }, D { l: 9, t: 10, i: 374, }, D { l: 10, t: 10, i: 478, }, D { l: 139, t: 10, i: 648, }, D { l: 4, t: 11, i: 785, }, D { l: 133, t: 11, i: 368, }, D { l: 135, t: 10, i: 1099, }, D { l: 135, t: 11, i: 860, }, D { l: 5, t: 11, i: 980, }, D { l: 134, t: 11, i: 1754, }, D { l: 134, t: 0, i: 1258, }, D { l: 6, t: 0, i: 1058, }, D { l: 6, t: 0, i: 1359, }, D { l: 7, t: 11, i: 536, }, D { l: 7, t: 11, i: 1331, }, D { l: 136, t: 11, i: 143, }, D { l: 4, t: 0, i: 656 }, D { l: 135, t: 0, i: 779, }, D { l: 136, t: 10, i: 87, }, D { l: 5, t: 11, i: 19 }, D { l: 6, t: 11, i: 533, }, D { l: 146, t: 11, i: 126, }, D { l: 7, t: 0, i: 144 }, D { l: 138, t: 10, i: 438, }, D { l: 5, t: 11, i: 395, }, D { l: 5, t: 11, i: 951, }, D { l: 134, t: 11, i: 1776, }, D { l: 135, t: 0, i: 1373, }, D { l: 7, t: 0, i: 554 }, D { l: 7, t: 0, i: 605 }, D { l: 141, t: 0, i: 10, }, D { l: 4, t: 10, i: 69 }, D { l: 5, t: 10, i: 122, }, D { l: 9, t: 10, i: 656, }, D { l: 138, t: 10, i: 464, }, D { l: 5, t: 10, i: 849, }, D { l: 134, t: 10, i: 1633, }, D { l: 5, t: 0, i: 838 }, D { l: 5, t: 0, i: 841 }, D { l: 134, t: 0, i: 1649, }, D { l: 133, t: 0, i: 1012, }, D { l: 139, t: 10, i: 499, }, D { l: 7, t: 10, i: 476, }, D { l: 7, t: 10, i: 1592, }, D { l: 138, t: 10, i: 87, }, D { l: 6, t: 0, i: 251 }, D { l: 7, t: 0, i: 365 }, D { l: 7, t: 0, i: 1357, }, D { l: 7, t: 0, i: 1497, }, D { l: 8, t: 0, i: 154 }, D { l: 141, t: 0, i: 281, }, D { l: 132, t: 11, i: 441, }, D { l: 132, t: 11, i: 695, }, D { l: 7, t: 11, i: 497, }, D { l: 9, t: 11, i: 387, }, D { l: 147, t: 11, i: 81, }, D { l: 133, t: 0, i: 340, }, D { l: 14, t: 10, i: 283, }, D { l: 142, t: 11, i: 283, }, D { l: 134, t: 0, i: 810, }, D { l: 135, t: 11, i: 1894, }, D { l: 139, t: 0, i: 495, }, D { l: 5, t: 11, i: 284, }, D { l: 6, t: 11, i: 49 }, D { l: 6, t: 11, i: 350, }, D { l: 7, t: 11, i: 1 }, D { l: 7, t: 11, i: 377, }, D { l: 7, t: 11, i: 1693, }, D { l: 8, t: 11, i: 18 }, D { l: 8, t: 11, i: 678, }, D { l: 9, t: 11, i: 161, }, D { l: 9, t: 11, i: 585, }, D { l: 9, t: 11, i: 671, }, D { l: 9, t: 11, i: 839, }, D { l: 11, t: 11, i: 912, }, D { l: 141, t: 11, i: 427, }, D { l: 5, t: 10, i: 859, }, D { l: 7, t: 10, i: 1160, }, D { l: 8, t: 10, i: 107, }, D { l: 9, t: 10, i: 291, }, D { l: 9, t: 10, i: 439, }, D { l: 10, t: 10, i: 663, }, D { l: 11, t: 10, i: 609, }, D { l: 140, t: 10, i: 197, }, D { l: 8, t: 0, i: 261 }, D { l: 9, t: 0, i: 144 }, D { l: 9, t: 0, i: 466 }, D { l: 10, t: 0, i: 370, }, D { l: 12, t: 0, i: 470, }, D { l: 13, t: 0, i: 144, }, D { l: 142, t: 0, i: 348, }, D { l: 137, t: 0, i: 897, }, D { l: 6, t: 0, i: 248 }, D { l: 9, t: 0, i: 546 }, D { l: 10, t: 0, i: 535, }, D { l: 11, t: 0, i: 681, }, D { l: 141, t: 0, i: 135, }, D { l: 4, t: 0, i: 358 }, D { l: 135, t: 0, i: 1496, }, D { l: 134, t: 0, i: 567, }, D { l: 136, t: 0, i: 445, }, D { l: 4, t: 10, i: 117, }, D { l: 6, t: 10, i: 372, }, D { l: 7, t: 10, i: 1905, }, D { l: 142, t: 10, i: 323, }, D { l: 4, t: 10, i: 722, }, D { l: 139, t: 10, i: 471, }, D { l: 6, t: 0, i: 697 }, D { l: 134, t: 0, i: 996, }, D { l: 7, t: 11, i: 2007, }, D { l: 9, t: 11, i: 101, }, D { l: 9, t: 11, i: 450, }, D { l: 10, t: 11, i: 66, }, D { l: 10, t: 11, i: 842, }, D { l: 11, t: 11, i: 536, }, D { l: 140, t: 11, i: 587, }, D { l: 132, t: 0, i: 577, }, D { l: 134, t: 0, i: 1336, }, D { l: 9, t: 10, i: 5 }, D { l: 12, t: 10, i: 216, }, D { l: 12, t: 10, i: 294, }, D { l: 12, t: 10, i: 298, }, D { l: 12, t: 10, i: 400, }, D { l: 12, t: 10, i: 518, }, D { l: 13, t: 10, i: 229, }, D { l: 143, t: 10, i: 139, }, D { l: 6, t: 0, i: 174 }, D { l: 138, t: 0, i: 917, }, D { l: 134, t: 10, i: 1774, }, D { l: 5, t: 10, i: 12 }, D { l: 7, t: 10, i: 375, }, D { l: 9, t: 10, i: 88 }, D { l: 9, t: 10, i: 438, }, D { l: 11, t: 11, i: 62, }, D { l: 139, t: 10, i: 270, }, D { l: 134, t: 11, i: 1766, }, D { l: 6, t: 11, i: 0 }, D { l: 7, t: 11, i: 84 }, D { l: 7, t: 10, i: 816, }, D { l: 7, t: 10, i: 1241, }, D { l: 9, t: 10, i: 283, }, D { l: 9, t: 10, i: 520, }, D { l: 10, t: 10, i: 213, }, D { l: 10, t: 10, i: 307, }, D { l: 10, t: 10, i: 463, }, D { l: 10, t: 10, i: 671, }, D { l: 10, t: 10, i: 746, }, D { l: 11, t: 10, i: 401, }, D { l: 11, t: 10, i: 794, }, D { l: 11, t: 11, i: 895, }, D { l: 12, t: 10, i: 517, }, D { l: 17, t: 11, i: 11, }, D { l: 18, t: 10, i: 107, }, D { l: 147, t: 10, i: 115, }, D { l: 5, t: 0, i: 878 }, D { l: 133, t: 0, i: 972, }, D { l: 6, t: 11, i: 1665, }, D { l: 7, t: 11, i: 256, }, D { l: 7, t: 11, i: 1388, }, D { l: 138, t: 11, i: 499, }, D { l: 4, t: 10, i: 258, }, D { l: 136, t: 10, i: 639, }, D { l: 4, t: 11, i: 22 }, D { l: 5, t: 11, i: 10 }, D { l: 6, t: 10, i: 22 }, D { l: 7, t: 11, i: 848, }, D { l: 7, t: 10, i: 903, }, D { l: 7, t: 10, i: 1963, }, D { l: 8, t: 11, i: 97 }, D { l: 138, t: 10, i: 577, }, D { l: 5, t: 10, i: 681, }, D { l: 136, t: 10, i: 782, }, D { l: 133, t: 11, i: 481, }, D { l: 132, t: 0, i: 351, }, D { l: 4, t: 10, i: 664, }, D { l: 5, t: 10, i: 804, }, D { l: 139, t: 10, i: 1013, }, D { l: 6, t: 11, i: 134, }, D { l: 7, t: 11, i: 437, }, D { l: 7, t: 11, i: 959, }, D { l: 9, t: 11, i: 37 }, D { l: 14, t: 11, i: 285, }, D { l: 14, t: 11, i: 371, }, D { l: 144, t: 11, i: 60, }, D { l: 7, t: 11, i: 486, }, D { l: 8, t: 11, i: 155, }, D { l: 11, t: 11, i: 93, }, D { l: 140, t: 11, i: 164, }, D { l: 132, t: 0, i: 286, }, D { l: 7, t: 0, i: 438 }, D { l: 7, t: 0, i: 627 }, D { l: 7, t: 0, i: 1516, }, D { l: 8, t: 0, i: 40 }, D { l: 9, t: 0, i: 56 }, D { l: 9, t: 0, i: 294 }, D { l: 10, t: 0, i: 30 }, D { l: 11, t: 0, i: 969, }, D { l: 11, t: 0, i: 995, }, D { l: 146, t: 0, i: 148, }, D { l: 5, t: 11, i: 591, }, D { l: 135, t: 11, i: 337, }, D { l: 134, t: 0, i: 1950, }, D { l: 133, t: 10, i: 32, }, D { l: 138, t: 11, i: 500, }, D { l: 5, t: 11, i: 380, }, D { l: 5, t: 11, i: 650, }, D { l: 136, t: 11, i: 310, }, D { l: 4, t: 11, i: 364, }, D { l: 7, t: 11, i: 1156, }, D { l: 7, t: 11, i: 1187, }, D { l: 137, t: 11, i: 409, }, D { l: 4, t: 0, i: 738 }, D { l: 134, t: 11, i: 482, }, D { l: 4, t: 11, i: 781, }, D { l: 6, t: 11, i: 487, }, D { l: 7, t: 11, i: 926, }, D { l: 8, t: 11, i: 263, }, D { l: 139, t: 11, i: 500, }, D { l: 135, t: 11, i: 418, }, D { l: 6, t: 0, i: 2047, }, D { l: 10, t: 0, i: 969, }, D { l: 4, t: 10, i: 289, }, D { l: 7, t: 10, i: 629, }, D { l: 7, t: 10, i: 1698, }, D { l: 7, t: 10, i: 1711, }, D { l: 140, t: 10, i: 215, }, D { l: 6, t: 10, i: 450, }, D { l: 136, t: 10, i: 109, }, D { l: 134, t: 0, i: 818, }, D { l: 136, t: 10, i: 705, }, D { l: 133, t: 0, i: 866, }, D { l: 4, t: 11, i: 94 }, D { l: 135, t: 11, i: 1265, }, D { l: 132, t: 11, i: 417, }, D { l: 134, t: 0, i: 1467, }, D { l: 135, t: 10, i: 1238, }, D { l: 4, t: 0, i: 972 }, D { l: 6, t: 0, i: 1851, }, D { l: 134, t: 0, i: 1857, }, D { l: 134, t: 0, i: 355, }, D { l: 133, t: 0, i: 116, }, D { l: 132, t: 0, i: 457, }, D { l: 135, t: 11, i: 1411, }, D { l: 4, t: 11, i: 408, }, D { l: 4, t: 11, i: 741, }, D { l: 135, t: 11, i: 500, }, D { l: 134, t: 10, i: 26, }, D { l: 142, t: 11, i: 137, }, D { l: 5, t: 0, i: 527 }, D { l: 6, t: 0, i: 189 }, D { l: 7, t: 0, i: 859 }, D { l: 136, t: 0, i: 267, }, D { l: 11, t: 0, i: 104, }, D { l: 11, t: 0, i: 554, }, D { l: 15, t: 0, i: 60 }, D { l: 143, t: 0, i: 125, }, D { l: 134, t: 0, i: 1613, }, D { l: 4, t: 10, i: 414, }, D { l: 5, t: 10, i: 467, }, D { l: 9, t: 10, i: 654, }, D { l: 10, t: 10, i: 451, }, D { l: 12, t: 10, i: 59, }, D { l: 141, t: 10, i: 375, }, D { l: 135, t: 10, i: 17, }, D { l: 134, t: 0, i: 116, }, D { l: 135, t: 11, i: 541, }, D { l: 135, t: 10, i: 955, }, D { l: 6, t: 11, i: 73 }, D { l: 135, t: 11, i: 177, }, D { l: 133, t: 11, i: 576, }, D { l: 134, t: 0, i: 886, }, D { l: 133, t: 0, i: 487, }, D { l: 4, t: 0, i: 86 }, D { l: 5, t: 0, i: 667 }, D { l: 5, t: 0, i: 753 }, D { l: 6, t: 0, i: 316 }, D { l: 6, t: 0, i: 455 }, D { l: 135, t: 0, i: 946, }, D { l: 142, t: 11, i: 231, }, D { l: 150, t: 0, i: 45, }, D { l: 134, t: 0, i: 863, }, D { l: 134, t: 0, i: 1953, }, D { l: 6, t: 10, i: 280, }, D { l: 10, t: 10, i: 502, }, D { l: 11, t: 10, i: 344, }, D { l: 140, t: 10, i: 38, }, D { l: 4, t: 0, i: 79 }, D { l: 7, t: 0, i: 1773, }, D { l: 10, t: 0, i: 450, }, D { l: 11, t: 0, i: 589, }, D { l: 13, t: 0, i: 332, }, D { l: 13, t: 0, i: 493, }, D { l: 14, t: 0, i: 183, }, D { l: 14, t: 0, i: 334, }, D { l: 14, t: 0, i: 362, }, D { l: 14, t: 0, i: 368, }, D { l: 14, t: 0, i: 376, }, D { l: 14, t: 0, i: 379, }, D { l: 19, t: 0, i: 90 }, D { l: 19, t: 0, i: 103, }, D { l: 19, t: 0, i: 127, }, D { l: 148, t: 0, i: 90, }, D { l: 5, t: 10, i: 45 }, D { l: 7, t: 10, i: 1161, }, D { l: 11, t: 10, i: 448, }, D { l: 11, t: 10, i: 880, }, D { l: 13, t: 10, i: 139, }, D { l: 13, t: 10, i: 407, }, D { l: 15, t: 10, i: 16, }, D { l: 17, t: 10, i: 95, }, D { l: 18, t: 10, i: 66, }, D { l: 18, t: 10, i: 88, }, D { l: 18, t: 10, i: 123, }, D { l: 149, t: 10, i: 7, }, D { l: 136, t: 10, i: 777, }, D { l: 4, t: 10, i: 410, }, D { l: 135, t: 10, i: 521, }, D { l: 135, t: 10, i: 1778, }, D { l: 135, t: 11, i: 538, }, D { l: 142, t: 0, i: 381, }, D { l: 133, t: 11, i: 413, }, D { l: 134, t: 0, i: 1142, }, D { l: 6, t: 0, i: 1189, }, D { l: 136, t: 11, i: 495, }, D { l: 5, t: 0, i: 663 }, D { l: 6, t: 0, i: 1962, }, D { l: 134, t: 0, i: 2003, }, D { l: 7, t: 11, i: 54 }, D { l: 8, t: 11, i: 312, }, D { l: 10, t: 11, i: 191, }, D { l: 10, t: 11, i: 614, }, D { l: 140, t: 11, i: 567, }, D { l: 132, t: 10, i: 436, }, D { l: 133, t: 0, i: 846, }, D { l: 10, t: 0, i: 528, }, D { l: 11, t: 0, i: 504, }, D { l: 7, t: 10, i: 1587, }, D { l: 135, t: 10, i: 1707, }, D { l: 5, t: 0, i: 378 }, D { l: 8, t: 0, i: 465 }, D { l: 9, t: 0, i: 286 }, D { l: 10, t: 0, i: 185, }, D { l: 10, t: 0, i: 562, }, D { l: 10, t: 0, i: 635, }, D { l: 11, t: 0, i: 31 }, D { l: 11, t: 0, i: 393, }, D { l: 13, t: 0, i: 312, }, D { l: 18, t: 0, i: 65 }, D { l: 18, t: 0, i: 96 }, D { l: 147, t: 0, i: 89, }, D { l: 7, t: 0, i: 899 }, D { l: 14, t: 0, i: 325, }, D { l: 6, t: 11, i: 468, }, D { l: 7, t: 11, i: 567, }, D { l: 7, t: 11, i: 1478, }, D { l: 8, t: 11, i: 530, }, D { l: 142, t: 11, i: 290, }, D { l: 7, t: 0, i: 1880, }, D { l: 9, t: 0, i: 680 }, D { l: 139, t: 0, i: 798, }, D { l: 134, t: 0, i: 1770, }, D { l: 132, t: 0, i: 648, }, D { l: 150, t: 11, i: 35, }, D { l: 5, t: 0, i: 945 }, D { l: 6, t: 0, i: 1656, }, D { l: 6, t: 0, i: 1787, }, D { l: 7, t: 0, i: 167 }, D { l: 8, t: 0, i: 824 }, D { l: 9, t: 0, i: 391 }, D { l: 10, t: 0, i: 375, }, D { l: 139, t: 0, i: 185, }, D { l: 6, t: 11, i: 484, }, D { l: 135, t: 11, i: 822, }, D { l: 134, t: 0, i: 2046, }, D { l: 7, t: 0, i: 1645, }, D { l: 8, t: 0, i: 352 }, D { l: 137, t: 0, i: 249, }, D { l: 132, t: 0, i: 152, }, D { l: 6, t: 0, i: 611 }, D { l: 135, t: 0, i: 1733, }, D { l: 6, t: 11, i: 1724, }, D { l: 135, t: 11, i: 2022, }, D { l: 133, t: 0, i: 1006, }, D { l: 141, t: 11, i: 96, }, D { l: 5, t: 0, i: 420 }, D { l: 135, t: 0, i: 1449, }, D { l: 146, t: 11, i: 149, }, D { l: 135, t: 0, i: 832, }, D { l: 135, t: 10, i: 663, }, D { l: 133, t: 0, i: 351, }, D { l: 5, t: 0, i: 40 }, D { l: 7, t: 0, i: 598 }, D { l: 7, t: 0, i: 1638, }, D { l: 8, t: 0, i: 78 }, D { l: 9, t: 0, i: 166 }, D { l: 9, t: 0, i: 640 }, D { l: 9, t: 0, i: 685 }, D { l: 9, t: 0, i: 773 }, D { l: 11, t: 0, i: 215, }, D { l: 13, t: 0, i: 65 }, D { l: 14, t: 0, i: 172, }, D { l: 14, t: 0, i: 317, }, D { l: 145, t: 0, i: 6 }, D { l: 8, t: 0, i: 60 }, D { l: 9, t: 0, i: 343 }, D { l: 139, t: 0, i: 769, }, D { l: 134, t: 0, i: 1354, }, D { l: 132, t: 0, i: 724, }, D { l: 137, t: 0, i: 745, }, D { l: 132, t: 11, i: 474, }, D { l: 7, t: 0, i: 1951, }, D { l: 8, t: 0, i: 765 }, D { l: 8, t: 0, i: 772 }, D { l: 140, t: 0, i: 671, }, D { l: 7, t: 0, i: 108 }, D { l: 8, t: 0, i: 219 }, D { l: 8, t: 0, i: 388 }, D { l: 9, t: 0, i: 775 }, D { l: 11, t: 0, i: 275, }, D { l: 140, t: 0, i: 464, }, D { l: 137, t: 0, i: 639, }, D { l: 135, t: 10, i: 503, }, D { l: 133, t: 11, i: 366, }, D { l: 5, t: 0, i: 15 }, D { l: 6, t: 0, i: 56 }, D { l: 7, t: 0, i: 1758, }, D { l: 8, t: 0, i: 500 }, D { l: 9, t: 0, i: 730 }, D { l: 11, t: 0, i: 331, }, D { l: 13, t: 0, i: 150, }, D { l: 14, t: 0, i: 282, }, D { l: 5, t: 11, i: 305, }, D { l: 9, t: 11, i: 560, }, D { l: 141, t: 11, i: 208, }, D { l: 4, t: 10, i: 113, }, D { l: 5, t: 10, i: 163, }, D { l: 5, t: 10, i: 735, }, D { l: 7, t: 10, i: 1009, }, D { l: 9, t: 10, i: 9 }, D { l: 9, t: 10, i: 771, }, D { l: 12, t: 10, i: 90, }, D { l: 13, t: 10, i: 138, }, D { l: 13, t: 10, i: 410, }, D { l: 143, t: 10, i: 128, }, D { l: 4, t: 10, i: 324, }, D { l: 138, t: 10, i: 104, }, D { l: 135, t: 11, i: 466, }, D { l: 142, t: 11, i: 27, }, D { l: 134, t: 0, i: 1886, }, D { l: 5, t: 0, i: 205 }, D { l: 6, t: 0, i: 438 }, D { l: 9, t: 0, i: 711 }, D { l: 4, t: 11, i: 480, }, D { l: 6, t: 11, i: 167, }, D { l: 6, t: 11, i: 302, }, D { l: 6, t: 11, i: 1642, }, D { l: 7, t: 11, i: 130, }, D { l: 7, t: 11, i: 656, }, D { l: 7, t: 11, i: 837, }, D { l: 7, t: 11, i: 1547, }, D { l: 7, t: 11, i: 1657, }, D { l: 8, t: 11, i: 429, }, D { l: 9, t: 11, i: 228, }, D { l: 10, t: 11, i: 643, }, D { l: 13, t: 11, i: 289, }, D { l: 13, t: 11, i: 343, }, D { l: 147, t: 11, i: 101, }, D { l: 134, t: 0, i: 865, }, D { l: 6, t: 0, i: 2025, }, D { l: 136, t: 0, i: 965, }, D { l: 7, t: 11, i: 278, }, D { l: 10, t: 11, i: 739, }, D { l: 11, t: 11, i: 708, }, D { l: 141, t: 11, i: 348, }, D { l: 133, t: 0, i: 534, }, D { l: 135, t: 11, i: 1922, }, D { l: 137, t: 0, i: 691, }, D { l: 4, t: 10, i: 935, }, D { l: 133, t: 10, i: 823, }, D { l: 6, t: 0, i: 443 }, D { l: 9, t: 0, i: 237 }, D { l: 9, t: 0, i: 571 }, D { l: 9, t: 0, i: 695 }, D { l: 10, t: 0, i: 139, }, D { l: 11, t: 0, i: 715, }, D { l: 12, t: 0, i: 417, }, D { l: 141, t: 0, i: 421, }, D { l: 5, t: 10, i: 269, }, D { l: 7, t: 10, i: 434, }, D { l: 7, t: 10, i: 891, }, D { l: 8, t: 10, i: 339, }, D { l: 9, t: 10, i: 702, }, D { l: 11, t: 10, i: 594, }, D { l: 11, t: 10, i: 718, }, D { l: 145, t: 10, i: 100, }, D { l: 6, t: 0, i: 1555, }, D { l: 7, t: 0, i: 878 }, D { l: 9, t: 10, i: 485, }, D { l: 141, t: 10, i: 264, }, D { l: 134, t: 10, i: 1713, }, D { l: 7, t: 10, i: 1810, }, D { l: 11, t: 10, i: 866, }, D { l: 12, t: 10, i: 103, }, D { l: 141, t: 10, i: 495, }, D { l: 135, t: 10, i: 900, }, D { l: 6, t: 0, i: 1410, }, D { l: 9, t: 11, i: 316, }, D { l: 139, t: 11, i: 256, }, D { l: 4, t: 0, i: 995 }, D { l: 135, t: 0, i: 1033, }, D { l: 132, t: 0, i: 578, }, D { l: 10, t: 0, i: 881, }, D { l: 12, t: 0, i: 740, }, D { l: 12, t: 0, i: 743, }, D { l: 140, t: 0, i: 759, }, D { l: 132, t: 0, i: 822, }, D { l: 133, t: 0, i: 923, }, D { l: 142, t: 10, i: 143, }, D { l: 135, t: 11, i: 1696, }, D { l: 6, t: 11, i: 363, }, D { l: 7, t: 11, i: 1955, }, D { l: 136, t: 11, i: 725, }, D { l: 132, t: 0, i: 924, }, D { l: 133, t: 0, i: 665, }, D { l: 135, t: 10, i: 2029, }, D { l: 135, t: 0, i: 1901, }, D { l: 4, t: 0, i: 265 }, D { l: 6, t: 0, i: 1092, }, D { l: 6, t: 0, i: 1417, }, D { l: 7, t: 0, i: 807 }, D { l: 135, t: 0, i: 950, }, D { l: 5, t: 0, i: 93 }, D { l: 12, t: 0, i: 267, }, D { l: 141, t: 0, i: 498, }, D { l: 135, t: 0, i: 1451, }, D { l: 5, t: 11, i: 813, }, D { l: 135, t: 11, i: 2046, }, D { l: 5, t: 10, i: 625, }, D { l: 135, t: 10, i: 1617, }, D { l: 135, t: 0, i: 747, }, D { l: 6, t: 0, i: 788 }, D { l: 137, t: 0, i: 828, }, D { l: 7, t: 0, i: 184 }, D { l: 11, t: 0, i: 307, }, D { l: 11, t: 0, i: 400, }, D { l: 15, t: 0, i: 130, }, D { l: 5, t: 11, i: 712, }, D { l: 7, t: 11, i: 1855, }, D { l: 8, t: 10, i: 425, }, D { l: 8, t: 10, i: 693, }, D { l: 9, t: 10, i: 720, }, D { l: 10, t: 10, i: 380, }, D { l: 10, t: 10, i: 638, }, D { l: 11, t: 11, i: 17, }, D { l: 11, t: 10, i: 473, }, D { l: 12, t: 10, i: 61, }, D { l: 13, t: 11, i: 321, }, D { l: 144, t: 11, i: 67, }, D { l: 135, t: 0, i: 198, }, D { l: 6, t: 11, i: 320, }, D { l: 7, t: 11, i: 781, }, D { l: 7, t: 11, i: 1921, }, D { l: 9, t: 11, i: 55 }, D { l: 10, t: 11, i: 186, }, D { l: 10, t: 11, i: 273, }, D { l: 10, t: 11, i: 664, }, D { l: 10, t: 11, i: 801, }, D { l: 11, t: 11, i: 996, }, D { l: 11, t: 11, i: 997, }, D { l: 13, t: 11, i: 157, }, D { l: 142, t: 11, i: 170, }, D { l: 136, t: 11, i: 271, }, D { l: 135, t: 0, i: 994, }, D { l: 7, t: 11, i: 103, }, D { l: 7, t: 11, i: 863, }, D { l: 11, t: 11, i: 184, }, D { l: 14, t: 11, i: 299, }, D { l: 145, t: 11, i: 62, }, D { l: 11, t: 10, i: 551, }, D { l: 142, t: 10, i: 159, }, D { l: 5, t: 0, i: 233 }, D { l: 5, t: 0, i: 320 }, D { l: 6, t: 0, i: 140 }, D { l: 8, t: 0, i: 295 }, D { l: 8, t: 0, i: 615 }, D { l: 136, t: 11, i: 615, }, D { l: 133, t: 0, i: 978, }, D { l: 4, t: 0, i: 905 }, D { l: 6, t: 0, i: 1701, }, D { l: 137, t: 0, i: 843, }, D { l: 132, t: 10, i: 168, }, D { l: 4, t: 0, i: 974 }, D { l: 8, t: 0, i: 850 }, D { l: 12, t: 0, i: 709, }, D { l: 12, t: 0, i: 768, }, D { l: 140, t: 0, i: 786, }, D { l: 135, t: 10, i: 91, }, D { l: 152, t: 0, i: 6 }, D { l: 138, t: 10, i: 532, }, D { l: 135, t: 10, i: 1884, }, D { l: 132, t: 0, i: 509, }, D { l: 6, t: 0, i: 1307, }, D { l: 135, t: 0, i: 273, }, D { l: 5, t: 11, i: 77 }, D { l: 7, t: 11, i: 1455, }, D { l: 10, t: 11, i: 843, }, D { l: 19, t: 11, i: 73, }, D { l: 150, t: 11, i: 5, }, D { l: 132, t: 11, i: 458, }, D { l: 135, t: 11, i: 1420, }, D { l: 6, t: 11, i: 109, }, D { l: 138, t: 11, i: 382, }, D { l: 6, t: 0, i: 201 }, D { l: 6, t: 11, i: 330, }, D { l: 7, t: 10, i: 70 }, D { l: 7, t: 11, i: 1084, }, D { l: 10, t: 10, i: 240, }, D { l: 11, t: 11, i: 142, }, D { l: 147, t: 10, i: 93, }, D { l: 7, t: 0, i: 1041, }, D { l: 140, t: 11, i: 328, }, D { l: 133, t: 11, i: 354, }, D { l: 134, t: 0, i: 1040, }, D { l: 133, t: 0, i: 693, }, D { l: 134, t: 0, i: 774, }, D { l: 139, t: 0, i: 234, }, D { l: 132, t: 0, i: 336, }, D { l: 7, t: 0, i: 1399, }, D { l: 139, t: 10, i: 392, }, D { l: 20, t: 0, i: 22 }, D { l: 148, t: 11, i: 22, }, D { l: 5, t: 0, i: 802 }, D { l: 7, t: 0, i: 2021, }, D { l: 136, t: 0, i: 805, }, D { l: 5, t: 0, i: 167 }, D { l: 5, t: 0, i: 899 }, D { l: 6, t: 0, i: 410 }, D { l: 137, t: 0, i: 777, }, D { l: 137, t: 0, i: 789, }, D { l: 134, t: 0, i: 1705, }, D { l: 7, t: 10, i: 655, }, D { l: 135, t: 10, i: 1844, }, D { l: 4, t: 10, i: 145, }, D { l: 6, t: 10, i: 176, }, D { l: 7, t: 10, i: 395, }, D { l: 137, t: 10, i: 562, }, D { l: 132, t: 10, i: 501, }, D { l: 135, t: 0, i: 10, }, D { l: 5, t: 0, i: 11 }, D { l: 6, t: 0, i: 117 }, D { l: 6, t: 0, i: 485 }, D { l: 7, t: 0, i: 1133, }, D { l: 9, t: 0, i: 582 }, D { l: 9, t: 0, i: 594 }, D { l: 10, t: 0, i: 82 }, D { l: 11, t: 0, i: 21 }, D { l: 11, t: 0, i: 818, }, D { l: 12, t: 0, i: 535, }, D { l: 13, t: 0, i: 86 }, D { l: 20, t: 0, i: 91 }, D { l: 23, t: 0, i: 13 }, D { l: 134, t: 10, i: 509, }, D { l: 4, t: 0, i: 264 }, D { l: 7, t: 0, i: 1067, }, D { l: 8, t: 0, i: 204 }, D { l: 8, t: 0, i: 385 }, D { l: 139, t: 0, i: 953, }, D { l: 139, t: 11, i: 737, }, D { l: 138, t: 0, i: 56, }, D { l: 134, t: 0, i: 1917, }, D { l: 133, t: 0, i: 470, }, D { l: 10, t: 11, i: 657, }, D { l: 14, t: 11, i: 297, }, D { l: 142, t: 11, i: 361, }, D { l: 135, t: 11, i: 412, }, D { l: 7, t: 0, i: 1198, }, D { l: 7, t: 11, i: 1198, }, D { l: 8, t: 11, i: 556, }, D { l: 14, t: 11, i: 123, }, D { l: 14, t: 11, i: 192, }, D { l: 143, t: 11, i: 27, }, D { l: 7, t: 11, i: 1985, }, D { l: 14, t: 11, i: 146, }, D { l: 15, t: 11, i: 42, }, D { l: 16, t: 11, i: 23, }, D { l: 17, t: 11, i: 86, }, D { l: 146, t: 11, i: 17, }, D { l: 11, t: 0, i: 1015, }, D { l: 136, t: 11, i: 122, }, D { l: 4, t: 10, i: 114, }, D { l: 9, t: 10, i: 492, }, D { l: 13, t: 10, i: 462, }, D { l: 142, t: 10, i: 215, }, D { l: 4, t: 10, i: 77 }, D { l: 5, t: 10, i: 361, }, D { l: 6, t: 10, i: 139, }, D { l: 6, t: 10, i: 401, }, D { l: 6, t: 10, i: 404, }, D { l: 7, t: 10, i: 413, }, D { l: 7, t: 10, i: 715, }, D { l: 7, t: 10, i: 1716, }, D { l: 11, t: 10, i: 279, }, D { l: 12, t: 10, i: 179, }, D { l: 12, t: 10, i: 258, }, D { l: 13, t: 10, i: 244, }, D { l: 142, t: 10, i: 358, }, D { l: 134, t: 10, i: 1717, }, D { l: 7, t: 10, i: 1061, }, D { l: 8, t: 10, i: 82 }, D { l: 11, t: 10, i: 250, }, D { l: 12, t: 10, i: 420, }, D { l: 141, t: 10, i: 184, }, D { l: 133, t: 0, i: 715, }, D { l: 135, t: 10, i: 724, }, D { l: 9, t: 0, i: 919 }, D { l: 9, t: 0, i: 922 }, D { l: 9, t: 0, i: 927 }, D { l: 9, t: 0, i: 933 }, D { l: 9, t: 0, i: 962 }, D { l: 9, t: 0, i: 1000, }, D { l: 9, t: 0, i: 1002, }, D { l: 9, t: 0, i: 1021, }, D { l: 12, t: 0, i: 890, }, D { l: 12, t: 0, i: 907, }, D { l: 12, t: 0, i: 930, }, D { l: 15, t: 0, i: 207, }, D { l: 15, t: 0, i: 228, }, D { l: 15, t: 0, i: 238, }, D { l: 149, t: 0, i: 61, }, D { l: 8, t: 0, i: 794 }, D { l: 9, t: 0, i: 400 }, D { l: 10, t: 0, i: 298, }, D { l: 142, t: 0, i: 228, }, D { l: 5, t: 11, i: 430, }, D { l: 5, t: 11, i: 932, }, D { l: 6, t: 11, i: 131, }, D { l: 7, t: 11, i: 417, }, D { l: 9, t: 11, i: 522, }, D { l: 11, t: 11, i: 314, }, D { l: 141, t: 11, i: 390, }, D { l: 132, t: 0, i: 867, }, D { l: 8, t: 0, i: 724 }, D { l: 132, t: 11, i: 507, }, D { l: 137, t: 11, i: 261, }, D { l: 4, t: 11, i: 343, }, D { l: 133, t: 11, i: 511, }, D { l: 6, t: 0, i: 190 }, D { l: 7, t: 0, i: 768 }, D { l: 135, t: 0, i: 1170, }, D { l: 6, t: 10, i: 513, }, D { l: 135, t: 10, i: 1052, }, D { l: 7, t: 11, i: 455, }, D { l: 138, t: 11, i: 591, }, D { l: 134, t: 0, i: 1066, }, D { l: 137, t: 10, i: 899, }, D { l: 14, t: 0, i: 67 }, D { l: 147, t: 0, i: 60, }, D { l: 4, t: 0, i: 948 }, D { l: 18, t: 0, i: 174, }, D { l: 146, t: 0, i: 176, }, D { l: 135, t: 0, i: 1023, }, D { l: 7, t: 10, i: 1417, }, D { l: 12, t: 10, i: 382, }, D { l: 17, t: 10, i: 48, }, D { l: 152, t: 10, i: 12, }, D { l: 134, t: 11, i: 575, }, D { l: 132, t: 0, i: 764, }, D { l: 6, t: 10, i: 545, }, D { l: 7, t: 10, i: 565, }, D { l: 7, t: 10, i: 1669, }, D { l: 10, t: 10, i: 114, }, D { l: 11, t: 10, i: 642, }, D { l: 140, t: 10, i: 618, }, D { l: 6, t: 0, i: 137 }, D { l: 9, t: 0, i: 75 }, D { l: 9, t: 0, i: 253 }, D { l: 10, t: 0, i: 194, }, D { l: 138, t: 0, i: 444, }, D { l: 4, t: 0, i: 756 }, D { l: 133, t: 10, i: 5, }, D { l: 8, t: 0, i: 1008, }, D { l: 135, t: 10, i: 192, }, D { l: 132, t: 0, i: 842, }, D { l: 11, t: 0, i: 643, }, D { l: 12, t: 0, i: 115, }, D { l: 136, t: 10, i: 763, }, D { l: 139, t: 0, i: 67, }, D { l: 133, t: 10, i: 759, }, D { l: 4, t: 0, i: 821 }, D { l: 5, t: 0, i: 760 }, D { l: 7, t: 0, i: 542 }, D { l: 8, t: 0, i: 135 }, D { l: 8, t: 0, i: 496 }, D { l: 135, t: 11, i: 580, }, D { l: 7, t: 10, i: 370, }, D { l: 7, t: 10, i: 1007, }, D { l: 7, t: 10, i: 1177, }, D { l: 135, t: 10, i: 1565, }, D { l: 135, t: 10, i: 1237, }, D { l: 140, t: 0, i: 736, }, D { l: 7, t: 0, i: 319 }, D { l: 7, t: 0, i: 355 }, D { l: 7, t: 0, i: 763 }, D { l: 10, t: 0, i: 389, }, D { l: 145, t: 0, i: 43, }, D { l: 8, t: 11, i: 333, }, D { l: 138, t: 11, i: 182, }, D { l: 4, t: 10, i: 87 }, D { l: 5, t: 10, i: 250, }, D { l: 141, t: 10, i: 298, }, D { l: 138, t: 0, i: 786, }, D { l: 134, t: 0, i: 2044, }, D { l: 8, t: 11, i: 330, }, D { l: 140, t: 11, i: 477, }, D { l: 135, t: 11, i: 1338, }, D { l: 132, t: 11, i: 125, }, D { l: 134, t: 0, i: 1030, }, D { l: 134, t: 0, i: 1083, }, D { l: 132, t: 11, i: 721, }, D { l: 135, t: 10, i: 814, }, D { l: 7, t: 11, i: 776, }, D { l: 8, t: 11, i: 145, }, D { l: 147, t: 11, i: 56, }, D { l: 134, t: 0, i: 1226, }, D { l: 4, t: 10, i: 57 }, D { l: 7, t: 10, i: 1195, }, D { l: 7, t: 10, i: 1438, }, D { l: 7, t: 10, i: 1548, }, D { l: 7, t: 10, i: 1835, }, D { l: 7, t: 10, i: 1904, }, D { l: 9, t: 10, i: 757, }, D { l: 10, t: 10, i: 604, }, D { l: 139, t: 10, i: 519, }, D { l: 7, t: 11, i: 792, }, D { l: 8, t: 11, i: 147, }, D { l: 10, t: 11, i: 821, }, D { l: 139, t: 11, i: 1021, }, D { l: 137, t: 11, i: 797, }, D { l: 4, t: 0, i: 58 }, D { l: 5, t: 0, i: 286 }, D { l: 6, t: 0, i: 319 }, D { l: 7, t: 0, i: 402 }, D { l: 7, t: 0, i: 1254, }, D { l: 7, t: 0, i: 1903, }, D { l: 8, t: 0, i: 356 }, D { l: 140, t: 0, i: 408, }, D { l: 4, t: 0, i: 389 }, D { l: 4, t: 0, i: 815 }, D { l: 9, t: 0, i: 181 }, D { l: 9, t: 0, i: 255 }, D { l: 10, t: 0, i: 8 }, D { l: 10, t: 0, i: 29 }, D { l: 10, t: 0, i: 816, }, D { l: 11, t: 0, i: 311, }, D { l: 11, t: 0, i: 561, }, D { l: 12, t: 0, i: 67 }, D { l: 141, t: 0, i: 181, }, D { l: 7, t: 11, i: 1472, }, D { l: 135, t: 11, i: 1554, }, D { l: 7, t: 11, i: 1071, }, D { l: 7, t: 11, i: 1541, }, D { l: 7, t: 11, i: 1767, }, D { l: 7, t: 11, i: 1806, }, D { l: 7, t: 11, i: 1999, }, D { l: 9, t: 11, i: 248, }, D { l: 10, t: 11, i: 400, }, D { l: 11, t: 11, i: 162, }, D { l: 11, t: 11, i: 178, }, D { l: 11, t: 11, i: 242, }, D { l: 12, t: 11, i: 605, }, D { l: 15, t: 11, i: 26, }, D { l: 144, t: 11, i: 44, }, D { l: 5, t: 11, i: 168, }, D { l: 5, t: 11, i: 930, }, D { l: 8, t: 11, i: 74 }, D { l: 9, t: 11, i: 623, }, D { l: 12, t: 11, i: 500, }, D { l: 12, t: 11, i: 579, }, D { l: 13, t: 11, i: 41, }, D { l: 143, t: 11, i: 93, }, D { l: 6, t: 11, i: 220, }, D { l: 7, t: 11, i: 1101, }, D { l: 141, t: 11, i: 105, }, D { l: 5, t: 0, i: 474 }, D { l: 7, t: 0, i: 507 }, D { l: 4, t: 10, i: 209, }, D { l: 7, t: 11, i: 507, }, D { l: 135, t: 10, i: 902, }, D { l: 132, t: 0, i: 427, }, D { l: 6, t: 0, i: 413 }, D { l: 7, t: 10, i: 335, }, D { l: 7, t: 10, i: 1437, }, D { l: 7, t: 10, i: 1668, }, D { l: 8, t: 10, i: 553, }, D { l: 8, t: 10, i: 652, }, D { l: 8, t: 10, i: 656, }, D { l: 9, t: 10, i: 558, }, D { l: 11, t: 10, i: 743, }, D { l: 149, t: 10, i: 18, }, D { l: 132, t: 0, i: 730, }, D { l: 6, t: 11, i: 19 }, D { l: 7, t: 11, i: 1413, }, D { l: 139, t: 11, i: 428, }, D { l: 133, t: 0, i: 373, }, D { l: 132, t: 10, i: 559, }, D { l: 7, t: 11, i: 96 }, D { l: 8, t: 11, i: 401, }, D { l: 137, t: 11, i: 896, }, D { l: 7, t: 0, i: 799 }, D { l: 7, t: 0, i: 1972, }, D { l: 5, t: 10, i: 1017, }, D { l: 138, t: 10, i: 511, }, D { l: 135, t: 0, i: 1793, }, D { l: 7, t: 11, i: 1961, }, D { l: 7, t: 11, i: 1965, }, D { l: 8, t: 11, i: 702, }, D { l: 136, t: 11, i: 750, }, D { l: 8, t: 11, i: 150, }, D { l: 8, t: 11, i: 737, }, D { l: 140, t: 11, i: 366, }, D { l: 132, t: 0, i: 322, }, D { l: 133, t: 10, i: 709, }, D { l: 8, t: 11, i: 800, }, D { l: 9, t: 11, i: 148, }, D { l: 9, t: 11, i: 872, }, D { l: 9, t: 11, i: 890, }, D { l: 11, t: 11, i: 309, }, D { l: 11, t: 11, i: 1001, }, D { l: 13, t: 11, i: 267, }, D { l: 141, t: 11, i: 323, }, D { l: 134, t: 10, i: 1745, }, D { l: 7, t: 0, i: 290 }, D { l: 136, t: 10, i: 206, }, D { l: 7, t: 0, i: 1651, }, D { l: 145, t: 0, i: 89, }, D { l: 139, t: 0, i: 2 }, D { l: 132, t: 0, i: 672, }, D { l: 6, t: 0, i: 1860, }, D { l: 8, t: 0, i: 905 }, D { l: 10, t: 0, i: 844, }, D { l: 10, t: 0, i: 846, }, D { l: 10, t: 0, i: 858, }, D { l: 12, t: 0, i: 699, }, D { l: 12, t: 0, i: 746, }, D { l: 140, t: 0, i: 772, }, D { l: 135, t: 11, i: 424, }, D { l: 133, t: 11, i: 547, }, D { l: 133, t: 0, i: 737, }, D { l: 5, t: 11, i: 490, }, D { l: 6, t: 11, i: 615, }, D { l: 6, t: 11, i: 620, }, D { l: 135, t: 11, i: 683, }, D { l: 6, t: 0, i: 746 }, D { l: 134, t: 0, i: 1612, }, D { l: 132, t: 10, i: 776, }, D { l: 9, t: 11, i: 385, }, D { l: 149, t: 11, i: 17, }, D { l: 133, t: 0, i: 145, }, D { l: 135, t: 10, i: 1272, }, D { l: 7, t: 0, i: 884 }, D { l: 140, t: 0, i: 124, }, D { l: 4, t: 0, i: 387 }, D { l: 135, t: 0, i: 1288, }, D { l: 5, t: 11, i: 133, }, D { l: 136, t: 10, i: 406, }, D { l: 136, t: 11, i: 187, }, D { l: 6, t: 0, i: 679 }, D { l: 8, t: 11, i: 8 }, D { l: 138, t: 11, i: 0, }, D { l: 135, t: 0, i: 550, }, D { l: 135, t: 11, i: 798, }, D { l: 136, t: 11, i: 685, }, D { l: 7, t: 11, i: 1086, }, D { l: 145, t: 11, i: 46, }, D { l: 8, t: 10, i: 175, }, D { l: 10, t: 10, i: 168, }, D { l: 138, t: 10, i: 573, }, D { l: 135, t: 0, i: 1305, }, D { l: 4, t: 0, i: 576 }, D { l: 135, t: 0, i: 1263, }, D { l: 6, t: 0, i: 686 }, D { l: 134, t: 0, i: 1563, }, D { l: 134, t: 0, i: 607, }, D { l: 5, t: 0, i: 919 }, D { l: 134, t: 0, i: 1673, }, D { l: 148, t: 0, i: 37, }, D { l: 8, t: 11, i: 774, }, D { l: 10, t: 11, i: 670, }, D { l: 140, t: 11, i: 51, }, D { l: 133, t: 10, i: 784, }, D { l: 139, t: 10, i: 882, }, D { l: 4, t: 0, i: 82 }, D { l: 5, t: 0, i: 333 }, D { l: 5, t: 0, i: 904 }, D { l: 6, t: 0, i: 207 }, D { l: 7, t: 0, i: 325 }, D { l: 7, t: 0, i: 1726, }, D { l: 8, t: 0, i: 101 }, D { l: 10, t: 0, i: 778, }, D { l: 139, t: 0, i: 220, }, D { l: 135, t: 11, i: 371, }, D { l: 132, t: 0, i: 958, }, D { l: 133, t: 0, i: 903, }, D { l: 4, t: 11, i: 127, }, D { l: 5, t: 11, i: 350, }, D { l: 6, t: 11, i: 356, }, D { l: 8, t: 11, i: 426, }, D { l: 9, t: 11, i: 572, }, D { l: 10, t: 11, i: 247, }, D { l: 139, t: 11, i: 312, }, D { l: 140, t: 0, i: 147, }, D { l: 6, t: 11, i: 59 }, D { l: 7, t: 11, i: 885, }, D { l: 9, t: 11, i: 603, }, D { l: 141, t: 11, i: 397, }, D { l: 10, t: 0, i: 367, }, D { l: 9, t: 10, i: 14 }, D { l: 9, t: 10, i: 441, }, D { l: 139, t: 10, i: 9, }, D { l: 11, t: 10, i: 966, }, D { l: 12, t: 10, i: 287, }, D { l: 13, t: 10, i: 342, }, D { l: 13, t: 10, i: 402, }, D { l: 15, t: 10, i: 110, }, D { l: 143, t: 10, i: 163, }, D { l: 134, t: 0, i: 690, }, D { l: 132, t: 0, i: 705, }, D { l: 9, t: 0, i: 651 }, D { l: 11, t: 0, i: 971, }, D { l: 13, t: 0, i: 273, }, D { l: 7, t: 10, i: 1428, }, D { l: 7, t: 10, i: 1640, }, D { l: 7, t: 10, i: 1867, }, D { l: 9, t: 10, i: 169, }, D { l: 9, t: 10, i: 182, }, D { l: 9, t: 10, i: 367, }, D { l: 9, t: 10, i: 478, }, D { l: 9, t: 10, i: 506, }, D { l: 9, t: 10, i: 551, }, D { l: 9, t: 10, i: 557, }, D { l: 9, t: 10, i: 648, }, D { l: 9, t: 10, i: 697, }, D { l: 9, t: 10, i: 705, }, D { l: 9, t: 10, i: 725, }, D { l: 9, t: 10, i: 787, }, D { l: 9, t: 10, i: 794, }, D { l: 10, t: 10, i: 198, }, D { l: 10, t: 10, i: 214, }, D { l: 10, t: 10, i: 267, }, D { l: 10, t: 10, i: 275, }, D { l: 10, t: 10, i: 456, }, D { l: 10, t: 10, i: 551, }, D { l: 10, t: 10, i: 561, }, D { l: 10, t: 10, i: 613, }, D { l: 10, t: 10, i: 627, }, D { l: 10, t: 10, i: 668, }, D { l: 10, t: 10, i: 675, }, D { l: 10, t: 10, i: 691, }, D { l: 10, t: 10, i: 695, }, D { l: 10, t: 10, i: 707, }, D { l: 10, t: 10, i: 715, }, D { l: 11, t: 10, i: 183, }, D { l: 11, t: 10, i: 201, }, D { l: 11, t: 10, i: 262, }, D { l: 11, t: 10, i: 352, }, D { l: 11, t: 10, i: 439, }, D { l: 11, t: 10, i: 493, }, D { l: 11, t: 10, i: 572, }, D { l: 11, t: 10, i: 591, }, D { l: 11, t: 10, i: 608, }, D { l: 11, t: 10, i: 611, }, D { l: 11, t: 10, i: 646, }, D { l: 11, t: 10, i: 674, }, D { l: 11, t: 10, i: 711, }, D { l: 11, t: 10, i: 751, }, D { l: 11, t: 10, i: 761, }, D { l: 11, t: 10, i: 776, }, D { l: 11, t: 10, i: 785, }, D { l: 11, t: 10, i: 850, }, D { l: 11, t: 10, i: 853, }, D { l: 11, t: 10, i: 862, }, D { l: 11, t: 10, i: 865, }, D { l: 11, t: 10, i: 868, }, D { l: 11, t: 10, i: 875, }, D { l: 11, t: 10, i: 898, }, D { l: 11, t: 10, i: 902, }, D { l: 11, t: 10, i: 903, }, D { l: 11, t: 10, i: 910, }, D { l: 11, t: 10, i: 932, }, D { l: 11, t: 10, i: 942, }, D { l: 11, t: 10, i: 957, }, D { l: 11, t: 10, i: 967, }, D { l: 11, t: 10, i: 972, }, D { l: 12, t: 10, i: 148, }, D { l: 12, t: 10, i: 195, }, D { l: 12, t: 10, i: 220, }, D { l: 12, t: 10, i: 237, }, D { l: 12, t: 10, i: 318, }, D { l: 12, t: 10, i: 339, }, D { l: 12, t: 10, i: 393, }, D { l: 12, t: 10, i: 445, }, D { l: 12, t: 10, i: 450, }, D { l: 12, t: 10, i: 474, }, D { l: 12, t: 10, i: 505, }, D { l: 12, t: 10, i: 509, }, D { l: 12, t: 10, i: 533, }, D { l: 12, t: 10, i: 591, }, D { l: 12, t: 10, i: 594, }, D { l: 12, t: 10, i: 597, }, D { l: 12, t: 10, i: 621, }, D { l: 12, t: 10, i: 633, }, D { l: 12, t: 10, i: 642, }, D { l: 13, t: 10, i: 59, }, D { l: 13, t: 10, i: 60, }, D { l: 13, t: 10, i: 145, }, D { l: 13, t: 10, i: 239, }, D { l: 13, t: 10, i: 250, }, D { l: 13, t: 10, i: 329, }, D { l: 13, t: 10, i: 344, }, D { l: 13, t: 10, i: 365, }, D { l: 13, t: 10, i: 372, }, D { l: 13, t: 10, i: 387, }, D { l: 13, t: 10, i: 403, }, D { l: 13, t: 10, i: 414, }, D { l: 13, t: 10, i: 456, }, D { l: 13, t: 10, i: 470, }, D { l: 13, t: 10, i: 478, }, D { l: 13, t: 10, i: 483, }, D { l: 13, t: 10, i: 489, }, D { l: 14, t: 10, i: 55, }, D { l: 14, t: 10, i: 57, }, D { l: 14, t: 10, i: 81, }, D { l: 14, t: 10, i: 90, }, D { l: 14, t: 10, i: 148, }, D { l: 14, t: 10, i: 239, }, D { l: 14, t: 10, i: 266, }, D { l: 14, t: 10, i: 321, }, D { l: 14, t: 10, i: 326, }, D { l: 14, t: 10, i: 327, }, D { l: 14, t: 10, i: 330, }, D { l: 14, t: 10, i: 347, }, D { l: 14, t: 10, i: 355, }, D { l: 14, t: 10, i: 401, }, D { l: 14, t: 10, i: 404, }, D { l: 14, t: 10, i: 411, }, D { l: 14, t: 10, i: 414, }, D { l: 14, t: 10, i: 416, }, D { l: 14, t: 10, i: 420, }, D { l: 15, t: 10, i: 61, }, D { l: 15, t: 10, i: 74, }, D { l: 15, t: 10, i: 87, }, D { l: 15, t: 10, i: 88, }, D { l: 15, t: 10, i: 94, }, D { l: 15, t: 10, i: 96, }, D { l: 15, t: 10, i: 116, }, D { l: 15, t: 10, i: 149, }, D { l: 15, t: 10, i: 154, }, D { l: 16, t: 10, i: 50, }, D { l: 16, t: 10, i: 63, }, D { l: 16, t: 10, i: 73, }, D { l: 17, t: 10, i: 2 }, D { l: 17, t: 10, i: 66, }, D { l: 17, t: 10, i: 92, }, D { l: 17, t: 10, i: 103, }, D { l: 17, t: 10, i: 112, }, D { l: 17, t: 10, i: 120, }, D { l: 18, t: 10, i: 50, }, D { l: 18, t: 10, i: 54, }, D { l: 18, t: 10, i: 82, }, D { l: 18, t: 10, i: 86, }, D { l: 18, t: 10, i: 90, }, D { l: 18, t: 10, i: 111, }, D { l: 18, t: 10, i: 115, }, D { l: 18, t: 10, i: 156, }, D { l: 19, t: 10, i: 40, }, D { l: 19, t: 10, i: 79, }, D { l: 20, t: 10, i: 78, }, D { l: 149, t: 10, i: 22, }, D { l: 7, t: 0, i: 887 }, D { l: 5, t: 10, i: 161, }, D { l: 135, t: 10, i: 839, }, D { l: 142, t: 11, i: 98, }, D { l: 134, t: 0, i: 90, }, D { l: 138, t: 11, i: 356, }, D { l: 135, t: 11, i: 441, }, D { l: 6, t: 11, i: 111, }, D { l: 7, t: 11, i: 4 }, D { l: 8, t: 11, i: 163, }, D { l: 8, t: 11, i: 776, }, D { l: 138, t: 11, i: 566, }, D { l: 134, t: 0, i: 908, }, D { l: 134, t: 0, i: 1261, }, D { l: 7, t: 0, i: 813 }, D { l: 12, t: 0, i: 497, }, D { l: 141, t: 0, i: 56, }, D { l: 134, t: 0, i: 1235, }, D { l: 135, t: 0, i: 429, }, D { l: 135, t: 11, i: 1994, }, D { l: 138, t: 0, i: 904, }, D { l: 6, t: 0, i: 125 }, D { l: 7, t: 0, i: 1277, }, D { l: 137, t: 0, i: 772, }, D { l: 151, t: 0, i: 12, }, D { l: 4, t: 0, i: 841 }, D { l: 5, t: 0, i: 386 }, D { l: 133, t: 11, i: 386, }, D { l: 5, t: 11, i: 297, }, D { l: 135, t: 11, i: 1038, }, D { l: 6, t: 0, i: 860 }, D { l: 6, t: 0, i: 1069, }, D { l: 135, t: 11, i: 309, }, D { l: 136, t: 0, i: 946, }, D { l: 135, t: 10, i: 1814, }, D { l: 141, t: 11, i: 418, }, D { l: 136, t: 11, i: 363, }, D { l: 10, t: 0, i: 768, }, D { l: 139, t: 0, i: 787, }, D { l: 22, t: 11, i: 30, }, D { l: 150, t: 11, i: 33, }, D { l: 6, t: 0, i: 160 }, D { l: 7, t: 0, i: 1106, }, D { l: 9, t: 0, i: 770 }, D { l: 11, t: 0, i: 112, }, D { l: 140, t: 0, i: 413, }, D { l: 11, t: 11, i: 216, }, D { l: 139, t: 11, i: 340, }, D { l: 136, t: 10, i: 139, }, D { l: 135, t: 11, i: 1390, }, D { l: 135, t: 11, i: 808, }, D { l: 132, t: 11, i: 280, }, D { l: 12, t: 0, i: 271, }, D { l: 17, t: 0, i: 109, }, D { l: 7, t: 10, i: 643, }, D { l: 136, t: 10, i: 236, }, D { l: 140, t: 11, i: 54, }, D { l: 4, t: 11, i: 421, }, D { l: 133, t: 11, i: 548, }, D { l: 11, t: 0, i: 719, }, D { l: 12, t: 0, i: 36 }, D { l: 141, t: 0, i: 337, }, D { l: 7, t: 0, i: 581 }, D { l: 9, t: 0, i: 644 }, D { l: 137, t: 0, i: 699, }, D { l: 11, t: 11, i: 511, }, D { l: 13, t: 11, i: 394, }, D { l: 14, t: 11, i: 298, }, D { l: 14, t: 11, i: 318, }, D { l: 146, t: 11, i: 103, }, D { l: 7, t: 0, i: 304 }, D { l: 9, t: 0, i: 646 }, D { l: 9, t: 0, i: 862 }, D { l: 11, t: 0, i: 696, }, D { l: 12, t: 0, i: 208, }, D { l: 15, t: 0, i: 79 }, D { l: 147, t: 0, i: 108, }, D { l: 4, t: 0, i: 631 }, D { l: 7, t: 0, i: 1126, }, D { l: 135, t: 0, i: 1536, }, D { l: 135, t: 11, i: 1527, }, D { l: 8, t: 0, i: 880 }, D { l: 10, t: 0, i: 869, }, D { l: 138, t: 0, i: 913, }, D { l: 7, t: 0, i: 1513, }, D { l: 5, t: 10, i: 54 }, D { l: 6, t: 11, i: 254, }, D { l: 9, t: 11, i: 109, }, D { l: 138, t: 11, i: 103, }, D { l: 135, t: 0, i: 981, }, D { l: 133, t: 11, i: 729, }, D { l: 132, t: 10, i: 744, }, D { l: 132, t: 0, i: 434, }, D { l: 134, t: 0, i: 550, }, D { l: 7, t: 0, i: 930 }, D { l: 10, t: 0, i: 476, }, D { l: 13, t: 0, i: 452, }, D { l: 19, t: 0, i: 104, }, D { l: 6, t: 11, i: 1630, }, D { l: 10, t: 10, i: 402, }, D { l: 146, t: 10, i: 55, }, D { l: 5, t: 0, i: 553 }, D { l: 138, t: 0, i: 824, }, D { l: 136, t: 0, i: 452, }, D { l: 8, t: 0, i: 151 }, D { l: 137, t: 10, i: 624, }, D { l: 132, t: 10, i: 572, }, D { l: 132, t: 0, i: 772, }, D { l: 133, t: 11, i: 671, }, D { l: 133, t: 0, i: 292, }, D { l: 138, t: 0, i: 135, }, D { l: 132, t: 11, i: 889, }, D { l: 140, t: 11, i: 207, }, D { l: 9, t: 0, i: 504 }, D { l: 6, t: 10, i: 43 }, D { l: 7, t: 10, i: 38 }, D { l: 8, t: 10, i: 248, }, D { l: 138, t: 10, i: 513, }, D { l: 6, t: 0, i: 1089, }, D { l: 135, t: 11, i: 1910, }, D { l: 4, t: 11, i: 627, }, D { l: 133, t: 11, i: 775, }, D { l: 135, t: 0, i: 783, }, D { l: 133, t: 10, i: 766, }, D { l: 133, t: 10, i: 363, }, D { l: 7, t: 0, i: 387 }, D { l: 135, t: 11, i: 387, }, D { l: 7, t: 0, i: 393 }, D { l: 10, t: 0, i: 603, }, D { l: 11, t: 0, i: 206, }, D { l: 7, t: 11, i: 202, }, D { l: 11, t: 11, i: 362, }, D { l: 11, t: 11, i: 948, }, D { l: 140, t: 11, i: 388, }, D { l: 6, t: 11, i: 507, }, D { l: 7, t: 11, i: 451, }, D { l: 8, t: 11, i: 389, }, D { l: 12, t: 11, i: 490, }, D { l: 13, t: 11, i: 16, }, D { l: 13, t: 11, i: 215, }, D { l: 13, t: 11, i: 351, }, D { l: 18, t: 11, i: 132, }, D { l: 147, t: 11, i: 125, }, D { l: 4, t: 0, i: 912 }, D { l: 9, t: 0, i: 232 }, D { l: 135, t: 11, i: 841, }, D { l: 6, t: 10, i: 258, }, D { l: 140, t: 10, i: 409, }, D { l: 5, t: 10, i: 249, }, D { l: 148, t: 10, i: 82, }, D { l: 136, t: 11, i: 566, }, D { l: 6, t: 0, i: 977 }, D { l: 135, t: 11, i: 1214, }, D { l: 7, t: 0, i: 1973, }, D { l: 136, t: 0, i: 716, }, D { l: 135, t: 0, i: 98, }, D { l: 133, t: 0, i: 733, }, D { l: 5, t: 11, i: 912, }, D { l: 134, t: 11, i: 1695, }, D { l: 5, t: 10, i: 393, }, D { l: 6, t: 10, i: 378, }, D { l: 7, t: 10, i: 1981, }, D { l: 9, t: 10, i: 32 }, D { l: 9, t: 10, i: 591, }, D { l: 10, t: 10, i: 685, }, D { l: 10, t: 10, i: 741, }, D { l: 142, t: 10, i: 382, }, D { l: 133, t: 10, i: 788, }, D { l: 10, t: 0, i: 19 }, D { l: 11, t: 0, i: 911, }, D { l: 7, t: 10, i: 1968, }, D { l: 141, t: 10, i: 509, }, D { l: 5, t: 0, i: 668 }, D { l: 5, t: 11, i: 236, }, D { l: 6, t: 11, i: 572, }, D { l: 8, t: 11, i: 492, }, D { l: 11, t: 11, i: 618, }, D { l: 144, t: 11, i: 56, }, D { l: 135, t: 11, i: 1789, }, D { l: 4, t: 0, i: 360 }, D { l: 5, t: 0, i: 635 }, D { l: 5, t: 0, i: 700 }, D { l: 5, t: 10, i: 58 }, D { l: 5, t: 10, i: 171, }, D { l: 5, t: 10, i: 683, }, D { l: 6, t: 10, i: 291, }, D { l: 6, t: 10, i: 566, }, D { l: 7, t: 10, i: 1650, }, D { l: 11, t: 10, i: 523, }, D { l: 12, t: 10, i: 273, }, D { l: 12, t: 10, i: 303, }, D { l: 15, t: 10, i: 39, }, D { l: 143, t: 10, i: 111, }, D { l: 133, t: 0, i: 901, }, D { l: 134, t: 10, i: 589, }, D { l: 5, t: 11, i: 190, }, D { l: 136, t: 11, i: 318, }, D { l: 140, t: 0, i: 656, }, D { l: 7, t: 0, i: 726 }, D { l: 152, t: 0, i: 9 }, D { l: 4, t: 10, i: 917, }, D { l: 133, t: 10, i: 1005, }, D { l: 135, t: 10, i: 1598, }, D { l: 134, t: 11, i: 491, }, D { l: 4, t: 10, i: 919, }, D { l: 133, t: 11, i: 434, }, D { l: 137, t: 0, i: 72, }, D { l: 6, t: 0, i: 1269, }, D { l: 6, t: 0, i: 1566, }, D { l: 134, t: 0, i: 1621, }, D { l: 9, t: 0, i: 463 }, D { l: 10, t: 0, i: 595, }, D { l: 4, t: 10, i: 255, }, D { l: 5, t: 10, i: 302, }, D { l: 6, t: 10, i: 132, }, D { l: 7, t: 10, i: 128, }, D { l: 7, t: 10, i: 283, }, D { l: 7, t: 10, i: 1299, }, D { l: 10, t: 10, i: 52, }, D { l: 10, t: 10, i: 514, }, D { l: 11, t: 10, i: 925, }, D { l: 13, t: 10, i: 92, }, D { l: 142, t: 10, i: 309, }, D { l: 135, t: 0, i: 1454, }, D { l: 134, t: 0, i: 1287, }, D { l: 11, t: 0, i: 600, }, D { l: 13, t: 0, i: 245, }, D { l: 137, t: 10, i: 173, }, D { l: 136, t: 0, i: 989, }, D { l: 7, t: 0, i: 164 }, D { l: 7, t: 0, i: 1571, }, D { l: 9, t: 0, i: 107 }, D { l: 140, t: 0, i: 225, }, D { l: 6, t: 0, i: 1061, }, D { l: 141, t: 10, i: 442, }, D { l: 4, t: 0, i: 27 }, D { l: 5, t: 0, i: 484 }, D { l: 5, t: 0, i: 510 }, D { l: 6, t: 0, i: 434 }, D { l: 7, t: 0, i: 1000, }, D { l: 7, t: 0, i: 1098, }, D { l: 136, t: 0, i: 2 }, D { l: 7, t: 11, i: 85 }, D { l: 7, t: 11, i: 247, }, D { l: 8, t: 11, i: 585, }, D { l: 10, t: 11, i: 163, }, D { l: 138, t: 11, i: 316, }, D { l: 11, t: 11, i: 103, }, D { l: 142, t: 11, i: 0, }, D { l: 134, t: 0, i: 1127, }, D { l: 4, t: 0, i: 460 }, D { l: 134, t: 0, i: 852, }, D { l: 134, t: 10, i: 210, }, D { l: 4, t: 0, i: 932 }, D { l: 133, t: 0, i: 891, }, D { l: 6, t: 0, i: 588 }, D { l: 147, t: 11, i: 83, }, D { l: 8, t: 0, i: 625 }, D { l: 4, t: 10, i: 284, }, D { l: 134, t: 10, i: 223, }, D { l: 134, t: 0, i: 76, }, D { l: 8, t: 0, i: 92 }, D { l: 137, t: 0, i: 221, }, D { l: 4, t: 11, i: 124, }, D { l: 10, t: 11, i: 457, }, D { l: 11, t: 11, i: 121, }, D { l: 11, t: 11, i: 169, }, D { l: 11, t: 11, i: 422, }, D { l: 11, t: 11, i: 870, }, D { l: 12, t: 11, i: 214, }, D { l: 13, t: 11, i: 389, }, D { l: 14, t: 11, i: 187, }, D { l: 143, t: 11, i: 77, }, D { l: 9, t: 11, i: 618, }, D { l: 138, t: 11, i: 482, }, D { l: 4, t: 10, i: 218, }, D { l: 7, t: 10, i: 526, }, D { l: 143, t: 10, i: 137, }, D { l: 13, t: 0, i: 9 }, D { l: 14, t: 0, i: 104, }, D { l: 14, t: 0, i: 311, }, D { l: 4, t: 10, i: 270, }, D { l: 5, t: 10, i: 192, }, D { l: 6, t: 10, i: 332, }, D { l: 135, t: 10, i: 1322, }, D { l: 140, t: 10, i: 661, }, D { l: 135, t: 11, i: 1193, }, D { l: 6, t: 11, i: 107, }, D { l: 7, t: 11, i: 638, }, D { l: 7, t: 11, i: 1632, }, D { l: 137, t: 11, i: 396, }, D { l: 132, t: 0, i: 763, }, D { l: 4, t: 0, i: 622 }, D { l: 5, t: 11, i: 370, }, D { l: 134, t: 11, i: 1756, }, D { l: 133, t: 0, i: 253, }, D { l: 135, t: 0, i: 546, }, D { l: 9, t: 0, i: 73 }, D { l: 10, t: 0, i: 110, }, D { l: 14, t: 0, i: 185, }, D { l: 17, t: 0, i: 119, }, D { l: 133, t: 11, i: 204, }, D { l: 7, t: 0, i: 624 }, D { l: 7, t: 0, i: 916 }, D { l: 10, t: 0, i: 256, }, D { l: 139, t: 0, i: 87, }, D { l: 7, t: 10, i: 379, }, D { l: 8, t: 10, i: 481, }, D { l: 137, t: 10, i: 377, }, D { l: 5, t: 0, i: 212 }, D { l: 12, t: 0, i: 35 }, D { l: 13, t: 0, i: 382, }, D { l: 5, t: 11, i: 970, }, D { l: 134, t: 11, i: 1706, }, D { l: 9, t: 0, i: 746 }, D { l: 5, t: 10, i: 1003, }, D { l: 134, t: 10, i: 149, }, D { l: 10, t: 0, i: 150, }, D { l: 11, t: 0, i: 849, }, D { l: 13, t: 0, i: 330, }, D { l: 8, t: 10, i: 262, }, D { l: 9, t: 10, i: 627, }, D { l: 11, t: 10, i: 214, }, D { l: 11, t: 10, i: 404, }, D { l: 11, t: 10, i: 457, }, D { l: 11, t: 10, i: 780, }, D { l: 11, t: 10, i: 913, }, D { l: 13, t: 10, i: 401, }, D { l: 142, t: 10, i: 200, }, D { l: 134, t: 0, i: 1466, }, D { l: 135, t: 11, i: 3, }, D { l: 6, t: 0, i: 1299, }, D { l: 4, t: 11, i: 35 }, D { l: 5, t: 11, i: 121, }, D { l: 5, t: 11, i: 483, }, D { l: 5, t: 11, i: 685, }, D { l: 6, t: 11, i: 489, }, D { l: 7, t: 11, i: 1204, }, D { l: 136, t: 11, i: 394, }, D { l: 135, t: 10, i: 742, }, D { l: 4, t: 10, i: 142, }, D { l: 136, t: 10, i: 304, }, D { l: 4, t: 11, i: 921, }, D { l: 133, t: 11, i: 1007, }, D { l: 134, t: 0, i: 1518, }, D { l: 6, t: 0, i: 1229, }, D { l: 135, t: 0, i: 1175, }, D { l: 133, t: 0, i: 816, }, D { l: 12, t: 0, i: 159, }, D { l: 4, t: 10, i: 471, }, D { l: 4, t: 11, i: 712, }, D { l: 5, t: 10, i: 51 }, D { l: 6, t: 10, i: 602, }, D { l: 7, t: 10, i: 925, }, D { l: 8, t: 10, i: 484, }, D { l: 138, t: 10, i: 195, }, D { l: 134, t: 11, i: 1629, }, D { l: 5, t: 0, i: 869 }, D { l: 5, t: 0, i: 968 }, D { l: 6, t: 0, i: 1626, }, D { l: 8, t: 0, i: 734 }, D { l: 136, t: 0, i: 784, }, D { l: 4, t: 0, i: 542 }, D { l: 6, t: 0, i: 1716, }, D { l: 6, t: 0, i: 1727, }, D { l: 7, t: 0, i: 1082, }, D { l: 7, t: 0, i: 1545, }, D { l: 8, t: 0, i: 56 }, D { l: 8, t: 0, i: 118 }, D { l: 8, t: 0, i: 412 }, D { l: 8, t: 0, i: 564 }, D { l: 9, t: 0, i: 888 }, D { l: 9, t: 0, i: 908 }, D { l: 10, t: 0, i: 50 }, D { l: 10, t: 0, i: 423, }, D { l: 11, t: 0, i: 685, }, D { l: 11, t: 0, i: 697, }, D { l: 11, t: 0, i: 933, }, D { l: 12, t: 0, i: 299, }, D { l: 13, t: 0, i: 126, }, D { l: 13, t: 0, i: 136, }, D { l: 13, t: 0, i: 170, }, D { l: 13, t: 0, i: 190, }, D { l: 136, t: 10, i: 688, }, D { l: 132, t: 10, i: 697, }, D { l: 4, t: 0, i: 232 }, D { l: 9, t: 0, i: 202 }, D { l: 10, t: 0, i: 474, }, D { l: 140, t: 0, i: 433, }, D { l: 136, t: 0, i: 212, }, D { l: 6, t: 0, i: 108 }, D { l: 7, t: 0, i: 1003, }, D { l: 7, t: 0, i: 1181, }, D { l: 8, t: 0, i: 111 }, D { l: 136, t: 0, i: 343, }, D { l: 5, t: 10, i: 221, }, D { l: 135, t: 11, i: 1255, }, D { l: 133, t: 11, i: 485, }, D { l: 134, t: 0, i: 1712, }, D { l: 142, t: 0, i: 216, }, D { l: 5, t: 0, i: 643 }, D { l: 6, t: 0, i: 516 }, D { l: 4, t: 11, i: 285, }, D { l: 5, t: 11, i: 317, }, D { l: 6, t: 11, i: 301, }, D { l: 7, t: 11, i: 7 }, D { l: 8, t: 11, i: 153, }, D { l: 10, t: 11, i: 766, }, D { l: 11, t: 11, i: 468, }, D { l: 12, t: 11, i: 467, }, D { l: 141, t: 11, i: 143, }, D { l: 4, t: 0, i: 133 }, D { l: 7, t: 0, i: 711 }, D { l: 7, t: 0, i: 1298, }, D { l: 135, t: 0, i: 1585, }, D { l: 134, t: 0, i: 650, }, D { l: 135, t: 11, i: 512, }, D { l: 6, t: 0, i: 99 }, D { l: 7, t: 0, i: 1808, }, D { l: 145, t: 0, i: 57, }, D { l: 6, t: 0, i: 246 }, D { l: 6, t: 0, i: 574 }, D { l: 7, t: 0, i: 428 }, D { l: 9, t: 0, i: 793 }, D { l: 10, t: 0, i: 669, }, D { l: 11, t: 0, i: 485, }, D { l: 11, t: 0, i: 840, }, D { l: 12, t: 0, i: 300, }, D { l: 14, t: 0, i: 250, }, D { l: 145, t: 0, i: 55, }, D { l: 4, t: 10, i: 132, }, D { l: 5, t: 10, i: 69 }, D { l: 135, t: 10, i: 1242, }, D { l: 136, t: 0, i: 1023, }, D { l: 7, t: 0, i: 302 }, D { l: 132, t: 10, i: 111, }, D { l: 135, t: 0, i: 1871, }, D { l: 132, t: 0, i: 728, }, D { l: 9, t: 0, i: 252 }, D { l: 132, t: 10, i: 767, }, D { l: 6, t: 0, i: 461 }, D { l: 7, t: 0, i: 1590, }, D { l: 7, t: 10, i: 1416, }, D { l: 7, t: 10, i: 2005, }, D { l: 8, t: 10, i: 131, }, D { l: 8, t: 10, i: 466, }, D { l: 9, t: 10, i: 672, }, D { l: 13, t: 10, i: 252, }, D { l: 148, t: 10, i: 103, }, D { l: 6, t: 0, i: 323 }, D { l: 135, t: 0, i: 1564, }, D { l: 7, t: 0, i: 461 }, D { l: 136, t: 0, i: 775, }, D { l: 6, t: 10, i: 44 }, D { l: 136, t: 10, i: 368, }, D { l: 139, t: 0, i: 172, }, D { l: 132, t: 0, i: 464, }, D { l: 4, t: 10, i: 570, }, D { l: 133, t: 10, i: 120, }, D { l: 137, t: 11, i: 269, }, D { l: 6, t: 10, i: 227, }, D { l: 135, t: 10, i: 1589, }, D { l: 6, t: 11, i: 1719, }, D { l: 6, t: 11, i: 1735, }, D { l: 7, t: 11, i: 2016, }, D { l: 7, t: 11, i: 2020, }, D { l: 8, t: 11, i: 837, }, D { l: 137, t: 11, i: 852, }, D { l: 7, t: 0, i: 727 }, D { l: 146, t: 0, i: 73, }, D { l: 132, t: 0, i: 1023, }, D { l: 135, t: 11, i: 852, }, D { l: 135, t: 10, i: 1529, }, D { l: 136, t: 0, i: 577, }, D { l: 138, t: 11, i: 568, }, D { l: 134, t: 0, i: 1037, }, D { l: 8, t: 11, i: 67 }, D { l: 138, t: 11, i: 419, }, D { l: 4, t: 0, i: 413 }, D { l: 5, t: 0, i: 677 }, D { l: 8, t: 0, i: 432 }, D { l: 140, t: 0, i: 280, }, D { l: 10, t: 0, i: 600, }, D { l: 6, t: 10, i: 1667, }, D { l: 7, t: 11, i: 967, }, D { l: 7, t: 10, i: 2036, }, D { l: 141, t: 11, i: 11, }, D { l: 6, t: 10, i: 511, }, D { l: 140, t: 10, i: 132, }, D { l: 6, t: 0, i: 799 }, D { l: 5, t: 10, i: 568, }, D { l: 6, t: 10, i: 138, }, D { l: 135, t: 10, i: 1293, }, D { l: 8, t: 0, i: 159 }, D { l: 4, t: 10, i: 565, }, D { l: 136, t: 10, i: 827, }, D { l: 7, t: 0, i: 646 }, D { l: 7, t: 0, i: 1730, }, D { l: 11, t: 0, i: 446, }, D { l: 141, t: 0, i: 178, }, D { l: 4, t: 10, i: 922, }, D { l: 133, t: 10, i: 1023, }, D { l: 135, t: 11, i: 11, }, D { l: 132, t: 0, i: 395, }, D { l: 11, t: 0, i: 145, }, D { l: 135, t: 10, i: 1002, }, D { l: 9, t: 0, i: 174 }, D { l: 10, t: 0, i: 164, }, D { l: 11, t: 0, i: 440, }, D { l: 11, t: 0, i: 514, }, D { l: 11, t: 0, i: 841, }, D { l: 15, t: 0, i: 98 }, D { l: 149, t: 0, i: 20, }, D { l: 134, t: 0, i: 426, }, D { l: 10, t: 0, i: 608, }, D { l: 139, t: 0, i: 1002, }, D { l: 7, t: 11, i: 320, }, D { l: 8, t: 11, i: 51 }, D { l: 12, t: 11, i: 481, }, D { l: 12, t: 11, i: 570, }, D { l: 148, t: 11, i: 106, }, D { l: 9, t: 0, i: 977 }, D { l: 9, t: 0, i: 983 }, D { l: 132, t: 11, i: 445, }, D { l: 138, t: 0, i: 250, }, D { l: 139, t: 0, i: 100, }, D { l: 6, t: 0, i: 1982, }, D { l: 136, t: 10, i: 402, }, D { l: 133, t: 11, i: 239, }, D { l: 4, t: 10, i: 716, }, D { l: 141, t: 10, i: 31, }, D { l: 5, t: 0, i: 476 }, D { l: 7, t: 11, i: 83 }, D { l: 7, t: 11, i: 1990, }, D { l: 8, t: 11, i: 130, }, D { l: 139, t: 11, i: 720, }, D { l: 8, t: 10, i: 691, }, D { l: 136, t: 10, i: 731, }, D { l: 5, t: 11, i: 123, }, D { l: 6, t: 11, i: 530, }, D { l: 7, t: 11, i: 348, }, D { l: 135, t: 11, i: 1419, }, D { l: 5, t: 0, i: 76 }, D { l: 6, t: 0, i: 458 }, D { l: 6, t: 0, i: 497 }, D { l: 7, t: 0, i: 868 }, D { l: 9, t: 0, i: 658 }, D { l: 10, t: 0, i: 594, }, D { l: 11, t: 0, i: 173, }, D { l: 11, t: 0, i: 566, }, D { l: 12, t: 0, i: 20 }, D { l: 12, t: 0, i: 338, }, D { l: 141, t: 0, i: 200, }, D { l: 9, t: 11, i: 139, }, D { l: 10, t: 11, i: 399, }, D { l: 11, t: 11, i: 469, }, D { l: 12, t: 11, i: 634, }, D { l: 141, t: 11, i: 223, }, D { l: 9, t: 10, i: 840, }, D { l: 138, t: 10, i: 803, }, D { l: 133, t: 10, i: 847, }, D { l: 11, t: 11, i: 223, }, D { l: 140, t: 11, i: 168, }, D { l: 132, t: 11, i: 210, }, D { l: 8, t: 0, i: 447 }, D { l: 9, t: 10, i: 53 }, D { l: 9, t: 10, i: 268, }, D { l: 9, t: 10, i: 901, }, D { l: 10, t: 10, i: 518, }, D { l: 10, t: 10, i: 829, }, D { l: 11, t: 10, i: 188, }, D { l: 13, t: 10, i: 74, }, D { l: 14, t: 10, i: 46, }, D { l: 15, t: 10, i: 17, }, D { l: 15, t: 10, i: 33, }, D { l: 17, t: 10, i: 40, }, D { l: 18, t: 10, i: 36, }, D { l: 19, t: 10, i: 20, }, D { l: 22, t: 10, i: 1 }, D { l: 152, t: 10, i: 2, }, D { l: 4, t: 0, i: 526 }, D { l: 7, t: 0, i: 1029, }, D { l: 135, t: 0, i: 1054, }, D { l: 19, t: 11, i: 59, }, D { l: 150, t: 11, i: 2, }, D { l: 4, t: 0, i: 636 }, D { l: 6, t: 0, i: 1875, }, D { l: 6, t: 0, i: 1920, }, D { l: 9, t: 0, i: 999 }, D { l: 12, t: 0, i: 807, }, D { l: 12, t: 0, i: 825, }, D { l: 15, t: 0, i: 179, }, D { l: 15, t: 0, i: 190, }, D { l: 18, t: 0, i: 182, }, D { l: 136, t: 10, i: 532, }, D { l: 6, t: 0, i: 1699, }, D { l: 7, t: 0, i: 660 }, D { l: 7, t: 0, i: 1124, }, D { l: 17, t: 0, i: 31 }, D { l: 19, t: 0, i: 22 }, D { l: 151, t: 0, i: 14, }, D { l: 135, t: 10, i: 681, }, D { l: 132, t: 11, i: 430, }, D { l: 140, t: 10, i: 677, }, D { l: 4, t: 10, i: 684, }, D { l: 136, t: 10, i: 384, }, D { l: 132, t: 11, i: 756, }, D { l: 133, t: 11, i: 213, }, D { l: 7, t: 0, i: 188 }, D { l: 7, t: 10, i: 110, }, D { l: 8, t: 10, i: 290, }, D { l: 8, t: 10, i: 591, }, D { l: 9, t: 10, i: 382, }, D { l: 9, t: 10, i: 649, }, D { l: 11, t: 10, i: 71, }, D { l: 11, t: 10, i: 155, }, D { l: 11, t: 10, i: 313, }, D { l: 12, t: 10, i: 5 }, D { l: 13, t: 10, i: 325, }, D { l: 142, t: 10, i: 287, }, D { l: 7, t: 10, i: 360, }, D { l: 7, t: 10, i: 425, }, D { l: 9, t: 10, i: 66 }, D { l: 9, t: 10, i: 278, }, D { l: 138, t: 10, i: 644, }, D { l: 142, t: 11, i: 164, }, D { l: 4, t: 0, i: 279 }, D { l: 7, t: 0, i: 301 }, D { l: 137, t: 0, i: 362, }, D { l: 134, t: 11, i: 586, }, D { l: 135, t: 0, i: 1743, }, D { l: 4, t: 0, i: 178 }, D { l: 133, t: 0, i: 399, }, D { l: 4, t: 10, i: 900, }, D { l: 133, t: 10, i: 861, }, D { l: 5, t: 10, i: 254, }, D { l: 7, t: 10, i: 985, }, D { l: 136, t: 10, i: 73, }, D { l: 133, t: 11, i: 108, }, D { l: 7, t: 10, i: 1959, }, D { l: 136, t: 10, i: 683, }, D { l: 133, t: 11, i: 219, }, D { l: 4, t: 11, i: 193, }, D { l: 5, t: 11, i: 916, }, D { l: 7, t: 11, i: 364, }, D { l: 10, t: 11, i: 398, }, D { l: 10, t: 11, i: 726, }, D { l: 11, t: 11, i: 317, }, D { l: 11, t: 11, i: 626, }, D { l: 12, t: 11, i: 142, }, D { l: 12, t: 11, i: 288, }, D { l: 12, t: 11, i: 678, }, D { l: 13, t: 11, i: 313, }, D { l: 15, t: 11, i: 113, }, D { l: 18, t: 11, i: 114, }, D { l: 21, t: 11, i: 30, }, D { l: 150, t: 11, i: 53, }, D { l: 6, t: 11, i: 241, }, D { l: 7, t: 11, i: 907, }, D { l: 8, t: 11, i: 832, }, D { l: 9, t: 11, i: 342, }, D { l: 10, t: 11, i: 729, }, D { l: 11, t: 11, i: 284, }, D { l: 11, t: 11, i: 445, }, D { l: 11, t: 11, i: 651, }, D { l: 11, t: 11, i: 863, }, D { l: 13, t: 11, i: 398, }, D { l: 146, t: 11, i: 99, }, D { l: 132, t: 0, i: 872, }, D { l: 134, t: 0, i: 831, }, D { l: 134, t: 0, i: 1692, }, D { l: 6, t: 0, i: 202 }, D { l: 6, t: 0, i: 1006, }, D { l: 9, t: 0, i: 832 }, D { l: 10, t: 0, i: 636, }, D { l: 11, t: 0, i: 208, }, D { l: 12, t: 0, i: 360, }, D { l: 17, t: 0, i: 118, }, D { l: 18, t: 0, i: 27 }, D { l: 20, t: 0, i: 67 }, D { l: 137, t: 11, i: 734, }, D { l: 132, t: 10, i: 725, }, D { l: 7, t: 11, i: 993, }, D { l: 138, t: 11, i: 666, }, D { l: 134, t: 0, i: 1954, }, D { l: 134, t: 10, i: 196, }, D { l: 7, t: 0, i: 872 }, D { l: 10, t: 0, i: 516, }, D { l: 139, t: 0, i: 167, }, D { l: 133, t: 10, i: 831, }, D { l: 4, t: 11, i: 562, }, D { l: 9, t: 11, i: 254, }, D { l: 139, t: 11, i: 879, }, D { l: 137, t: 0, i: 313, }, D { l: 4, t: 0, i: 224 }, D { l: 132, t: 11, i: 786, }, D { l: 11, t: 0, i: 24 }, D { l: 12, t: 0, i: 170, }, D { l: 136, t: 10, i: 723, }, D { l: 5, t: 0, i: 546 }, D { l: 7, t: 0, i: 35 }, D { l: 8, t: 0, i: 11 }, D { l: 8, t: 0, i: 12 }, D { l: 9, t: 0, i: 315 }, D { l: 9, t: 0, i: 533 }, D { l: 10, t: 0, i: 802, }, D { l: 11, t: 0, i: 166, }, D { l: 12, t: 0, i: 525, }, D { l: 142, t: 0, i: 243, }, D { l: 7, t: 0, i: 1937, }, D { l: 13, t: 10, i: 80, }, D { l: 13, t: 10, i: 437, }, D { l: 145, t: 10, i: 74, }, D { l: 5, t: 0, i: 241 }, D { l: 8, t: 0, i: 242 }, D { l: 9, t: 0, i: 451 }, D { l: 10, t: 0, i: 667, }, D { l: 11, t: 0, i: 598, }, D { l: 140, t: 0, i: 429, }, D { l: 150, t: 0, i: 46, }, D { l: 6, t: 0, i: 1273, }, D { l: 137, t: 0, i: 830, }, D { l: 5, t: 10, i: 848, }, D { l: 6, t: 10, i: 66 }, D { l: 136, t: 10, i: 764, }, D { l: 6, t: 0, i: 825 }, D { l: 134, t: 0, i: 993, }, D { l: 4, t: 0, i: 1006, }, D { l: 10, t: 0, i: 327, }, D { l: 13, t: 0, i: 271, }, D { l: 4, t: 10, i: 36 }, D { l: 7, t: 10, i: 1387, }, D { l: 139, t: 10, i: 755, }, D { l: 134, t: 0, i: 1023, }, D { l: 135, t: 0, i: 1580, }, D { l: 4, t: 0, i: 366 }, D { l: 137, t: 0, i: 516, }, D { l: 132, t: 10, i: 887, }, D { l: 6, t: 0, i: 1736, }, D { l: 135, t: 0, i: 1891, }, D { l: 6, t: 11, i: 216, }, D { l: 7, t: 11, i: 901, }, D { l: 7, t: 11, i: 1343, }, D { l: 136, t: 11, i: 493, }, D { l: 6, t: 10, i: 165, }, D { l: 138, t: 10, i: 388, }, D { l: 7, t: 11, i: 341, }, D { l: 139, t: 11, i: 219, }, D { l: 4, t: 10, i: 719, }, D { l: 135, t: 10, i: 155, }, D { l: 134, t: 0, i: 1935, }, D { l: 132, t: 0, i: 826, }, D { l: 6, t: 0, i: 331 }, D { l: 6, t: 0, i: 1605, }, D { l: 8, t: 0, i: 623 }, D { l: 11, t: 0, i: 139, }, D { l: 139, t: 0, i: 171, }, D { l: 135, t: 11, i: 1734, }, D { l: 10, t: 11, i: 115, }, D { l: 11, t: 11, i: 420, }, D { l: 12, t: 11, i: 154, }, D { l: 13, t: 11, i: 404, }, D { l: 14, t: 11, i: 346, }, D { l: 15, t: 11, i: 54, }, D { l: 143, t: 11, i: 112, }, D { l: 7, t: 0, i: 288 }, D { l: 4, t: 10, i: 353, }, D { l: 6, t: 10, i: 146, }, D { l: 6, t: 10, i: 1789, }, D { l: 7, t: 10, i: 990, }, D { l: 7, t: 10, i: 1348, }, D { l: 9, t: 10, i: 665, }, D { l: 9, t: 10, i: 898, }, D { l: 11, t: 10, i: 893, }, D { l: 142, t: 10, i: 212, }, D { l: 6, t: 0, i: 916 }, D { l: 134, t: 0, i: 1592, }, D { l: 7, t: 0, i: 1888, }, D { l: 4, t: 10, i: 45 }, D { l: 135, t: 10, i: 1257, }, D { l: 5, t: 11, i: 1011, }, D { l: 136, t: 11, i: 701, }, D { l: 139, t: 11, i: 596, }, D { l: 4, t: 11, i: 54 }, D { l: 5, t: 11, i: 666, }, D { l: 7, t: 11, i: 1039, }, D { l: 7, t: 11, i: 1130, }, D { l: 9, t: 11, i: 195, }, D { l: 138, t: 11, i: 302, }, D { l: 134, t: 0, i: 1471, }, D { l: 134, t: 0, i: 1570, }, D { l: 132, t: 0, i: 394, }, D { l: 140, t: 10, i: 65, }, D { l: 136, t: 10, i: 816, }, D { l: 135, t: 0, i: 1931, }, D { l: 7, t: 0, i: 574 }, D { l: 135, t: 0, i: 1719, }, D { l: 134, t: 11, i: 467, }, D { l: 132, t: 0, i: 658, }, D { l: 9, t: 0, i: 781 }, D { l: 10, t: 0, i: 144, }, D { l: 11, t: 0, i: 385, }, D { l: 13, t: 0, i: 161, }, D { l: 13, t: 0, i: 228, }, D { l: 13, t: 0, i: 268, }, D { l: 20, t: 0, i: 107, }, D { l: 134, t: 11, i: 1669, }, D { l: 136, t: 0, i: 374, }, D { l: 135, t: 0, i: 735, }, D { l: 4, t: 0, i: 344 }, D { l: 6, t: 0, i: 498 }, D { l: 139, t: 0, i: 323, }, D { l: 7, t: 0, i: 586 }, D { l: 7, t: 0, i: 1063, }, D { l: 6, t: 10, i: 559, }, D { l: 134, t: 10, i: 1691, }, D { l: 137, t: 0, i: 155, }, D { l: 133, t: 0, i: 906, }, D { l: 7, t: 11, i: 122, }, D { l: 9, t: 11, i: 259, }, D { l: 10, t: 11, i: 84, }, D { l: 11, t: 11, i: 470, }, D { l: 12, t: 11, i: 541, }, D { l: 141, t: 11, i: 379, }, D { l: 134, t: 0, i: 1139, }, D { l: 10, t: 0, i: 108, }, D { l: 139, t: 0, i: 116, }, D { l: 134, t: 10, i: 456, }, D { l: 133, t: 10, i: 925, }, D { l: 5, t: 11, i: 82 }, D { l: 5, t: 11, i: 131, }, D { l: 7, t: 11, i: 1755, }, D { l: 8, t: 11, i: 31 }, D { l: 9, t: 11, i: 168, }, D { l: 9, t: 11, i: 764, }, D { l: 139, t: 11, i: 869, }, D { l: 134, t: 11, i: 605, }, D { l: 5, t: 11, i: 278, }, D { l: 137, t: 11, i: 68, }, D { l: 4, t: 11, i: 163, }, D { l: 5, t: 11, i: 201, }, D { l: 5, t: 11, i: 307, }, D { l: 5, t: 11, i: 310, }, D { l: 6, t: 11, i: 335, }, D { l: 7, t: 11, i: 284, }, D { l: 136, t: 11, i: 165, }, D { l: 135, t: 11, i: 1660, }, D { l: 6, t: 11, i: 33 }, D { l: 135, t: 11, i: 1244, }, D { l: 4, t: 0, i: 616 }, D { l: 136, t: 11, i: 483, }, D { l: 8, t: 0, i: 857 }, D { l: 8, t: 0, i: 902 }, D { l: 8, t: 0, i: 910 }, D { l: 10, t: 0, i: 879, }, D { l: 12, t: 0, i: 726, }, D { l: 4, t: 11, i: 199, }, D { l: 139, t: 11, i: 34, }, D { l: 136, t: 0, i: 692, }, D { l: 6, t: 10, i: 193, }, D { l: 7, t: 10, i: 240, }, D { l: 7, t: 10, i: 1682, }, D { l: 10, t: 10, i: 51, }, D { l: 10, t: 10, i: 640, }, D { l: 11, t: 10, i: 410, }, D { l: 13, t: 10, i: 82, }, D { l: 14, t: 10, i: 247, }, D { l: 14, t: 10, i: 331, }, D { l: 142, t: 10, i: 377, }, D { l: 6, t: 0, i: 823 }, D { l: 134, t: 0, i: 983, }, D { l: 139, t: 10, i: 411, }, D { l: 132, t: 0, i: 305, }, D { l: 136, t: 10, i: 633, }, D { l: 138, t: 11, i: 203, }, D { l: 134, t: 0, i: 681, }, D { l: 6, t: 11, i: 326, }, D { l: 7, t: 11, i: 677, }, D { l: 137, t: 11, i: 425, }, D { l: 5, t: 0, i: 214 }, D { l: 7, t: 0, i: 603 }, D { l: 8, t: 0, i: 611 }, D { l: 9, t: 0, i: 686 }, D { l: 10, t: 0, i: 88 }, D { l: 11, t: 0, i: 459, }, D { l: 11, t: 0, i: 496, }, D { l: 12, t: 0, i: 463, }, D { l: 12, t: 0, i: 590, }, D { l: 141, t: 0, i: 0 }, D { l: 136, t: 0, i: 1004, }, D { l: 142, t: 0, i: 23, }, D { l: 134, t: 0, i: 1703, }, D { l: 147, t: 11, i: 8, }, D { l: 145, t: 11, i: 56, }, D { l: 135, t: 0, i: 1443, }, D { l: 4, t: 10, i: 237, }, D { l: 135, t: 10, i: 514, }, D { l: 6, t: 0, i: 714 }, D { l: 145, t: 0, i: 19, }, D { l: 5, t: 11, i: 358, }, D { l: 7, t: 11, i: 473, }, D { l: 7, t: 11, i: 1184, }, D { l: 10, t: 11, i: 662, }, D { l: 13, t: 11, i: 212, }, D { l: 13, t: 11, i: 304, }, D { l: 13, t: 11, i: 333, }, D { l: 145, t: 11, i: 98, }, D { l: 4, t: 0, i: 737 }, D { l: 10, t: 0, i: 98 }, D { l: 11, t: 0, i: 294, }, D { l: 12, t: 0, i: 60 }, D { l: 12, t: 0, i: 437, }, D { l: 13, t: 0, i: 64 }, D { l: 13, t: 0, i: 380, }, D { l: 142, t: 0, i: 430, }, D { l: 6, t: 10, i: 392, }, D { l: 7, t: 10, i: 65 }, D { l: 135, t: 10, i: 2019, }, D { l: 6, t: 0, i: 1758, }, D { l: 8, t: 0, i: 520 }, D { l: 9, t: 0, i: 345 }, D { l: 9, t: 0, i: 403 }, D { l: 142, t: 0, i: 350, }, D { l: 5, t: 0, i: 47 }, D { l: 10, t: 0, i: 242, }, D { l: 138, t: 0, i: 579, }, D { l: 5, t: 0, i: 139 }, D { l: 7, t: 0, i: 1168, }, D { l: 138, t: 0, i: 539, }, D { l: 134, t: 0, i: 1459, }, D { l: 13, t: 0, i: 388, }, D { l: 141, t: 11, i: 388, }, D { l: 134, t: 0, i: 253, }, D { l: 7, t: 10, i: 1260, }, D { l: 135, t: 10, i: 1790, }, D { l: 10, t: 0, i: 252, }, D { l: 9, t: 10, i: 222, }, D { l: 139, t: 10, i: 900, }, D { l: 140, t: 0, i: 745, }, D { l: 133, t: 11, i: 946, }, D { l: 4, t: 0, i: 107 }, D { l: 7, t: 0, i: 613 }, D { l: 8, t: 0, i: 439 }, D { l: 8, t: 0, i: 504 }, D { l: 9, t: 0, i: 501 }, D { l: 10, t: 0, i: 383, }, D { l: 139, t: 0, i: 477, }, D { l: 135, t: 11, i: 1485, }, D { l: 132, t: 0, i: 871, }, D { l: 7, t: 11, i: 411, }, D { l: 7, t: 11, i: 590, }, D { l: 8, t: 11, i: 631, }, D { l: 9, t: 11, i: 323, }, D { l: 10, t: 11, i: 355, }, D { l: 11, t: 11, i: 491, }, D { l: 12, t: 11, i: 143, }, D { l: 12, t: 11, i: 402, }, D { l: 13, t: 11, i: 73, }, D { l: 14, t: 11, i: 408, }, D { l: 15, t: 11, i: 107, }, D { l: 146, t: 11, i: 71, }, D { l: 132, t: 0, i: 229, }, D { l: 132, t: 0, i: 903, }, D { l: 140, t: 0, i: 71, }, D { l: 133, t: 0, i: 549, }, D { l: 4, t: 0, i: 47 }, D { l: 6, t: 0, i: 373 }, D { l: 7, t: 0, i: 452 }, D { l: 7, t: 0, i: 543 }, D { l: 7, t: 0, i: 1828, }, D { l: 7, t: 0, i: 1856, }, D { l: 9, t: 0, i: 6 }, D { l: 11, t: 0, i: 257, }, D { l: 139, t: 0, i: 391, }, D { l: 7, t: 11, i: 1467, }, D { l: 8, t: 11, i: 328, }, D { l: 10, t: 11, i: 544, }, D { l: 11, t: 11, i: 955, }, D { l: 13, t: 11, i: 320, }, D { l: 145, t: 11, i: 83, }, D { l: 5, t: 0, i: 980 }, D { l: 134, t: 0, i: 1754, }, D { l: 136, t: 0, i: 865, }, D { l: 5, t: 0, i: 705 }, D { l: 137, t: 0, i: 606, }, D { l: 7, t: 0, i: 161 }, D { l: 8, t: 10, i: 201, }, D { l: 136, t: 10, i: 605, }, D { l: 143, t: 11, i: 35, }, D { l: 5, t: 11, i: 835, }, D { l: 6, t: 11, i: 483, }, D { l: 140, t: 10, i: 224, }, D { l: 7, t: 0, i: 536 }, D { l: 7, t: 0, i: 1331, }, D { l: 136, t: 0, i: 143, }, D { l: 134, t: 0, i: 1388, }, D { l: 5, t: 0, i: 724 }, D { l: 10, t: 0, i: 305, }, D { l: 11, t: 0, i: 151, }, D { l: 12, t: 0, i: 33 }, D { l: 12, t: 0, i: 121, }, D { l: 12, t: 0, i: 381, }, D { l: 17, t: 0, i: 3 }, D { l: 17, t: 0, i: 27 }, D { l: 17, t: 0, i: 78 }, D { l: 18, t: 0, i: 18 }, D { l: 19, t: 0, i: 54 }, D { l: 149, t: 0, i: 5 }, D { l: 4, t: 10, i: 523, }, D { l: 133, t: 10, i: 638, }, D { l: 5, t: 0, i: 19 }, D { l: 134, t: 0, i: 533, }, D { l: 5, t: 0, i: 395 }, D { l: 5, t: 0, i: 951 }, D { l: 134, t: 0, i: 1776, }, D { l: 135, t: 0, i: 1908, }, D { l: 132, t: 0, i: 846, }, D { l: 10, t: 0, i: 74 }, D { l: 11, t: 0, i: 663, }, D { l: 12, t: 0, i: 210, }, D { l: 13, t: 0, i: 166, }, D { l: 13, t: 0, i: 310, }, D { l: 14, t: 0, i: 373, }, D { l: 18, t: 0, i: 95 }, D { l: 19, t: 0, i: 43 }, D { l: 6, t: 10, i: 242, }, D { l: 7, t: 10, i: 227, }, D { l: 7, t: 10, i: 1581, }, D { l: 8, t: 10, i: 104, }, D { l: 9, t: 10, i: 113, }, D { l: 9, t: 10, i: 220, }, D { l: 9, t: 10, i: 427, }, D { l: 10, t: 10, i: 239, }, D { l: 11, t: 10, i: 579, }, D { l: 11, t: 10, i: 1023, }, D { l: 13, t: 10, i: 4 }, D { l: 13, t: 10, i: 204, }, D { l: 13, t: 10, i: 316, }, D { l: 148, t: 10, i: 86, }, D { l: 9, t: 11, i: 716, }, D { l: 11, t: 11, i: 108, }, D { l: 13, t: 11, i: 123, }, D { l: 14, t: 11, i: 252, }, D { l: 19, t: 11, i: 38, }, D { l: 21, t: 11, i: 3 }, D { l: 151, t: 11, i: 11, }, D { l: 8, t: 0, i: 372 }, D { l: 9, t: 0, i: 122 }, D { l: 138, t: 0, i: 175, }, D { l: 132, t: 11, i: 677, }, D { l: 7, t: 11, i: 1374, }, D { l: 136, t: 11, i: 540, }, D { l: 135, t: 10, i: 861, }, D { l: 132, t: 0, i: 695, }, D { l: 7, t: 0, i: 497 }, D { l: 9, t: 0, i: 387 }, D { l: 147, t: 0, i: 81, }, D { l: 136, t: 0, i: 937, }, D { l: 134, t: 0, i: 718, }, D { l: 7, t: 0, i: 1328, }, D { l: 136, t: 10, i: 494, }, D { l: 132, t: 11, i: 331, }, D { l: 6, t: 0, i: 1581, }, D { l: 133, t: 11, i: 747, }, D { l: 5, t: 0, i: 284 }, D { l: 6, t: 0, i: 49 }, D { l: 6, t: 0, i: 350 }, D { l: 7, t: 0, i: 1 }, D { l: 7, t: 0, i: 377 }, D { l: 7, t: 0, i: 1693, }, D { l: 8, t: 0, i: 18 }, D { l: 8, t: 0, i: 678 }, D { l: 9, t: 0, i: 161 }, D { l: 9, t: 0, i: 585 }, D { l: 9, t: 0, i: 671 }, D { l: 9, t: 0, i: 839 }, D { l: 11, t: 0, i: 912, }, D { l: 141, t: 0, i: 427, }, D { l: 7, t: 10, i: 1306, }, D { l: 8, t: 10, i: 505, }, D { l: 9, t: 10, i: 482, }, D { l: 10, t: 10, i: 126, }, D { l: 11, t: 10, i: 225, }, D { l: 12, t: 10, i: 347, }, D { l: 12, t: 10, i: 449, }, D { l: 13, t: 10, i: 19, }, D { l: 14, t: 10, i: 218, }, D { l: 142, t: 10, i: 435, }, D { l: 10, t: 10, i: 764, }, D { l: 12, t: 10, i: 120, }, D { l: 13, t: 10, i: 39, }, D { l: 145, t: 10, i: 127, }, D { l: 4, t: 0, i: 597 }, D { l: 133, t: 10, i: 268, }, D { l: 134, t: 0, i: 1094, }, D { l: 4, t: 0, i: 1008, }, D { l: 134, t: 0, i: 1973, }, D { l: 132, t: 0, i: 811, }, D { l: 139, t: 0, i: 908, }, D { l: 135, t: 0, i: 1471, }, D { l: 133, t: 11, i: 326, }, D { l: 4, t: 10, i: 384, }, D { l: 135, t: 10, i: 1022, }, D { l: 7, t: 0, i: 1935, }, D { l: 8, t: 0, i: 324 }, D { l: 12, t: 0, i: 42 }, D { l: 4, t: 11, i: 691, }, D { l: 7, t: 11, i: 1935, }, D { l: 8, t: 11, i: 324, }, D { l: 9, t: 11, i: 35 }, D { l: 10, t: 11, i: 680, }, D { l: 11, t: 11, i: 364, }, D { l: 12, t: 11, i: 42, }, D { l: 13, t: 11, i: 357, }, D { l: 146, t: 11, i: 16, }, D { l: 135, t: 0, i: 2014, }, D { l: 7, t: 0, i: 2007, }, D { l: 9, t: 0, i: 101 }, D { l: 9, t: 0, i: 450 }, D { l: 10, t: 0, i: 66 }, D { l: 10, t: 0, i: 842, }, D { l: 11, t: 0, i: 536, }, D { l: 12, t: 0, i: 587, }, D { l: 6, t: 11, i: 32 }, D { l: 7, t: 11, i: 385, }, D { l: 7, t: 11, i: 757, }, D { l: 7, t: 11, i: 1916, }, D { l: 8, t: 11, i: 37 }, D { l: 8, t: 11, i: 94 }, D { l: 8, t: 11, i: 711, }, D { l: 9, t: 11, i: 541, }, D { l: 10, t: 11, i: 162, }, D { l: 10, t: 11, i: 795, }, D { l: 11, t: 11, i: 989, }, D { l: 11, t: 11, i: 1010, }, D { l: 12, t: 11, i: 14, }, D { l: 142, t: 11, i: 308, }, D { l: 139, t: 0, i: 586, }, D { l: 135, t: 10, i: 1703, }, D { l: 7, t: 0, i: 1077, }, D { l: 11, t: 0, i: 28 }, D { l: 9, t: 10, i: 159, }, D { l: 140, t: 10, i: 603, }, D { l: 6, t: 0, i: 1221, }, D { l: 136, t: 10, i: 583, }, D { l: 6, t: 11, i: 152, }, D { l: 6, t: 11, i: 349, }, D { l: 6, t: 11, i: 1682, }, D { l: 7, t: 11, i: 1252, }, D { l: 8, t: 11, i: 112, }, D { l: 9, t: 11, i: 435, }, D { l: 9, t: 11, i: 668, }, D { l: 10, t: 11, i: 290, }, D { l: 10, t: 11, i: 319, }, D { l: 10, t: 11, i: 815, }, D { l: 11, t: 11, i: 180, }, D { l: 11, t: 11, i: 837, }, D { l: 12, t: 11, i: 240, }, D { l: 13, t: 11, i: 152, }, D { l: 13, t: 11, i: 219, }, D { l: 142, t: 11, i: 158, }, D { l: 139, t: 0, i: 62, }, D { l: 132, t: 10, i: 515, }, D { l: 8, t: 10, i: 632, }, D { l: 8, t: 10, i: 697, }, D { l: 137, t: 10, i: 854, }, D { l: 134, t: 0, i: 1766, }, D { l: 132, t: 11, i: 581, }, D { l: 6, t: 11, i: 126, }, D { l: 7, t: 11, i: 573, }, D { l: 8, t: 11, i: 397, }, D { l: 142, t: 11, i: 44, }, D { l: 150, t: 0, i: 28, }, D { l: 11, t: 0, i: 670, }, D { l: 22, t: 0, i: 25 }, D { l: 4, t: 10, i: 136, }, D { l: 133, t: 10, i: 551, }, D { l: 6, t: 0, i: 1665, }, D { l: 7, t: 0, i: 256 }, D { l: 7, t: 0, i: 1388, }, D { l: 138, t: 0, i: 499, }, D { l: 4, t: 0, i: 22 }, D { l: 5, t: 0, i: 10 }, D { l: 7, t: 0, i: 1576, }, D { l: 136, t: 0, i: 97, }, D { l: 134, t: 10, i: 1782, }, D { l: 5, t: 0, i: 481 }, D { l: 7, t: 10, i: 1287, }, D { l: 9, t: 10, i: 44 }, D { l: 10, t: 10, i: 552, }, D { l: 10, t: 10, i: 642, }, D { l: 11, t: 10, i: 839, }, D { l: 12, t: 10, i: 274, }, D { l: 12, t: 10, i: 275, }, D { l: 12, t: 10, i: 372, }, D { l: 13, t: 10, i: 91, }, D { l: 142, t: 10, i: 125, }, D { l: 133, t: 11, i: 926, }, D { l: 7, t: 11, i: 1232, }, D { l: 137, t: 11, i: 531, }, D { l: 6, t: 0, i: 134 }, D { l: 7, t: 0, i: 437 }, D { l: 7, t: 0, i: 1824, }, D { l: 9, t: 0, i: 37 }, D { l: 14, t: 0, i: 285, }, D { l: 142, t: 0, i: 371, }, D { l: 7, t: 0, i: 486 }, D { l: 8, t: 0, i: 155 }, D { l: 11, t: 0, i: 93 }, D { l: 140, t: 0, i: 164, }, D { l: 6, t: 0, i: 1391, }, D { l: 134, t: 0, i: 1442, }, D { l: 133, t: 11, i: 670, }, D { l: 133, t: 0, i: 591, }, D { l: 6, t: 10, i: 147, }, D { l: 7, t: 10, i: 886, }, D { l: 7, t: 11, i: 1957, }, D { l: 9, t: 10, i: 753, }, D { l: 138, t: 10, i: 268, }, D { l: 5, t: 0, i: 380 }, D { l: 5, t: 0, i: 650 }, D { l: 7, t: 0, i: 1173, }, D { l: 136, t: 0, i: 310, }, D { l: 4, t: 0, i: 364 }, D { l: 7, t: 0, i: 1156, }, D { l: 7, t: 0, i: 1187, }, D { l: 137, t: 0, i: 409, }, D { l: 135, t: 11, i: 1621, }, D { l: 134, t: 0, i: 482, }, D { l: 133, t: 11, i: 506, }, D { l: 4, t: 0, i: 781 }, D { l: 6, t: 0, i: 487 }, D { l: 7, t: 0, i: 926 }, D { l: 8, t: 0, i: 263 }, D { l: 139, t: 0, i: 500, }, D { l: 138, t: 10, i: 137, }, D { l: 135, t: 11, i: 242, }, D { l: 139, t: 11, i: 96, }, D { l: 133, t: 10, i: 414, }, D { l: 135, t: 10, i: 1762, }, D { l: 134, t: 0, i: 804, }, D { l: 5, t: 11, i: 834, }, D { l: 7, t: 11, i: 1202, }, D { l: 8, t: 11, i: 14 }, D { l: 9, t: 11, i: 481, }, D { l: 137, t: 11, i: 880, }, D { l: 134, t: 10, i: 599, }, D { l: 4, t: 0, i: 94 }, D { l: 135, t: 0, i: 1265, }, D { l: 4, t: 0, i: 415 }, D { l: 132, t: 0, i: 417, }, D { l: 5, t: 0, i: 348 }, D { l: 6, t: 0, i: 522 }, D { l: 6, t: 10, i: 1749, }, D { l: 7, t: 11, i: 1526, }, D { l: 138, t: 11, i: 465, }, D { l: 134, t: 10, i: 1627, }, D { l: 132, t: 0, i: 1012, }, D { l: 132, t: 10, i: 488, }, D { l: 4, t: 11, i: 357, }, D { l: 6, t: 11, i: 172, }, D { l: 7, t: 11, i: 143, }, D { l: 137, t: 11, i: 413, }, D { l: 4, t: 10, i: 83 }, D { l: 4, t: 11, i: 590, }, D { l: 146, t: 11, i: 76, }, D { l: 140, t: 10, i: 676, }, D { l: 7, t: 11, i: 287, }, D { l: 8, t: 11, i: 355, }, D { l: 9, t: 11, i: 293, }, D { l: 137, t: 11, i: 743, }, D { l: 134, t: 10, i: 278, }, D { l: 6, t: 0, i: 1803, }, D { l: 18, t: 0, i: 165, }, D { l: 24, t: 0, i: 21 }, D { l: 5, t: 11, i: 169, }, D { l: 7, t: 11, i: 333, }, D { l: 136, t: 11, i: 45, }, D { l: 12, t: 10, i: 97, }, D { l: 140, t: 11, i: 97, }, D { l: 4, t: 0, i: 408 }, D { l: 4, t: 0, i: 741 }, D { l: 135, t: 0, i: 500, }, D { l: 132, t: 11, i: 198, }, D { l: 7, t: 10, i: 388, }, D { l: 7, t: 10, i: 644, }, D { l: 139, t: 10, i: 781, }, D { l: 4, t: 11, i: 24 }, D { l: 5, t: 11, i: 140, }, D { l: 5, t: 11, i: 185, }, D { l: 7, t: 11, i: 1500, }, D { l: 11, t: 11, i: 565, }, D { l: 139, t: 11, i: 838, }, D { l: 6, t: 0, i: 1321, }, D { l: 9, t: 0, i: 257 }, D { l: 7, t: 10, i: 229, }, D { l: 8, t: 10, i: 59 }, D { l: 9, t: 10, i: 190, }, D { l: 10, t: 10, i: 378, }, D { l: 140, t: 10, i: 191, }, D { l: 4, t: 11, i: 334, }, D { l: 133, t: 11, i: 593, }, D { l: 135, t: 11, i: 1885, }, D { l: 134, t: 0, i: 1138, }, D { l: 4, t: 0, i: 249 }, D { l: 6, t: 0, i: 73 }, D { l: 135, t: 0, i: 177, }, D { l: 133, t: 0, i: 576, }, D { l: 142, t: 0, i: 231, }, D { l: 137, t: 0, i: 288, }, D { l: 132, t: 10, i: 660, }, D { l: 7, t: 10, i: 1035, }, D { l: 138, t: 10, i: 737, }, D { l: 135, t: 0, i: 1487, }, D { l: 6, t: 0, i: 989 }, D { l: 9, t: 0, i: 433 }, D { l: 7, t: 10, i: 690, }, D { l: 9, t: 10, i: 587, }, D { l: 140, t: 10, i: 521, }, D { l: 7, t: 0, i: 1264, }, D { l: 7, t: 0, i: 1678, }, D { l: 11, t: 0, i: 945, }, D { l: 12, t: 0, i: 341, }, D { l: 12, t: 0, i: 471, }, D { l: 140, t: 0, i: 569, }, D { l: 132, t: 11, i: 709, }, D { l: 133, t: 11, i: 897, }, D { l: 5, t: 11, i: 224, }, D { l: 13, t: 11, i: 174, }, D { l: 146, t: 11, i: 52, }, D { l: 135, t: 11, i: 1840, }, D { l: 134, t: 10, i: 1744, }, D { l: 12, t: 0, i: 87 }, D { l: 16, t: 0, i: 74 }, D { l: 4, t: 10, i: 733, }, D { l: 9, t: 10, i: 194, }, D { l: 10, t: 10, i: 92, }, D { l: 11, t: 10, i: 198, }, D { l: 12, t: 10, i: 84, }, D { l: 141, t: 10, i: 128, }, D { l: 140, t: 0, i: 779, }, D { l: 135, t: 0, i: 538, }, D { l: 4, t: 11, i: 608, }, D { l: 133, t: 11, i: 497, }, D { l: 133, t: 0, i: 413, }, D { l: 7, t: 11, i: 1375, }, D { l: 7, t: 11, i: 1466, }, D { l: 138, t: 11, i: 331, }, D { l: 136, t: 0, i: 495, }, D { l: 6, t: 11, i: 540, }, D { l: 136, t: 11, i: 136, }, D { l: 7, t: 0, i: 54 }, D { l: 8, t: 0, i: 312 }, D { l: 10, t: 0, i: 191, }, D { l: 10, t: 0, i: 614, }, D { l: 140, t: 0, i: 567, }, D { l: 6, t: 0, i: 468 }, D { l: 7, t: 0, i: 567 }, D { l: 7, t: 0, i: 1478, }, D { l: 8, t: 0, i: 530 }, D { l: 14, t: 0, i: 290, }, D { l: 133, t: 11, i: 999, }, D { l: 4, t: 11, i: 299, }, D { l: 7, t: 10, i: 306, }, D { l: 135, t: 11, i: 1004, }, D { l: 142, t: 11, i: 296, }, D { l: 134, t: 0, i: 1484, }, D { l: 133, t: 10, i: 979, }, D { l: 6, t: 0, i: 609 }, D { l: 9, t: 0, i: 815 }, D { l: 12, t: 11, i: 137, }, D { l: 14, t: 11, i: 9 }, D { l: 14, t: 11, i: 24, }, D { l: 142, t: 11, i: 64, }, D { l: 133, t: 11, i: 456, }, D { l: 6, t: 0, i: 484 }, D { l: 135, t: 0, i: 822, }, D { l: 133, t: 10, i: 178, }, D { l: 136, t: 11, i: 180, }, D { l: 132, t: 11, i: 755, }, D { l: 137, t: 0, i: 900, }, D { l: 135, t: 0, i: 1335, }, D { l: 6, t: 0, i: 1724, }, D { l: 135, t: 0, i: 2022, }, D { l: 135, t: 11, i: 1139, }, D { l: 5, t: 0, i: 640 }, D { l: 132, t: 10, i: 390, }, D { l: 6, t: 0, i: 1831, }, D { l: 138, t: 11, i: 633, }, D { l: 135, t: 11, i: 566, }, D { l: 4, t: 11, i: 890, }, D { l: 5, t: 11, i: 805, }, D { l: 5, t: 11, i: 819, }, D { l: 5, t: 11, i: 961, }, D { l: 6, t: 11, i: 396, }, D { l: 6, t: 11, i: 1631, }, D { l: 6, t: 11, i: 1678, }, D { l: 7, t: 11, i: 1967, }, D { l: 7, t: 11, i: 2041, }, D { l: 9, t: 11, i: 630, }, D { l: 11, t: 11, i: 8 }, D { l: 11, t: 11, i: 1019, }, D { l: 12, t: 11, i: 176, }, D { l: 13, t: 11, i: 225, }, D { l: 14, t: 11, i: 292, }, D { l: 149, t: 11, i: 24, }, D { l: 132, t: 0, i: 474, }, D { l: 134, t: 0, i: 1103, }, D { l: 135, t: 0, i: 1504, }, D { l: 134, t: 0, i: 1576, }, D { l: 6, t: 0, i: 961 }, D { l: 6, t: 0, i: 1034, }, D { l: 140, t: 0, i: 655, }, D { l: 11, t: 11, i: 514, }, D { l: 149, t: 11, i: 20, }, D { l: 5, t: 0, i: 305 }, D { l: 135, t: 11, i: 1815, }, D { l: 7, t: 11, i: 1505, }, D { l: 10, t: 11, i: 190, }, D { l: 10, t: 11, i: 634, }, D { l: 11, t: 11, i: 792, }, D { l: 12, t: 11, i: 358, }, D { l: 140, t: 11, i: 447, }, D { l: 5, t: 11, i: 0 }, D { l: 6, t: 11, i: 536, }, D { l: 7, t: 11, i: 604, }, D { l: 13, t: 11, i: 445, }, D { l: 145, t: 11, i: 126, }, D { l: 7, t: 0, i: 1236, }, D { l: 133, t: 10, i: 105, }, D { l: 4, t: 0, i: 480 }, D { l: 6, t: 0, i: 217 }, D { l: 6, t: 0, i: 302 }, D { l: 6, t: 0, i: 1642, }, D { l: 7, t: 0, i: 130 }, D { l: 7, t: 0, i: 837 }, D { l: 7, t: 0, i: 1321, }, D { l: 7, t: 0, i: 1547, }, D { l: 7, t: 0, i: 1657, }, D { l: 8, t: 0, i: 429 }, D { l: 9, t: 0, i: 228 }, D { l: 13, t: 0, i: 289, }, D { l: 13, t: 0, i: 343, }, D { l: 19, t: 0, i: 101, }, D { l: 6, t: 11, i: 232, }, D { l: 6, t: 11, i: 412, }, D { l: 7, t: 11, i: 1074, }, D { l: 8, t: 11, i: 9 }, D { l: 8, t: 11, i: 157, }, D { l: 8, t: 11, i: 786, }, D { l: 9, t: 11, i: 196, }, D { l: 9, t: 11, i: 352, }, D { l: 9, t: 11, i: 457, }, D { l: 10, t: 11, i: 337, }, D { l: 11, t: 11, i: 232, }, D { l: 11, t: 11, i: 877, }, D { l: 12, t: 11, i: 480, }, D { l: 140, t: 11, i: 546, }, D { l: 5, t: 10, i: 438, }, D { l: 7, t: 11, i: 958, }, D { l: 9, t: 10, i: 694, }, D { l: 12, t: 10, i: 627, }, D { l: 13, t: 11, i: 38, }, D { l: 141, t: 10, i: 210, }, D { l: 4, t: 11, i: 382, }, D { l: 136, t: 11, i: 579, }, D { l: 7, t: 0, i: 278 }, D { l: 10, t: 0, i: 739, }, D { l: 11, t: 0, i: 708, }, D { l: 141, t: 0, i: 348, }, D { l: 4, t: 11, i: 212, }, D { l: 135, t: 11, i: 1206, }, D { l: 135, t: 11, i: 1898, }, D { l: 6, t: 0, i: 708 }, D { l: 6, t: 0, i: 1344, }, D { l: 152, t: 10, i: 11, }, D { l: 137, t: 11, i: 768, }, D { l: 134, t: 0, i: 1840, }, D { l: 140, t: 0, i: 233, }, D { l: 8, t: 10, i: 25 }, D { l: 138, t: 10, i: 826, }, D { l: 6, t: 0, i: 2017, }, D { l: 133, t: 11, i: 655, }, D { l: 6, t: 0, i: 1488, }, D { l: 139, t: 11, i: 290, }, D { l: 132, t: 10, i: 308, }, D { l: 134, t: 0, i: 1590, }, D { l: 134, t: 0, i: 1800, }, D { l: 134, t: 0, i: 1259, }, D { l: 16, t: 0, i: 28 }, D { l: 6, t: 11, i: 231, }, D { l: 7, t: 11, i: 95 }, D { l: 136, t: 11, i: 423, }, D { l: 133, t: 11, i: 300, }, D { l: 135, t: 10, i: 150, }, D { l: 136, t: 10, i: 649, }, D { l: 7, t: 11, i: 1874, }, D { l: 137, t: 11, i: 641, }, D { l: 6, t: 11, i: 237, }, D { l: 7, t: 11, i: 611, }, D { l: 8, t: 11, i: 100, }, D { l: 9, t: 11, i: 416, }, D { l: 11, t: 11, i: 335, }, D { l: 12, t: 11, i: 173, }, D { l: 146, t: 11, i: 101, }, D { l: 137, t: 0, i: 45, }, D { l: 134, t: 10, i: 521, }, D { l: 17, t: 0, i: 36 }, D { l: 14, t: 11, i: 26, }, D { l: 146, t: 11, i: 150, }, D { l: 7, t: 0, i: 1442, }, D { l: 14, t: 0, i: 22 }, D { l: 5, t: 10, i: 339, }, D { l: 15, t: 10, i: 41, }, D { l: 15, t: 10, i: 166, }, D { l: 147, t: 10, i: 66, }, D { l: 8, t: 0, i: 378 }, D { l: 6, t: 11, i: 581, }, D { l: 135, t: 11, i: 1119, }, D { l: 134, t: 0, i: 1507, }, D { l: 147, t: 11, i: 117, }, D { l: 139, t: 0, i: 39, }, D { l: 134, t: 0, i: 1054, }, D { l: 6, t: 0, i: 363 }, D { l: 7, t: 0, i: 1955, }, D { l: 136, t: 0, i: 725, }, D { l: 134, t: 0, i: 2036, }, D { l: 133, t: 11, i: 199, }, D { l: 6, t: 0, i: 1871, }, D { l: 9, t: 0, i: 935 }, D { l: 9, t: 0, i: 961 }, D { l: 9, t: 0, i: 1004, }, D { l: 9, t: 0, i: 1016, }, D { l: 12, t: 0, i: 805, }, D { l: 12, t: 0, i: 852, }, D { l: 12, t: 0, i: 853, }, D { l: 12, t: 0, i: 869, }, D { l: 12, t: 0, i: 882, }, D { l: 12, t: 0, i: 896, }, D { l: 12, t: 0, i: 906, }, D { l: 12, t: 0, i: 917, }, D { l: 12, t: 0, i: 940, }, D { l: 15, t: 0, i: 170, }, D { l: 15, t: 0, i: 176, }, D { l: 15, t: 0, i: 188, }, D { l: 15, t: 0, i: 201, }, D { l: 15, t: 0, i: 205, }, D { l: 15, t: 0, i: 212, }, D { l: 15, t: 0, i: 234, }, D { l: 15, t: 0, i: 244, }, D { l: 18, t: 0, i: 181, }, D { l: 18, t: 0, i: 193, }, D { l: 18, t: 0, i: 196, }, D { l: 18, t: 0, i: 201, }, D { l: 18, t: 0, i: 202, }, D { l: 18, t: 0, i: 210, }, D { l: 18, t: 0, i: 217, }, D { l: 18, t: 0, i: 235, }, D { l: 18, t: 0, i: 236, }, D { l: 18, t: 0, i: 237, }, D { l: 21, t: 0, i: 54 }, D { l: 21, t: 0, i: 55 }, D { l: 21, t: 0, i: 58 }, D { l: 21, t: 0, i: 59 }, D { l: 152, t: 0, i: 22, }, D { l: 134, t: 10, i: 1628, }, D { l: 137, t: 0, i: 805, }, D { l: 5, t: 0, i: 813 }, D { l: 135, t: 0, i: 2046, }, D { l: 142, t: 11, i: 42, }, D { l: 5, t: 0, i: 712 }, D { l: 6, t: 0, i: 1240, }, D { l: 11, t: 0, i: 17 }, D { l: 13, t: 0, i: 321, }, D { l: 144, t: 0, i: 67, }, D { l: 132, t: 0, i: 617, }, D { l: 135, t: 10, i: 829, }, D { l: 6, t: 0, i: 320 }, D { l: 7, t: 0, i: 781 }, D { l: 7, t: 0, i: 1921, }, D { l: 9, t: 0, i: 55 }, D { l: 10, t: 0, i: 186, }, D { l: 10, t: 0, i: 273, }, D { l: 10, t: 0, i: 664, }, D { l: 10, t: 0, i: 801, }, D { l: 11, t: 0, i: 996, }, D { l: 11, t: 0, i: 997, }, D { l: 13, t: 0, i: 157, }, D { l: 142, t: 0, i: 170, }, D { l: 136, t: 0, i: 271, }, D { l: 5, t: 10, i: 486, }, D { l: 135, t: 10, i: 1349, }, D { l: 18, t: 11, i: 91, }, D { l: 147, t: 11, i: 70, }, D { l: 10, t: 0, i: 445, }, D { l: 7, t: 10, i: 1635, }, D { l: 8, t: 10, i: 17 }, D { l: 138, t: 10, i: 295, }, D { l: 136, t: 11, i: 404, }, D { l: 7, t: 0, i: 103 }, D { l: 7, t: 0, i: 863 }, D { l: 11, t: 0, i: 184, }, D { l: 145, t: 0, i: 62, }, D { l: 138, t: 10, i: 558, }, D { l: 137, t: 0, i: 659, }, D { l: 6, t: 11, i: 312, }, D { l: 6, t: 11, i: 1715, }, D { l: 10, t: 11, i: 584, }, D { l: 11, t: 11, i: 546, }, D { l: 11, t: 11, i: 692, }, D { l: 12, t: 11, i: 259, }, D { l: 12, t: 11, i: 295, }, D { l: 13, t: 11, i: 46, }, D { l: 141, t: 11, i: 154, }, D { l: 134, t: 0, i: 676, }, D { l: 132, t: 11, i: 588, }, D { l: 4, t: 11, i: 231, }, D { l: 5, t: 11, i: 61 }, D { l: 6, t: 11, i: 104, }, D { l: 7, t: 11, i: 729, }, D { l: 7, t: 11, i: 964, }, D { l: 7, t: 11, i: 1658, }, D { l: 140, t: 11, i: 414, }, D { l: 6, t: 11, i: 263, }, D { l: 138, t: 11, i: 757, }, D { l: 11, t: 0, i: 337, }, D { l: 142, t: 0, i: 303, }, D { l: 135, t: 11, i: 1363, }, D { l: 132, t: 11, i: 320, }, D { l: 140, t: 0, i: 506, }, D { l: 134, t: 10, i: 447, }, D { l: 5, t: 0, i: 77 }, D { l: 7, t: 0, i: 1455, }, D { l: 10, t: 0, i: 843, }, D { l: 147, t: 0, i: 73, }, D { l: 7, t: 10, i: 577, }, D { l: 7, t: 10, i: 1432, }, D { l: 9, t: 10, i: 475, }, D { l: 9, t: 10, i: 505, }, D { l: 9, t: 10, i: 526, }, D { l: 9, t: 10, i: 609, }, D { l: 9, t: 10, i: 689, }, D { l: 9, t: 10, i: 726, }, D { l: 9, t: 10, i: 735, }, D { l: 9, t: 10, i: 738, }, D { l: 10, t: 10, i: 556, }, D { l: 10, t: 10, i: 674, }, D { l: 10, t: 10, i: 684, }, D { l: 11, t: 10, i: 89, }, D { l: 11, t: 10, i: 202, }, D { l: 11, t: 10, i: 272, }, D { l: 11, t: 10, i: 380, }, D { l: 11, t: 10, i: 415, }, D { l: 11, t: 10, i: 505, }, D { l: 11, t: 10, i: 537, }, D { l: 11, t: 10, i: 550, }, D { l: 11, t: 10, i: 562, }, D { l: 11, t: 10, i: 640, }, D { l: 11, t: 10, i: 667, }, D { l: 11, t: 10, i: 688, }, D { l: 11, t: 10, i: 847, }, D { l: 11, t: 10, i: 927, }, D { l: 11, t: 10, i: 930, }, D { l: 11, t: 10, i: 940, }, D { l: 12, t: 10, i: 144, }, D { l: 12, t: 10, i: 325, }, D { l: 12, t: 10, i: 329, }, D { l: 12, t: 10, i: 389, }, D { l: 12, t: 10, i: 403, }, D { l: 12, t: 10, i: 451, }, D { l: 12, t: 10, i: 515, }, D { l: 12, t: 10, i: 604, }, D { l: 12, t: 10, i: 616, }, D { l: 12, t: 10, i: 626, }, D { l: 13, t: 10, i: 66, }, D { l: 13, t: 10, i: 131, }, D { l: 13, t: 10, i: 167, }, D { l: 13, t: 10, i: 236, }, D { l: 13, t: 10, i: 368, }, D { l: 13, t: 10, i: 411, }, D { l: 13, t: 10, i: 434, }, D { l: 13, t: 10, i: 453, }, D { l: 13, t: 10, i: 461, }, D { l: 13, t: 10, i: 474, }, D { l: 14, t: 10, i: 59, }, D { l: 14, t: 10, i: 60, }, D { l: 14, t: 10, i: 139, }, D { l: 14, t: 10, i: 152, }, D { l: 14, t: 10, i: 276, }, D { l: 14, t: 10, i: 353, }, D { l: 14, t: 10, i: 402, }, D { l: 15, t: 10, i: 28, }, D { l: 15, t: 10, i: 81, }, D { l: 15, t: 10, i: 123, }, D { l: 15, t: 10, i: 152, }, D { l: 18, t: 10, i: 136, }, D { l: 148, t: 10, i: 88, }, D { l: 132, t: 0, i: 458, }, D { l: 135, t: 0, i: 1420, }, D { l: 6, t: 0, i: 109 }, D { l: 10, t: 0, i: 382, }, D { l: 4, t: 11, i: 405, }, D { l: 4, t: 10, i: 609, }, D { l: 7, t: 10, i: 756, }, D { l: 7, t: 11, i: 817, }, D { l: 9, t: 10, i: 544, }, D { l: 11, t: 10, i: 413, }, D { l: 14, t: 11, i: 58, }, D { l: 14, t: 10, i: 307, }, D { l: 16, t: 10, i: 25, }, D { l: 17, t: 11, i: 37, }, D { l: 146, t: 11, i: 124, }, D { l: 6, t: 0, i: 330 }, D { l: 7, t: 0, i: 1084, }, D { l: 11, t: 0, i: 142, }, D { l: 133, t: 11, i: 974, }, D { l: 4, t: 10, i: 930, }, D { l: 133, t: 10, i: 947, }, D { l: 5, t: 10, i: 939, }, D { l: 142, t: 11, i: 394, }, D { l: 16, t: 0, i: 91 }, D { l: 145, t: 0, i: 87, }, D { l: 5, t: 11, i: 235, }, D { l: 5, t: 10, i: 962, }, D { l: 7, t: 11, i: 1239, }, D { l: 11, t: 11, i: 131, }, D { l: 140, t: 11, i: 370, }, D { l: 11, t: 0, i: 492, }, D { l: 5, t: 10, i: 651, }, D { l: 8, t: 10, i: 170, }, D { l: 9, t: 10, i: 61 }, D { l: 9, t: 10, i: 63 }, D { l: 10, t: 10, i: 23, }, D { l: 10, t: 10, i: 37, }, D { l: 10, t: 10, i: 834, }, D { l: 11, t: 10, i: 4 }, D { l: 11, t: 10, i: 281, }, D { l: 11, t: 10, i: 503, }, D { l: 11, t: 10, i: 677, }, D { l: 12, t: 10, i: 96, }, D { l: 12, t: 10, i: 130, }, D { l: 12, t: 10, i: 244, }, D { l: 14, t: 10, i: 5 }, D { l: 14, t: 10, i: 40, }, D { l: 14, t: 10, i: 162, }, D { l: 14, t: 10, i: 202, }, D { l: 146, t: 10, i: 133, }, D { l: 4, t: 10, i: 406, }, D { l: 5, t: 10, i: 579, }, D { l: 12, t: 10, i: 492, }, D { l: 150, t: 10, i: 15, }, D { l: 9, t: 11, i: 137, }, D { l: 138, t: 11, i: 221, }, D { l: 134, t: 0, i: 1239, }, D { l: 11, t: 0, i: 211, }, D { l: 140, t: 0, i: 145, }, D { l: 7, t: 11, i: 390, }, D { l: 138, t: 11, i: 140, }, D { l: 135, t: 11, i: 1418, }, D { l: 135, t: 11, i: 1144, }, D { l: 134, t: 0, i: 1049, }, D { l: 7, t: 0, i: 321 }, D { l: 6, t: 10, i: 17 }, D { l: 7, t: 10, i: 1001, }, D { l: 7, t: 10, i: 1982, }, D { l: 9, t: 10, i: 886, }, D { l: 10, t: 10, i: 489, }, D { l: 10, t: 10, i: 800, }, D { l: 11, t: 10, i: 782, }, D { l: 12, t: 10, i: 320, }, D { l: 13, t: 10, i: 467, }, D { l: 14, t: 10, i: 145, }, D { l: 14, t: 10, i: 387, }, D { l: 143, t: 10, i: 119, }, D { l: 145, t: 10, i: 17, }, D { l: 5, t: 11, i: 407, }, D { l: 11, t: 11, i: 489, }, D { l: 19, t: 11, i: 37, }, D { l: 20, t: 11, i: 73, }, D { l: 150, t: 11, i: 38, }, D { l: 133, t: 10, i: 458, }, D { l: 135, t: 0, i: 1985, }, D { l: 7, t: 10, i: 1983, }, D { l: 8, t: 10, i: 0 }, D { l: 8, t: 10, i: 171, }, D { l: 9, t: 10, i: 120, }, D { l: 9, t: 10, i: 732, }, D { l: 10, t: 10, i: 473, }, D { l: 11, t: 10, i: 656, }, D { l: 11, t: 10, i: 998, }, D { l: 18, t: 10, i: 0 }, D { l: 18, t: 10, i: 2 }, D { l: 147, t: 10, i: 21, }, D { l: 5, t: 11, i: 325, }, D { l: 7, t: 11, i: 1483, }, D { l: 8, t: 11, i: 5 }, D { l: 8, t: 11, i: 227, }, D { l: 9, t: 11, i: 105, }, D { l: 10, t: 11, i: 585, }, D { l: 140, t: 11, i: 614, }, D { l: 136, t: 0, i: 122, }, D { l: 132, t: 0, i: 234, }, D { l: 135, t: 11, i: 1196, }, D { l: 6, t: 0, i: 976 }, D { l: 6, t: 0, i: 1098, }, D { l: 134, t: 0, i: 1441, }, D { l: 7, t: 0, i: 253 }, D { l: 136, t: 0, i: 549, }, D { l: 6, t: 11, i: 621, }, D { l: 13, t: 11, i: 504, }, D { l: 144, t: 11, i: 19, }, D { l: 132, t: 10, i: 519, }, D { l: 5, t: 0, i: 430 }, D { l: 5, t: 0, i: 932 }, D { l: 6, t: 0, i: 131 }, D { l: 7, t: 0, i: 417 }, D { l: 9, t: 0, i: 522 }, D { l: 11, t: 0, i: 314, }, D { l: 141, t: 0, i: 390, }, D { l: 14, t: 0, i: 149, }, D { l: 14, t: 0, i: 399, }, D { l: 143, t: 0, i: 57, }, D { l: 5, t: 10, i: 907, }, D { l: 6, t: 10, i: 31 }, D { l: 6, t: 11, i: 218, }, D { l: 7, t: 10, i: 491, }, D { l: 7, t: 10, i: 530, }, D { l: 8, t: 10, i: 592, }, D { l: 11, t: 10, i: 53, }, D { l: 11, t: 10, i: 779, }, D { l: 12, t: 10, i: 167, }, D { l: 12, t: 10, i: 411, }, D { l: 14, t: 10, i: 14, }, D { l: 14, t: 10, i: 136, }, D { l: 15, t: 10, i: 72, }, D { l: 16, t: 10, i: 17, }, D { l: 144, t: 10, i: 72, }, D { l: 140, t: 11, i: 330, }, D { l: 7, t: 11, i: 454, }, D { l: 7, t: 11, i: 782, }, D { l: 136, t: 11, i: 768, }, D { l: 132, t: 0, i: 507, }, D { l: 10, t: 11, i: 676, }, D { l: 140, t: 11, i: 462, }, D { l: 6, t: 0, i: 630 }, D { l: 9, t: 0, i: 811 }, D { l: 4, t: 10, i: 208, }, D { l: 5, t: 10, i: 106, }, D { l: 6, t: 10, i: 531, }, D { l: 8, t: 10, i: 408, }, D { l: 9, t: 10, i: 188, }, D { l: 138, t: 10, i: 572, }, D { l: 4, t: 0, i: 343 }, D { l: 5, t: 0, i: 511 }, D { l: 134, t: 10, i: 1693, }, D { l: 134, t: 11, i: 164, }, D { l: 132, t: 0, i: 448, }, D { l: 7, t: 0, i: 455 }, D { l: 138, t: 0, i: 591, }, D { l: 135, t: 0, i: 1381, }, D { l: 12, t: 10, i: 441, }, D { l: 150, t: 11, i: 50, }, D { l: 9, t: 10, i: 449, }, D { l: 10, t: 10, i: 192, }, D { l: 138, t: 10, i: 740, }, D { l: 6, t: 0, i: 575 }, D { l: 132, t: 10, i: 241, }, D { l: 134, t: 0, i: 1175, }, D { l: 134, t: 0, i: 653, }, D { l: 134, t: 0, i: 1761, }, D { l: 134, t: 0, i: 1198, }, D { l: 132, t: 10, i: 259, }, D { l: 6, t: 11, i: 343, }, D { l: 7, t: 11, i: 195, }, D { l: 9, t: 11, i: 226, }, D { l: 10, t: 11, i: 197, }, D { l: 10, t: 11, i: 575, }, D { l: 11, t: 11, i: 502, }, D { l: 139, t: 11, i: 899, }, D { l: 7, t: 0, i: 1127, }, D { l: 7, t: 0, i: 1572, }, D { l: 10, t: 0, i: 297, }, D { l: 10, t: 0, i: 422, }, D { l: 11, t: 0, i: 764, }, D { l: 11, t: 0, i: 810, }, D { l: 12, t: 0, i: 264, }, D { l: 13, t: 0, i: 102, }, D { l: 13, t: 0, i: 300, }, D { l: 13, t: 0, i: 484, }, D { l: 14, t: 0, i: 147, }, D { l: 14, t: 0, i: 229, }, D { l: 17, t: 0, i: 71 }, D { l: 18, t: 0, i: 118, }, D { l: 147, t: 0, i: 120, }, D { l: 135, t: 11, i: 666, }, D { l: 132, t: 0, i: 678, }, D { l: 4, t: 10, i: 173, }, D { l: 5, t: 10, i: 312, }, D { l: 5, t: 10, i: 512, }, D { l: 135, t: 10, i: 1285, }, D { l: 7, t: 10, i: 1603, }, D { l: 7, t: 10, i: 1691, }, D { l: 9, t: 10, i: 464, }, D { l: 11, t: 10, i: 195, }, D { l: 12, t: 10, i: 279, }, D { l: 12, t: 10, i: 448, }, D { l: 14, t: 10, i: 11, }, D { l: 147, t: 10, i: 102, }, D { l: 16, t: 0, i: 99 }, D { l: 146, t: 0, i: 164, }, D { l: 7, t: 11, i: 1125, }, D { l: 9, t: 11, i: 143, }, D { l: 11, t: 11, i: 61, }, D { l: 14, t: 11, i: 405, }, D { l: 150, t: 11, i: 21, }, D { l: 137, t: 11, i: 260, }, D { l: 4, t: 10, i: 452, }, D { l: 5, t: 10, i: 583, }, D { l: 5, t: 10, i: 817, }, D { l: 6, t: 10, i: 433, }, D { l: 7, t: 10, i: 593, }, D { l: 7, t: 10, i: 720, }, D { l: 7, t: 10, i: 1378, }, D { l: 8, t: 10, i: 161, }, D { l: 9, t: 10, i: 284, }, D { l: 10, t: 10, i: 313, }, D { l: 139, t: 10, i: 886, }, D { l: 132, t: 10, i: 547, }, D { l: 136, t: 10, i: 722, }, D { l: 14, t: 0, i: 35 }, D { l: 142, t: 0, i: 191, }, D { l: 141, t: 0, i: 45, }, D { l: 138, t: 0, i: 121, }, D { l: 132, t: 0, i: 125, }, D { l: 134, t: 0, i: 1622, }, D { l: 133, t: 11, i: 959, }, D { l: 8, t: 10, i: 420, }, D { l: 139, t: 10, i: 193, }, D { l: 132, t: 0, i: 721, }, D { l: 135, t: 10, i: 409, }, D { l: 136, t: 0, i: 145, }, D { l: 7, t: 0, i: 792 }, D { l: 8, t: 0, i: 147 }, D { l: 10, t: 0, i: 821, }, D { l: 11, t: 0, i: 970, }, D { l: 11, t: 0, i: 1021, }, D { l: 136, t: 11, i: 173, }, D { l: 134, t: 11, i: 266, }, D { l: 132, t: 0, i: 715, }, D { l: 7, t: 0, i: 1999, }, D { l: 138, t: 10, i: 308, }, D { l: 133, t: 0, i: 531, }, D { l: 5, t: 0, i: 168 }, D { l: 5, t: 0, i: 930 }, D { l: 8, t: 0, i: 74 }, D { l: 9, t: 0, i: 623 }, D { l: 12, t: 0, i: 500, }, D { l: 140, t: 0, i: 579, }, D { l: 144, t: 0, i: 65, }, D { l: 138, t: 11, i: 246, }, D { l: 6, t: 0, i: 220 }, D { l: 7, t: 0, i: 1101, }, D { l: 13, t: 0, i: 105, }, D { l: 142, t: 11, i: 314, }, D { l: 5, t: 10, i: 1002, }, D { l: 136, t: 10, i: 745, }, D { l: 134, t: 0, i: 960, }, D { l: 20, t: 0, i: 0 }, D { l: 148, t: 11, i: 0, }, D { l: 4, t: 0, i: 1005, }, D { l: 4, t: 10, i: 239, }, D { l: 6, t: 10, i: 477, }, D { l: 7, t: 10, i: 1607, }, D { l: 11, t: 10, i: 68, }, D { l: 139, t: 10, i: 617, }, D { l: 6, t: 0, i: 19 }, D { l: 7, t: 0, i: 1413, }, D { l: 139, t: 0, i: 428, }, D { l: 149, t: 10, i: 13, }, D { l: 7, t: 0, i: 96 }, D { l: 8, t: 0, i: 401 }, D { l: 8, t: 0, i: 703 }, D { l: 9, t: 0, i: 896 }, D { l: 136, t: 11, i: 300, }, D { l: 134, t: 0, i: 1595, }, D { l: 145, t: 0, i: 116, }, D { l: 136, t: 0, i: 1021, }, D { l: 7, t: 0, i: 1961, }, D { l: 7, t: 0, i: 1965, }, D { l: 7, t: 0, i: 2030, }, D { l: 8, t: 0, i: 150 }, D { l: 8, t: 0, i: 702 }, D { l: 8, t: 0, i: 737 }, D { l: 8, t: 0, i: 750 }, D { l: 140, t: 0, i: 366, }, D { l: 11, t: 11, i: 75, }, D { l: 142, t: 11, i: 267, }, D { l: 132, t: 10, i: 367, }, D { l: 8, t: 0, i: 800 }, D { l: 9, t: 0, i: 148 }, D { l: 9, t: 0, i: 872 }, D { l: 9, t: 0, i: 890 }, D { l: 11, t: 0, i: 309, }, D { l: 11, t: 0, i: 1001, }, D { l: 13, t: 0, i: 267, }, D { l: 13, t: 0, i: 323, }, D { l: 5, t: 11, i: 427, }, D { l: 5, t: 11, i: 734, }, D { l: 7, t: 11, i: 478, }, D { l: 136, t: 11, i: 52, }, D { l: 7, t: 11, i: 239, }, D { l: 11, t: 11, i: 217, }, D { l: 142, t: 11, i: 165, }, D { l: 132, t: 11, i: 323, }, D { l: 140, t: 11, i: 419, }, D { l: 13, t: 0, i: 299, }, D { l: 142, t: 0, i: 75, }, D { l: 6, t: 11, i: 87 }, D { l: 6, t: 11, i: 1734, }, D { l: 7, t: 11, i: 20 }, D { l: 7, t: 11, i: 1056, }, D { l: 8, t: 11, i: 732, }, D { l: 9, t: 11, i: 406, }, D { l: 9, t: 11, i: 911, }, D { l: 138, t: 11, i: 694, }, D { l: 134, t: 0, i: 1383, }, D { l: 132, t: 10, i: 694, }, D { l: 133, t: 11, i: 613, }, D { l: 137, t: 0, i: 779, }, D { l: 4, t: 0, i: 598 }, D { l: 140, t: 10, i: 687, }, D { l: 6, t: 0, i: 970 }, D { l: 135, t: 0, i: 424, }, D { l: 133, t: 0, i: 547, }, D { l: 7, t: 11, i: 32 }, D { l: 7, t: 11, i: 984, }, D { l: 8, t: 11, i: 85 }, D { l: 8, t: 11, i: 709, }, D { l: 9, t: 11, i: 579, }, D { l: 9, t: 11, i: 847, }, D { l: 9, t: 11, i: 856, }, D { l: 10, t: 11, i: 799, }, D { l: 11, t: 11, i: 258, }, D { l: 11, t: 11, i: 1007, }, D { l: 12, t: 11, i: 331, }, D { l: 12, t: 11, i: 615, }, D { l: 13, t: 11, i: 188, }, D { l: 13, t: 11, i: 435, }, D { l: 14, t: 11, i: 8 }, D { l: 15, t: 11, i: 165, }, D { l: 16, t: 11, i: 27, }, D { l: 148, t: 11, i: 40, }, D { l: 6, t: 0, i: 1222, }, D { l: 134, t: 0, i: 1385, }, D { l: 132, t: 0, i: 876, }, D { l: 138, t: 11, i: 151, }, D { l: 135, t: 10, i: 213, }, D { l: 4, t: 11, i: 167, }, D { l: 135, t: 11, i: 82, }, D { l: 133, t: 0, i: 133, }, D { l: 6, t: 11, i: 24 }, D { l: 7, t: 11, i: 74 }, D { l: 7, t: 11, i: 678, }, D { l: 137, t: 11, i: 258, }, D { l: 5, t: 11, i: 62 }, D { l: 6, t: 11, i: 534, }, D { l: 7, t: 11, i: 684, }, D { l: 7, t: 11, i: 1043, }, D { l: 7, t: 11, i: 1072, }, D { l: 8, t: 11, i: 280, }, D { l: 8, t: 11, i: 541, }, D { l: 8, t: 11, i: 686, }, D { l: 10, t: 11, i: 519, }, D { l: 11, t: 11, i: 252, }, D { l: 140, t: 11, i: 282, }, D { l: 136, t: 0, i: 187, }, D { l: 8, t: 0, i: 8 }, D { l: 10, t: 0, i: 0 }, D { l: 10, t: 0, i: 818, }, D { l: 139, t: 0, i: 988, }, D { l: 132, t: 11, i: 359, }, D { l: 11, t: 0, i: 429, }, D { l: 15, t: 0, i: 51 }, D { l: 135, t: 10, i: 1672, }, D { l: 136, t: 0, i: 685, }, D { l: 5, t: 11, i: 211, }, D { l: 7, t: 11, i: 88 }, D { l: 136, t: 11, i: 627, }, D { l: 134, t: 0, i: 472, }, D { l: 136, t: 0, i: 132, }, D { l: 6, t: 11, i: 145, }, D { l: 141, t: 11, i: 336, }, D { l: 4, t: 10, i: 751, }, D { l: 11, t: 10, i: 390, }, D { l: 140, t: 10, i: 32, }, D { l: 6, t: 0, i: 938 }, D { l: 6, t: 0, i: 1060, }, D { l: 4, t: 11, i: 263, }, D { l: 4, t: 10, i: 409, }, D { l: 133, t: 10, i: 78, }, D { l: 137, t: 0, i: 874, }, D { l: 8, t: 0, i: 774 }, D { l: 10, t: 0, i: 670, }, D { l: 12, t: 0, i: 51 }, D { l: 4, t: 11, i: 916, }, D { l: 6, t: 10, i: 473, }, D { l: 7, t: 10, i: 1602, }, D { l: 10, t: 10, i: 698, }, D { l: 12, t: 10, i: 212, }, D { l: 13, t: 10, i: 307, }, D { l: 145, t: 10, i: 105, }, D { l: 146, t: 0, i: 92, }, D { l: 143, t: 10, i: 156, }, D { l: 132, t: 0, i: 830, }, D { l: 137, t: 0, i: 701, }, D { l: 4, t: 11, i: 599, }, D { l: 6, t: 11, i: 1634, }, D { l: 7, t: 11, i: 5 }, D { l: 7, t: 11, i: 55 }, D { l: 7, t: 11, i: 67 }, D { l: 7, t: 11, i: 97 }, D { l: 7, t: 11, i: 691, }, D { l: 7, t: 11, i: 979, }, D { l: 7, t: 11, i: 1697, }, D { l: 8, t: 11, i: 207, }, D { l: 8, t: 11, i: 214, }, D { l: 8, t: 11, i: 231, }, D { l: 8, t: 11, i: 294, }, D { l: 8, t: 11, i: 336, }, D { l: 8, t: 11, i: 428, }, D { l: 8, t: 11, i: 451, }, D { l: 8, t: 11, i: 460, }, D { l: 8, t: 11, i: 471, }, D { l: 8, t: 11, i: 622, }, D { l: 8, t: 11, i: 626, }, D { l: 8, t: 11, i: 679, }, D { l: 8, t: 11, i: 759, }, D { l: 8, t: 11, i: 829, }, D { l: 9, t: 11, i: 11 }, D { l: 9, t: 11, i: 246, }, D { l: 9, t: 11, i: 484, }, D { l: 9, t: 11, i: 573, }, D { l: 9, t: 11, i: 706, }, D { l: 9, t: 11, i: 762, }, D { l: 9, t: 11, i: 798, }, D { l: 9, t: 11, i: 855, }, D { l: 9, t: 11, i: 870, }, D { l: 9, t: 11, i: 912, }, D { l: 10, t: 11, i: 303, }, D { l: 10, t: 11, i: 335, }, D { l: 10, t: 11, i: 424, }, D { l: 10, t: 11, i: 461, }, D { l: 10, t: 11, i: 543, }, D { l: 10, t: 11, i: 759, }, D { l: 10, t: 11, i: 814, }, D { l: 11, t: 11, i: 59, }, D { l: 11, t: 11, i: 199, }, D { l: 11, t: 11, i: 235, }, D { l: 11, t: 11, i: 475, }, D { l: 11, t: 11, i: 590, }, D { l: 11, t: 11, i: 929, }, D { l: 11, t: 11, i: 963, }, D { l: 12, t: 11, i: 114, }, D { l: 12, t: 11, i: 182, }, D { l: 12, t: 11, i: 226, }, D { l: 12, t: 11, i: 332, }, D { l: 12, t: 11, i: 439, }, D { l: 12, t: 11, i: 575, }, D { l: 12, t: 11, i: 598, }, D { l: 13, t: 11, i: 8 }, D { l: 13, t: 11, i: 125, }, D { l: 13, t: 11, i: 194, }, D { l: 13, t: 11, i: 287, }, D { l: 14, t: 11, i: 197, }, D { l: 14, t: 11, i: 383, }, D { l: 15, t: 11, i: 53, }, D { l: 17, t: 11, i: 63, }, D { l: 19, t: 11, i: 46, }, D { l: 19, t: 11, i: 98, }, D { l: 19, t: 11, i: 106, }, D { l: 148, t: 11, i: 85, }, D { l: 4, t: 0, i: 127 }, D { l: 5, t: 0, i: 350 }, D { l: 6, t: 0, i: 356 }, D { l: 8, t: 0, i: 426 }, D { l: 9, t: 0, i: 572 }, D { l: 10, t: 0, i: 247, }, D { l: 139, t: 0, i: 312, }, D { l: 134, t: 0, i: 1215, }, D { l: 6, t: 0, i: 59 }, D { l: 9, t: 0, i: 603 }, D { l: 13, t: 0, i: 397, }, D { l: 7, t: 11, i: 1853, }, D { l: 138, t: 11, i: 437, }, D { l: 134, t: 0, i: 1762, }, D { l: 147, t: 11, i: 126, }, D { l: 135, t: 10, i: 883, }, D { l: 13, t: 0, i: 293, }, D { l: 142, t: 0, i: 56, }, D { l: 133, t: 10, i: 617, }, D { l: 139, t: 10, i: 50, }, D { l: 5, t: 11, i: 187, }, D { l: 7, t: 10, i: 1518, }, D { l: 139, t: 10, i: 694, }, D { l: 135, t: 0, i: 441, }, D { l: 6, t: 0, i: 111 }, D { l: 7, t: 0, i: 4 }, D { l: 8, t: 0, i: 163 }, D { l: 8, t: 0, i: 776 }, D { l: 138, t: 0, i: 566, }, D { l: 132, t: 0, i: 806, }, D { l: 4, t: 11, i: 215, }, D { l: 9, t: 11, i: 38 }, D { l: 10, t: 11, i: 3 }, D { l: 11, t: 11, i: 23, }, D { l: 11, t: 11, i: 127, }, D { l: 139, t: 11, i: 796, }, D { l: 14, t: 0, i: 233, }, D { l: 4, t: 10, i: 546, }, D { l: 135, t: 10, i: 2042, }, D { l: 135, t: 0, i: 1994, }, D { l: 134, t: 0, i: 1739, }, D { l: 135, t: 11, i: 1530, }, D { l: 136, t: 0, i: 393, }, D { l: 5, t: 0, i: 297 }, D { l: 7, t: 0, i: 1038, }, D { l: 14, t: 0, i: 359, }, D { l: 19, t: 0, i: 52 }, D { l: 148, t: 0, i: 47, }, D { l: 135, t: 0, i: 309, }, D { l: 4, t: 10, i: 313, }, D { l: 133, t: 10, i: 577, }, D { l: 8, t: 10, i: 184, }, D { l: 141, t: 10, i: 433, }, D { l: 135, t: 10, i: 935, }, D { l: 12, t: 10, i: 186, }, D { l: 12, t: 10, i: 292, }, D { l: 14, t: 10, i: 100, }, D { l: 146, t: 10, i: 70, }, D { l: 136, t: 0, i: 363, }, D { l: 14, t: 0, i: 175, }, D { l: 11, t: 10, i: 402, }, D { l: 12, t: 10, i: 109, }, D { l: 12, t: 10, i: 431, }, D { l: 13, t: 10, i: 179, }, D { l: 13, t: 10, i: 206, }, D { l: 14, t: 10, i: 217, }, D { l: 16, t: 10, i: 3 }, D { l: 148, t: 10, i: 53, }, D { l: 5, t: 10, i: 886, }, D { l: 6, t: 10, i: 46 }, D { l: 6, t: 10, i: 1790, }, D { l: 7, t: 10, i: 14 }, D { l: 7, t: 10, i: 732, }, D { l: 7, t: 10, i: 1654, }, D { l: 8, t: 10, i: 95 }, D { l: 8, t: 10, i: 327, }, D { l: 8, t: 10, i: 616, }, D { l: 9, t: 10, i: 892, }, D { l: 10, t: 10, i: 598, }, D { l: 10, t: 10, i: 769, }, D { l: 11, t: 10, i: 134, }, D { l: 11, t: 10, i: 747, }, D { l: 12, t: 10, i: 378, }, D { l: 142, t: 10, i: 97, }, D { l: 136, t: 0, i: 666, }, D { l: 135, t: 0, i: 1675, }, D { l: 6, t: 0, i: 655 }, D { l: 134, t: 0, i: 1600, }, D { l: 135, t: 0, i: 808, }, D { l: 133, t: 10, i: 1021, }, D { l: 4, t: 11, i: 28 }, D { l: 5, t: 11, i: 440, }, D { l: 7, t: 11, i: 248, }, D { l: 11, t: 11, i: 833, }, D { l: 140, t: 11, i: 344, }, D { l: 134, t: 11, i: 1654, }, D { l: 132, t: 0, i: 280, }, D { l: 140, t: 0, i: 54, }, D { l: 4, t: 0, i: 421 }, D { l: 133, t: 0, i: 548, }, D { l: 132, t: 10, i: 153, }, D { l: 6, t: 11, i: 339, }, D { l: 135, t: 11, i: 923, }, D { l: 133, t: 11, i: 853, }, D { l: 133, t: 10, i: 798, }, D { l: 132, t: 10, i: 587, }, D { l: 6, t: 11, i: 249, }, D { l: 7, t: 11, i: 1234, }, D { l: 139, t: 11, i: 573, }, D { l: 6, t: 10, i: 598, }, D { l: 7, t: 10, i: 42 }, D { l: 8, t: 10, i: 695, }, D { l: 10, t: 10, i: 212, }, D { l: 11, t: 10, i: 158, }, D { l: 14, t: 10, i: 196, }, D { l: 145, t: 10, i: 85, }, D { l: 7, t: 0, i: 249 }, D { l: 5, t: 10, i: 957, }, D { l: 133, t: 10, i: 1008, }, D { l: 4, t: 10, i: 129, }, D { l: 135, t: 10, i: 465, }, D { l: 6, t: 0, i: 254 }, D { l: 7, t: 0, i: 842 }, D { l: 7, t: 0, i: 1659, }, D { l: 9, t: 0, i: 109 }, D { l: 10, t: 0, i: 103, }, D { l: 7, t: 10, i: 908, }, D { l: 7, t: 10, i: 1201, }, D { l: 9, t: 10, i: 755, }, D { l: 11, t: 10, i: 906, }, D { l: 12, t: 10, i: 527, }, D { l: 146, t: 10, i: 7, }, D { l: 5, t: 0, i: 262 }, D { l: 136, t: 10, i: 450, }, D { l: 144, t: 0, i: 1 }, D { l: 10, t: 11, i: 201, }, D { l: 142, t: 11, i: 319, }, D { l: 7, t: 11, i: 49 }, D { l: 7, t: 11, i: 392, }, D { l: 8, t: 11, i: 20 }, D { l: 8, t: 11, i: 172, }, D { l: 8, t: 11, i: 690, }, D { l: 9, t: 11, i: 383, }, D { l: 9, t: 11, i: 845, }, D { l: 10, t: 11, i: 48, }, D { l: 11, t: 11, i: 293, }, D { l: 11, t: 11, i: 832, }, D { l: 11, t: 11, i: 920, }, D { l: 141, t: 11, i: 221, }, D { l: 5, t: 11, i: 858, }, D { l: 133, t: 11, i: 992, }, D { l: 134, t: 0, i: 805, }, D { l: 139, t: 10, i: 1003, }, D { l: 6, t: 0, i: 1630, }, D { l: 134, t: 11, i: 307, }, D { l: 7, t: 11, i: 1512, }, D { l: 135, t: 11, i: 1794, }, D { l: 6, t: 11, i: 268, }, D { l: 137, t: 11, i: 62, }, D { l: 135, t: 10, i: 1868, }, D { l: 133, t: 0, i: 671, }, D { l: 4, t: 0, i: 989 }, D { l: 8, t: 0, i: 972 }, D { l: 136, t: 0, i: 998, }, D { l: 132, t: 11, i: 423, }, D { l: 132, t: 0, i: 889, }, D { l: 135, t: 0, i: 1382, }, D { l: 135, t: 0, i: 1910, }, D { l: 7, t: 10, i: 965, }, D { l: 7, t: 10, i: 1460, }, D { l: 135, t: 10, i: 1604, }, D { l: 4, t: 0, i: 627 }, D { l: 5, t: 0, i: 775 }, D { l: 138, t: 11, i: 106, }, D { l: 134, t: 11, i: 348, }, D { l: 7, t: 0, i: 202 }, D { l: 11, t: 0, i: 362, }, D { l: 11, t: 0, i: 948, }, D { l: 140, t: 0, i: 388, }, D { l: 138, t: 11, i: 771, }, D { l: 6, t: 11, i: 613, }, D { l: 136, t: 11, i: 223, }, D { l: 6, t: 0, i: 560 }, D { l: 7, t: 0, i: 451 }, D { l: 8, t: 0, i: 389 }, D { l: 12, t: 0, i: 490, }, D { l: 13, t: 0, i: 16 }, D { l: 13, t: 0, i: 215, }, D { l: 13, t: 0, i: 351, }, D { l: 18, t: 0, i: 132, }, D { l: 147, t: 0, i: 125, }, D { l: 135, t: 0, i: 841, }, D { l: 136, t: 0, i: 566, }, D { l: 136, t: 0, i: 938, }, D { l: 132, t: 11, i: 670, }, D { l: 5, t: 0, i: 912 }, D { l: 6, t: 0, i: 1695, }, D { l: 140, t: 11, i: 55, }, D { l: 9, t: 11, i: 40 }, D { l: 139, t: 11, i: 136, }, D { l: 7, t: 0, i: 1361, }, D { l: 7, t: 10, i: 982, }, D { l: 10, t: 10, i: 32, }, D { l: 143, t: 10, i: 56, }, D { l: 11, t: 11, i: 259, }, D { l: 140, t: 11, i: 270, }, D { l: 5, t: 0, i: 236 }, D { l: 6, t: 0, i: 572 }, D { l: 8, t: 0, i: 492 }, D { l: 11, t: 0, i: 618, }, D { l: 144, t: 0, i: 56, }, D { l: 8, t: 11, i: 572, }, D { l: 9, t: 11, i: 310, }, D { l: 9, t: 11, i: 682, }, D { l: 137, t: 11, i: 698, }, D { l: 134, t: 0, i: 1854, }, D { l: 5, t: 0, i: 190 }, D { l: 136, t: 0, i: 318, }, D { l: 133, t: 10, i: 435, }, D { l: 135, t: 0, i: 1376, }, D { l: 4, t: 11, i: 296, }, D { l: 6, t: 11, i: 352, }, D { l: 7, t: 11, i: 401, }, D { l: 7, t: 11, i: 1410, }, D { l: 7, t: 11, i: 1594, }, D { l: 7, t: 11, i: 1674, }, D { l: 8, t: 11, i: 63 }, D { l: 8, t: 11, i: 660, }, D { l: 137, t: 11, i: 74, }, D { l: 7, t: 0, i: 349 }, D { l: 5, t: 10, i: 85 }, D { l: 6, t: 10, i: 419, }, D { l: 7, t: 10, i: 305, }, D { l: 7, t: 10, i: 361, }, D { l: 7, t: 10, i: 1337, }, D { l: 8, t: 10, i: 71 }, D { l: 140, t: 10, i: 519, }, D { l: 4, t: 11, i: 139, }, D { l: 4, t: 11, i: 388, }, D { l: 140, t: 11, i: 188, }, D { l: 6, t: 0, i: 1972, }, D { l: 6, t: 0, i: 2013, }, D { l: 8, t: 0, i: 951 }, D { l: 10, t: 0, i: 947, }, D { l: 10, t: 0, i: 974, }, D { l: 10, t: 0, i: 1018, }, D { l: 142, t: 0, i: 476, }, D { l: 140, t: 10, i: 688, }, D { l: 135, t: 10, i: 740, }, D { l: 5, t: 10, i: 691, }, D { l: 7, t: 10, i: 345, }, D { l: 9, t: 10, i: 94 }, D { l: 140, t: 10, i: 169, }, D { l: 9, t: 0, i: 344 }, D { l: 5, t: 10, i: 183, }, D { l: 6, t: 10, i: 582, }, D { l: 10, t: 10, i: 679, }, D { l: 140, t: 10, i: 435, }, D { l: 135, t: 10, i: 511, }, D { l: 132, t: 0, i: 850, }, D { l: 8, t: 11, i: 441, }, D { l: 10, t: 11, i: 314, }, D { l: 143, t: 11, i: 3, }, D { l: 7, t: 10, i: 1993, }, D { l: 136, t: 10, i: 684, }, D { l: 4, t: 11, i: 747, }, D { l: 6, t: 11, i: 290, }, D { l: 6, t: 10, i: 583, }, D { l: 7, t: 11, i: 649, }, D { l: 7, t: 11, i: 1479, }, D { l: 135, t: 11, i: 1583, }, D { l: 133, t: 11, i: 232, }, D { l: 133, t: 10, i: 704, }, D { l: 134, t: 0, i: 910, }, D { l: 4, t: 10, i: 179, }, D { l: 5, t: 10, i: 198, }, D { l: 133, t: 10, i: 697, }, D { l: 7, t: 10, i: 347, }, D { l: 7, t: 10, i: 971, }, D { l: 8, t: 10, i: 181, }, D { l: 138, t: 10, i: 711, }, D { l: 136, t: 11, i: 525, }, D { l: 14, t: 0, i: 19 }, D { l: 14, t: 0, i: 28 }, D { l: 144, t: 0, i: 29, }, D { l: 7, t: 0, i: 85 }, D { l: 7, t: 0, i: 247 }, D { l: 8, t: 0, i: 585 }, D { l: 138, t: 0, i: 163, }, D { l: 4, t: 0, i: 487 }, D { l: 7, t: 11, i: 472, }, D { l: 7, t: 11, i: 1801, }, D { l: 10, t: 11, i: 748, }, D { l: 141, t: 11, i: 458, }, D { l: 4, t: 10, i: 243, }, D { l: 5, t: 10, i: 203, }, D { l: 7, t: 10, i: 19 }, D { l: 7, t: 10, i: 71 }, D { l: 7, t: 10, i: 113, }, D { l: 10, t: 10, i: 405, }, D { l: 11, t: 10, i: 357, }, D { l: 142, t: 10, i: 240, }, D { l: 7, t: 10, i: 1450, }, D { l: 139, t: 10, i: 99, }, D { l: 132, t: 11, i: 425, }, D { l: 138, t: 0, i: 145, }, D { l: 147, t: 0, i: 83, }, D { l: 6, t: 10, i: 492, }, D { l: 137, t: 11, i: 247, }, D { l: 4, t: 0, i: 1013, }, D { l: 134, t: 0, i: 2033, }, D { l: 5, t: 10, i: 134, }, D { l: 6, t: 10, i: 408, }, D { l: 6, t: 10, i: 495, }, D { l: 135, t: 10, i: 1593, }, D { l: 135, t: 0, i: 1922, }, D { l: 134, t: 11, i: 1768, }, D { l: 4, t: 0, i: 124 }, D { l: 10, t: 0, i: 457, }, D { l: 11, t: 0, i: 121, }, D { l: 11, t: 0, i: 169, }, D { l: 11, t: 0, i: 870, }, D { l: 11, t: 0, i: 874, }, D { l: 12, t: 0, i: 214, }, D { l: 14, t: 0, i: 187, }, D { l: 143, t: 0, i: 77, }, D { l: 5, t: 0, i: 557 }, D { l: 135, t: 0, i: 1457, }, D { l: 139, t: 0, i: 66, }, D { l: 5, t: 11, i: 943, }, D { l: 6, t: 11, i: 1779, }, D { l: 142, t: 10, i: 4, }, D { l: 4, t: 10, i: 248, }, D { l: 4, t: 10, i: 665, }, D { l: 7, t: 10, i: 137, }, D { l: 137, t: 10, i: 349, }, D { l: 7, t: 0, i: 1193, }, D { l: 5, t: 11, i: 245, }, D { l: 6, t: 11, i: 576, }, D { l: 7, t: 11, i: 582, }, D { l: 136, t: 11, i: 225, }, D { l: 144, t: 0, i: 82, }, D { l: 7, t: 10, i: 1270, }, D { l: 139, t: 10, i: 612, }, D { l: 5, t: 0, i: 454 }, D { l: 10, t: 0, i: 352, }, D { l: 138, t: 11, i: 352, }, D { l: 18, t: 0, i: 57 }, D { l: 5, t: 10, i: 371, }, D { l: 135, t: 10, i: 563, }, D { l: 135, t: 0, i: 1333, }, D { l: 6, t: 0, i: 107 }, D { l: 7, t: 0, i: 638 }, D { l: 7, t: 0, i: 1632, }, D { l: 9, t: 0, i: 396 }, D { l: 134, t: 11, i: 610, }, D { l: 5, t: 0, i: 370 }, D { l: 134, t: 0, i: 1756, }, D { l: 4, t: 10, i: 374, }, D { l: 7, t: 10, i: 547, }, D { l: 7, t: 10, i: 1700, }, D { l: 7, t: 10, i: 1833, }, D { l: 139, t: 10, i: 858, }, D { l: 133, t: 0, i: 204, }, D { l: 6, t: 0, i: 1305, }, D { l: 9, t: 10, i: 311, }, D { l: 141, t: 10, i: 42, }, D { l: 5, t: 0, i: 970 }, D { l: 134, t: 0, i: 1706, }, D { l: 6, t: 10, i: 1647, }, D { l: 7, t: 10, i: 1552, }, D { l: 7, t: 10, i: 2010, }, D { l: 9, t: 10, i: 494, }, D { l: 137, t: 10, i: 509, }, D { l: 13, t: 11, i: 455, }, D { l: 15, t: 11, i: 99, }, D { l: 15, t: 11, i: 129, }, D { l: 144, t: 11, i: 68, }, D { l: 135, t: 0, i: 3 }, D { l: 4, t: 0, i: 35 }, D { l: 5, t: 0, i: 121 }, D { l: 5, t: 0, i: 483 }, D { l: 5, t: 0, i: 685 }, D { l: 6, t: 0, i: 489 }, D { l: 6, t: 0, i: 782 }, D { l: 6, t: 0, i: 1032, }, D { l: 7, t: 0, i: 1204, }, D { l: 136, t: 0, i: 394, }, D { l: 4, t: 0, i: 921 }, D { l: 133, t: 0, i: 1007, }, D { l: 8, t: 11, i: 360, }, D { l: 138, t: 11, i: 63, }, D { l: 135, t: 0, i: 1696, }, D { l: 134, t: 0, i: 1519, }, D { l: 132, t: 11, i: 443, }, D { l: 135, t: 11, i: 944, }, D { l: 6, t: 10, i: 123, }, D { l: 7, t: 10, i: 214, }, D { l: 9, t: 10, i: 728, }, D { l: 10, t: 10, i: 157, }, D { l: 11, t: 10, i: 346, }, D { l: 11, t: 10, i: 662, }, D { l: 143, t: 10, i: 106, }, D { l: 137, t: 0, i: 981, }, D { l: 135, t: 10, i: 1435, }, D { l: 134, t: 0, i: 1072, }, D { l: 132, t: 0, i: 712, }, D { l: 134, t: 0, i: 1629, }, D { l: 134, t: 0, i: 728, }, D { l: 4, t: 11, i: 298, }, D { l: 137, t: 11, i: 483, }, D { l: 6, t: 0, i: 1177, }, D { l: 6, t: 0, i: 1271, }, D { l: 5, t: 11, i: 164, }, D { l: 7, t: 11, i: 121, }, D { l: 142, t: 11, i: 189, }, D { l: 7, t: 0, i: 1608, }, D { l: 4, t: 10, i: 707, }, D { l: 5, t: 10, i: 588, }, D { l: 6, t: 10, i: 393, }, D { l: 13, t: 10, i: 106, }, D { l: 18, t: 10, i: 49, }, D { l: 147, t: 10, i: 41, }, D { l: 23, t: 0, i: 16 }, D { l: 151, t: 11, i: 16, }, D { l: 6, t: 10, i: 211, }, D { l: 7, t: 10, i: 1690, }, D { l: 11, t: 10, i: 486, }, D { l: 140, t: 10, i: 369, }, D { l: 133, t: 0, i: 485, }, D { l: 19, t: 11, i: 15, }, D { l: 149, t: 11, i: 27, }, D { l: 4, t: 11, i: 172, }, D { l: 9, t: 11, i: 611, }, D { l: 10, t: 11, i: 436, }, D { l: 12, t: 11, i: 673, }, D { l: 141, t: 11, i: 255, }, D { l: 5, t: 11, i: 844, }, D { l: 10, t: 11, i: 484, }, D { l: 11, t: 11, i: 754, }, D { l: 12, t: 11, i: 457, }, D { l: 14, t: 11, i: 171, }, D { l: 14, t: 11, i: 389, }, D { l: 146, t: 11, i: 153, }, D { l: 4, t: 0, i: 285 }, D { l: 5, t: 0, i: 27 }, D { l: 5, t: 0, i: 317 }, D { l: 6, t: 0, i: 301 }, D { l: 7, t: 0, i: 7 }, D { l: 8, t: 0, i: 153 }, D { l: 10, t: 0, i: 766, }, D { l: 11, t: 0, i: 468, }, D { l: 12, t: 0, i: 467, }, D { l: 141, t: 0, i: 143, }, D { l: 134, t: 0, i: 1462, }, D { l: 9, t: 11, i: 263, }, D { l: 10, t: 11, i: 147, }, D { l: 138, t: 11, i: 492, }, D { l: 133, t: 11, i: 537, }, D { l: 6, t: 0, i: 1945, }, D { l: 6, t: 0, i: 1986, }, D { l: 6, t: 0, i: 1991, }, D { l: 134, t: 0, i: 2038, }, D { l: 134, t: 10, i: 219, }, D { l: 137, t: 11, i: 842, }, D { l: 14, t: 0, i: 52 }, D { l: 17, t: 0, i: 50 }, D { l: 5, t: 10, i: 582, }, D { l: 6, t: 10, i: 1646, }, D { l: 7, t: 10, i: 99 }, D { l: 7, t: 10, i: 1962, }, D { l: 7, t: 10, i: 1986, }, D { l: 8, t: 10, i: 515, }, D { l: 8, t: 10, i: 773, }, D { l: 9, t: 10, i: 23 }, D { l: 9, t: 10, i: 491, }, D { l: 12, t: 10, i: 620, }, D { l: 142, t: 10, i: 93, }, D { l: 138, t: 11, i: 97, }, D { l: 20, t: 0, i: 21 }, D { l: 20, t: 0, i: 44 }, D { l: 133, t: 10, i: 851, }, D { l: 136, t: 0, i: 819, }, D { l: 139, t: 0, i: 917, }, D { l: 5, t: 11, i: 230, }, D { l: 5, t: 11, i: 392, }, D { l: 6, t: 11, i: 420, }, D { l: 8, t: 10, i: 762, }, D { l: 8, t: 10, i: 812, }, D { l: 9, t: 11, i: 568, }, D { l: 9, t: 10, i: 910, }, D { l: 140, t: 11, i: 612, }, D { l: 135, t: 0, i: 784, }, D { l: 15, t: 0, i: 135, }, D { l: 143, t: 11, i: 135, }, D { l: 10, t: 0, i: 454, }, D { l: 140, t: 0, i: 324, }, D { l: 4, t: 11, i: 0 }, D { l: 5, t: 11, i: 41 }, D { l: 7, t: 11, i: 1459, }, D { l: 7, t: 11, i: 1469, }, D { l: 7, t: 11, i: 1618, }, D { l: 7, t: 11, i: 1859, }, D { l: 9, t: 11, i: 549, }, D { l: 139, t: 11, i: 905, }, D { l: 4, t: 10, i: 98 }, D { l: 7, t: 10, i: 1365, }, D { l: 9, t: 10, i: 422, }, D { l: 9, t: 10, i: 670, }, D { l: 10, t: 10, i: 775, }, D { l: 11, t: 10, i: 210, }, D { l: 13, t: 10, i: 26, }, D { l: 13, t: 10, i: 457, }, D { l: 141, t: 10, i: 476, }, D { l: 6, t: 0, i: 1719, }, D { l: 6, t: 0, i: 1735, }, D { l: 7, t: 0, i: 2016, }, D { l: 7, t: 0, i: 2020, }, D { l: 8, t: 0, i: 837 }, D { l: 137, t: 0, i: 852, }, D { l: 133, t: 11, i: 696, }, D { l: 135, t: 0, i: 852, }, D { l: 132, t: 0, i: 952, }, D { l: 134, t: 10, i: 1730, }, D { l: 132, t: 11, i: 771, }, D { l: 138, t: 0, i: 568, }, D { l: 137, t: 0, i: 448, }, D { l: 139, t: 0, i: 146, }, D { l: 8, t: 0, i: 67 }, D { l: 138, t: 0, i: 419, }, D { l: 133, t: 11, i: 921, }, D { l: 137, t: 10, i: 147, }, D { l: 134, t: 0, i: 1826, }, D { l: 10, t: 0, i: 657, }, D { l: 14, t: 0, i: 297, }, D { l: 142, t: 0, i: 361, }, D { l: 6, t: 0, i: 666 }, D { l: 6, t: 0, i: 767 }, D { l: 134, t: 0, i: 1542, }, D { l: 139, t: 0, i: 729, }, D { l: 6, t: 11, i: 180, }, D { l: 7, t: 11, i: 1137, }, D { l: 8, t: 11, i: 751, }, D { l: 139, t: 11, i: 805, }, D { l: 4, t: 11, i: 183, }, D { l: 7, t: 11, i: 271, }, D { l: 11, t: 11, i: 824, }, D { l: 11, t: 11, i: 952, }, D { l: 13, t: 11, i: 278, }, D { l: 13, t: 11, i: 339, }, D { l: 13, t: 11, i: 482, }, D { l: 14, t: 11, i: 424, }, D { l: 148, t: 11, i: 99, }, D { l: 4, t: 0, i: 669 }, D { l: 5, t: 11, i: 477, }, D { l: 5, t: 11, i: 596, }, D { l: 6, t: 11, i: 505, }, D { l: 7, t: 11, i: 1221, }, D { l: 11, t: 11, i: 907, }, D { l: 12, t: 11, i: 209, }, D { l: 141, t: 11, i: 214, }, D { l: 135, t: 11, i: 1215, }, D { l: 5, t: 0, i: 402 }, D { l: 6, t: 10, i: 30 }, D { l: 11, t: 10, i: 56, }, D { l: 139, t: 10, i: 305, }, D { l: 7, t: 11, i: 564, }, D { l: 142, t: 11, i: 168, }, D { l: 139, t: 0, i: 152, }, D { l: 7, t: 0, i: 912 }, D { l: 135, t: 10, i: 1614, }, D { l: 4, t: 10, i: 150, }, D { l: 5, t: 10, i: 303, }, D { l: 134, t: 10, i: 327, }, D { l: 7, t: 0, i: 320 }, D { l: 8, t: 0, i: 51 }, D { l: 9, t: 0, i: 868 }, D { l: 10, t: 0, i: 833, }, D { l: 12, t: 0, i: 481, }, D { l: 12, t: 0, i: 570, }, D { l: 148, t: 0, i: 106, }, D { l: 132, t: 0, i: 445, }, D { l: 7, t: 11, i: 274, }, D { l: 11, t: 11, i: 263, }, D { l: 11, t: 11, i: 479, }, D { l: 11, t: 11, i: 507, }, D { l: 140, t: 11, i: 277, }, D { l: 10, t: 0, i: 555, }, D { l: 11, t: 0, i: 308, }, D { l: 19, t: 0, i: 95 }, D { l: 6, t: 11, i: 1645, }, D { l: 8, t: 10, i: 192, }, D { l: 10, t: 10, i: 78, }, D { l: 141, t: 10, i: 359, }, D { l: 135, t: 10, i: 786, }, D { l: 6, t: 11, i: 92 }, D { l: 6, t: 11, i: 188, }, D { l: 7, t: 11, i: 1269, }, D { l: 7, t: 11, i: 1524, }, D { l: 7, t: 11, i: 1876, }, D { l: 10, t: 11, i: 228, }, D { l: 139, t: 11, i: 1020, }, D { l: 4, t: 11, i: 459, }, D { l: 133, t: 11, i: 966, }, D { l: 11, t: 0, i: 386, }, D { l: 6, t: 10, i: 1638, }, D { l: 7, t: 10, i: 79 }, D { l: 7, t: 10, i: 496, }, D { l: 9, t: 10, i: 138, }, D { l: 10, t: 10, i: 336, }, D { l: 12, t: 10, i: 412, }, D { l: 12, t: 10, i: 440, }, D { l: 142, t: 10, i: 305, }, D { l: 133, t: 0, i: 239, }, D { l: 7, t: 0, i: 83 }, D { l: 7, t: 0, i: 1990, }, D { l: 8, t: 0, i: 130 }, D { l: 139, t: 0, i: 720, }, D { l: 138, t: 11, i: 709, }, D { l: 4, t: 0, i: 143 }, D { l: 5, t: 0, i: 550 }, D { l: 133, t: 0, i: 752, }, D { l: 5, t: 0, i: 123 }, D { l: 6, t: 0, i: 530 }, D { l: 7, t: 0, i: 348 }, D { l: 135, t: 0, i: 1419, }, D { l: 135, t: 0, i: 2024, }, D { l: 6, t: 11, i: 18 }, D { l: 7, t: 11, i: 179, }, D { l: 7, t: 11, i: 721, }, D { l: 7, t: 11, i: 932, }, D { l: 8, t: 11, i: 548, }, D { l: 8, t: 11, i: 757, }, D { l: 9, t: 11, i: 54 }, D { l: 9, t: 11, i: 65 }, D { l: 9, t: 11, i: 532, }, D { l: 9, t: 11, i: 844, }, D { l: 10, t: 11, i: 113, }, D { l: 10, t: 11, i: 117, }, D { l: 10, t: 11, i: 236, }, D { l: 10, t: 11, i: 315, }, D { l: 10, t: 11, i: 430, }, D { l: 10, t: 11, i: 798, }, D { l: 11, t: 11, i: 153, }, D { l: 11, t: 11, i: 351, }, D { l: 11, t: 11, i: 375, }, D { l: 12, t: 11, i: 78, }, D { l: 12, t: 11, i: 151, }, D { l: 12, t: 11, i: 392, }, D { l: 14, t: 11, i: 248, }, D { l: 143, t: 11, i: 23, }, D { l: 7, t: 10, i: 204, }, D { l: 7, t: 10, i: 415, }, D { l: 8, t: 10, i: 42 }, D { l: 10, t: 10, i: 85, }, D { l: 139, t: 10, i: 564, }, D { l: 134, t: 0, i: 958, }, D { l: 133, t: 11, i: 965, }, D { l: 132, t: 0, i: 210, }, D { l: 135, t: 11, i: 1429, }, D { l: 138, t: 11, i: 480, }, D { l: 134, t: 11, i: 182, }, D { l: 139, t: 11, i: 345, }, D { l: 10, t: 11, i: 65, }, D { l: 10, t: 11, i: 488, }, D { l: 138, t: 11, i: 497, }, D { l: 4, t: 10, i: 3 }, D { l: 5, t: 10, i: 247, }, D { l: 5, t: 10, i: 644, }, D { l: 7, t: 10, i: 744, }, D { l: 7, t: 10, i: 1207, }, D { l: 7, t: 10, i: 1225, }, D { l: 7, t: 10, i: 1909, }, D { l: 146, t: 10, i: 147, }, D { l: 132, t: 0, i: 430, }, D { l: 5, t: 10, i: 285, }, D { l: 9, t: 10, i: 67 }, D { l: 13, t: 10, i: 473, }, D { l: 143, t: 10, i: 82, }, D { l: 144, t: 11, i: 16, }, D { l: 7, t: 11, i: 1162, }, D { l: 9, t: 11, i: 588, }, D { l: 10, t: 11, i: 260, }, D { l: 151, t: 10, i: 8, }, D { l: 133, t: 0, i: 213, }, D { l: 138, t: 0, i: 7 }, D { l: 135, t: 0, i: 801, }, D { l: 134, t: 11, i: 1786, }, D { l: 135, t: 11, i: 308, }, D { l: 6, t: 0, i: 936 }, D { l: 134, t: 0, i: 1289, }, D { l: 133, t: 0, i: 108, }, D { l: 132, t: 0, i: 885, }, D { l: 133, t: 0, i: 219, }, D { l: 139, t: 0, i: 587, }, D { l: 4, t: 0, i: 193 }, D { l: 5, t: 0, i: 916 }, D { l: 6, t: 0, i: 1041, }, D { l: 7, t: 0, i: 364 }, D { l: 10, t: 0, i: 398, }, D { l: 10, t: 0, i: 726, }, D { l: 11, t: 0, i: 317, }, D { l: 11, t: 0, i: 626, }, D { l: 12, t: 0, i: 142, }, D { l: 12, t: 0, i: 288, }, D { l: 12, t: 0, i: 678, }, D { l: 13, t: 0, i: 313, }, D { l: 15, t: 0, i: 113, }, D { l: 146, t: 0, i: 114, }, D { l: 135, t: 0, i: 1165, }, D { l: 6, t: 0, i: 241 }, D { l: 9, t: 0, i: 342 }, D { l: 10, t: 0, i: 729, }, D { l: 11, t: 0, i: 284, }, D { l: 11, t: 0, i: 445, }, D { l: 11, t: 0, i: 651, }, D { l: 11, t: 0, i: 863, }, D { l: 13, t: 0, i: 398, }, D { l: 146, t: 0, i: 99, }, D { l: 7, t: 0, i: 907 }, D { l: 136, t: 0, i: 832, }, D { l: 9, t: 0, i: 303 }, D { l: 4, t: 10, i: 29 }, D { l: 6, t: 10, i: 532, }, D { l: 7, t: 10, i: 1628, }, D { l: 7, t: 10, i: 1648, }, D { l: 9, t: 10, i: 350, }, D { l: 10, t: 10, i: 433, }, D { l: 11, t: 10, i: 97, }, D { l: 11, t: 10, i: 557, }, D { l: 11, t: 10, i: 745, }, D { l: 12, t: 10, i: 289, }, D { l: 12, t: 10, i: 335, }, D { l: 12, t: 10, i: 348, }, D { l: 12, t: 10, i: 606, }, D { l: 13, t: 10, i: 116, }, D { l: 13, t: 10, i: 233, }, D { l: 13, t: 10, i: 466, }, D { l: 14, t: 10, i: 181, }, D { l: 14, t: 10, i: 209, }, D { l: 14, t: 10, i: 232, }, D { l: 14, t: 10, i: 236, }, D { l: 14, t: 10, i: 300, }, D { l: 16, t: 10, i: 41, }, D { l: 148, t: 10, i: 97, }, D { l: 7, t: 11, i: 423, }, D { l: 7, t: 10, i: 1692, }, D { l: 136, t: 11, i: 588, }, D { l: 6, t: 0, i: 931 }, D { l: 134, t: 0, i: 1454, }, D { l: 5, t: 10, i: 501, }, D { l: 7, t: 10, i: 1704, }, D { l: 9, t: 10, i: 553, }, D { l: 11, t: 10, i: 520, }, D { l: 12, t: 10, i: 557, }, D { l: 141, t: 10, i: 249, }, D { l: 136, t: 11, i: 287, }, D { l: 4, t: 0, i: 562 }, D { l: 9, t: 0, i: 254 }, D { l: 139, t: 0, i: 879, }, D { l: 132, t: 0, i: 786, }, D { l: 14, t: 11, i: 32, }, D { l: 18, t: 11, i: 85, }, D { l: 20, t: 11, i: 2 }, D { l: 152, t: 11, i: 16, }, D { l: 135, t: 0, i: 1294, }, D { l: 7, t: 11, i: 723, }, D { l: 135, t: 11, i: 1135, }, D { l: 6, t: 0, i: 216 }, D { l: 7, t: 0, i: 901 }, D { l: 7, t: 0, i: 1343, }, D { l: 8, t: 0, i: 493 }, D { l: 134, t: 11, i: 403, }, D { l: 7, t: 11, i: 719, }, D { l: 8, t: 11, i: 809, }, D { l: 136, t: 11, i: 834, }, D { l: 5, t: 11, i: 210, }, D { l: 6, t: 11, i: 213, }, D { l: 7, t: 11, i: 60 }, D { l: 10, t: 11, i: 364, }, D { l: 139, t: 11, i: 135, }, D { l: 7, t: 0, i: 341 }, D { l: 11, t: 0, i: 219, }, D { l: 5, t: 11, i: 607, }, D { l: 8, t: 11, i: 326, }, D { l: 136, t: 11, i: 490, }, D { l: 4, t: 11, i: 701, }, D { l: 5, t: 11, i: 472, }, D { l: 5, t: 11, i: 639, }, D { l: 7, t: 11, i: 1249, }, D { l: 9, t: 11, i: 758, }, D { l: 139, t: 11, i: 896, }, D { l: 135, t: 11, i: 380, }, D { l: 135, t: 11, i: 1947, }, D { l: 139, t: 0, i: 130, }, D { l: 135, t: 0, i: 1734, }, D { l: 10, t: 0, i: 115, }, D { l: 11, t: 0, i: 420, }, D { l: 12, t: 0, i: 154, }, D { l: 13, t: 0, i: 404, }, D { l: 14, t: 0, i: 346, }, D { l: 143, t: 0, i: 54, }, D { l: 134, t: 10, i: 129, }, D { l: 4, t: 11, i: 386, }, D { l: 7, t: 11, i: 41 }, D { l: 8, t: 11, i: 405, }, D { l: 9, t: 11, i: 497, }, D { l: 11, t: 11, i: 110, }, D { l: 11, t: 11, i: 360, }, D { l: 15, t: 11, i: 37, }, D { l: 144, t: 11, i: 84, }, D { l: 141, t: 11, i: 282, }, D { l: 5, t: 11, i: 46 }, D { l: 7, t: 11, i: 1452, }, D { l: 7, t: 11, i: 1480, }, D { l: 8, t: 11, i: 634, }, D { l: 140, t: 11, i: 472, }, D { l: 4, t: 11, i: 524, }, D { l: 136, t: 11, i: 810, }, D { l: 10, t: 11, i: 238, }, D { l: 141, t: 11, i: 33, }, D { l: 133, t: 0, i: 604, }, D { l: 5, t: 0, i: 1011, }, D { l: 136, t: 0, i: 701, }, D { l: 8, t: 0, i: 856 }, D { l: 8, t: 0, i: 858 }, D { l: 8, t: 0, i: 879 }, D { l: 12, t: 0, i: 702, }, D { l: 142, t: 0, i: 447, }, D { l: 4, t: 0, i: 54 }, D { l: 5, t: 0, i: 666 }, D { l: 7, t: 0, i: 1039, }, D { l: 7, t: 0, i: 1130, }, D { l: 9, t: 0, i: 195 }, D { l: 138, t: 0, i: 302, }, D { l: 4, t: 10, i: 25 }, D { l: 5, t: 10, i: 60 }, D { l: 6, t: 10, i: 504, }, D { l: 7, t: 10, i: 614, }, D { l: 7, t: 10, i: 1155, }, D { l: 140, t: 10, i: 0, }, D { l: 7, t: 10, i: 1248, }, D { l: 11, t: 10, i: 621, }, D { l: 139, t: 10, i: 702, }, D { l: 133, t: 11, i: 997, }, D { l: 137, t: 10, i: 321, }, D { l: 134, t: 0, i: 1669, }, D { l: 134, t: 0, i: 1791, }, D { l: 4, t: 10, i: 379, }, D { l: 135, t: 10, i: 1397, }, D { l: 138, t: 11, i: 372, }, D { l: 5, t: 11, i: 782, }, D { l: 5, t: 11, i: 829, }, D { l: 134, t: 11, i: 1738, }, D { l: 135, t: 0, i: 1228, }, D { l: 4, t: 10, i: 118, }, D { l: 6, t: 10, i: 274, }, D { l: 6, t: 10, i: 361, }, D { l: 7, t: 10, i: 75 }, D { l: 141, t: 10, i: 441, }, D { l: 132, t: 0, i: 623, }, D { l: 9, t: 11, i: 279, }, D { l: 10, t: 11, i: 407, }, D { l: 14, t: 11, i: 84, }, D { l: 150, t: 11, i: 18, }, D { l: 137, t: 10, i: 841, }, D { l: 135, t: 0, i: 798, }, D { l: 140, t: 10, i: 693, }, D { l: 5, t: 10, i: 314, }, D { l: 6, t: 10, i: 221, }, D { l: 7, t: 10, i: 419, }, D { l: 10, t: 10, i: 650, }, D { l: 11, t: 10, i: 396, }, D { l: 12, t: 10, i: 156, }, D { l: 13, t: 10, i: 369, }, D { l: 14, t: 10, i: 333, }, D { l: 145, t: 10, i: 47, }, D { l: 135, t: 11, i: 1372, }, D { l: 7, t: 0, i: 122 }, D { l: 9, t: 0, i: 259 }, D { l: 10, t: 0, i: 84 }, D { l: 11, t: 0, i: 470, }, D { l: 12, t: 0, i: 541, }, D { l: 141, t: 0, i: 379, }, D { l: 134, t: 0, i: 837, }, D { l: 8, t: 0, i: 1013, }, D { l: 4, t: 11, i: 78 }, D { l: 5, t: 11, i: 96 }, D { l: 5, t: 11, i: 182, }, D { l: 7, t: 11, i: 1724, }, D { l: 7, t: 11, i: 1825, }, D { l: 10, t: 11, i: 394, }, D { l: 10, t: 11, i: 471, }, D { l: 11, t: 11, i: 532, }, D { l: 14, t: 11, i: 340, }, D { l: 145, t: 11, i: 88, }, D { l: 134, t: 0, i: 577, }, D { l: 135, t: 11, i: 1964, }, D { l: 132, t: 10, i: 913, }, D { l: 134, t: 0, i: 460, }, D { l: 8, t: 0, i: 891 }, D { l: 10, t: 0, i: 901, }, D { l: 10, t: 0, i: 919, }, D { l: 10, t: 0, i: 932, }, D { l: 12, t: 0, i: 715, }, D { l: 12, t: 0, i: 728, }, D { l: 12, t: 0, i: 777, }, D { l: 14, t: 0, i: 457, }, D { l: 144, t: 0, i: 103, }, D { l: 5, t: 0, i: 82 }, D { l: 5, t: 0, i: 131 }, D { l: 7, t: 0, i: 1755, }, D { l: 8, t: 0, i: 31 }, D { l: 9, t: 0, i: 168 }, D { l: 9, t: 0, i: 764 }, D { l: 139, t: 0, i: 869, }, D { l: 136, t: 10, i: 475, }, D { l: 6, t: 0, i: 605 }, D { l: 5, t: 10, i: 1016, }, D { l: 9, t: 11, i: 601, }, D { l: 9, t: 11, i: 619, }, D { l: 10, t: 11, i: 505, }, D { l: 10, t: 11, i: 732, }, D { l: 11, t: 11, i: 355, }, D { l: 140, t: 11, i: 139, }, D { l: 7, t: 10, i: 602, }, D { l: 8, t: 10, i: 179, }, D { l: 10, t: 10, i: 781, }, D { l: 140, t: 10, i: 126, }, D { l: 134, t: 0, i: 1246, }, D { l: 6, t: 10, i: 329, }, D { l: 138, t: 10, i: 111, }, D { l: 6, t: 11, i: 215, }, D { l: 7, t: 11, i: 1028, }, D { l: 7, t: 11, i: 1473, }, D { l: 7, t: 11, i: 1721, }, D { l: 9, t: 11, i: 424, }, D { l: 138, t: 11, i: 779, }, D { l: 5, t: 0, i: 278 }, D { l: 137, t: 0, i: 68, }, D { l: 6, t: 0, i: 932 }, D { l: 6, t: 0, i: 1084, }, D { l: 144, t: 0, i: 86, }, D { l: 4, t: 0, i: 163 }, D { l: 5, t: 0, i: 201 }, D { l: 5, t: 0, i: 307 }, D { l: 5, t: 0, i: 310 }, D { l: 6, t: 0, i: 335 }, D { l: 7, t: 0, i: 284 }, D { l: 7, t: 0, i: 1660, }, D { l: 136, t: 0, i: 165, }, D { l: 136, t: 0, i: 781, }, D { l: 134, t: 0, i: 707, }, D { l: 6, t: 0, i: 33 }, D { l: 135, t: 0, i: 1244, }, D { l: 5, t: 10, i: 821, }, D { l: 6, t: 11, i: 67 }, D { l: 6, t: 10, i: 1687, }, D { l: 7, t: 11, i: 258, }, D { l: 7, t: 11, i: 1630, }, D { l: 9, t: 11, i: 354, }, D { l: 9, t: 11, i: 675, }, D { l: 10, t: 11, i: 830, }, D { l: 14, t: 11, i: 80, }, D { l: 145, t: 11, i: 80, }, D { l: 6, t: 11, i: 141, }, D { l: 7, t: 11, i: 225, }, D { l: 9, t: 11, i: 59 }, D { l: 9, t: 11, i: 607, }, D { l: 10, t: 11, i: 312, }, D { l: 11, t: 11, i: 687, }, D { l: 12, t: 11, i: 555, }, D { l: 13, t: 11, i: 373, }, D { l: 13, t: 11, i: 494, }, D { l: 148, t: 11, i: 58, }, D { l: 134, t: 0, i: 1113, }, D { l: 9, t: 0, i: 388 }, D { l: 5, t: 10, i: 71 }, D { l: 7, t: 10, i: 1407, }, D { l: 9, t: 10, i: 704, }, D { l: 10, t: 10, i: 261, }, D { l: 10, t: 10, i: 619, }, D { l: 11, t: 10, i: 547, }, D { l: 11, t: 10, i: 619, }, D { l: 143, t: 10, i: 157, }, D { l: 7, t: 0, i: 1953, }, D { l: 136, t: 0, i: 720, }, D { l: 138, t: 0, i: 203, }, D { l: 7, t: 10, i: 2008, }, D { l: 9, t: 10, i: 337, }, D { l: 138, t: 10, i: 517, }, D { l: 6, t: 0, i: 326 }, D { l: 7, t: 0, i: 677 }, D { l: 137, t: 0, i: 425, }, D { l: 139, t: 11, i: 81, }, D { l: 7, t: 0, i: 1316, }, D { l: 7, t: 0, i: 1412, }, D { l: 7, t: 0, i: 1839, }, D { l: 9, t: 0, i: 589 }, D { l: 11, t: 0, i: 241, }, D { l: 11, t: 0, i: 676, }, D { l: 11, t: 0, i: 811, }, D { l: 11, t: 0, i: 891, }, D { l: 12, t: 0, i: 140, }, D { l: 12, t: 0, i: 346, }, D { l: 12, t: 0, i: 479, }, D { l: 13, t: 0, i: 140, }, D { l: 13, t: 0, i: 381, }, D { l: 14, t: 0, i: 188, }, D { l: 18, t: 0, i: 30 }, D { l: 148, t: 0, i: 108, }, D { l: 5, t: 0, i: 416 }, D { l: 6, t: 10, i: 86 }, D { l: 6, t: 10, i: 603, }, D { l: 7, t: 10, i: 292, }, D { l: 7, t: 10, i: 561, }, D { l: 8, t: 10, i: 257, }, D { l: 8, t: 10, i: 382, }, D { l: 9, t: 10, i: 721, }, D { l: 9, t: 10, i: 778, }, D { l: 11, t: 10, i: 581, }, D { l: 140, t: 10, i: 466, }, D { l: 4, t: 10, i: 486, }, D { l: 133, t: 10, i: 491, }, D { l: 134, t: 0, i: 1300, }, D { l: 132, t: 10, i: 72, }, D { l: 7, t: 0, i: 847 }, D { l: 6, t: 10, i: 265, }, D { l: 7, t: 11, i: 430, }, D { l: 139, t: 11, i: 46, }, D { l: 5, t: 11, i: 602, }, D { l: 6, t: 11, i: 106, }, D { l: 7, t: 11, i: 1786, }, D { l: 7, t: 11, i: 1821, }, D { l: 7, t: 11, i: 2018, }, D { l: 9, t: 11, i: 418, }, D { l: 137, t: 11, i: 763, }, D { l: 5, t: 0, i: 358 }, D { l: 7, t: 0, i: 535 }, D { l: 7, t: 0, i: 1184, }, D { l: 10, t: 0, i: 662, }, D { l: 13, t: 0, i: 212, }, D { l: 13, t: 0, i: 304, }, D { l: 13, t: 0, i: 333, }, D { l: 145, t: 0, i: 98, }, D { l: 5, t: 11, i: 65 }, D { l: 6, t: 11, i: 416, }, D { l: 7, t: 11, i: 1720, }, D { l: 7, t: 11, i: 1924, }, D { l: 8, t: 11, i: 677, }, D { l: 10, t: 11, i: 109, }, D { l: 11, t: 11, i: 14, }, D { l: 11, t: 11, i: 70, }, D { l: 11, t: 11, i: 569, }, D { l: 11, t: 11, i: 735, }, D { l: 15, t: 11, i: 153, }, D { l: 148, t: 11, i: 80, }, D { l: 6, t: 0, i: 1823, }, D { l: 8, t: 0, i: 839 }, D { l: 8, t: 0, i: 852 }, D { l: 8, t: 0, i: 903 }, D { l: 10, t: 0, i: 940, }, D { l: 12, t: 0, i: 707, }, D { l: 140, t: 0, i: 775, }, D { l: 135, t: 11, i: 1229, }, D { l: 6, t: 0, i: 1522, }, D { l: 140, t: 0, i: 654, }, D { l: 136, t: 11, i: 595, }, D { l: 139, t: 0, i: 163, }, D { l: 141, t: 0, i: 314, }, D { l: 132, t: 0, i: 978, }, D { l: 4, t: 0, i: 601 }, D { l: 6, t: 0, i: 2035, }, D { l: 137, t: 10, i: 234, }, D { l: 5, t: 10, i: 815, }, D { l: 6, t: 10, i: 1688, }, D { l: 134, t: 10, i: 1755, }, D { l: 133, t: 0, i: 946, }, D { l: 136, t: 0, i: 434, }, D { l: 6, t: 10, i: 197, }, D { l: 136, t: 10, i: 205, }, D { l: 7, t: 0, i: 411 }, D { l: 7, t: 0, i: 590 }, D { l: 8, t: 0, i: 631 }, D { l: 9, t: 0, i: 323 }, D { l: 10, t: 0, i: 355, }, D { l: 11, t: 0, i: 491, }, D { l: 12, t: 0, i: 143, }, D { l: 12, t: 0, i: 402, }, D { l: 13, t: 0, i: 73 }, D { l: 14, t: 0, i: 408, }, D { l: 15, t: 0, i: 107, }, D { l: 146, t: 0, i: 71, }, D { l: 7, t: 0, i: 1467, }, D { l: 8, t: 0, i: 328 }, D { l: 10, t: 0, i: 544, }, D { l: 11, t: 0, i: 955, }, D { l: 12, t: 0, i: 13 }, D { l: 13, t: 0, i: 320, }, D { l: 145, t: 0, i: 83, }, D { l: 142, t: 0, i: 410, }, D { l: 11, t: 0, i: 511, }, D { l: 13, t: 0, i: 394, }, D { l: 14, t: 0, i: 298, }, D { l: 14, t: 0, i: 318, }, D { l: 146, t: 0, i: 103, }, D { l: 6, t: 10, i: 452, }, D { l: 7, t: 10, i: 312, }, D { l: 138, t: 10, i: 219, }, D { l: 138, t: 10, i: 589, }, D { l: 4, t: 10, i: 333, }, D { l: 9, t: 10, i: 176, }, D { l: 12, t: 10, i: 353, }, D { l: 141, t: 10, i: 187, }, D { l: 135, t: 11, i: 329, }, D { l: 132, t: 11, i: 469, }, D { l: 5, t: 0, i: 835 }, D { l: 134, t: 0, i: 483, }, D { l: 134, t: 11, i: 1743, }, D { l: 5, t: 11, i: 929, }, D { l: 6, t: 11, i: 340, }, D { l: 8, t: 11, i: 376, }, D { l: 136, t: 11, i: 807, }, D { l: 134, t: 10, i: 1685, }, D { l: 132, t: 0, i: 677, }, D { l: 5, t: 11, i: 218, }, D { l: 7, t: 11, i: 1610, }, D { l: 138, t: 11, i: 83, }, D { l: 5, t: 11, i: 571, }, D { l: 135, t: 11, i: 1842, }, D { l: 132, t: 11, i: 455, }, D { l: 137, t: 0, i: 70, }, D { l: 135, t: 0, i: 1405, }, D { l: 7, t: 10, i: 135, }, D { l: 8, t: 10, i: 7 }, D { l: 8, t: 10, i: 62 }, D { l: 9, t: 10, i: 243, }, D { l: 10, t: 10, i: 658, }, D { l: 10, t: 10, i: 697, }, D { l: 11, t: 10, i: 456, }, D { l: 139, t: 10, i: 756, }, D { l: 9, t: 10, i: 395, }, D { l: 138, t: 10, i: 79, }, D { l: 137, t: 0, i: 108, }, D { l: 6, t: 11, i: 161, }, D { l: 7, t: 11, i: 372, }, D { l: 137, t: 11, i: 597, }, D { l: 132, t: 11, i: 349, }, D { l: 132, t: 0, i: 777, }, D { l: 132, t: 0, i: 331, }, D { l: 135, t: 10, i: 631, }, D { l: 133, t: 0, i: 747, }, D { l: 6, t: 11, i: 432, }, D { l: 6, t: 11, i: 608, }, D { l: 139, t: 11, i: 322, }, D { l: 138, t: 10, i: 835, }, D { l: 5, t: 11, i: 468, }, D { l: 7, t: 11, i: 1809, }, D { l: 10, t: 11, i: 325, }, D { l: 11, t: 11, i: 856, }, D { l: 12, t: 11, i: 345, }, D { l: 143, t: 11, i: 104, }, D { l: 133, t: 11, i: 223, }, D { l: 7, t: 10, i: 406, }, D { l: 7, t: 10, i: 459, }, D { l: 8, t: 10, i: 606, }, D { l: 139, t: 10, i: 726, }, D { l: 132, t: 11, i: 566, }, D { l: 142, t: 0, i: 68, }, D { l: 4, t: 11, i: 59 }, D { l: 135, t: 11, i: 1394, }, D { l: 6, t: 11, i: 436, }, D { l: 139, t: 11, i: 481, }, D { l: 4, t: 11, i: 48 }, D { l: 5, t: 11, i: 271, }, D { l: 135, t: 11, i: 953, }, D { l: 139, t: 11, i: 170, }, D { l: 5, t: 11, i: 610, }, D { l: 136, t: 11, i: 457, }, D { l: 133, t: 11, i: 755, }, D { l: 135, t: 11, i: 1217, }, D { l: 133, t: 10, i: 612, }, D { l: 132, t: 11, i: 197, }, D { l: 132, t: 0, i: 505, }, D { l: 4, t: 10, i: 372, }, D { l: 7, t: 10, i: 482, }, D { l: 8, t: 10, i: 158, }, D { l: 9, t: 10, i: 602, }, D { l: 9, t: 10, i: 615, }, D { l: 10, t: 10, i: 245, }, D { l: 10, t: 10, i: 678, }, D { l: 10, t: 10, i: 744, }, D { l: 11, t: 10, i: 248, }, D { l: 139, t: 10, i: 806, }, D { l: 133, t: 0, i: 326, }, D { l: 5, t: 10, i: 854, }, D { l: 135, t: 10, i: 1991, }, D { l: 4, t: 0, i: 691 }, D { l: 146, t: 0, i: 16, }, D { l: 6, t: 0, i: 628 }, D { l: 9, t: 0, i: 35 }, D { l: 10, t: 0, i: 680, }, D { l: 10, t: 0, i: 793, }, D { l: 11, t: 0, i: 364, }, D { l: 13, t: 0, i: 357, }, D { l: 143, t: 0, i: 164, }, D { l: 138, t: 0, i: 654, }, D { l: 6, t: 0, i: 32 }, D { l: 7, t: 0, i: 385 }, D { l: 7, t: 0, i: 757 }, D { l: 7, t: 0, i: 1916, }, D { l: 8, t: 0, i: 37 }, D { l: 8, t: 0, i: 94 }, D { l: 8, t: 0, i: 711 }, D { l: 9, t: 0, i: 541 }, D { l: 10, t: 0, i: 162, }, D { l: 10, t: 0, i: 795, }, D { l: 11, t: 0, i: 989, }, D { l: 11, t: 0, i: 1010, }, D { l: 12, t: 0, i: 14 }, D { l: 142, t: 0, i: 308, }, D { l: 133, t: 11, i: 217, }, D { l: 6, t: 0, i: 152 }, D { l: 6, t: 0, i: 349 }, D { l: 6, t: 0, i: 1682, }, D { l: 7, t: 0, i: 1252, }, D { l: 8, t: 0, i: 112 }, D { l: 9, t: 0, i: 435 }, D { l: 9, t: 0, i: 668 }, D { l: 10, t: 0, i: 290, }, D { l: 10, t: 0, i: 319, }, D { l: 10, t: 0, i: 815, }, D { l: 11, t: 0, i: 180, }, D { l: 11, t: 0, i: 837, }, D { l: 12, t: 0, i: 240, }, D { l: 13, t: 0, i: 152, }, D { l: 13, t: 0, i: 219, }, D { l: 142, t: 0, i: 158, }, D { l: 4, t: 0, i: 581 }, D { l: 134, t: 0, i: 726, }, D { l: 5, t: 10, i: 195, }, D { l: 135, t: 10, i: 1685, }, D { l: 6, t: 0, i: 126 }, D { l: 7, t: 0, i: 573 }, D { l: 8, t: 0, i: 397 }, D { l: 142, t: 0, i: 44, }, D { l: 138, t: 0, i: 89, }, D { l: 7, t: 10, i: 1997, }, D { l: 8, t: 10, i: 730, }, D { l: 139, t: 10, i: 1006, }, D { l: 134, t: 0, i: 1531, }, D { l: 134, t: 0, i: 1167, }, D { l: 5, t: 0, i: 926 }, D { l: 12, t: 0, i: 203, }, D { l: 133, t: 10, i: 751, }, D { l: 4, t: 11, i: 165, }, D { l: 7, t: 11, i: 1398, }, D { l: 135, t: 11, i: 1829, }, D { l: 7, t: 0, i: 1232, }, D { l: 137, t: 0, i: 531, }, D { l: 135, t: 10, i: 821, }, D { l: 134, t: 0, i: 943, }, D { l: 133, t: 0, i: 670, }, D { l: 4, t: 0, i: 880 }, D { l: 139, t: 0, i: 231, }, D { l: 134, t: 0, i: 1617, }, D { l: 135, t: 0, i: 1957, }, D { l: 5, t: 11, i: 9 }, D { l: 7, t: 11, i: 297, }, D { l: 7, t: 11, i: 966, }, D { l: 140, t: 11, i: 306, }, D { l: 6, t: 0, i: 975 }, D { l: 134, t: 0, i: 985, }, D { l: 5, t: 10, i: 950, }, D { l: 5, t: 10, i: 994, }, D { l: 134, t: 10, i: 351, }, D { l: 12, t: 11, i: 21, }, D { l: 151, t: 11, i: 7, }, D { l: 5, t: 11, i: 146, }, D { l: 6, t: 11, i: 411, }, D { l: 138, t: 11, i: 721, }, D { l: 7, t: 0, i: 242 }, D { l: 135, t: 0, i: 1942, }, D { l: 6, t: 11, i: 177, }, D { l: 135, t: 11, i: 467, }, D { l: 5, t: 0, i: 421 }, D { l: 7, t: 10, i: 47 }, D { l: 137, t: 10, i: 684, }, D { l: 5, t: 0, i: 834 }, D { l: 7, t: 0, i: 1202, }, D { l: 8, t: 0, i: 14 }, D { l: 9, t: 0, i: 481 }, D { l: 137, t: 0, i: 880, }, D { l: 138, t: 0, i: 465, }, D { l: 6, t: 0, i: 688 }, D { l: 9, t: 0, i: 834 }, D { l: 132, t: 10, i: 350, }, D { l: 132, t: 0, i: 855, }, D { l: 4, t: 0, i: 357 }, D { l: 6, t: 0, i: 172 }, D { l: 7, t: 0, i: 143 }, D { l: 137, t: 0, i: 413, }, D { l: 133, t: 11, i: 200, }, D { l: 132, t: 0, i: 590, }, D { l: 7, t: 10, i: 1812, }, D { l: 13, t: 10, i: 259, }, D { l: 13, t: 10, i: 356, }, D { l: 14, t: 10, i: 242, }, D { l: 147, t: 10, i: 114, }, D { l: 133, t: 10, i: 967, }, D { l: 11, t: 0, i: 114, }, D { l: 4, t: 10, i: 473, }, D { l: 7, t: 10, i: 623, }, D { l: 8, t: 10, i: 808, }, D { l: 9, t: 10, i: 871, }, D { l: 9, t: 10, i: 893, }, D { l: 11, t: 10, i: 431, }, D { l: 12, t: 10, i: 112, }, D { l: 12, t: 10, i: 217, }, D { l: 12, t: 10, i: 243, }, D { l: 12, t: 10, i: 562, }, D { l: 12, t: 10, i: 663, }, D { l: 12, t: 10, i: 683, }, D { l: 13, t: 10, i: 141, }, D { l: 13, t: 10, i: 197, }, D { l: 13, t: 10, i: 227, }, D { l: 13, t: 10, i: 406, }, D { l: 13, t: 10, i: 487, }, D { l: 14, t: 10, i: 156, }, D { l: 14, t: 10, i: 203, }, D { l: 14, t: 10, i: 224, }, D { l: 14, t: 10, i: 256, }, D { l: 18, t: 10, i: 58, }, D { l: 150, t: 10, i: 0, }, D { l: 138, t: 10, i: 286, }, D { l: 4, t: 10, i: 222, }, D { l: 7, t: 10, i: 286, }, D { l: 136, t: 10, i: 629, }, D { l: 5, t: 0, i: 169 }, D { l: 7, t: 0, i: 333 }, D { l: 136, t: 0, i: 45, }, D { l: 134, t: 11, i: 481, }, D { l: 132, t: 0, i: 198, }, D { l: 4, t: 0, i: 24 }, D { l: 5, t: 0, i: 140 }, D { l: 5, t: 0, i: 185 }, D { l: 7, t: 0, i: 1500, }, D { l: 11, t: 0, i: 565, }, D { l: 11, t: 0, i: 838, }, D { l: 4, t: 11, i: 84 }, D { l: 7, t: 11, i: 1482, }, D { l: 10, t: 11, i: 76, }, D { l: 138, t: 11, i: 142, }, D { l: 133, t: 0, i: 585, }, D { l: 141, t: 10, i: 306, }, D { l: 133, t: 11, i: 1015, }, D { l: 4, t: 11, i: 315, }, D { l: 5, t: 11, i: 507, }, D { l: 135, t: 11, i: 1370, }, D { l: 136, t: 10, i: 146, }, D { l: 6, t: 0, i: 691 }, D { l: 134, t: 0, i: 1503, }, D { l: 4, t: 0, i: 334 }, D { l: 133, t: 0, i: 593, }, D { l: 4, t: 10, i: 465, }, D { l: 135, t: 10, i: 1663, }, D { l: 142, t: 11, i: 173, }, D { l: 135, t: 0, i: 913, }, D { l: 12, t: 0, i: 116, }, D { l: 134, t: 11, i: 1722, }, D { l: 134, t: 0, i: 1360, }, D { l: 132, t: 0, i: 802, }, D { l: 8, t: 11, i: 222, }, D { l: 8, t: 11, i: 476, }, D { l: 9, t: 11, i: 238, }, D { l: 11, t: 11, i: 516, }, D { l: 11, t: 11, i: 575, }, D { l: 15, t: 11, i: 109, }, D { l: 146, t: 11, i: 100, }, D { l: 6, t: 0, i: 308 }, D { l: 9, t: 0, i: 673 }, D { l: 7, t: 10, i: 138, }, D { l: 7, t: 10, i: 517, }, D { l: 139, t: 10, i: 238, }, D { l: 132, t: 0, i: 709, }, D { l: 6, t: 0, i: 1876, }, D { l: 6, t: 0, i: 1895, }, D { l: 9, t: 0, i: 994 }, D { l: 9, t: 0, i: 1006, }, D { l: 12, t: 0, i: 829, }, D { l: 12, t: 0, i: 888, }, D { l: 12, t: 0, i: 891, }, D { l: 146, t: 0, i: 185, }, D { l: 148, t: 10, i: 94, }, D { l: 4, t: 0, i: 228 }, D { l: 133, t: 0, i: 897, }, D { l: 7, t: 0, i: 1840, }, D { l: 5, t: 10, i: 495, }, D { l: 7, t: 10, i: 834, }, D { l: 9, t: 10, i: 733, }, D { l: 139, t: 10, i: 378, }, D { l: 133, t: 10, i: 559, }, D { l: 6, t: 10, i: 21 }, D { l: 6, t: 10, i: 1737, }, D { l: 7, t: 10, i: 1444, }, D { l: 136, t: 10, i: 224, }, D { l: 4, t: 0, i: 608 }, D { l: 133, t: 0, i: 497, }, D { l: 6, t: 11, i: 40 }, D { l: 135, t: 11, i: 1781, }, D { l: 134, t: 0, i: 1573, }, D { l: 135, t: 0, i: 2039, }, D { l: 6, t: 0, i: 540 }, D { l: 136, t: 0, i: 136, }, D { l: 4, t: 0, i: 897 }, D { l: 5, t: 0, i: 786 }, D { l: 133, t: 10, i: 519, }, D { l: 6, t: 0, i: 1878, }, D { l: 6, t: 0, i: 1884, }, D { l: 9, t: 0, i: 938 }, D { l: 9, t: 0, i: 948 }, D { l: 9, t: 0, i: 955 }, D { l: 9, t: 0, i: 973 }, D { l: 9, t: 0, i: 1012, }, D { l: 12, t: 0, i: 895, }, D { l: 12, t: 0, i: 927, }, D { l: 143, t: 0, i: 254, }, D { l: 134, t: 0, i: 1469, }, D { l: 133, t: 0, i: 999, }, D { l: 4, t: 0, i: 299 }, D { l: 135, t: 0, i: 1004, }, D { l: 4, t: 0, i: 745 }, D { l: 133, t: 0, i: 578, }, D { l: 136, t: 11, i: 574, }, D { l: 133, t: 0, i: 456, }, D { l: 134, t: 0, i: 1457, }, D { l: 7, t: 0, i: 1679, }, D { l: 132, t: 10, i: 402, }, D { l: 7, t: 0, i: 693 }, D { l: 8, t: 0, i: 180 }, D { l: 12, t: 0, i: 163, }, D { l: 8, t: 10, i: 323, }, D { l: 136, t: 10, i: 479, }, D { l: 11, t: 10, i: 580, }, D { l: 142, t: 10, i: 201, }, D { l: 5, t: 10, i: 59 }, D { l: 135, t: 10, i: 672, }, D { l: 132, t: 11, i: 354, }, D { l: 146, t: 10, i: 34, }, D { l: 4, t: 0, i: 755 }, D { l: 135, t: 11, i: 1558, }, D { l: 7, t: 0, i: 1740, }, D { l: 146, t: 0, i: 48, }, D { l: 4, t: 10, i: 85 }, D { l: 135, t: 10, i: 549, }, D { l: 139, t: 0, i: 338, }, D { l: 133, t: 10, i: 94, }, D { l: 134, t: 0, i: 1091, }, D { l: 135, t: 11, i: 469, }, D { l: 12, t: 0, i: 695, }, D { l: 12, t: 0, i: 704, }, D { l: 20, t: 0, i: 113, }, D { l: 5, t: 11, i: 830, }, D { l: 14, t: 11, i: 338, }, D { l: 148, t: 11, i: 81, }, D { l: 135, t: 0, i: 1464, }, D { l: 6, t: 10, i: 11 }, D { l: 135, t: 10, i: 187, }, D { l: 135, t: 0, i: 975, }, D { l: 13, t: 0, i: 335, }, D { l: 132, t: 10, i: 522, }, D { l: 134, t: 0, i: 1979, }, D { l: 5, t: 11, i: 496, }, D { l: 135, t: 11, i: 203, }, D { l: 4, t: 10, i: 52 }, D { l: 135, t: 10, i: 661, }, D { l: 7, t: 0, i: 1566, }, D { l: 8, t: 0, i: 269 }, D { l: 9, t: 0, i: 212 }, D { l: 9, t: 0, i: 718 }, D { l: 14, t: 0, i: 15 }, D { l: 14, t: 0, i: 132, }, D { l: 142, t: 0, i: 227, }, D { l: 4, t: 0, i: 890 }, D { l: 5, t: 0, i: 805 }, D { l: 5, t: 0, i: 819 }, D { l: 5, t: 0, i: 961 }, D { l: 6, t: 0, i: 396 }, D { l: 6, t: 0, i: 1631, }, D { l: 6, t: 0, i: 1678, }, D { l: 7, t: 0, i: 1967, }, D { l: 7, t: 0, i: 2041, }, D { l: 9, t: 0, i: 630 }, D { l: 11, t: 0, i: 8 }, D { l: 11, t: 0, i: 1019, }, D { l: 12, t: 0, i: 176, }, D { l: 13, t: 0, i: 225, }, D { l: 14, t: 0, i: 292, }, D { l: 21, t: 0, i: 24 }, D { l: 4, t: 10, i: 383, }, D { l: 133, t: 10, i: 520, }, D { l: 134, t: 11, i: 547, }, D { l: 135, t: 11, i: 1748, }, D { l: 5, t: 11, i: 88 }, D { l: 137, t: 11, i: 239, }, D { l: 146, t: 11, i: 128, }, D { l: 7, t: 11, i: 650, }, D { l: 135, t: 11, i: 1310, }, D { l: 4, t: 10, i: 281, }, D { l: 5, t: 10, i: 38 }, D { l: 7, t: 10, i: 194, }, D { l: 7, t: 10, i: 668, }, D { l: 7, t: 10, i: 1893, }, D { l: 137, t: 10, i: 397, }, D { l: 135, t: 0, i: 1815, }, D { l: 9, t: 10, i: 635, }, D { l: 139, t: 10, i: 559, }, D { l: 7, t: 0, i: 1505, }, D { l: 10, t: 0, i: 190, }, D { l: 10, t: 0, i: 634, }, D { l: 11, t: 0, i: 792, }, D { l: 12, t: 0, i: 358, }, D { l: 140, t: 0, i: 447, }, D { l: 5, t: 0, i: 0 }, D { l: 6, t: 0, i: 536 }, D { l: 7, t: 0, i: 604 }, D { l: 13, t: 0, i: 445, }, D { l: 145, t: 0, i: 126, }, D { l: 7, t: 11, i: 1076, }, D { l: 9, t: 11, i: 80 }, D { l: 11, t: 11, i: 78, }, D { l: 11, t: 11, i: 421, }, D { l: 11, t: 11, i: 534, }, D { l: 140, t: 11, i: 545, }, D { l: 8, t: 0, i: 966 }, D { l: 10, t: 0, i: 1023, }, D { l: 14, t: 11, i: 369, }, D { l: 146, t: 11, i: 72, }, D { l: 135, t: 11, i: 1641, }, D { l: 6, t: 0, i: 232 }, D { l: 6, t: 0, i: 412 }, D { l: 7, t: 0, i: 1074, }, D { l: 8, t: 0, i: 9 }, D { l: 8, t: 0, i: 157 }, D { l: 8, t: 0, i: 786 }, D { l: 9, t: 0, i: 196 }, D { l: 9, t: 0, i: 352 }, D { l: 9, t: 0, i: 457 }, D { l: 10, t: 0, i: 337, }, D { l: 11, t: 0, i: 232, }, D { l: 11, t: 0, i: 877, }, D { l: 12, t: 0, i: 480, }, D { l: 140, t: 0, i: 546, }, D { l: 135, t: 0, i: 958, }, D { l: 4, t: 0, i: 382 }, D { l: 136, t: 0, i: 579, }, D { l: 4, t: 0, i: 212 }, D { l: 135, t: 0, i: 1206, }, D { l: 4, t: 11, i: 497, }, D { l: 5, t: 11, i: 657, }, D { l: 135, t: 11, i: 1584, }, D { l: 132, t: 0, i: 681, }, D { l: 8, t: 0, i: 971 }, D { l: 138, t: 0, i: 965, }, D { l: 5, t: 10, i: 448, }, D { l: 136, t: 10, i: 535, }, D { l: 14, t: 0, i: 16 }, D { l: 146, t: 0, i: 44, }, D { l: 11, t: 0, i: 584, }, D { l: 11, t: 0, i: 616, }, D { l: 14, t: 0, i: 275, }, D { l: 11, t: 11, i: 584, }, D { l: 11, t: 11, i: 616, }, D { l: 142, t: 11, i: 275, }, D { l: 136, t: 11, i: 13, }, D { l: 7, t: 10, i: 610, }, D { l: 135, t: 10, i: 1501, }, D { l: 7, t: 11, i: 642, }, D { l: 8, t: 11, i: 250, }, D { l: 11, t: 11, i: 123, }, D { l: 11, t: 11, i: 137, }, D { l: 13, t: 11, i: 48, }, D { l: 142, t: 11, i: 95, }, D { l: 133, t: 0, i: 655, }, D { l: 17, t: 0, i: 67 }, D { l: 147, t: 0, i: 74, }, D { l: 134, t: 0, i: 751, }, D { l: 134, t: 0, i: 1967, }, D { l: 6, t: 0, i: 231 }, D { l: 136, t: 0, i: 423, }, D { l: 5, t: 0, i: 300 }, D { l: 138, t: 0, i: 1016, }, D { l: 4, t: 10, i: 319, }, D { l: 5, t: 10, i: 699, }, D { l: 138, t: 10, i: 673, }, D { l: 6, t: 0, i: 237 }, D { l: 7, t: 0, i: 611 }, D { l: 8, t: 0, i: 100 }, D { l: 9, t: 0, i: 416 }, D { l: 11, t: 0, i: 335, }, D { l: 12, t: 0, i: 173, }, D { l: 18, t: 0, i: 101, }, D { l: 6, t: 10, i: 336, }, D { l: 8, t: 10, i: 552, }, D { l: 9, t: 10, i: 285, }, D { l: 10, t: 10, i: 99, }, D { l: 139, t: 10, i: 568, }, D { l: 134, t: 0, i: 1370, }, D { l: 7, t: 10, i: 1406, }, D { l: 9, t: 10, i: 218, }, D { l: 141, t: 10, i: 222, }, D { l: 133, t: 10, i: 256, }, D { l: 135, t: 0, i: 1208, }, D { l: 14, t: 11, i: 213, }, D { l: 148, t: 11, i: 38, }, D { l: 6, t: 0, i: 1219, }, D { l: 135, t: 11, i: 1642, }, D { l: 13, t: 0, i: 417, }, D { l: 14, t: 0, i: 129, }, D { l: 143, t: 0, i: 15, }, D { l: 10, t: 11, i: 545, }, D { l: 140, t: 11, i: 301, }, D { l: 17, t: 10, i: 39, }, D { l: 148, t: 10, i: 36, }, D { l: 133, t: 0, i: 199, }, D { l: 4, t: 11, i: 904, }, D { l: 133, t: 11, i: 794, }, D { l: 12, t: 0, i: 427, }, D { l: 146, t: 0, i: 38, }, D { l: 134, t: 0, i: 949, }, D { l: 8, t: 0, i: 665 }, D { l: 135, t: 10, i: 634, }, D { l: 132, t: 10, i: 618, }, D { l: 135, t: 10, i: 259, }, D { l: 132, t: 10, i: 339, }, D { l: 133, t: 11, i: 761, }, D { l: 141, t: 10, i: 169, }, D { l: 132, t: 10, i: 759, }, D { l: 5, t: 0, i: 688 }, D { l: 7, t: 0, i: 539 }, D { l: 135, t: 0, i: 712, }, D { l: 7, t: 11, i: 386, }, D { l: 138, t: 11, i: 713, }, D { l: 134, t: 0, i: 1186, }, D { l: 6, t: 11, i: 7 }, D { l: 6, t: 11, i: 35 }, D { l: 7, t: 11, i: 147, }, D { l: 7, t: 11, i: 1069, }, D { l: 7, t: 11, i: 1568, }, D { l: 7, t: 11, i: 1575, }, D { l: 7, t: 11, i: 1917, }, D { l: 8, t: 11, i: 43 }, D { l: 8, t: 11, i: 208, }, D { l: 9, t: 11, i: 128, }, D { l: 9, t: 11, i: 866, }, D { l: 10, t: 11, i: 20, }, D { l: 11, t: 11, i: 981, }, D { l: 147, t: 11, i: 33, }, D { l: 7, t: 11, i: 893, }, D { l: 8, t: 10, i: 482, }, D { l: 141, t: 11, i: 424, }, D { l: 6, t: 0, i: 312 }, D { l: 6, t: 0, i: 1715, }, D { l: 10, t: 0, i: 584, }, D { l: 11, t: 0, i: 546, }, D { l: 11, t: 0, i: 692, }, D { l: 12, t: 0, i: 259, }, D { l: 12, t: 0, i: 295, }, D { l: 13, t: 0, i: 46 }, D { l: 141, t: 0, i: 154, }, D { l: 5, t: 10, i: 336, }, D { l: 6, t: 10, i: 341, }, D { l: 6, t: 10, i: 478, }, D { l: 6, t: 10, i: 1763, }, D { l: 136, t: 10, i: 386, }, D { l: 137, t: 0, i: 151, }, D { l: 132, t: 0, i: 588, }, D { l: 152, t: 0, i: 4 }, D { l: 6, t: 11, i: 322, }, D { l: 9, t: 11, i: 552, }, D { l: 11, t: 11, i: 274, }, D { l: 13, t: 11, i: 209, }, D { l: 13, t: 11, i: 499, }, D { l: 14, t: 11, i: 85, }, D { l: 15, t: 11, i: 126, }, D { l: 145, t: 11, i: 70, }, D { l: 135, t: 10, i: 73, }, D { l: 4, t: 0, i: 231 }, D { l: 5, t: 0, i: 61 }, D { l: 6, t: 0, i: 104 }, D { l: 7, t: 0, i: 729 }, D { l: 7, t: 0, i: 964 }, D { l: 7, t: 0, i: 1658, }, D { l: 140, t: 0, i: 414, }, D { l: 6, t: 0, i: 263 }, D { l: 138, t: 0, i: 757, }, D { l: 135, t: 10, i: 1971, }, D { l: 4, t: 0, i: 612 }, D { l: 133, t: 0, i: 561, }, D { l: 132, t: 0, i: 320, }, D { l: 135, t: 10, i: 1344, }, D { l: 8, t: 11, i: 83 }, D { l: 8, t: 11, i: 817, }, D { l: 9, t: 11, i: 28 }, D { l: 9, t: 11, i: 29 }, D { l: 9, t: 11, i: 885, }, D { l: 10, t: 11, i: 387, }, D { l: 11, t: 11, i: 633, }, D { l: 11, t: 11, i: 740, }, D { l: 13, t: 11, i: 235, }, D { l: 13, t: 11, i: 254, }, D { l: 15, t: 11, i: 143, }, D { l: 143, t: 11, i: 146, }, D { l: 5, t: 10, i: 396, }, D { l: 134, t: 10, i: 501, }, D { l: 140, t: 11, i: 49, }, D { l: 132, t: 0, i: 225, }, D { l: 4, t: 10, i: 929, }, D { l: 5, t: 10, i: 799, }, D { l: 8, t: 10, i: 46 }, D { l: 136, t: 10, i: 740, }, D { l: 4, t: 0, i: 405 }, D { l: 7, t: 0, i: 817 }, D { l: 14, t: 0, i: 58 }, D { l: 17, t: 0, i: 37 }, D { l: 146, t: 0, i: 124, }, D { l: 133, t: 0, i: 974, }, D { l: 4, t: 11, i: 412, }, D { l: 133, t: 11, i: 581, }, D { l: 4, t: 10, i: 892, }, D { l: 133, t: 10, i: 770, }, D { l: 4, t: 0, i: 996 }, D { l: 134, t: 0, i: 2026, }, D { l: 4, t: 0, i: 527 }, D { l: 5, t: 0, i: 235 }, D { l: 7, t: 0, i: 1239, }, D { l: 11, t: 0, i: 131, }, D { l: 140, t: 0, i: 370, }, D { l: 9, t: 0, i: 16 }, D { l: 13, t: 0, i: 386, }, D { l: 135, t: 11, i: 421, }, D { l: 7, t: 0, i: 956 }, D { l: 7, t: 0, i: 1157, }, D { l: 7, t: 0, i: 1506, }, D { l: 7, t: 0, i: 1606, }, D { l: 7, t: 0, i: 1615, }, D { l: 7, t: 0, i: 1619, }, D { l: 7, t: 0, i: 1736, }, D { l: 7, t: 0, i: 1775, }, D { l: 8, t: 0, i: 590 }, D { l: 9, t: 0, i: 324 }, D { l: 9, t: 0, i: 736 }, D { l: 9, t: 0, i: 774 }, D { l: 9, t: 0, i: 776 }, D { l: 9, t: 0, i: 784 }, D { l: 10, t: 0, i: 567, }, D { l: 10, t: 0, i: 708, }, D { l: 11, t: 0, i: 518, }, D { l: 11, t: 0, i: 613, }, D { l: 11, t: 0, i: 695, }, D { l: 11, t: 0, i: 716, }, D { l: 11, t: 0, i: 739, }, D { l: 11, t: 0, i: 770, }, D { l: 11, t: 0, i: 771, }, D { l: 11, t: 0, i: 848, }, D { l: 11, t: 0, i: 857, }, D { l: 11, t: 0, i: 931, }, D { l: 11, t: 0, i: 947, }, D { l: 12, t: 0, i: 326, }, D { l: 12, t: 0, i: 387, }, D { l: 12, t: 0, i: 484, }, D { l: 12, t: 0, i: 528, }, D { l: 12, t: 0, i: 552, }, D { l: 12, t: 0, i: 613, }, D { l: 13, t: 0, i: 189, }, D { l: 13, t: 0, i: 256, }, D { l: 13, t: 0, i: 340, }, D { l: 13, t: 0, i: 432, }, D { l: 13, t: 0, i: 436, }, D { l: 13, t: 0, i: 440, }, D { l: 13, t: 0, i: 454, }, D { l: 14, t: 0, i: 174, }, D { l: 14, t: 0, i: 220, }, D { l: 14, t: 0, i: 284, }, D { l: 14, t: 0, i: 390, }, D { l: 145, t: 0, i: 121, }, D { l: 135, t: 10, i: 158, }, D { l: 9, t: 0, i: 137 }, D { l: 138, t: 0, i: 221, }, D { l: 4, t: 11, i: 110, }, D { l: 10, t: 11, i: 415, }, D { l: 10, t: 11, i: 597, }, D { l: 142, t: 11, i: 206, }, D { l: 141, t: 11, i: 496, }, D { l: 135, t: 11, i: 205, }, D { l: 151, t: 10, i: 25, }, D { l: 135, t: 11, i: 778, }, D { l: 7, t: 11, i: 1656, }, D { l: 7, t: 10, i: 2001, }, D { l: 9, t: 11, i: 369, }, D { l: 10, t: 11, i: 338, }, D { l: 10, t: 11, i: 490, }, D { l: 11, t: 11, i: 154, }, D { l: 11, t: 11, i: 545, }, D { l: 11, t: 11, i: 775, }, D { l: 13, t: 11, i: 77, }, D { l: 141, t: 11, i: 274, }, D { l: 4, t: 11, i: 444, }, D { l: 10, t: 11, i: 146, }, D { l: 140, t: 11, i: 9, }, D { l: 7, t: 0, i: 390 }, D { l: 138, t: 0, i: 140, }, D { l: 135, t: 0, i: 1144, }, D { l: 134, t: 0, i: 464, }, D { l: 7, t: 10, i: 1461, }, D { l: 140, t: 10, i: 91, }, D { l: 132, t: 10, i: 602, }, D { l: 4, t: 11, i: 283, }, D { l: 135, t: 11, i: 1194, }, D { l: 5, t: 0, i: 407 }, D { l: 11, t: 0, i: 204, }, D { l: 11, t: 0, i: 243, }, D { l: 11, t: 0, i: 489, }, D { l: 12, t: 0, i: 293, }, D { l: 19, t: 0, i: 37 }, D { l: 20, t: 0, i: 73 }, D { l: 150, t: 0, i: 38, }, D { l: 7, t: 0, i: 1218, }, D { l: 136, t: 0, i: 303, }, D { l: 5, t: 0, i: 325 }, D { l: 8, t: 0, i: 5 }, D { l: 8, t: 0, i: 227 }, D { l: 9, t: 0, i: 105 }, D { l: 10, t: 0, i: 585, }, D { l: 12, t: 0, i: 614, }, D { l: 4, t: 10, i: 13 }, D { l: 5, t: 10, i: 567, }, D { l: 7, t: 10, i: 1498, }, D { l: 9, t: 10, i: 124, }, D { l: 11, t: 10, i: 521, }, D { l: 140, t: 10, i: 405, }, D { l: 135, t: 10, i: 1006, }, D { l: 7, t: 0, i: 800 }, D { l: 10, t: 0, i: 12 }, D { l: 134, t: 11, i: 1720, }, D { l: 135, t: 0, i: 1783, }, D { l: 132, t: 10, i: 735, }, D { l: 138, t: 10, i: 812, }, D { l: 4, t: 10, i: 170, }, D { l: 135, t: 10, i: 323, }, D { l: 6, t: 0, i: 621 }, D { l: 13, t: 0, i: 504, }, D { l: 144, t: 0, i: 89, }, D { l: 5, t: 10, i: 304, }, D { l: 135, t: 10, i: 1403, }, D { l: 137, t: 11, i: 216, }, D { l: 6, t: 0, i: 920 }, D { l: 6, t: 0, i: 1104, }, D { l: 9, t: 11, i: 183, }, D { l: 139, t: 11, i: 286, }, D { l: 4, t: 0, i: 376 }, D { l: 133, t: 10, i: 742, }, D { l: 134, t: 0, i: 218, }, D { l: 8, t: 0, i: 641 }, D { l: 11, t: 0, i: 388, }, D { l: 140, t: 0, i: 580, }, D { l: 7, t: 0, i: 454 }, D { l: 7, t: 0, i: 782 }, D { l: 8, t: 0, i: 768 }, D { l: 140, t: 0, i: 686, }, D { l: 137, t: 11, i: 33, }, D { l: 133, t: 10, i: 111, }, D { l: 144, t: 0, i: 0 }, D { l: 10, t: 0, i: 676, }, D { l: 140, t: 0, i: 462, }, D { l: 6, t: 0, i: 164 }, D { l: 136, t: 11, i: 735, }, D { l: 133, t: 10, i: 444, }, D { l: 150, t: 0, i: 50, }, D { l: 7, t: 11, i: 1862, }, D { l: 12, t: 11, i: 491, }, D { l: 12, t: 11, i: 520, }, D { l: 13, t: 11, i: 383, }, D { l: 14, t: 11, i: 244, }, D { l: 146, t: 11, i: 12, }, D { l: 5, t: 11, i: 132, }, D { l: 9, t: 11, i: 486, }, D { l: 9, t: 11, i: 715, }, D { l: 10, t: 11, i: 458, }, D { l: 11, t: 11, i: 373, }, D { l: 11, t: 11, i: 668, }, D { l: 11, t: 11, i: 795, }, D { l: 11, t: 11, i: 897, }, D { l: 12, t: 11, i: 272, }, D { l: 12, t: 11, i: 424, }, D { l: 12, t: 11, i: 539, }, D { l: 12, t: 11, i: 558, }, D { l: 14, t: 11, i: 245, }, D { l: 14, t: 11, i: 263, }, D { l: 14, t: 11, i: 264, }, D { l: 14, t: 11, i: 393, }, D { l: 142, t: 11, i: 403, }, D { l: 8, t: 10, i: 123, }, D { l: 15, t: 10, i: 6 }, D { l: 144, t: 10, i: 7, }, D { l: 6, t: 0, i: 285 }, D { l: 8, t: 0, i: 654 }, D { l: 11, t: 0, i: 749, }, D { l: 12, t: 0, i: 190, }, D { l: 12, t: 0, i: 327, }, D { l: 13, t: 0, i: 120, }, D { l: 13, t: 0, i: 121, }, D { l: 13, t: 0, i: 327, }, D { l: 15, t: 0, i: 47 }, D { l: 146, t: 0, i: 40, }, D { l: 5, t: 11, i: 8 }, D { l: 6, t: 11, i: 89 }, D { l: 6, t: 11, i: 400, }, D { l: 7, t: 11, i: 1569, }, D { l: 7, t: 11, i: 1623, }, D { l: 7, t: 11, i: 1850, }, D { l: 8, t: 11, i: 218, }, D { l: 8, t: 11, i: 422, }, D { l: 9, t: 11, i: 570, }, D { l: 138, t: 11, i: 626, }, D { l: 6, t: 11, i: 387, }, D { l: 7, t: 11, i: 882, }, D { l: 141, t: 11, i: 111, }, D { l: 6, t: 0, i: 343 }, D { l: 7, t: 0, i: 195 }, D { l: 9, t: 0, i: 226 }, D { l: 10, t: 0, i: 197, }, D { l: 10, t: 0, i: 575, }, D { l: 11, t: 0, i: 502, }, D { l: 11, t: 0, i: 899, }, D { l: 6, t: 11, i: 224, }, D { l: 7, t: 11, i: 877, }, D { l: 137, t: 11, i: 647, }, D { l: 5, t: 10, i: 937, }, D { l: 135, t: 10, i: 100, }, D { l: 135, t: 11, i: 790, }, D { l: 150, t: 0, i: 29, }, D { l: 147, t: 0, i: 8 }, D { l: 134, t: 0, i: 1812, }, D { l: 149, t: 0, i: 8 }, D { l: 135, t: 11, i: 394, }, D { l: 7, t: 0, i: 1125, }, D { l: 9, t: 0, i: 143 }, D { l: 11, t: 0, i: 61 }, D { l: 14, t: 0, i: 405, }, D { l: 150, t: 0, i: 21, }, D { l: 10, t: 11, i: 755, }, D { l: 147, t: 11, i: 29, }, D { l: 9, t: 11, i: 378, }, D { l: 141, t: 11, i: 162, }, D { l: 135, t: 10, i: 922, }, D { l: 5, t: 10, i: 619, }, D { l: 133, t: 10, i: 698, }, D { l: 134, t: 0, i: 1327, }, D { l: 6, t: 0, i: 1598, }, D { l: 137, t: 0, i: 575, }, D { l: 9, t: 11, i: 569, }, D { l: 12, t: 11, i: 12, }, D { l: 12, t: 11, i: 81, }, D { l: 12, t: 11, i: 319, }, D { l: 13, t: 11, i: 69, }, D { l: 14, t: 11, i: 259, }, D { l: 16, t: 11, i: 87, }, D { l: 17, t: 11, i: 1 }, D { l: 17, t: 11, i: 21, }, D { l: 17, t: 11, i: 24, }, D { l: 18, t: 11, i: 15, }, D { l: 18, t: 11, i: 56, }, D { l: 18, t: 11, i: 59, }, D { l: 18, t: 11, i: 127, }, D { l: 18, t: 11, i: 154, }, D { l: 19, t: 11, i: 19, }, D { l: 148, t: 11, i: 31, }, D { l: 6, t: 0, i: 895 }, D { l: 135, t: 11, i: 1231, }, D { l: 5, t: 0, i: 959 }, D { l: 7, t: 11, i: 124, }, D { l: 136, t: 11, i: 38, }, D { l: 5, t: 11, i: 261, }, D { l: 7, t: 11, i: 78 }, D { l: 7, t: 11, i: 199, }, D { l: 8, t: 11, i: 815, }, D { l: 9, t: 11, i: 126, }, D { l: 138, t: 11, i: 342, }, D { l: 5, t: 10, i: 917, }, D { l: 134, t: 10, i: 1659, }, D { l: 7, t: 0, i: 1759, }, D { l: 5, t: 11, i: 595, }, D { l: 135, t: 11, i: 1863, }, D { l: 136, t: 0, i: 173, }, D { l: 134, t: 0, i: 266, }, D { l: 142, t: 0, i: 261, }, D { l: 132, t: 11, i: 628, }, D { l: 5, t: 10, i: 251, }, D { l: 5, t: 10, i: 956, }, D { l: 8, t: 10, i: 268, }, D { l: 9, t: 10, i: 214, }, D { l: 146, t: 10, i: 142, }, D { l: 7, t: 11, i: 266, }, D { l: 136, t: 11, i: 804, }, D { l: 135, t: 11, i: 208, }, D { l: 6, t: 11, i: 79 }, D { l: 7, t: 11, i: 1021, }, D { l: 135, t: 11, i: 1519, }, D { l: 11, t: 11, i: 704, }, D { l: 141, t: 11, i: 396, }, D { l: 5, t: 10, i: 346, }, D { l: 5, t: 10, i: 711, }, D { l: 136, t: 10, i: 390, }, D { l: 136, t: 11, i: 741, }, D { l: 134, t: 11, i: 376, }, D { l: 134, t: 0, i: 1427, }, D { l: 6, t: 0, i: 1033, }, D { l: 6, t: 0, i: 1217, }, D { l: 136, t: 0, i: 300, }, D { l: 133, t: 10, i: 624, }, D { l: 6, t: 11, i: 100, }, D { l: 7, t: 11, i: 244, }, D { l: 7, t: 11, i: 632, }, D { l: 7, t: 11, i: 1609, }, D { l: 8, t: 11, i: 178, }, D { l: 8, t: 11, i: 638, }, D { l: 141, t: 11, i: 58, }, D { l: 6, t: 0, i: 584 }, D { l: 5, t: 10, i: 783, }, D { l: 7, t: 10, i: 1998, }, D { l: 135, t: 10, i: 2047, }, D { l: 5, t: 0, i: 427 }, D { l: 5, t: 0, i: 734 }, D { l: 7, t: 0, i: 478 }, D { l: 136, t: 0, i: 52, }, D { l: 7, t: 0, i: 239 }, D { l: 11, t: 0, i: 217, }, D { l: 142, t: 0, i: 165, }, D { l: 134, t: 0, i: 1129, }, D { l: 6, t: 0, i: 168 }, D { l: 6, t: 0, i: 1734, }, D { l: 7, t: 0, i: 20 }, D { l: 7, t: 0, i: 1056, }, D { l: 8, t: 0, i: 732 }, D { l: 9, t: 0, i: 406 }, D { l: 9, t: 0, i: 911 }, D { l: 138, t: 0, i: 694, }, D { l: 132, t: 10, i: 594, }, D { l: 133, t: 11, i: 791, }, D { l: 7, t: 11, i: 686, }, D { l: 8, t: 11, i: 33 }, D { l: 8, t: 11, i: 238, }, D { l: 10, t: 11, i: 616, }, D { l: 11, t: 11, i: 467, }, D { l: 11, t: 11, i: 881, }, D { l: 13, t: 11, i: 217, }, D { l: 13, t: 11, i: 253, }, D { l: 142, t: 11, i: 268, }, D { l: 137, t: 11, i: 476, }, D { l: 134, t: 0, i: 418, }, D { l: 133, t: 0, i: 613, }, D { l: 132, t: 0, i: 632, }, D { l: 132, t: 11, i: 447, }, D { l: 7, t: 0, i: 32 }, D { l: 7, t: 0, i: 984 }, D { l: 8, t: 0, i: 85 }, D { l: 8, t: 0, i: 709 }, D { l: 9, t: 0, i: 579 }, D { l: 9, t: 0, i: 847 }, D { l: 9, t: 0, i: 856 }, D { l: 10, t: 0, i: 799, }, D { l: 11, t: 0, i: 258, }, D { l: 11, t: 0, i: 1007, }, D { l: 12, t: 0, i: 331, }, D { l: 12, t: 0, i: 615, }, D { l: 13, t: 0, i: 188, }, D { l: 13, t: 0, i: 435, }, D { l: 14, t: 0, i: 8 }, D { l: 15, t: 0, i: 165, }, D { l: 16, t: 0, i: 27 }, D { l: 20, t: 0, i: 40 }, D { l: 144, t: 11, i: 35, }, D { l: 4, t: 11, i: 128, }, D { l: 5, t: 11, i: 415, }, D { l: 6, t: 11, i: 462, }, D { l: 7, t: 11, i: 294, }, D { l: 7, t: 11, i: 578, }, D { l: 10, t: 11, i: 710, }, D { l: 139, t: 11, i: 86, }, D { l: 5, t: 0, i: 694 }, D { l: 136, t: 0, i: 909, }, D { l: 7, t: 0, i: 1109, }, D { l: 11, t: 0, i: 7 }, D { l: 5, t: 10, i: 37 }, D { l: 6, t: 10, i: 39 }, D { l: 6, t: 10, i: 451, }, D { l: 7, t: 10, i: 218, }, D { l: 7, t: 10, i: 1166, }, D { l: 7, t: 10, i: 1687, }, D { l: 8, t: 10, i: 662, }, D { l: 144, t: 10, i: 2, }, D { l: 136, t: 11, i: 587, }, D { l: 6, t: 11, i: 427, }, D { l: 7, t: 11, i: 1018, }, D { l: 138, t: 11, i: 692, }, D { l: 4, t: 11, i: 195, }, D { l: 6, t: 10, i: 508, }, D { l: 135, t: 11, i: 802, }, D { l: 4, t: 0, i: 167 }, D { l: 135, t: 0, i: 82, }, D { l: 5, t: 0, i: 62 }, D { l: 6, t: 0, i: 24 }, D { l: 6, t: 0, i: 534 }, D { l: 7, t: 0, i: 74 }, D { l: 7, t: 0, i: 678 }, D { l: 7, t: 0, i: 684 }, D { l: 7, t: 0, i: 1043, }, D { l: 7, t: 0, i: 1072, }, D { l: 8, t: 0, i: 280 }, D { l: 8, t: 0, i: 541 }, D { l: 8, t: 0, i: 686 }, D { l: 9, t: 0, i: 258 }, D { l: 10, t: 0, i: 519, }, D { l: 11, t: 0, i: 252, }, D { l: 140, t: 0, i: 282, }, D { l: 138, t: 0, i: 33, }, D { l: 4, t: 0, i: 359 }, D { l: 133, t: 11, i: 738, }, D { l: 7, t: 0, i: 980 }, D { l: 9, t: 0, i: 328 }, D { l: 13, t: 0, i: 186, }, D { l: 13, t: 0, i: 364, }, D { l: 7, t: 10, i: 635, }, D { l: 7, t: 10, i: 796, }, D { l: 8, t: 10, i: 331, }, D { l: 9, t: 10, i: 330, }, D { l: 9, t: 10, i: 865, }, D { l: 10, t: 10, i: 119, }, D { l: 10, t: 10, i: 235, }, D { l: 11, t: 10, i: 111, }, D { l: 11, t: 10, i: 129, }, D { l: 11, t: 10, i: 240, }, D { l: 12, t: 10, i: 31, }, D { l: 12, t: 10, i: 66, }, D { l: 12, t: 10, i: 222, }, D { l: 12, t: 10, i: 269, }, D { l: 12, t: 10, i: 599, }, D { l: 12, t: 10, i: 684, }, D { l: 12, t: 10, i: 689, }, D { l: 12, t: 10, i: 691, }, D { l: 142, t: 10, i: 345, }, D { l: 137, t: 10, i: 527, }, D { l: 6, t: 0, i: 596 }, D { l: 7, t: 0, i: 585 }, D { l: 135, t: 10, i: 702, }, D { l: 134, t: 11, i: 1683, }, D { l: 133, t: 0, i: 211, }, D { l: 6, t: 0, i: 145 }, D { l: 141, t: 0, i: 336, }, D { l: 134, t: 0, i: 1130, }, D { l: 7, t: 0, i: 873 }, D { l: 6, t: 10, i: 37 }, D { l: 7, t: 10, i: 1666, }, D { l: 8, t: 10, i: 195, }, D { l: 8, t: 10, i: 316, }, D { l: 9, t: 10, i: 178, }, D { l: 9, t: 10, i: 276, }, D { l: 9, t: 10, i: 339, }, D { l: 9, t: 10, i: 536, }, D { l: 10, t: 10, i: 102, }, D { l: 10, t: 10, i: 362, }, D { l: 10, t: 10, i: 785, }, D { l: 11, t: 10, i: 55, }, D { l: 11, t: 10, i: 149, }, D { l: 11, t: 10, i: 773, }, D { l: 13, t: 10, i: 416, }, D { l: 13, t: 10, i: 419, }, D { l: 14, t: 10, i: 38, }, D { l: 14, t: 10, i: 41, }, D { l: 142, t: 10, i: 210, }, D { l: 8, t: 0, i: 840 }, D { l: 136, t: 0, i: 841, }, D { l: 132, t: 0, i: 263, }, D { l: 5, t: 11, i: 3 }, D { l: 8, t: 11, i: 578, }, D { l: 9, t: 11, i: 118, }, D { l: 10, t: 11, i: 705, }, D { l: 12, t: 11, i: 383, }, D { l: 141, t: 11, i: 279, }, D { l: 132, t: 0, i: 916, }, D { l: 133, t: 11, i: 229, }, D { l: 133, t: 10, i: 645, }, D { l: 15, t: 0, i: 155, }, D { l: 16, t: 0, i: 79 }, D { l: 8, t: 11, i: 102, }, D { l: 10, t: 11, i: 578, }, D { l: 10, t: 11, i: 672, }, D { l: 12, t: 11, i: 496, }, D { l: 13, t: 11, i: 408, }, D { l: 14, t: 11, i: 121, }, D { l: 145, t: 11, i: 106, }, D { l: 4, t: 0, i: 599 }, D { l: 5, t: 0, i: 592 }, D { l: 6, t: 0, i: 1634, }, D { l: 7, t: 0, i: 5 }, D { l: 7, t: 0, i: 55 }, D { l: 7, t: 0, i: 67 }, D { l: 7, t: 0, i: 97 }, D { l: 7, t: 0, i: 691 }, D { l: 7, t: 0, i: 979 }, D { l: 7, t: 0, i: 1600, }, D { l: 7, t: 0, i: 1697, }, D { l: 8, t: 0, i: 207 }, D { l: 8, t: 0, i: 214 }, D { l: 8, t: 0, i: 231 }, D { l: 8, t: 0, i: 294 }, D { l: 8, t: 0, i: 336 }, D { l: 8, t: 0, i: 428 }, D { l: 8, t: 0, i: 471 }, D { l: 8, t: 0, i: 622 }, D { l: 8, t: 0, i: 626 }, D { l: 8, t: 0, i: 679 }, D { l: 8, t: 0, i: 759 }, D { l: 8, t: 0, i: 829 }, D { l: 9, t: 0, i: 11 }, D { l: 9, t: 0, i: 246 }, D { l: 9, t: 0, i: 484 }, D { l: 9, t: 0, i: 573 }, D { l: 9, t: 0, i: 706 }, D { l: 9, t: 0, i: 762 }, D { l: 9, t: 0, i: 798 }, D { l: 9, t: 0, i: 855 }, D { l: 9, t: 0, i: 870 }, D { l: 9, t: 0, i: 912 }, D { l: 10, t: 0, i: 303, }, D { l: 10, t: 0, i: 335, }, D { l: 10, t: 0, i: 424, }, D { l: 10, t: 0, i: 461, }, D { l: 10, t: 0, i: 543, }, D { l: 10, t: 0, i: 759, }, D { l: 10, t: 0, i: 814, }, D { l: 11, t: 0, i: 59 }, D { l: 11, t: 0, i: 199, }, D { l: 11, t: 0, i: 235, }, D { l: 11, t: 0, i: 590, }, D { l: 11, t: 0, i: 631, }, D { l: 11, t: 0, i: 929, }, D { l: 11, t: 0, i: 963, }, D { l: 11, t: 0, i: 987, }, D { l: 12, t: 0, i: 114, }, D { l: 12, t: 0, i: 182, }, D { l: 12, t: 0, i: 226, }, D { l: 12, t: 0, i: 332, }, D { l: 12, t: 0, i: 439, }, D { l: 12, t: 0, i: 575, }, D { l: 12, t: 0, i: 598, }, D { l: 12, t: 0, i: 675, }, D { l: 13, t: 0, i: 8 }, D { l: 13, t: 0, i: 125, }, D { l: 13, t: 0, i: 194, }, D { l: 13, t: 0, i: 287, }, D { l: 14, t: 0, i: 197, }, D { l: 14, t: 0, i: 383, }, D { l: 15, t: 0, i: 53 }, D { l: 17, t: 0, i: 63 }, D { l: 19, t: 0, i: 46 }, D { l: 19, t: 0, i: 98 }, D { l: 19, t: 0, i: 106, }, D { l: 148, t: 0, i: 85, }, D { l: 7, t: 0, i: 1356, }, D { l: 132, t: 10, i: 290, }, D { l: 6, t: 10, i: 70 }, D { l: 7, t: 10, i: 1292, }, D { l: 10, t: 10, i: 762, }, D { l: 139, t: 10, i: 288, }, D { l: 150, t: 11, i: 55, }, D { l: 4, t: 0, i: 593 }, D { l: 8, t: 11, i: 115, }, D { l: 8, t: 11, i: 350, }, D { l: 9, t: 11, i: 489, }, D { l: 10, t: 11, i: 128, }, D { l: 11, t: 11, i: 306, }, D { l: 12, t: 11, i: 373, }, D { l: 14, t: 11, i: 30, }, D { l: 17, t: 11, i: 79, }, D { l: 147, t: 11, i: 80, }, D { l: 135, t: 11, i: 1235, }, D { l: 134, t: 0, i: 1392, }, D { l: 4, t: 11, i: 230, }, D { l: 133, t: 11, i: 702, }, D { l: 147, t: 0, i: 126, }, D { l: 7, t: 10, i: 131, }, D { l: 7, t: 10, i: 422, }, D { l: 8, t: 10, i: 210, }, D { l: 140, t: 10, i: 573, }, D { l: 134, t: 0, i: 1179, }, D { l: 139, t: 11, i: 435, }, D { l: 139, t: 10, i: 797, }, D { l: 134, t: 11, i: 1728, }, D { l: 4, t: 0, i: 162 }, D { l: 18, t: 11, i: 26, }, D { l: 19, t: 11, i: 42, }, D { l: 20, t: 11, i: 43, }, D { l: 21, t: 11, i: 0 }, D { l: 23, t: 11, i: 27, }, D { l: 152, t: 11, i: 14, }, D { l: 132, t: 10, i: 936, }, D { l: 6, t: 0, i: 765 }, D { l: 5, t: 10, i: 453, }, D { l: 134, t: 10, i: 441, }, D { l: 133, t: 0, i: 187, }, D { l: 135, t: 0, i: 1286, }, D { l: 6, t: 0, i: 635 }, D { l: 6, t: 0, i: 904 }, D { l: 6, t: 0, i: 1210, }, D { l: 134, t: 0, i: 1489, }, D { l: 4, t: 0, i: 215 }, D { l: 8, t: 0, i: 890 }, D { l: 9, t: 0, i: 38 }, D { l: 10, t: 0, i: 923, }, D { l: 11, t: 0, i: 23 }, D { l: 11, t: 0, i: 127, }, D { l: 139, t: 0, i: 796, }, D { l: 6, t: 0, i: 1165, }, D { l: 134, t: 0, i: 1306, }, D { l: 7, t: 0, i: 716 }, D { l: 13, t: 0, i: 97 }, D { l: 141, t: 0, i: 251, }, D { l: 132, t: 10, i: 653, }, D { l: 136, t: 0, i: 657, }, D { l: 146, t: 10, i: 80, }, D { l: 5, t: 11, i: 622, }, D { l: 7, t: 11, i: 1032, }, D { l: 11, t: 11, i: 26, }, D { l: 11, t: 11, i: 213, }, D { l: 11, t: 11, i: 707, }, D { l: 12, t: 11, i: 380, }, D { l: 13, t: 11, i: 226, }, D { l: 141, t: 11, i: 355, }, D { l: 6, t: 0, i: 299 }, D { l: 5, t: 11, i: 70 }, D { l: 6, t: 11, i: 334, }, D { l: 9, t: 11, i: 171, }, D { l: 11, t: 11, i: 637, }, D { l: 12, t: 11, i: 202, }, D { l: 14, t: 11, i: 222, }, D { l: 145, t: 11, i: 42, }, D { l: 142, t: 0, i: 134, }, D { l: 4, t: 11, i: 23 }, D { l: 5, t: 11, i: 313, }, D { l: 5, t: 11, i: 1014, }, D { l: 6, t: 11, i: 50 }, D { l: 6, t: 11, i: 51 }, D { l: 7, t: 11, i: 142, }, D { l: 7, t: 11, i: 384, }, D { l: 9, t: 11, i: 783, }, D { l: 139, t: 11, i: 741, }, D { l: 4, t: 11, i: 141, }, D { l: 7, t: 11, i: 559, }, D { l: 8, t: 11, i: 640, }, D { l: 9, t: 11, i: 460, }, D { l: 12, t: 11, i: 183, }, D { l: 141, t: 11, i: 488, }, D { l: 136, t: 11, i: 614, }, D { l: 7, t: 10, i: 1368, }, D { l: 8, t: 10, i: 232, }, D { l: 8, t: 10, i: 361, }, D { l: 10, t: 10, i: 682, }, D { l: 138, t: 10, i: 742, }, D { l: 137, t: 10, i: 534, }, D { l: 6, t: 0, i: 1082, }, D { l: 140, t: 0, i: 658, }, D { l: 137, t: 10, i: 27, }, D { l: 135, t: 0, i: 2002, }, D { l: 142, t: 10, i: 12, }, D { l: 4, t: 0, i: 28 }, D { l: 5, t: 0, i: 440 }, D { l: 7, t: 0, i: 248 }, D { l: 11, t: 0, i: 833, }, D { l: 140, t: 0, i: 344, }, D { l: 7, t: 10, i: 736, }, D { l: 139, t: 10, i: 264, }, D { l: 134, t: 10, i: 1657, }, D { l: 134, t: 0, i: 1654, }, D { l: 138, t: 0, i: 531, }, D { l: 5, t: 11, i: 222, }, D { l: 9, t: 11, i: 140, }, D { l: 138, t: 11, i: 534, }, D { l: 6, t: 0, i: 634 }, D { l: 6, t: 0, i: 798 }, D { l: 134, t: 0, i: 840, }, D { l: 138, t: 11, i: 503, }, D { l: 135, t: 10, i: 127, }, D { l: 133, t: 0, i: 853, }, D { l: 5, t: 11, i: 154, }, D { l: 7, t: 11, i: 1491, }, D { l: 10, t: 11, i: 379, }, D { l: 138, t: 11, i: 485, }, D { l: 6, t: 0, i: 249 }, D { l: 7, t: 0, i: 1234, }, D { l: 139, t: 0, i: 573, }, D { l: 133, t: 11, i: 716, }, D { l: 7, t: 11, i: 1570, }, D { l: 140, t: 11, i: 542, }, D { l: 136, t: 10, i: 364, }, D { l: 138, t: 0, i: 527, }, D { l: 4, t: 11, i: 91 }, D { l: 5, t: 11, i: 388, }, D { l: 5, t: 11, i: 845, }, D { l: 6, t: 11, i: 206, }, D { l: 6, t: 11, i: 252, }, D { l: 6, t: 11, i: 365, }, D { l: 7, t: 11, i: 136, }, D { l: 7, t: 11, i: 531, }, D { l: 8, t: 11, i: 264, }, D { l: 136, t: 11, i: 621, }, D { l: 134, t: 0, i: 1419, }, D { l: 135, t: 11, i: 1441, }, D { l: 7, t: 0, i: 49 }, D { l: 7, t: 0, i: 392 }, D { l: 8, t: 0, i: 20 }, D { l: 8, t: 0, i: 172 }, D { l: 8, t: 0, i: 690 }, D { l: 9, t: 0, i: 383 }, D { l: 9, t: 0, i: 845 }, D { l: 10, t: 0, i: 48 }, D { l: 11, t: 0, i: 293, }, D { l: 11, t: 0, i: 832, }, D { l: 11, t: 0, i: 920, }, D { l: 11, t: 0, i: 984, }, D { l: 141, t: 0, i: 221, }, D { l: 5, t: 0, i: 858 }, D { l: 133, t: 0, i: 992, }, D { l: 5, t: 0, i: 728 }, D { l: 137, t: 10, i: 792, }, D { l: 5, t: 10, i: 909, }, D { l: 9, t: 10, i: 849, }, D { l: 138, t: 10, i: 805, }, D { l: 7, t: 0, i: 525 }, D { l: 7, t: 0, i: 1579, }, D { l: 8, t: 0, i: 497 }, D { l: 136, t: 0, i: 573, }, D { l: 6, t: 0, i: 268 }, D { l: 137, t: 0, i: 62, }, D { l: 135, t: 11, i: 576, }, D { l: 134, t: 0, i: 1201, }, D { l: 5, t: 11, i: 771, }, D { l: 5, t: 11, i: 863, }, D { l: 5, t: 11, i: 898, }, D { l: 6, t: 11, i: 1632, }, D { l: 6, t: 11, i: 1644, }, D { l: 134, t: 11, i: 1780, }, D { l: 133, t: 11, i: 331, }, D { l: 7, t: 0, i: 193 }, D { l: 7, t: 0, i: 1105, }, D { l: 10, t: 0, i: 495, }, D { l: 7, t: 10, i: 397, }, D { l: 8, t: 10, i: 124, }, D { l: 8, t: 10, i: 619, }, D { l: 9, t: 10, i: 305, }, D { l: 11, t: 10, i: 40, }, D { l: 12, t: 10, i: 349, }, D { l: 13, t: 10, i: 134, }, D { l: 13, t: 10, i: 295, }, D { l: 14, t: 10, i: 155, }, D { l: 15, t: 10, i: 120, }, D { l: 146, t: 10, i: 105, }, D { l: 138, t: 0, i: 106, }, D { l: 6, t: 0, i: 859 }, D { l: 5, t: 11, i: 107, }, D { l: 7, t: 11, i: 201, }, D { l: 136, t: 11, i: 518, }, D { l: 6, t: 11, i: 446, }, D { l: 135, t: 11, i: 1817, }, D { l: 13, t: 0, i: 23 }, D { l: 4, t: 10, i: 262, }, D { l: 135, t: 10, i: 342, }, D { l: 133, t: 10, i: 641, }, D { l: 137, t: 11, i: 851, }, D { l: 6, t: 0, i: 925 }, D { l: 137, t: 0, i: 813, }, D { l: 132, t: 11, i: 504, }, D { l: 6, t: 0, i: 613 }, D { l: 136, t: 0, i: 223, }, D { l: 4, t: 10, i: 99 }, D { l: 6, t: 10, i: 250, }, D { l: 6, t: 10, i: 346, }, D { l: 8, t: 10, i: 127, }, D { l: 138, t: 10, i: 81, }, D { l: 136, t: 0, i: 953, }, D { l: 132, t: 10, i: 915, }, D { l: 139, t: 11, i: 892, }, D { l: 5, t: 10, i: 75 }, D { l: 9, t: 10, i: 517, }, D { l: 10, t: 10, i: 470, }, D { l: 12, t: 10, i: 155, }, D { l: 141, t: 10, i: 224, }, D { l: 4, t: 0, i: 666 }, D { l: 7, t: 0, i: 1017, }, D { l: 7, t: 11, i: 996, }, D { l: 138, t: 11, i: 390, }, D { l: 5, t: 11, i: 883, }, D { l: 133, t: 11, i: 975, }, D { l: 14, t: 10, i: 83, }, D { l: 142, t: 11, i: 83, }, D { l: 4, t: 0, i: 670 }, D { l: 5, t: 11, i: 922, }, D { l: 134, t: 11, i: 1707, }, D { l: 135, t: 0, i: 216, }, D { l: 9, t: 0, i: 40 }, D { l: 11, t: 0, i: 136, }, D { l: 135, t: 11, i: 787, }, D { l: 5, t: 10, i: 954, }, D { l: 5, t: 11, i: 993, }, D { l: 7, t: 11, i: 515, }, D { l: 137, t: 11, i: 91, }, D { l: 139, t: 0, i: 259, }, D { l: 7, t: 0, i: 1114, }, D { l: 9, t: 0, i: 310 }, D { l: 9, t: 0, i: 682 }, D { l: 10, t: 0, i: 440, }, D { l: 13, t: 0, i: 40 }, D { l: 6, t: 10, i: 304, }, D { l: 8, t: 10, i: 418, }, D { l: 11, t: 10, i: 341, }, D { l: 139, t: 10, i: 675, }, D { l: 14, t: 0, i: 296, }, D { l: 9, t: 10, i: 410, }, D { l: 139, t: 10, i: 425, }, D { l: 10, t: 11, i: 377, }, D { l: 12, t: 11, i: 363, }, D { l: 13, t: 11, i: 68, }, D { l: 13, t: 11, i: 94, }, D { l: 14, t: 11, i: 108, }, D { l: 142, t: 11, i: 306, }, D { l: 7, t: 0, i: 1401, }, D { l: 135, t: 0, i: 1476, }, D { l: 4, t: 0, i: 296 }, D { l: 6, t: 0, i: 475 }, D { l: 7, t: 0, i: 401 }, D { l: 7, t: 0, i: 1410, }, D { l: 7, t: 0, i: 1594, }, D { l: 7, t: 0, i: 1674, }, D { l: 8, t: 0, i: 63 }, D { l: 8, t: 0, i: 660 }, D { l: 137, t: 0, i: 74, }, D { l: 4, t: 0, i: 139 }, D { l: 4, t: 0, i: 388 }, D { l: 140, t: 0, i: 188, }, D { l: 132, t: 0, i: 797, }, D { l: 132, t: 11, i: 766, }, D { l: 5, t: 11, i: 103, }, D { l: 7, t: 11, i: 921, }, D { l: 8, t: 11, i: 580, }, D { l: 8, t: 11, i: 593, }, D { l: 8, t: 11, i: 630, }, D { l: 138, t: 11, i: 28, }, D { l: 4, t: 11, i: 911, }, D { l: 5, t: 11, i: 867, }, D { l: 133, t: 11, i: 1013, }, D { l: 134, t: 10, i: 14, }, D { l: 134, t: 0, i: 1572, }, D { l: 134, t: 10, i: 1708, }, D { l: 21, t: 0, i: 39 }, D { l: 5, t: 10, i: 113, }, D { l: 6, t: 10, i: 243, }, D { l: 7, t: 10, i: 1865, }, D { l: 11, t: 10, i: 161, }, D { l: 16, t: 10, i: 37, }, D { l: 145, t: 10, i: 99, }, D { l: 7, t: 11, i: 1563, }, D { l: 141, t: 11, i: 182, }, D { l: 5, t: 11, i: 135, }, D { l: 6, t: 11, i: 519, }, D { l: 7, t: 11, i: 1722, }, D { l: 10, t: 11, i: 271, }, D { l: 11, t: 11, i: 261, }, D { l: 145, t: 11, i: 54, }, D { l: 132, t: 10, i: 274, }, D { l: 134, t: 0, i: 1594, }, D { l: 4, t: 11, i: 300, }, D { l: 5, t: 11, i: 436, }, D { l: 135, t: 11, i: 484, }, D { l: 4, t: 0, i: 747 }, D { l: 6, t: 0, i: 290 }, D { l: 7, t: 0, i: 649 }, D { l: 7, t: 0, i: 1479, }, D { l: 135, t: 0, i: 1583, }, D { l: 133, t: 11, i: 535, }, D { l: 147, t: 11, i: 82, }, D { l: 133, t: 0, i: 232, }, D { l: 137, t: 0, i: 887, }, D { l: 135, t: 10, i: 166, }, D { l: 136, t: 0, i: 521, }, D { l: 4, t: 0, i: 14 }, D { l: 7, t: 0, i: 472 }, D { l: 7, t: 0, i: 1801, }, D { l: 10, t: 0, i: 748, }, D { l: 141, t: 0, i: 458, }, D { l: 134, t: 0, i: 741, }, D { l: 134, t: 0, i: 992, }, D { l: 16, t: 0, i: 111, }, D { l: 137, t: 10, i: 304, }, D { l: 4, t: 0, i: 425 }, D { l: 5, t: 11, i: 387, }, D { l: 7, t: 11, i: 557, }, D { l: 12, t: 11, i: 547, }, D { l: 142, t: 11, i: 86, }, D { l: 135, t: 11, i: 1747, }, D { l: 5, t: 10, i: 654, }, D { l: 135, t: 11, i: 1489, }, D { l: 7, t: 0, i: 789 }, D { l: 4, t: 11, i: 6 }, D { l: 5, t: 11, i: 708, }, D { l: 136, t: 11, i: 75, }, D { l: 6, t: 10, i: 273, }, D { l: 10, t: 10, i: 188, }, D { l: 13, t: 10, i: 377, }, D { l: 146, t: 10, i: 77, }, D { l: 6, t: 0, i: 1593, }, D { l: 4, t: 11, i: 303, }, D { l: 7, t: 11, i: 619, }, D { l: 10, t: 11, i: 547, }, D { l: 10, t: 11, i: 687, }, D { l: 11, t: 11, i: 122, }, D { l: 140, t: 11, i: 601, }, D { l: 134, t: 0, i: 1768, }, D { l: 135, t: 10, i: 410, }, D { l: 138, t: 11, i: 772, }, D { l: 11, t: 0, i: 233, }, D { l: 139, t: 10, i: 524, }, D { l: 5, t: 0, i: 943 }, D { l: 134, t: 0, i: 1779, }, D { l: 134, t: 10, i: 1785, }, D { l: 136, t: 11, i: 529, }, D { l: 132, t: 0, i: 955, }, D { l: 5, t: 0, i: 245 }, D { l: 6, t: 0, i: 576 }, D { l: 7, t: 0, i: 582 }, D { l: 136, t: 0, i: 225, }, D { l: 132, t: 10, i: 780, }, D { l: 142, t: 0, i: 241, }, D { l: 134, t: 0, i: 1943, }, D { l: 4, t: 11, i: 106, }, D { l: 7, t: 11, i: 310, }, D { l: 7, t: 11, i: 1785, }, D { l: 10, t: 11, i: 690, }, D { l: 139, t: 11, i: 717, }, D { l: 134, t: 0, i: 1284, }, D { l: 5, t: 11, i: 890, }, D { l: 133, t: 11, i: 988, }, D { l: 6, t: 11, i: 626, }, D { l: 142, t: 11, i: 431, }, D { l: 10, t: 11, i: 706, }, D { l: 145, t: 11, i: 32, }, D { l: 137, t: 11, i: 332, }, D { l: 132, t: 11, i: 698, }, D { l: 135, t: 0, i: 709, }, D { l: 5, t: 10, i: 948, }, D { l: 138, t: 11, i: 17, }, D { l: 136, t: 0, i: 554, }, D { l: 134, t: 0, i: 1564, }, D { l: 139, t: 10, i: 941, }, D { l: 132, t: 0, i: 443, }, D { l: 134, t: 0, i: 909, }, D { l: 134, t: 11, i: 84, }, D { l: 142, t: 0, i: 280, }, D { l: 4, t: 10, i: 532, }, D { l: 5, t: 10, i: 706, }, D { l: 135, t: 10, i: 662, }, D { l: 132, t: 0, i: 729, }, D { l: 5, t: 10, i: 837, }, D { l: 6, t: 10, i: 1651, }, D { l: 139, t: 10, i: 985, }, D { l: 135, t: 10, i: 1861, }, D { l: 4, t: 0, i: 348 }, D { l: 152, t: 11, i: 3, }, D { l: 5, t: 11, i: 986, }, D { l: 6, t: 11, i: 130, }, D { l: 7, t: 11, i: 1582, }, D { l: 8, t: 11, i: 458, }, D { l: 10, t: 11, i: 101, }, D { l: 10, t: 11, i: 318, }, D { l: 138, t: 11, i: 823, }, D { l: 134, t: 0, i: 758, }, D { l: 4, t: 0, i: 298 }, D { l: 137, t: 0, i: 848, }, D { l: 4, t: 10, i: 330, }, D { l: 7, t: 10, i: 933, }, D { l: 7, t: 10, i: 2012, }, D { l: 136, t: 10, i: 292, }, D { l: 7, t: 11, i: 1644, }, D { l: 137, t: 11, i: 129, }, D { l: 6, t: 0, i: 1422, }, D { l: 9, t: 0, i: 829 }, D { l: 135, t: 10, i: 767, }, D { l: 5, t: 0, i: 164 }, D { l: 7, t: 0, i: 121 }, D { l: 142, t: 0, i: 189, }, D { l: 7, t: 0, i: 812 }, D { l: 7, t: 0, i: 1261, }, D { l: 7, t: 0, i: 1360, }, D { l: 9, t: 0, i: 632 }, D { l: 140, t: 0, i: 352, }, D { l: 135, t: 11, i: 1788, }, D { l: 139, t: 0, i: 556, }, D { l: 135, t: 11, i: 997, }, D { l: 145, t: 10, i: 114, }, D { l: 4, t: 0, i: 172 }, D { l: 9, t: 0, i: 611 }, D { l: 10, t: 0, i: 436, }, D { l: 12, t: 0, i: 673, }, D { l: 13, t: 0, i: 255, }, D { l: 137, t: 10, i: 883, }, D { l: 11, t: 0, i: 530, }, D { l: 138, t: 10, i: 274, }, D { l: 133, t: 0, i: 844, }, D { l: 134, t: 0, i: 984, }, D { l: 13, t: 0, i: 232, }, D { l: 18, t: 0, i: 35 }, D { l: 4, t: 10, i: 703, }, D { l: 135, t: 10, i: 207, }, D { l: 132, t: 10, i: 571, }, D { l: 9, t: 0, i: 263 }, D { l: 10, t: 0, i: 147, }, D { l: 138, t: 0, i: 492, }, D { l: 7, t: 11, i: 1756, }, D { l: 137, t: 11, i: 98, }, D { l: 5, t: 10, i: 873, }, D { l: 5, t: 10, i: 960, }, D { l: 8, t: 10, i: 823, }, D { l: 137, t: 10, i: 881, }, D { l: 133, t: 0, i: 537, }, D { l: 132, t: 0, i: 859, }, D { l: 7, t: 11, i: 1046, }, D { l: 139, t: 11, i: 160, }, D { l: 137, t: 0, i: 842, }, D { l: 139, t: 10, i: 283, }, D { l: 5, t: 10, i: 33 }, D { l: 6, t: 10, i: 470, }, D { l: 139, t: 10, i: 424, }, D { l: 6, t: 11, i: 45 }, D { l: 7, t: 11, i: 433, }, D { l: 8, t: 11, i: 129, }, D { l: 9, t: 11, i: 21 }, D { l: 10, t: 11, i: 392, }, D { l: 11, t: 11, i: 79, }, D { l: 12, t: 11, i: 499, }, D { l: 13, t: 11, i: 199, }, D { l: 141, t: 11, i: 451, }, D { l: 135, t: 0, i: 1291, }, D { l: 135, t: 10, i: 1882, }, D { l: 7, t: 11, i: 558, }, D { l: 136, t: 11, i: 353, }, D { l: 134, t: 0, i: 1482, }, D { l: 5, t: 0, i: 230 }, D { l: 5, t: 0, i: 392 }, D { l: 6, t: 0, i: 420 }, D { l: 9, t: 0, i: 568 }, D { l: 140, t: 0, i: 612, }, D { l: 6, t: 0, i: 262 }, D { l: 7, t: 10, i: 90 }, D { l: 7, t: 10, i: 664, }, D { l: 7, t: 10, i: 830, }, D { l: 7, t: 10, i: 1380, }, D { l: 7, t: 10, i: 2025, }, D { l: 8, t: 11, i: 81 }, D { l: 8, t: 10, i: 448, }, D { l: 8, t: 10, i: 828, }, D { l: 9, t: 11, i: 189, }, D { l: 9, t: 11, i: 201, }, D { l: 11, t: 11, i: 478, }, D { l: 11, t: 11, i: 712, }, D { l: 141, t: 11, i: 338, }, D { l: 142, t: 0, i: 31, }, D { l: 5, t: 11, i: 353, }, D { l: 151, t: 11, i: 26, }, D { l: 132, t: 0, i: 753, }, D { l: 4, t: 0, i: 0 }, D { l: 5, t: 0, i: 41 }, D { l: 7, t: 0, i: 1459, }, D { l: 7, t: 0, i: 1469, }, D { l: 7, t: 0, i: 1859, }, D { l: 9, t: 0, i: 549 }, D { l: 139, t: 0, i: 905, }, D { l: 9, t: 10, i: 417, }, D { l: 137, t: 10, i: 493, }, D { l: 135, t: 11, i: 1113, }, D { l: 133, t: 0, i: 696, }, D { l: 141, t: 11, i: 448, }, D { l: 134, t: 10, i: 295, }, D { l: 132, t: 0, i: 834, }, D { l: 4, t: 0, i: 771 }, D { l: 5, t: 10, i: 1019, }, D { l: 6, t: 11, i: 25 }, D { l: 7, t: 11, i: 855, }, D { l: 7, t: 11, i: 1258, }, D { l: 144, t: 11, i: 32, }, D { l: 134, t: 0, i: 1076, }, D { l: 133, t: 0, i: 921, }, D { l: 133, t: 0, i: 674, }, D { l: 4, t: 11, i: 4 }, D { l: 7, t: 11, i: 1118, }, D { l: 7, t: 11, i: 1320, }, D { l: 7, t: 11, i: 1706, }, D { l: 8, t: 11, i: 277, }, D { l: 9, t: 11, i: 622, }, D { l: 10, t: 11, i: 9 }, D { l: 11, t: 11, i: 724, }, D { l: 12, t: 11, i: 350, }, D { l: 12, t: 11, i: 397, }, D { l: 13, t: 11, i: 28, }, D { l: 13, t: 11, i: 159, }, D { l: 15, t: 11, i: 89, }, D { l: 18, t: 11, i: 5 }, D { l: 19, t: 11, i: 9 }, D { l: 20, t: 11, i: 34, }, D { l: 150, t: 11, i: 47, }, D { l: 134, t: 10, i: 208, }, D { l: 6, t: 0, i: 444 }, D { l: 136, t: 0, i: 308, }, D { l: 6, t: 0, i: 180 }, D { l: 7, t: 0, i: 1137, }, D { l: 8, t: 0, i: 751 }, D { l: 139, t: 0, i: 805, }, D { l: 4, t: 0, i: 183 }, D { l: 7, t: 0, i: 271 }, D { l: 11, t: 0, i: 824, }, D { l: 11, t: 0, i: 952, }, D { l: 13, t: 0, i: 278, }, D { l: 13, t: 0, i: 339, }, D { l: 13, t: 0, i: 482, }, D { l: 14, t: 0, i: 424, }, D { l: 148, t: 0, i: 99, }, D { l: 7, t: 11, i: 317, }, D { l: 135, t: 11, i: 569, }, D { l: 4, t: 0, i: 19 }, D { l: 5, t: 0, i: 477 }, D { l: 5, t: 0, i: 596 }, D { l: 6, t: 0, i: 505 }, D { l: 7, t: 0, i: 1221, }, D { l: 11, t: 0, i: 907, }, D { l: 12, t: 0, i: 209, }, D { l: 141, t: 0, i: 214, }, D { l: 135, t: 0, i: 1215, }, D { l: 6, t: 0, i: 271 }, D { l: 7, t: 0, i: 398 }, D { l: 8, t: 0, i: 387 }, D { l: 10, t: 0, i: 344, }, D { l: 7, t: 10, i: 448, }, D { l: 7, t: 10, i: 1629, }, D { l: 7, t: 10, i: 1813, }, D { l: 8, t: 10, i: 442, }, D { l: 9, t: 10, i: 710, }, D { l: 10, t: 10, i: 282, }, D { l: 138, t: 10, i: 722, }, D { l: 11, t: 10, i: 844, }, D { l: 12, t: 10, i: 104, }, D { l: 140, t: 10, i: 625, }, D { l: 134, t: 11, i: 255, }, D { l: 133, t: 10, i: 787, }, D { l: 134, t: 0, i: 1645, }, D { l: 11, t: 11, i: 956, }, D { l: 151, t: 11, i: 3, }, D { l: 6, t: 0, i: 92 }, D { l: 6, t: 0, i: 188 }, D { l: 7, t: 0, i: 209 }, D { l: 7, t: 0, i: 1269, }, D { l: 7, t: 0, i: 1524, }, D { l: 7, t: 0, i: 1876, }, D { l: 8, t: 0, i: 661 }, D { l: 10, t: 0, i: 42 }, D { l: 10, t: 0, i: 228, }, D { l: 11, t: 0, i: 58 }, D { l: 11, t: 0, i: 1020, }, D { l: 12, t: 0, i: 58 }, D { l: 12, t: 0, i: 118, }, D { l: 141, t: 0, i: 32, }, D { l: 4, t: 0, i: 459 }, D { l: 133, t: 0, i: 966, }, D { l: 4, t: 11, i: 536, }, D { l: 7, t: 11, i: 1141, }, D { l: 10, t: 11, i: 723, }, D { l: 139, t: 11, i: 371, }, D { l: 140, t: 0, i: 330, }, D { l: 134, t: 0, i: 1557, }, D { l: 7, t: 11, i: 285, }, D { l: 135, t: 11, i: 876, }, D { l: 136, t: 10, i: 491, }, D { l: 135, t: 11, i: 560, }, D { l: 6, t: 0, i: 18 }, D { l: 7, t: 0, i: 179 }, D { l: 7, t: 0, i: 932 }, D { l: 8, t: 0, i: 548 }, D { l: 8, t: 0, i: 757 }, D { l: 9, t: 0, i: 54 }, D { l: 9, t: 0, i: 65 }, D { l: 9, t: 0, i: 532 }, D { l: 9, t: 0, i: 844 }, D { l: 10, t: 0, i: 113, }, D { l: 10, t: 0, i: 117, }, D { l: 10, t: 0, i: 315, }, D { l: 10, t: 0, i: 560, }, D { l: 10, t: 0, i: 622, }, D { l: 10, t: 0, i: 798, }, D { l: 11, t: 0, i: 153, }, D { l: 11, t: 0, i: 351, }, D { l: 11, t: 0, i: 375, }, D { l: 12, t: 0, i: 78 }, D { l: 12, t: 0, i: 151, }, D { l: 12, t: 0, i: 392, }, D { l: 12, t: 0, i: 666, }, D { l: 14, t: 0, i: 248, }, D { l: 143, t: 0, i: 23, }, D { l: 6, t: 0, i: 1742, }, D { l: 132, t: 11, i: 690, }, D { l: 4, t: 10, i: 403, }, D { l: 5, t: 10, i: 441, }, D { l: 7, t: 10, i: 450, }, D { l: 10, t: 10, i: 840, }, D { l: 11, t: 10, i: 101, }, D { l: 12, t: 10, i: 193, }, D { l: 141, t: 10, i: 430, }, D { l: 133, t: 0, i: 965, }, D { l: 134, t: 0, i: 182, }, D { l: 10, t: 0, i: 65 }, D { l: 10, t: 0, i: 488, }, D { l: 138, t: 0, i: 497, }, D { l: 135, t: 11, i: 1346, }, D { l: 6, t: 0, i: 973 }, D { l: 6, t: 0, i: 1158, }, D { l: 10, t: 11, i: 200, }, D { l: 19, t: 11, i: 2 }, D { l: 151, t: 11, i: 22, }, D { l: 4, t: 11, i: 190, }, D { l: 133, t: 11, i: 554, }, D { l: 133, t: 10, i: 679, }, D { l: 7, t: 0, i: 328 }, D { l: 137, t: 10, i: 326, }, D { l: 133, t: 11, i: 1001, }, D { l: 9, t: 0, i: 588 }, D { l: 138, t: 0, i: 260, }, D { l: 133, t: 11, i: 446, }, D { l: 135, t: 10, i: 1128, }, D { l: 135, t: 10, i: 1796, }, D { l: 147, t: 11, i: 119, }, D { l: 134, t: 0, i: 1786, }, D { l: 6, t: 0, i: 1328, }, D { l: 6, t: 0, i: 1985, }, D { l: 8, t: 0, i: 962 }, D { l: 138, t: 0, i: 1017, }, D { l: 135, t: 0, i: 308, }, D { l: 11, t: 0, i: 508, }, D { l: 4, t: 10, i: 574, }, D { l: 7, t: 10, i: 350, }, D { l: 7, t: 10, i: 1024, }, D { l: 8, t: 10, i: 338, }, D { l: 9, t: 10, i: 677, }, D { l: 138, t: 10, i: 808, }, D { l: 138, t: 11, i: 752, }, D { l: 135, t: 10, i: 1081, }, D { l: 137, t: 11, i: 96, }, D { l: 7, t: 10, i: 1676, }, D { l: 135, t: 10, i: 2037, }, D { l: 136, t: 0, i: 588, }, D { l: 132, t: 11, i: 304, }, D { l: 133, t: 0, i: 614, }, D { l: 140, t: 0, i: 793, }, D { l: 136, t: 0, i: 287, }, D { l: 137, t: 10, i: 297, }, D { l: 141, t: 10, i: 37, }, D { l: 6, t: 11, i: 53 }, D { l: 6, t: 11, i: 199, }, D { l: 7, t: 11, i: 1408, }, D { l: 8, t: 11, i: 32 }, D { l: 8, t: 11, i: 93 }, D { l: 9, t: 11, i: 437, }, D { l: 10, t: 11, i: 397, }, D { l: 10, t: 11, i: 629, }, D { l: 11, t: 11, i: 593, }, D { l: 11, t: 11, i: 763, }, D { l: 13, t: 11, i: 326, }, D { l: 145, t: 11, i: 35, }, D { l: 134, t: 11, i: 105, }, D { l: 9, t: 11, i: 320, }, D { l: 10, t: 11, i: 506, }, D { l: 138, t: 11, i: 794, }, D { l: 5, t: 11, i: 114, }, D { l: 5, t: 11, i: 255, }, D { l: 141, t: 11, i: 285, }, D { l: 140, t: 0, i: 290, }, D { l: 7, t: 11, i: 2035, }, D { l: 8, t: 11, i: 19 }, D { l: 9, t: 11, i: 89 }, D { l: 138, t: 11, i: 831, }, D { l: 134, t: 0, i: 1136, }, D { l: 7, t: 0, i: 719 }, D { l: 8, t: 0, i: 796 }, D { l: 8, t: 0, i: 809 }, D { l: 8, t: 0, i: 834 }, D { l: 6, t: 10, i: 306, }, D { l: 7, t: 10, i: 1140, }, D { l: 7, t: 10, i: 1340, }, D { l: 8, t: 10, i: 133, }, D { l: 138, t: 10, i: 449, }, D { l: 139, t: 10, i: 1011, }, D { l: 5, t: 0, i: 210 }, D { l: 6, t: 0, i: 213 }, D { l: 7, t: 0, i: 60 }, D { l: 10, t: 0, i: 364, }, D { l: 139, t: 0, i: 135, }, D { l: 5, t: 0, i: 607 }, D { l: 8, t: 0, i: 326 }, D { l: 136, t: 0, i: 490, }, D { l: 138, t: 11, i: 176, }, D { l: 132, t: 0, i: 701, }, D { l: 5, t: 0, i: 472 }, D { l: 7, t: 0, i: 380 }, D { l: 137, t: 0, i: 758, }, D { l: 135, t: 0, i: 1947, }, D { l: 6, t: 0, i: 1079, }, D { l: 138, t: 0, i: 278, }, D { l: 138, t: 11, i: 391, }, D { l: 5, t: 10, i: 329, }, D { l: 8, t: 10, i: 260, }, D { l: 139, t: 11, i: 156, }, D { l: 4, t: 0, i: 386 }, D { l: 7, t: 0, i: 41 }, D { l: 8, t: 0, i: 405 }, D { l: 8, t: 0, i: 728 }, D { l: 9, t: 0, i: 497 }, D { l: 11, t: 0, i: 110, }, D { l: 11, t: 0, i: 360, }, D { l: 15, t: 0, i: 37 }, D { l: 144, t: 0, i: 84, }, D { l: 5, t: 0, i: 46 }, D { l: 7, t: 0, i: 1452, }, D { l: 7, t: 0, i: 1480, }, D { l: 8, t: 0, i: 634 }, D { l: 140, t: 0, i: 472, }, D { l: 136, t: 0, i: 961, }, D { l: 4, t: 0, i: 524 }, D { l: 136, t: 0, i: 810, }, D { l: 10, t: 0, i: 238, }, D { l: 141, t: 0, i: 33, }, D { l: 132, t: 10, i: 657, }, D { l: 152, t: 10, i: 7, }, D { l: 133, t: 0, i: 532, }, D { l: 5, t: 0, i: 997 }, D { l: 135, t: 10, i: 1665, }, D { l: 7, t: 11, i: 594, }, D { l: 7, t: 11, i: 851, }, D { l: 7, t: 11, i: 1858, }, D { l: 9, t: 11, i: 411, }, D { l: 9, t: 11, i: 574, }, D { l: 9, t: 11, i: 666, }, D { l: 9, t: 11, i: 737, }, D { l: 10, t: 11, i: 346, }, D { l: 10, t: 11, i: 712, }, D { l: 11, t: 11, i: 246, }, D { l: 11, t: 11, i: 432, }, D { l: 11, t: 11, i: 517, }, D { l: 11, t: 11, i: 647, }, D { l: 11, t: 11, i: 679, }, D { l: 11, t: 11, i: 727, }, D { l: 12, t: 11, i: 304, }, D { l: 12, t: 11, i: 305, }, D { l: 12, t: 11, i: 323, }, D { l: 12, t: 11, i: 483, }, D { l: 12, t: 11, i: 572, }, D { l: 12, t: 11, i: 593, }, D { l: 12, t: 11, i: 602, }, D { l: 13, t: 11, i: 95, }, D { l: 13, t: 11, i: 101, }, D { l: 13, t: 11, i: 171, }, D { l: 13, t: 11, i: 315, }, D { l: 13, t: 11, i: 378, }, D { l: 13, t: 11, i: 425, }, D { l: 13, t: 11, i: 475, }, D { l: 14, t: 11, i: 63, }, D { l: 14, t: 11, i: 380, }, D { l: 14, t: 11, i: 384, }, D { l: 15, t: 11, i: 133, }, D { l: 18, t: 11, i: 112, }, D { l: 148, t: 11, i: 72, }, D { l: 5, t: 11, i: 955, }, D { l: 136, t: 11, i: 814, }, D { l: 134, t: 0, i: 1301, }, D { l: 5, t: 10, i: 66 }, D { l: 7, t: 10, i: 1896, }, D { l: 136, t: 10, i: 288, }, D { l: 133, t: 11, i: 56, }, D { l: 134, t: 10, i: 1643, }, D { l: 6, t: 0, i: 1298, }, D { l: 148, t: 11, i: 100, }, D { l: 5, t: 0, i: 782 }, D { l: 5, t: 0, i: 829 }, D { l: 6, t: 0, i: 671 }, D { l: 6, t: 0, i: 1156, }, D { l: 6, t: 0, i: 1738, }, D { l: 137, t: 11, i: 621, }, D { l: 4, t: 0, i: 306 }, D { l: 5, t: 0, i: 570 }, D { l: 7, t: 0, i: 1347, }, D { l: 5, t: 10, i: 91 }, D { l: 5, t: 10, i: 648, }, D { l: 5, t: 10, i: 750, }, D { l: 5, t: 10, i: 781, }, D { l: 6, t: 10, i: 54 }, D { l: 6, t: 10, i: 112, }, D { l: 6, t: 10, i: 402, }, D { l: 6, t: 10, i: 1732, }, D { l: 7, t: 10, i: 315, }, D { l: 7, t: 10, i: 749, }, D { l: 7, t: 10, i: 1900, }, D { l: 9, t: 10, i: 78 }, D { l: 9, t: 10, i: 508, }, D { l: 10, t: 10, i: 611, }, D { l: 10, t: 10, i: 811, }, D { l: 11, t: 10, i: 510, }, D { l: 11, t: 10, i: 728, }, D { l: 13, t: 10, i: 36, }, D { l: 14, t: 10, i: 39, }, D { l: 16, t: 10, i: 83, }, D { l: 17, t: 10, i: 124, }, D { l: 148, t: 10, i: 30, }, D { l: 8, t: 10, i: 570, }, D { l: 9, t: 11, i: 477, }, D { l: 141, t: 11, i: 78, }, D { l: 4, t: 11, i: 639, }, D { l: 10, t: 11, i: 4 }, D { l: 10, t: 10, i: 322, }, D { l: 10, t: 10, i: 719, }, D { l: 11, t: 10, i: 407, }, D { l: 11, t: 11, i: 638, }, D { l: 12, t: 11, i: 177, }, D { l: 148, t: 11, i: 57, }, D { l: 7, t: 0, i: 1823, }, D { l: 139, t: 0, i: 693, }, D { l: 7, t: 0, i: 759 }, D { l: 5, t: 11, i: 758, }, D { l: 8, t: 10, i: 125, }, D { l: 8, t: 10, i: 369, }, D { l: 8, t: 10, i: 524, }, D { l: 10, t: 10, i: 486, }, D { l: 11, t: 10, i: 13, }, D { l: 11, t: 10, i: 381, }, D { l: 11, t: 10, i: 736, }, D { l: 11, t: 10, i: 766, }, D { l: 11, t: 10, i: 845, }, D { l: 13, t: 10, i: 114, }, D { l: 13, t: 10, i: 292, }, D { l: 142, t: 10, i: 47, }, D { l: 7, t: 0, i: 1932, }, D { l: 6, t: 10, i: 1684, }, D { l: 6, t: 10, i: 1731, }, D { l: 7, t: 10, i: 356, }, D { l: 8, t: 10, i: 54 }, D { l: 8, t: 10, i: 221, }, D { l: 9, t: 10, i: 225, }, D { l: 9, t: 10, i: 356, }, D { l: 10, t: 10, i: 77, }, D { l: 10, t: 10, i: 446, }, D { l: 10, t: 10, i: 731, }, D { l: 12, t: 10, i: 404, }, D { l: 141, t: 10, i: 491, }, D { l: 135, t: 11, i: 552, }, D { l: 135, t: 11, i: 1112, }, D { l: 4, t: 0, i: 78 }, D { l: 5, t: 0, i: 96 }, D { l: 5, t: 0, i: 182 }, D { l: 6, t: 0, i: 1257, }, D { l: 7, t: 0, i: 1724, }, D { l: 7, t: 0, i: 1825, }, D { l: 10, t: 0, i: 394, }, D { l: 10, t: 0, i: 471, }, D { l: 11, t: 0, i: 532, }, D { l: 14, t: 0, i: 340, }, D { l: 145, t: 0, i: 88, }, D { l: 139, t: 11, i: 328, }, D { l: 135, t: 0, i: 1964, }, D { l: 132, t: 10, i: 411, }, D { l: 4, t: 10, i: 80 }, D { l: 5, t: 10, i: 44 }, D { l: 137, t: 11, i: 133, }, D { l: 5, t: 11, i: 110, }, D { l: 6, t: 11, i: 169, }, D { l: 6, t: 11, i: 1702, }, D { l: 7, t: 11, i: 400, }, D { l: 8, t: 11, i: 538, }, D { l: 9, t: 11, i: 184, }, D { l: 9, t: 11, i: 524, }, D { l: 140, t: 11, i: 218, }, D { l: 4, t: 0, i: 521 }, D { l: 5, t: 10, i: 299, }, D { l: 7, t: 10, i: 1083, }, D { l: 140, t: 11, i: 554, }, D { l: 6, t: 11, i: 133, }, D { l: 9, t: 11, i: 353, }, D { l: 12, t: 11, i: 628, }, D { l: 146, t: 11, i: 79, }, D { l: 6, t: 0, i: 215 }, D { l: 7, t: 0, i: 584 }, D { l: 7, t: 0, i: 1028, }, D { l: 7, t: 0, i: 1473, }, D { l: 7, t: 0, i: 1721, }, D { l: 9, t: 0, i: 424 }, D { l: 138, t: 0, i: 779, }, D { l: 7, t: 0, i: 857 }, D { l: 7, t: 0, i: 1209, }, D { l: 7, t: 10, i: 1713, }, D { l: 9, t: 10, i: 537, }, D { l: 10, t: 10, i: 165, }, D { l: 12, t: 10, i: 219, }, D { l: 140, t: 10, i: 561, }, D { l: 4, t: 10, i: 219, }, D { l: 6, t: 11, i: 93 }, D { l: 7, t: 11, i: 1422, }, D { l: 7, t: 10, i: 1761, }, D { l: 7, t: 11, i: 1851, }, D { l: 8, t: 11, i: 673, }, D { l: 9, t: 10, i: 86 }, D { l: 9, t: 11, i: 529, }, D { l: 140, t: 11, i: 43, }, D { l: 137, t: 11, i: 371, }, D { l: 136, t: 0, i: 671, }, D { l: 5, t: 0, i: 328 }, D { l: 135, t: 0, i: 918, }, D { l: 132, t: 0, i: 529, }, D { l: 9, t: 11, i: 25 }, D { l: 10, t: 11, i: 467, }, D { l: 138, t: 11, i: 559, }, D { l: 4, t: 11, i: 335, }, D { l: 135, t: 11, i: 942, }, D { l: 134, t: 0, i: 716, }, D { l: 134, t: 0, i: 1509, }, D { l: 6, t: 0, i: 67 }, D { l: 7, t: 0, i: 258 }, D { l: 7, t: 0, i: 1630, }, D { l: 9, t: 0, i: 354 }, D { l: 9, t: 0, i: 675 }, D { l: 10, t: 0, i: 830, }, D { l: 14, t: 0, i: 80 }, D { l: 17, t: 0, i: 80 }, D { l: 140, t: 10, i: 428, }, D { l: 134, t: 0, i: 1112, }, D { l: 6, t: 0, i: 141 }, D { l: 7, t: 0, i: 225 }, D { l: 9, t: 0, i: 59 }, D { l: 9, t: 0, i: 607 }, D { l: 10, t: 0, i: 312, }, D { l: 11, t: 0, i: 687, }, D { l: 12, t: 0, i: 555, }, D { l: 13, t: 0, i: 373, }, D { l: 13, t: 0, i: 494, }, D { l: 148, t: 0, i: 58, }, D { l: 133, t: 10, i: 514, }, D { l: 8, t: 11, i: 39 }, D { l: 10, t: 11, i: 773, }, D { l: 11, t: 11, i: 84, }, D { l: 12, t: 11, i: 205, }, D { l: 142, t: 11, i: 1, }, D { l: 8, t: 0, i: 783 }, D { l: 5, t: 11, i: 601, }, D { l: 133, t: 11, i: 870, }, D { l: 136, t: 11, i: 594, }, D { l: 4, t: 10, i: 55 }, D { l: 5, t: 10, i: 301, }, D { l: 6, t: 10, i: 571, }, D { l: 14, t: 10, i: 49, }, D { l: 146, t: 10, i: 102, }, D { l: 132, t: 11, i: 181, }, D { l: 134, t: 11, i: 1652, }, D { l: 133, t: 10, i: 364, }, D { l: 4, t: 11, i: 97 }, D { l: 5, t: 11, i: 147, }, D { l: 6, t: 11, i: 286, }, D { l: 7, t: 11, i: 1362, }, D { l: 141, t: 11, i: 176, }, D { l: 4, t: 10, i: 76 }, D { l: 7, t: 10, i: 1550, }, D { l: 9, t: 10, i: 306, }, D { l: 9, t: 10, i: 430, }, D { l: 9, t: 10, i: 663, }, D { l: 10, t: 10, i: 683, }, D { l: 11, t: 10, i: 427, }, D { l: 11, t: 10, i: 753, }, D { l: 12, t: 10, i: 334, }, D { l: 12, t: 10, i: 442, }, D { l: 14, t: 10, i: 258, }, D { l: 14, t: 10, i: 366, }, D { l: 143, t: 10, i: 131, }, D { l: 137, t: 10, i: 52, }, D { l: 6, t: 0, i: 955 }, D { l: 134, t: 0, i: 1498, }, D { l: 6, t: 11, i: 375, }, D { l: 7, t: 11, i: 169, }, D { l: 7, t: 11, i: 254, }, D { l: 136, t: 11, i: 780, }, D { l: 7, t: 0, i: 430 }, D { l: 11, t: 0, i: 46 }, D { l: 14, t: 0, i: 343, }, D { l: 142, t: 11, i: 343, }, D { l: 135, t: 0, i: 1183, }, D { l: 5, t: 0, i: 602 }, D { l: 7, t: 0, i: 2018, }, D { l: 9, t: 0, i: 418 }, D { l: 9, t: 0, i: 803 }, D { l: 135, t: 11, i: 1447, }, D { l: 8, t: 0, i: 677 }, D { l: 135, t: 11, i: 1044, }, D { l: 139, t: 11, i: 285, }, D { l: 4, t: 10, i: 656, }, D { l: 135, t: 10, i: 779, }, D { l: 135, t: 10, i: 144, }, D { l: 5, t: 11, i: 629, }, D { l: 135, t: 11, i: 1549, }, D { l: 135, t: 10, i: 1373, }, D { l: 138, t: 11, i: 209, }, D { l: 7, t: 10, i: 554, }, D { l: 7, t: 10, i: 605, }, D { l: 141, t: 10, i: 10, }, D { l: 5, t: 10, i: 838, }, D { l: 5, t: 10, i: 841, }, D { l: 134, t: 10, i: 1649, }, D { l: 133, t: 10, i: 1012, }, D { l: 6, t: 0, i: 1357, }, D { l: 134, t: 0, i: 1380, }, D { l: 144, t: 0, i: 53, }, D { l: 6, t: 0, i: 590 }, D { l: 7, t: 10, i: 365, }, D { l: 7, t: 10, i: 1357, }, D { l: 7, t: 10, i: 1497, }, D { l: 8, t: 10, i: 154, }, D { l: 141, t: 10, i: 281, }, D { l: 133, t: 10, i: 340, }, D { l: 132, t: 11, i: 420, }, D { l: 135, t: 0, i: 329, }, D { l: 147, t: 11, i: 32, }, D { l: 4, t: 0, i: 469 }, D { l: 10, t: 11, i: 429, }, D { l: 139, t: 10, i: 495, }, D { l: 8, t: 10, i: 261, }, D { l: 9, t: 10, i: 144, }, D { l: 9, t: 10, i: 466, }, D { l: 10, t: 10, i: 370, }, D { l: 12, t: 10, i: 470, }, D { l: 13, t: 10, i: 144, }, D { l: 142, t: 10, i: 348, }, D { l: 142, t: 0, i: 460, }, D { l: 4, t: 11, i: 325, }, D { l: 9, t: 10, i: 897, }, D { l: 138, t: 11, i: 125, }, D { l: 6, t: 0, i: 1743, }, D { l: 6, t: 10, i: 248, }, D { l: 9, t: 10, i: 546, }, D { l: 10, t: 10, i: 535, }, D { l: 11, t: 10, i: 681, }, D { l: 141, t: 10, i: 135, }, D { l: 4, t: 0, i: 990 }, D { l: 5, t: 0, i: 929 }, D { l: 6, t: 0, i: 340 }, D { l: 8, t: 0, i: 376 }, D { l: 8, t: 0, i: 807 }, D { l: 8, t: 0, i: 963 }, D { l: 8, t: 0, i: 980 }, D { l: 138, t: 0, i: 1007, }, D { l: 134, t: 0, i: 1603, }, D { l: 140, t: 0, i: 250, }, D { l: 4, t: 11, i: 714, }, D { l: 133, t: 11, i: 469, }, D { l: 134, t: 10, i: 567, }, D { l: 136, t: 10, i: 445, }, D { l: 5, t: 0, i: 218 }, D { l: 7, t: 0, i: 1610, }, D { l: 8, t: 0, i: 646 }, D { l: 10, t: 0, i: 83 }, D { l: 11, t: 11, i: 138, }, D { l: 140, t: 11, i: 40, }, D { l: 7, t: 0, i: 1512, }, D { l: 135, t: 0, i: 1794, }, D { l: 135, t: 11, i: 1216, }, D { l: 11, t: 0, i: 0 }, D { l: 16, t: 0, i: 78 }, D { l: 132, t: 11, i: 718, }, D { l: 133, t: 0, i: 571, }, D { l: 132, t: 0, i: 455, }, D { l: 134, t: 0, i: 1012, }, D { l: 5, t: 11, i: 124, }, D { l: 5, t: 11, i: 144, }, D { l: 6, t: 11, i: 548, }, D { l: 7, t: 11, i: 15 }, D { l: 7, t: 11, i: 153, }, D { l: 137, t: 11, i: 629, }, D { l: 142, t: 11, i: 10, }, D { l: 6, t: 11, i: 75 }, D { l: 7, t: 11, i: 1531, }, D { l: 8, t: 11, i: 416, }, D { l: 9, t: 11, i: 240, }, D { l: 9, t: 11, i: 275, }, D { l: 10, t: 11, i: 100, }, D { l: 11, t: 11, i: 658, }, D { l: 11, t: 11, i: 979, }, D { l: 12, t: 11, i: 86, }, D { l: 13, t: 11, i: 468, }, D { l: 14, t: 11, i: 66, }, D { l: 14, t: 11, i: 207, }, D { l: 15, t: 11, i: 20, }, D { l: 15, t: 11, i: 25, }, D { l: 144, t: 11, i: 58, }, D { l: 132, t: 10, i: 577, }, D { l: 5, t: 11, i: 141, }, D { l: 5, t: 11, i: 915, }, D { l: 6, t: 11, i: 1783, }, D { l: 7, t: 11, i: 211, }, D { l: 7, t: 11, i: 698, }, D { l: 7, t: 11, i: 1353, }, D { l: 9, t: 11, i: 83 }, D { l: 9, t: 11, i: 281, }, D { l: 10, t: 11, i: 376, }, D { l: 10, t: 11, i: 431, }, D { l: 11, t: 11, i: 543, }, D { l: 12, t: 11, i: 664, }, D { l: 13, t: 11, i: 280, }, D { l: 13, t: 11, i: 428, }, D { l: 14, t: 11, i: 61, }, D { l: 14, t: 11, i: 128, }, D { l: 17, t: 11, i: 52, }, D { l: 145, t: 11, i: 81, }, D { l: 6, t: 0, i: 161 }, D { l: 7, t: 0, i: 372 }, D { l: 137, t: 0, i: 597, }, D { l: 132, t: 0, i: 349, }, D { l: 10, t: 11, i: 702, }, D { l: 139, t: 11, i: 245, }, D { l: 134, t: 0, i: 524, }, D { l: 134, t: 10, i: 174, }, D { l: 6, t: 0, i: 432 }, D { l: 9, t: 0, i: 751 }, D { l: 139, t: 0, i: 322, }, D { l: 147, t: 11, i: 94, }, D { l: 4, t: 11, i: 338, }, D { l: 133, t: 11, i: 400, }, D { l: 5, t: 0, i: 468 }, D { l: 10, t: 0, i: 325, }, D { l: 11, t: 0, i: 856, }, D { l: 12, t: 0, i: 345, }, D { l: 143, t: 0, i: 104, }, D { l: 133, t: 0, i: 223, }, D { l: 132, t: 0, i: 566, }, D { l: 4, t: 11, i: 221, }, D { l: 5, t: 11, i: 659, }, D { l: 5, t: 11, i: 989, }, D { l: 7, t: 11, i: 697, }, D { l: 7, t: 11, i: 1211, }, D { l: 138, t: 11, i: 284, }, D { l: 135, t: 11, i: 1070, }, D { l: 4, t: 0, i: 59 }, D { l: 135, t: 0, i: 1394, }, D { l: 6, t: 0, i: 436 }, D { l: 11, t: 0, i: 481, }, D { l: 5, t: 10, i: 878, }, D { l: 133, t: 10, i: 972, }, D { l: 4, t: 0, i: 48 }, D { l: 5, t: 0, i: 271 }, D { l: 135, t: 0, i: 953, }, D { l: 5, t: 0, i: 610 }, D { l: 136, t: 0, i: 457, }, D { l: 4, t: 0, i: 773 }, D { l: 5, t: 0, i: 618 }, D { l: 137, t: 0, i: 756, }, D { l: 133, t: 0, i: 755, }, D { l: 135, t: 0, i: 1217, }, D { l: 138, t: 11, i: 507, }, D { l: 132, t: 10, i: 351, }, D { l: 132, t: 0, i: 197, }, D { l: 143, t: 11, i: 78, }, D { l: 4, t: 11, i: 188, }, D { l: 7, t: 11, i: 805, }, D { l: 11, t: 11, i: 276, }, D { l: 142, t: 11, i: 293, }, D { l: 5, t: 11, i: 884, }, D { l: 139, t: 11, i: 991, }, D { l: 132, t: 10, i: 286, }, D { l: 10, t: 0, i: 259, }, D { l: 10, t: 0, i: 428, }, D { l: 7, t: 10, i: 438, }, D { l: 7, t: 10, i: 627, }, D { l: 7, t: 10, i: 1516, }, D { l: 8, t: 10, i: 40 }, D { l: 9, t: 10, i: 56 }, D { l: 9, t: 10, i: 294, }, D { l: 11, t: 10, i: 969, }, D { l: 11, t: 10, i: 995, }, D { l: 146, t: 10, i: 148, }, D { l: 4, t: 0, i: 356 }, D { l: 5, t: 0, i: 217 }, D { l: 5, t: 0, i: 492 }, D { l: 5, t: 0, i: 656 }, D { l: 8, t: 0, i: 544 }, D { l: 136, t: 11, i: 544, }, D { l: 5, t: 0, i: 259 }, D { l: 6, t: 0, i: 1230, }, D { l: 7, t: 0, i: 414 }, D { l: 7, t: 0, i: 854 }, D { l: 142, t: 0, i: 107, }, D { l: 132, t: 0, i: 1007, }, D { l: 15, t: 0, i: 14 }, D { l: 144, t: 0, i: 5 }, D { l: 6, t: 0, i: 1580, }, D { l: 132, t: 10, i: 738, }, D { l: 132, t: 11, i: 596, }, D { l: 132, t: 0, i: 673, }, D { l: 133, t: 10, i: 866, }, D { l: 6, t: 0, i: 1843, }, D { l: 135, t: 11, i: 1847, }, D { l: 4, t: 0, i: 165 }, D { l: 7, t: 0, i: 1398, }, D { l: 135, t: 0, i: 1829, }, D { l: 135, t: 11, i: 1634, }, D { l: 147, t: 11, i: 65, }, D { l: 6, t: 0, i: 885 }, D { l: 6, t: 0, i: 1009, }, D { l: 137, t: 0, i: 809, }, D { l: 133, t: 10, i: 116, }, D { l: 132, t: 10, i: 457, }, D { l: 136, t: 11, i: 770, }, D { l: 9, t: 0, i: 498 }, D { l: 12, t: 0, i: 181, }, D { l: 10, t: 11, i: 361, }, D { l: 142, t: 11, i: 316, }, D { l: 134, t: 11, i: 595, }, D { l: 5, t: 0, i: 9 }, D { l: 7, t: 0, i: 297 }, D { l: 7, t: 0, i: 966 }, D { l: 140, t: 0, i: 306, }, D { l: 4, t: 11, i: 89 }, D { l: 5, t: 11, i: 489, }, D { l: 6, t: 11, i: 315, }, D { l: 7, t: 11, i: 553, }, D { l: 7, t: 11, i: 1745, }, D { l: 138, t: 11, i: 243, }, D { l: 134, t: 0, i: 1487, }, D { l: 132, t: 0, i: 437, }, D { l: 5, t: 0, i: 146 }, D { l: 6, t: 0, i: 411 }, D { l: 138, t: 0, i: 721, }, D { l: 5, t: 10, i: 527, }, D { l: 6, t: 10, i: 189, }, D { l: 135, t: 10, i: 859, }, D { l: 11, t: 10, i: 104, }, D { l: 11, t: 10, i: 554, }, D { l: 15, t: 10, i: 60, }, D { l: 143, t: 10, i: 125, }, D { l: 6, t: 11, i: 1658, }, D { l: 9, t: 11, i: 3 }, D { l: 10, t: 11, i: 154, }, D { l: 11, t: 11, i: 641, }, D { l: 13, t: 11, i: 85, }, D { l: 13, t: 11, i: 201, }, D { l: 141, t: 11, i: 346, }, D { l: 6, t: 0, i: 177 }, D { l: 135, t: 0, i: 467, }, D { l: 134, t: 0, i: 1377, }, D { l: 134, t: 10, i: 116, }, D { l: 136, t: 11, i: 645, }, D { l: 4, t: 11, i: 166, }, D { l: 5, t: 11, i: 505, }, D { l: 6, t: 11, i: 1670, }, D { l: 137, t: 11, i: 110, }, D { l: 133, t: 10, i: 487, }, D { l: 4, t: 10, i: 86 }, D { l: 5, t: 10, i: 667, }, D { l: 5, t: 10, i: 753, }, D { l: 6, t: 10, i: 316, }, D { l: 6, t: 10, i: 455, }, D { l: 135, t: 10, i: 946, }, D { l: 133, t: 0, i: 200, }, D { l: 132, t: 0, i: 959, }, D { l: 6, t: 0, i: 1928, }, D { l: 134, t: 0, i: 1957, }, D { l: 139, t: 11, i: 203, }, D { l: 150, t: 10, i: 45, }, D { l: 4, t: 10, i: 79 }, D { l: 7, t: 10, i: 1773, }, D { l: 10, t: 10, i: 450, }, D { l: 11, t: 10, i: 589, }, D { l: 13, t: 10, i: 332, }, D { l: 13, t: 10, i: 493, }, D { l: 14, t: 10, i: 183, }, D { l: 14, t: 10, i: 334, }, D { l: 14, t: 10, i: 362, }, D { l: 14, t: 10, i: 368, }, D { l: 14, t: 10, i: 376, }, D { l: 14, t: 10, i: 379, }, D { l: 19, t: 10, i: 90, }, D { l: 19, t: 10, i: 103, }, D { l: 19, t: 10, i: 127, }, D { l: 148, t: 10, i: 90, }, D { l: 6, t: 0, i: 1435, }, D { l: 135, t: 11, i: 1275, }, D { l: 134, t: 0, i: 481, }, D { l: 7, t: 11, i: 445, }, D { l: 8, t: 11, i: 307, }, D { l: 8, t: 11, i: 704, }, D { l: 10, t: 11, i: 41, }, D { l: 10, t: 11, i: 439, }, D { l: 11, t: 11, i: 237, }, D { l: 11, t: 11, i: 622, }, D { l: 140, t: 11, i: 201, }, D { l: 135, t: 11, i: 869, }, D { l: 4, t: 0, i: 84 }, D { l: 7, t: 0, i: 1482, }, D { l: 10, t: 0, i: 76 }, D { l: 138, t: 0, i: 142, }, D { l: 11, t: 11, i: 277, }, D { l: 144, t: 11, i: 14, }, D { l: 135, t: 11, i: 1977, }, D { l: 4, t: 11, i: 189, }, D { l: 5, t: 11, i: 713, }, D { l: 136, t: 11, i: 57, }, D { l: 133, t: 0, i: 1015, }, D { l: 138, t: 11, i: 371, }, D { l: 4, t: 0, i: 315 }, D { l: 5, t: 0, i: 507 }, D { l: 135, t: 0, i: 1370, }, D { l: 4, t: 11, i: 552, }, D { l: 142, t: 10, i: 381, }, D { l: 9, t: 0, i: 759 }, D { l: 16, t: 0, i: 31 }, D { l: 16, t: 0, i: 39 }, D { l: 16, t: 0, i: 75 }, D { l: 18, t: 0, i: 24 }, D { l: 20, t: 0, i: 42 }, D { l: 152, t: 0, i: 1 }, D { l: 134, t: 0, i: 712, }, D { l: 134, t: 0, i: 1722, }, D { l: 133, t: 10, i: 663, }, D { l: 133, t: 10, i: 846, }, D { l: 8, t: 0, i: 222 }, D { l: 8, t: 0, i: 476 }, D { l: 9, t: 0, i: 238 }, D { l: 11, t: 0, i: 516, }, D { l: 11, t: 0, i: 575, }, D { l: 15, t: 0, i: 109, }, D { l: 146, t: 0, i: 100, }, D { l: 7, t: 0, i: 1402, }, D { l: 7, t: 0, i: 1414, }, D { l: 12, t: 0, i: 456, }, D { l: 5, t: 10, i: 378, }, D { l: 8, t: 10, i: 465, }, D { l: 9, t: 10, i: 286, }, D { l: 10, t: 10, i: 185, }, D { l: 10, t: 10, i: 562, }, D { l: 10, t: 10, i: 635, }, D { l: 11, t: 10, i: 31, }, D { l: 11, t: 10, i: 393, }, D { l: 13, t: 10, i: 312, }, D { l: 18, t: 10, i: 65, }, D { l: 18, t: 10, i: 96, }, D { l: 147, t: 10, i: 89, }, D { l: 4, t: 0, i: 986 }, D { l: 6, t: 0, i: 1958, }, D { l: 6, t: 0, i: 2032, }, D { l: 8, t: 0, i: 934 }, D { l: 138, t: 0, i: 985, }, D { l: 7, t: 10, i: 1880, }, D { l: 9, t: 10, i: 680, }, D { l: 139, t: 10, i: 798, }, D { l: 134, t: 10, i: 1770, }, D { l: 145, t: 11, i: 49, }, D { l: 132, t: 11, i: 614, }, D { l: 132, t: 10, i: 648, }, D { l: 5, t: 10, i: 945, }, D { l: 6, t: 10, i: 1656, }, D { l: 6, t: 10, i: 1787, }, D { l: 7, t: 10, i: 167, }, D { l: 8, t: 10, i: 824, }, D { l: 9, t: 10, i: 391, }, D { l: 10, t: 10, i: 375, }, D { l: 139, t: 10, i: 185, }, D { l: 138, t: 11, i: 661, }, D { l: 7, t: 0, i: 1273, }, D { l: 135, t: 11, i: 1945, }, D { l: 7, t: 0, i: 706 }, D { l: 7, t: 0, i: 1058, }, D { l: 138, t: 0, i: 538, }, D { l: 7, t: 10, i: 1645, }, D { l: 8, t: 10, i: 352, }, D { l: 137, t: 10, i: 249, }, D { l: 132, t: 10, i: 152, }, D { l: 11, t: 0, i: 92 }, D { l: 11, t: 0, i: 196, }, D { l: 11, t: 0, i: 409, }, D { l: 11, t: 0, i: 450, }, D { l: 11, t: 0, i: 666, }, D { l: 11, t: 0, i: 777, }, D { l: 12, t: 0, i: 262, }, D { l: 13, t: 0, i: 385, }, D { l: 13, t: 0, i: 393, }, D { l: 15, t: 0, i: 115, }, D { l: 16, t: 0, i: 45 }, D { l: 145, t: 0, i: 82, }, D { l: 133, t: 10, i: 1006, }, D { l: 6, t: 0, i: 40 }, D { l: 135, t: 0, i: 1781, }, D { l: 9, t: 11, i: 614, }, D { l: 139, t: 11, i: 327, }, D { l: 5, t: 10, i: 420, }, D { l: 135, t: 10, i: 1449, }, D { l: 135, t: 0, i: 431, }, D { l: 10, t: 0, i: 97 }, D { l: 135, t: 10, i: 832, }, D { l: 6, t: 0, i: 423 }, D { l: 7, t: 0, i: 665 }, D { l: 135, t: 0, i: 1210, }, D { l: 7, t: 0, i: 237 }, D { l: 8, t: 0, i: 664 }, D { l: 9, t: 0, i: 42 }, D { l: 9, t: 0, i: 266 }, D { l: 9, t: 0, i: 380 }, D { l: 9, t: 0, i: 645 }, D { l: 10, t: 0, i: 177, }, D { l: 138, t: 0, i: 276, }, D { l: 7, t: 0, i: 264 }, D { l: 133, t: 10, i: 351, }, D { l: 8, t: 0, i: 213 }, D { l: 5, t: 10, i: 40 }, D { l: 7, t: 10, i: 598, }, D { l: 7, t: 10, i: 1638, }, D { l: 9, t: 10, i: 166, }, D { l: 9, t: 10, i: 640, }, D { l: 9, t: 10, i: 685, }, D { l: 9, t: 10, i: 773, }, D { l: 11, t: 10, i: 215, }, D { l: 13, t: 10, i: 65, }, D { l: 14, t: 10, i: 172, }, D { l: 14, t: 10, i: 317, }, D { l: 145, t: 10, i: 6, }, D { l: 5, t: 11, i: 84 }, D { l: 134, t: 11, i: 163, }, D { l: 8, t: 10, i: 60 }, D { l: 9, t: 10, i: 343, }, D { l: 139, t: 10, i: 769, }, D { l: 137, t: 0, i: 455, }, D { l: 133, t: 11, i: 410, }, D { l: 8, t: 0, i: 906 }, D { l: 12, t: 0, i: 700, }, D { l: 12, t: 0, i: 706, }, D { l: 140, t: 0, i: 729, }, D { l: 21, t: 11, i: 33, }, D { l: 150, t: 11, i: 40, }, D { l: 7, t: 10, i: 1951, }, D { l: 8, t: 10, i: 765, }, D { l: 8, t: 10, i: 772, }, D { l: 140, t: 10, i: 671, }, D { l: 7, t: 10, i: 108, }, D { l: 8, t: 10, i: 219, }, D { l: 8, t: 10, i: 388, }, D { l: 9, t: 10, i: 639, }, D { l: 9, t: 10, i: 775, }, D { l: 11, t: 10, i: 275, }, D { l: 140, t: 10, i: 464, }, D { l: 5, t: 11, i: 322, }, D { l: 7, t: 11, i: 1941, }, D { l: 8, t: 11, i: 186, }, D { l: 9, t: 11, i: 262, }, D { l: 10, t: 11, i: 187, }, D { l: 14, t: 11, i: 208, }, D { l: 146, t: 11, i: 130, }, D { l: 139, t: 0, i: 624, }, D { l: 8, t: 0, i: 574 }, D { l: 5, t: 11, i: 227, }, D { l: 140, t: 11, i: 29, }, D { l: 7, t: 11, i: 1546, }, D { l: 11, t: 11, i: 299, }, D { l: 142, t: 11, i: 407, }, D { l: 5, t: 10, i: 15 }, D { l: 6, t: 10, i: 56 }, D { l: 7, t: 10, i: 1758, }, D { l: 8, t: 10, i: 500, }, D { l: 9, t: 10, i: 730, }, D { l: 11, t: 10, i: 331, }, D { l: 13, t: 10, i: 150, }, D { l: 142, t: 10, i: 282, }, D { l: 7, t: 11, i: 1395, }, D { l: 8, t: 11, i: 486, }, D { l: 9, t: 11, i: 236, }, D { l: 9, t: 11, i: 878, }, D { l: 10, t: 11, i: 218, }, D { l: 11, t: 11, i: 95, }, D { l: 19, t: 11, i: 17, }, D { l: 147, t: 11, i: 31, }, D { l: 135, t: 11, i: 2043, }, D { l: 4, t: 0, i: 354 }, D { l: 146, t: 11, i: 4, }, D { l: 140, t: 11, i: 80, }, D { l: 135, t: 0, i: 1558, }, D { l: 134, t: 10, i: 1886, }, D { l: 5, t: 10, i: 205, }, D { l: 6, t: 10, i: 438, }, D { l: 137, t: 10, i: 711, }, D { l: 133, t: 11, i: 522, }, D { l: 133, t: 10, i: 534, }, D { l: 7, t: 0, i: 235 }, D { l: 7, t: 0, i: 1475, }, D { l: 15, t: 0, i: 68 }, D { l: 146, t: 0, i: 120, }, D { l: 137, t: 10, i: 691, }, D { l: 4, t: 0, i: 942 }, D { l: 6, t: 0, i: 1813, }, D { l: 8, t: 0, i: 917 }, D { l: 10, t: 0, i: 884, }, D { l: 12, t: 0, i: 696, }, D { l: 12, t: 0, i: 717, }, D { l: 12, t: 0, i: 723, }, D { l: 12, t: 0, i: 738, }, D { l: 12, t: 0, i: 749, }, D { l: 12, t: 0, i: 780, }, D { l: 16, t: 0, i: 97 }, D { l: 146, t: 0, i: 169, }, D { l: 6, t: 10, i: 443, }, D { l: 8, t: 11, i: 562, }, D { l: 9, t: 10, i: 237, }, D { l: 9, t: 10, i: 571, }, D { l: 9, t: 10, i: 695, }, D { l: 10, t: 10, i: 139, }, D { l: 11, t: 10, i: 715, }, D { l: 12, t: 10, i: 417, }, D { l: 141, t: 10, i: 421, }, D { l: 135, t: 0, i: 957, }, D { l: 133, t: 0, i: 830, }, D { l: 134, t: 11, i: 1771, }, D { l: 146, t: 0, i: 23, }, D { l: 5, t: 0, i: 496 }, D { l: 6, t: 0, i: 694 }, D { l: 7, t: 0, i: 203 }, D { l: 7, t: 11, i: 1190, }, D { l: 137, t: 11, i: 620, }, D { l: 137, t: 11, i: 132, }, D { l: 6, t: 0, i: 547 }, D { l: 134, t: 0, i: 1549, }, D { l: 8, t: 11, i: 258, }, D { l: 9, t: 11, i: 208, }, D { l: 137, t: 11, i: 359, }, D { l: 4, t: 0, i: 864 }, D { l: 5, t: 0, i: 88 }, D { l: 137, t: 0, i: 239, }, D { l: 135, t: 11, i: 493, }, D { l: 4, t: 11, i: 317, }, D { l: 135, t: 11, i: 1279, }, D { l: 132, t: 11, i: 477, }, D { l: 4, t: 10, i: 578, }, D { l: 5, t: 11, i: 63 }, D { l: 133, t: 11, i: 509, }, D { l: 7, t: 0, i: 650 }, D { l: 135, t: 0, i: 1310, }, D { l: 7, t: 0, i: 1076, }, D { l: 9, t: 0, i: 80 }, D { l: 11, t: 0, i: 78 }, D { l: 11, t: 0, i: 421, }, D { l: 11, t: 0, i: 534, }, D { l: 140, t: 0, i: 545, }, D { l: 132, t: 11, i: 288, }, D { l: 12, t: 0, i: 553, }, D { l: 14, t: 0, i: 118, }, D { l: 133, t: 10, i: 923, }, D { l: 7, t: 0, i: 274 }, D { l: 11, t: 0, i: 479, }, D { l: 139, t: 0, i: 507, }, D { l: 8, t: 11, i: 89 }, D { l: 8, t: 11, i: 620, }, D { l: 9, t: 11, i: 49 }, D { l: 10, t: 11, i: 774, }, D { l: 11, t: 11, i: 628, }, D { l: 12, t: 11, i: 322, }, D { l: 143, t: 11, i: 124, }, D { l: 4, t: 0, i: 497 }, D { l: 135, t: 0, i: 1584, }, D { l: 7, t: 0, i: 261 }, D { l: 7, t: 0, i: 1115, }, D { l: 7, t: 0, i: 1354, }, D { l: 7, t: 0, i: 1404, }, D { l: 7, t: 0, i: 1588, }, D { l: 7, t: 0, i: 1705, }, D { l: 7, t: 0, i: 1902, }, D { l: 9, t: 0, i: 465 }, D { l: 10, t: 0, i: 248, }, D { l: 10, t: 0, i: 349, }, D { l: 10, t: 0, i: 647, }, D { l: 11, t: 0, i: 527, }, D { l: 11, t: 0, i: 660, }, D { l: 11, t: 0, i: 669, }, D { l: 12, t: 0, i: 529, }, D { l: 13, t: 0, i: 305, }, D { l: 132, t: 10, i: 924, }, D { l: 133, t: 10, i: 665, }, D { l: 136, t: 0, i: 13, }, D { l: 6, t: 0, i: 791 }, D { l: 138, t: 11, i: 120, }, D { l: 7, t: 0, i: 642 }, D { l: 8, t: 0, i: 250 }, D { l: 11, t: 0, i: 123, }, D { l: 11, t: 0, i: 137, }, D { l: 13, t: 0, i: 48 }, D { l: 142, t: 0, i: 95, }, D { l: 4, t: 10, i: 265, }, D { l: 7, t: 10, i: 807, }, D { l: 135, t: 10, i: 950, }, D { l: 5, t: 10, i: 93 }, D { l: 140, t: 10, i: 267, }, D { l: 135, t: 0, i: 1429, }, D { l: 4, t: 0, i: 949 }, D { l: 10, t: 0, i: 885, }, D { l: 10, t: 0, i: 891, }, D { l: 10, t: 0, i: 900, }, D { l: 10, t: 0, i: 939, }, D { l: 12, t: 0, i: 760, }, D { l: 142, t: 0, i: 449, }, D { l: 139, t: 11, i: 366, }, D { l: 132, t: 0, i: 818, }, D { l: 134, t: 11, i: 85, }, D { l: 135, t: 10, i: 994, }, D { l: 7, t: 0, i: 330 }, D { l: 5, t: 10, i: 233, }, D { l: 5, t: 10, i: 320, }, D { l: 6, t: 10, i: 140, }, D { l: 136, t: 10, i: 295, }, D { l: 4, t: 0, i: 1004, }, D { l: 8, t: 0, i: 982 }, D { l: 136, t: 0, i: 993, }, D { l: 133, t: 10, i: 978, }, D { l: 4, t: 10, i: 905, }, D { l: 6, t: 10, i: 1701, }, D { l: 137, t: 10, i: 843, }, D { l: 10, t: 0, i: 545, }, D { l: 140, t: 0, i: 301, }, D { l: 6, t: 0, i: 947 }, D { l: 134, t: 0, i: 1062, }, D { l: 134, t: 0, i: 1188, }, D { l: 4, t: 0, i: 904 }, D { l: 5, t: 0, i: 794 }, D { l: 152, t: 10, i: 6, }, D { l: 134, t: 0, i: 1372, }, D { l: 135, t: 11, i: 608, }, D { l: 5, t: 11, i: 279, }, D { l: 6, t: 11, i: 235, }, D { l: 7, t: 11, i: 468, }, D { l: 8, t: 11, i: 446, }, D { l: 9, t: 11, i: 637, }, D { l: 10, t: 11, i: 717, }, D { l: 11, t: 11, i: 738, }, D { l: 140, t: 11, i: 514, }, D { l: 132, t: 10, i: 509, }, D { l: 5, t: 11, i: 17 }, D { l: 6, t: 11, i: 371, }, D { l: 137, t: 11, i: 528, }, D { l: 132, t: 0, i: 693, }, D { l: 4, t: 11, i: 115, }, D { l: 5, t: 11, i: 669, }, D { l: 6, t: 11, i: 407, }, D { l: 8, t: 11, i: 311, }, D { l: 11, t: 11, i: 10, }, D { l: 141, t: 11, i: 5, }, D { l: 11, t: 0, i: 377, }, D { l: 7, t: 10, i: 273, }, D { l: 137, t: 11, i: 381, }, D { l: 135, t: 0, i: 695, }, D { l: 7, t: 0, i: 386 }, D { l: 138, t: 0, i: 713, }, D { l: 135, t: 10, i: 1041, }, D { l: 134, t: 0, i: 1291, }, D { l: 6, t: 0, i: 7 }, D { l: 6, t: 0, i: 35 }, D { l: 7, t: 0, i: 147 }, D { l: 7, t: 0, i: 1069, }, D { l: 7, t: 0, i: 1568, }, D { l: 7, t: 0, i: 1575, }, D { l: 7, t: 0, i: 1917, }, D { l: 8, t: 0, i: 43 }, D { l: 8, t: 0, i: 208 }, D { l: 9, t: 0, i: 128 }, D { l: 9, t: 0, i: 866 }, D { l: 10, t: 0, i: 20 }, D { l: 11, t: 0, i: 981, }, D { l: 147, t: 0, i: 33, }, D { l: 7, t: 0, i: 893 }, D { l: 141, t: 0, i: 424, }, D { l: 139, t: 10, i: 234, }, D { l: 150, t: 11, i: 56, }, D { l: 5, t: 11, i: 779, }, D { l: 5, t: 11, i: 807, }, D { l: 6, t: 11, i: 1655, }, D { l: 134, t: 11, i: 1676, }, D { l: 5, t: 10, i: 802, }, D { l: 7, t: 10, i: 2021, }, D { l: 136, t: 10, i: 805, }, D { l: 4, t: 11, i: 196, }, D { l: 5, t: 10, i: 167, }, D { l: 5, t: 11, i: 558, }, D { l: 5, t: 10, i: 899, }, D { l: 5, t: 11, i: 949, }, D { l: 6, t: 10, i: 410, }, D { l: 137, t: 10, i: 777, }, D { l: 137, t: 10, i: 789, }, D { l: 134, t: 10, i: 1705, }, D { l: 8, t: 0, i: 904 }, D { l: 140, t: 0, i: 787, }, D { l: 6, t: 0, i: 322 }, D { l: 9, t: 0, i: 552 }, D { l: 11, t: 0, i: 274, }, D { l: 13, t: 0, i: 209, }, D { l: 13, t: 0, i: 499, }, D { l: 14, t: 0, i: 85 }, D { l: 15, t: 0, i: 126, }, D { l: 145, t: 0, i: 70, }, D { l: 135, t: 10, i: 10, }, D { l: 5, t: 10, i: 11 }, D { l: 6, t: 10, i: 117, }, D { l: 6, t: 10, i: 485, }, D { l: 7, t: 10, i: 1133, }, D { l: 9, t: 10, i: 582, }, D { l: 9, t: 10, i: 594, }, D { l: 11, t: 10, i: 21, }, D { l: 11, t: 10, i: 818, }, D { l: 12, t: 10, i: 535, }, D { l: 141, t: 10, i: 86, }, D { l: 4, t: 10, i: 264, }, D { l: 7, t: 10, i: 1067, }, D { l: 8, t: 10, i: 204, }, D { l: 8, t: 10, i: 385, }, D { l: 139, t: 10, i: 953, }, D { l: 132, t: 11, i: 752, }, D { l: 138, t: 10, i: 56, }, D { l: 133, t: 10, i: 470, }, D { l: 6, t: 0, i: 1808, }, D { l: 8, t: 0, i: 83 }, D { l: 8, t: 0, i: 742 }, D { l: 8, t: 0, i: 817 }, D { l: 9, t: 0, i: 28 }, D { l: 9, t: 0, i: 29 }, D { l: 9, t: 0, i: 885 }, D { l: 10, t: 0, i: 387, }, D { l: 11, t: 0, i: 633, }, D { l: 11, t: 0, i: 740, }, D { l: 13, t: 0, i: 235, }, D { l: 13, t: 0, i: 254, }, D { l: 15, t: 0, i: 143, }, D { l: 143, t: 0, i: 146, }, D { l: 140, t: 0, i: 49, }, D { l: 134, t: 0, i: 1832, }, D { l: 4, t: 11, i: 227, }, D { l: 5, t: 11, i: 159, }, D { l: 5, t: 11, i: 409, }, D { l: 7, t: 11, i: 80 }, D { l: 10, t: 11, i: 294, }, D { l: 10, t: 11, i: 479, }, D { l: 12, t: 11, i: 418, }, D { l: 14, t: 11, i: 50, }, D { l: 14, t: 11, i: 249, }, D { l: 142, t: 11, i: 295, }, D { l: 7, t: 11, i: 1470, }, D { l: 8, t: 11, i: 66 }, D { l: 8, t: 11, i: 137, }, D { l: 8, t: 11, i: 761, }, D { l: 9, t: 11, i: 638, }, D { l: 11, t: 11, i: 80, }, D { l: 11, t: 11, i: 212, }, D { l: 11, t: 11, i: 368, }, D { l: 11, t: 11, i: 418, }, D { l: 12, t: 11, i: 8 }, D { l: 13, t: 11, i: 15, }, D { l: 16, t: 11, i: 61, }, D { l: 17, t: 11, i: 59, }, D { l: 19, t: 11, i: 28, }, D { l: 148, t: 11, i: 84, }, D { l: 139, t: 10, i: 1015, }, D { l: 138, t: 11, i: 468, }, D { l: 135, t: 0, i: 421, }, D { l: 6, t: 0, i: 415 }, D { l: 7, t: 0, i: 1049, }, D { l: 137, t: 0, i: 442, }, D { l: 6, t: 11, i: 38 }, D { l: 7, t: 11, i: 1220, }, D { l: 8, t: 11, i: 185, }, D { l: 8, t: 11, i: 256, }, D { l: 9, t: 11, i: 22 }, D { l: 9, t: 11, i: 331, }, D { l: 10, t: 11, i: 738, }, D { l: 11, t: 11, i: 205, }, D { l: 11, t: 11, i: 540, }, D { l: 11, t: 11, i: 746, }, D { l: 13, t: 11, i: 399, }, D { l: 13, t: 11, i: 465, }, D { l: 14, t: 11, i: 88, }, D { l: 142, t: 11, i: 194, }, D { l: 139, t: 0, i: 289, }, D { l: 133, t: 10, i: 715, }, D { l: 4, t: 0, i: 110 }, D { l: 10, t: 0, i: 415, }, D { l: 10, t: 0, i: 597, }, D { l: 142, t: 0, i: 206, }, D { l: 4, t: 11, i: 159, }, D { l: 6, t: 11, i: 115, }, D { l: 7, t: 11, i: 252, }, D { l: 7, t: 11, i: 257, }, D { l: 7, t: 11, i: 1928, }, D { l: 8, t: 11, i: 69 }, D { l: 9, t: 11, i: 384, }, D { l: 10, t: 11, i: 91, }, D { l: 10, t: 11, i: 615, }, D { l: 12, t: 11, i: 375, }, D { l: 14, t: 11, i: 235, }, D { l: 18, t: 11, i: 117, }, D { l: 147, t: 11, i: 123, }, D { l: 5, t: 11, i: 911, }, D { l: 136, t: 11, i: 278, }, D { l: 7, t: 0, i: 205 }, D { l: 7, t: 0, i: 2000, }, D { l: 8, t: 10, i: 794, }, D { l: 9, t: 10, i: 400, }, D { l: 10, t: 10, i: 298, }, D { l: 142, t: 10, i: 228, }, D { l: 135, t: 11, i: 1774, }, D { l: 4, t: 11, i: 151, }, D { l: 7, t: 11, i: 1567, }, D { l: 8, t: 11, i: 351, }, D { l: 137, t: 11, i: 322, }, D { l: 136, t: 10, i: 724, }, D { l: 133, t: 11, i: 990, }, D { l: 7, t: 0, i: 1539, }, D { l: 11, t: 0, i: 512, }, D { l: 13, t: 0, i: 205, }, D { l: 19, t: 0, i: 30 }, D { l: 22, t: 0, i: 36 }, D { l: 23, t: 0, i: 19 }, D { l: 135, t: 11, i: 1539, }, D { l: 5, t: 11, i: 194, }, D { l: 7, t: 11, i: 1662, }, D { l: 9, t: 11, i: 90 }, D { l: 140, t: 11, i: 180, }, D { l: 6, t: 10, i: 190, }, D { l: 7, t: 10, i: 768, }, D { l: 135, t: 10, i: 1170, }, D { l: 134, t: 0, i: 1340, }, D { l: 4, t: 0, i: 283 }, D { l: 135, t: 0, i: 1194, }, D { l: 133, t: 11, i: 425, }, D { l: 133, t: 11, i: 971, }, D { l: 12, t: 0, i: 549, }, D { l: 14, t: 10, i: 67, }, D { l: 147, t: 10, i: 60, }, D { l: 135, t: 10, i: 1023, }, D { l: 134, t: 0, i: 1720, }, D { l: 138, t: 11, i: 587, }, D { l: 5, t: 11, i: 72 }, D { l: 6, t: 11, i: 264, }, D { l: 7, t: 11, i: 21 }, D { l: 7, t: 11, i: 46 }, D { l: 7, t: 11, i: 2013, }, D { l: 8, t: 11, i: 215, }, D { l: 8, t: 11, i: 513, }, D { l: 10, t: 11, i: 266, }, D { l: 139, t: 11, i: 22, }, D { l: 5, t: 0, i: 319 }, D { l: 135, t: 0, i: 534, }, D { l: 6, t: 10, i: 137, }, D { l: 9, t: 10, i: 75 }, D { l: 9, t: 10, i: 253, }, D { l: 10, t: 10, i: 194, }, D { l: 138, t: 10, i: 444, }, D { l: 7, t: 0, i: 1180, }, D { l: 20, t: 0, i: 112, }, D { l: 6, t: 11, i: 239, }, D { l: 7, t: 11, i: 118, }, D { l: 10, t: 11, i: 95, }, D { l: 11, t: 11, i: 603, }, D { l: 13, t: 11, i: 443, }, D { l: 14, t: 11, i: 160, }, D { l: 143, t: 11, i: 4, }, D { l: 134, t: 11, i: 431, }, D { l: 5, t: 11, i: 874, }, D { l: 6, t: 11, i: 1677, }, D { l: 11, t: 10, i: 643, }, D { l: 12, t: 10, i: 115, }, D { l: 143, t: 11, i: 0, }, D { l: 134, t: 0, i: 967, }, D { l: 6, t: 11, i: 65 }, D { l: 7, t: 11, i: 939, }, D { l: 7, t: 11, i: 1172, }, D { l: 7, t: 11, i: 1671, }, D { l: 9, t: 11, i: 540, }, D { l: 10, t: 11, i: 696, }, D { l: 11, t: 11, i: 265, }, D { l: 11, t: 11, i: 732, }, D { l: 11, t: 11, i: 928, }, D { l: 11, t: 11, i: 937, }, D { l: 12, t: 11, i: 399, }, D { l: 13, t: 11, i: 438, }, D { l: 149, t: 11, i: 19, }, D { l: 137, t: 11, i: 200, }, D { l: 135, t: 0, i: 1940, }, D { l: 5, t: 10, i: 760, }, D { l: 7, t: 10, i: 542, }, D { l: 8, t: 10, i: 135, }, D { l: 136, t: 10, i: 496, }, D { l: 140, t: 11, i: 44, }, D { l: 7, t: 11, i: 1655, }, D { l: 136, t: 11, i: 305, }, D { l: 7, t: 10, i: 319, }, D { l: 7, t: 10, i: 355, }, D { l: 7, t: 10, i: 763, }, D { l: 10, t: 10, i: 389, }, D { l: 145, t: 10, i: 43, }, D { l: 136, t: 0, i: 735, }, D { l: 138, t: 10, i: 786, }, D { l: 137, t: 11, i: 19, }, D { l: 132, t: 11, i: 696, }, D { l: 5, t: 0, i: 132 }, D { l: 9, t: 0, i: 486 }, D { l: 9, t: 0, i: 715 }, D { l: 10, t: 0, i: 458, }, D { l: 11, t: 0, i: 373, }, D { l: 11, t: 0, i: 668, }, D { l: 11, t: 0, i: 795, }, D { l: 11, t: 0, i: 897, }, D { l: 12, t: 0, i: 272, }, D { l: 12, t: 0, i: 424, }, D { l: 12, t: 0, i: 539, }, D { l: 12, t: 0, i: 558, }, D { l: 14, t: 0, i: 245, }, D { l: 14, t: 0, i: 263, }, D { l: 14, t: 0, i: 264, }, D { l: 14, t: 0, i: 393, }, D { l: 142, t: 0, i: 403, }, D { l: 10, t: 0, i: 38 }, D { l: 139, t: 0, i: 784, }, D { l: 132, t: 0, i: 838, }, D { l: 4, t: 11, i: 302, }, D { l: 135, t: 11, i: 1766, }, D { l: 133, t: 0, i: 379, }, D { l: 5, t: 0, i: 8 }, D { l: 6, t: 0, i: 89 }, D { l: 6, t: 0, i: 400 }, D { l: 7, t: 0, i: 1569, }, D { l: 7, t: 0, i: 1623, }, D { l: 7, t: 0, i: 1850, }, D { l: 8, t: 0, i: 218 }, D { l: 8, t: 0, i: 422 }, D { l: 9, t: 0, i: 570 }, D { l: 10, t: 0, i: 626, }, D { l: 4, t: 11, i: 726, }, D { l: 133, t: 11, i: 630, }, D { l: 4, t: 0, i: 1017, }, D { l: 138, t: 0, i: 660, }, D { l: 6, t: 0, i: 387 }, D { l: 7, t: 0, i: 882 }, D { l: 141, t: 0, i: 111, }, D { l: 6, t: 0, i: 224 }, D { l: 7, t: 0, i: 877 }, D { l: 137, t: 0, i: 647, }, D { l: 4, t: 10, i: 58 }, D { l: 5, t: 10, i: 286, }, D { l: 6, t: 10, i: 319, }, D { l: 7, t: 10, i: 402, }, D { l: 7, t: 10, i: 1254, }, D { l: 7, t: 10, i: 1903, }, D { l: 8, t: 10, i: 356, }, D { l: 140, t: 10, i: 408, }, D { l: 135, t: 0, i: 790, }, D { l: 9, t: 0, i: 510 }, D { l: 10, t: 0, i: 53 }, D { l: 4, t: 10, i: 389, }, D { l: 9, t: 10, i: 181, }, D { l: 10, t: 10, i: 29, }, D { l: 10, t: 10, i: 816, }, D { l: 11, t: 10, i: 311, }, D { l: 11, t: 10, i: 561, }, D { l: 12, t: 10, i: 67, }, D { l: 141, t: 10, i: 181, }, D { l: 142, t: 0, i: 458, }, D { l: 6, t: 11, i: 118, }, D { l: 7, t: 11, i: 215, }, D { l: 7, t: 11, i: 1521, }, D { l: 140, t: 11, i: 11, }, D { l: 134, t: 0, i: 954, }, D { l: 135, t: 0, i: 394, }, D { l: 134, t: 0, i: 1367, }, D { l: 5, t: 11, i: 225, }, D { l: 133, t: 10, i: 373, }, D { l: 132, t: 0, i: 882, }, D { l: 7, t: 0, i: 1409, }, D { l: 135, t: 10, i: 1972, }, D { l: 135, t: 10, i: 1793, }, D { l: 4, t: 11, i: 370, }, D { l: 5, t: 11, i: 756, }, D { l: 135, t: 11, i: 1326, }, D { l: 150, t: 11, i: 13, }, D { l: 7, t: 11, i: 354, }, D { l: 10, t: 11, i: 410, }, D { l: 139, t: 11, i: 815, }, D { l: 6, t: 11, i: 1662, }, D { l: 7, t: 11, i: 48 }, D { l: 8, t: 11, i: 771, }, D { l: 10, t: 11, i: 116, }, D { l: 13, t: 11, i: 104, }, D { l: 14, t: 11, i: 105, }, D { l: 14, t: 11, i: 184, }, D { l: 15, t: 11, i: 168, }, D { l: 19, t: 11, i: 92, }, D { l: 148, t: 11, i: 68, }, D { l: 7, t: 0, i: 124 }, D { l: 136, t: 0, i: 38, }, D { l: 5, t: 0, i: 261 }, D { l: 7, t: 0, i: 78 }, D { l: 7, t: 0, i: 199 }, D { l: 8, t: 0, i: 815 }, D { l: 9, t: 0, i: 126 }, D { l: 10, t: 0, i: 342, }, D { l: 140, t: 0, i: 647, }, D { l: 4, t: 0, i: 628 }, D { l: 140, t: 0, i: 724, }, D { l: 7, t: 0, i: 266 }, D { l: 8, t: 0, i: 804 }, D { l: 7, t: 10, i: 1651, }, D { l: 145, t: 10, i: 89, }, D { l: 135, t: 0, i: 208, }, D { l: 134, t: 0, i: 1178, }, D { l: 6, t: 0, i: 79 }, D { l: 135, t: 0, i: 1519, }, D { l: 132, t: 10, i: 672, }, D { l: 133, t: 10, i: 737, }, D { l: 136, t: 0, i: 741, }, D { l: 132, t: 11, i: 120, }, D { l: 4, t: 0, i: 710 }, D { l: 6, t: 0, i: 376 }, D { l: 134, t: 0, i: 606, }, D { l: 134, t: 0, i: 1347, }, D { l: 134, t: 0, i: 1494, }, D { l: 6, t: 0, i: 850 }, D { l: 6, t: 0, i: 1553, }, D { l: 137, t: 0, i: 821, }, D { l: 5, t: 10, i: 145, }, D { l: 134, t: 11, i: 593, }, D { l: 7, t: 0, i: 1311, }, D { l: 140, t: 0, i: 135, }, D { l: 4, t: 0, i: 467 }, D { l: 5, t: 0, i: 405 }, D { l: 134, t: 0, i: 544, }, D { l: 5, t: 11, i: 820, }, D { l: 135, t: 11, i: 931, }, D { l: 6, t: 0, i: 100 }, D { l: 7, t: 0, i: 244 }, D { l: 7, t: 0, i: 632 }, D { l: 7, t: 0, i: 1609, }, D { l: 8, t: 0, i: 178 }, D { l: 8, t: 0, i: 638 }, D { l: 141, t: 0, i: 58, }, D { l: 4, t: 10, i: 387, }, D { l: 135, t: 10, i: 1288, }, D { l: 6, t: 11, i: 151, }, D { l: 6, t: 11, i: 1675, }, D { l: 7, t: 11, i: 383, }, D { l: 151, t: 11, i: 10, }, D { l: 132, t: 0, i: 481, }, D { l: 135, t: 10, i: 550, }, D { l: 134, t: 0, i: 1378, }, D { l: 6, t: 11, i: 1624, }, D { l: 11, t: 11, i: 11, }, D { l: 12, t: 11, i: 422, }, D { l: 13, t: 11, i: 262, }, D { l: 142, t: 11, i: 360, }, D { l: 133, t: 0, i: 791, }, D { l: 4, t: 11, i: 43 }, D { l: 5, t: 11, i: 344, }, D { l: 133, t: 11, i: 357, }, D { l: 7, t: 0, i: 1227, }, D { l: 140, t: 0, i: 978, }, D { l: 7, t: 0, i: 686 }, D { l: 8, t: 0, i: 33 }, D { l: 8, t: 0, i: 238 }, D { l: 10, t: 0, i: 616, }, D { l: 11, t: 0, i: 467, }, D { l: 11, t: 0, i: 881, }, D { l: 13, t: 0, i: 217, }, D { l: 13, t: 0, i: 253, }, D { l: 142, t: 0, i: 268, }, D { l: 137, t: 0, i: 857, }, D { l: 8, t: 0, i: 467 }, D { l: 8, t: 0, i: 1006, }, D { l: 7, t: 11, i: 148, }, D { l: 8, t: 11, i: 284, }, D { l: 141, t: 11, i: 63, }, D { l: 4, t: 10, i: 576, }, D { l: 135, t: 10, i: 1263, }, D { l: 133, t: 11, i: 888, }, D { l: 5, t: 10, i: 919, }, D { l: 134, t: 10, i: 1673, }, D { l: 20, t: 10, i: 37, }, D { l: 148, t: 11, i: 37, }, D { l: 132, t: 0, i: 447, }, D { l: 132, t: 11, i: 711, }, D { l: 4, t: 0, i: 128 }, D { l: 5, t: 0, i: 415 }, D { l: 6, t: 0, i: 462 }, D { l: 7, t: 0, i: 294 }, D { l: 7, t: 0, i: 578 }, D { l: 10, t: 0, i: 710, }, D { l: 139, t: 0, i: 86, }, D { l: 4, t: 10, i: 82 }, D { l: 5, t: 10, i: 333, }, D { l: 5, t: 10, i: 904, }, D { l: 6, t: 10, i: 207, }, D { l: 7, t: 10, i: 325, }, D { l: 7, t: 10, i: 1726, }, D { l: 8, t: 10, i: 101, }, D { l: 10, t: 10, i: 778, }, D { l: 139, t: 10, i: 220, }, D { l: 136, t: 0, i: 587, }, D { l: 137, t: 11, i: 440, }, D { l: 133, t: 10, i: 903, }, D { l: 6, t: 0, i: 427 }, D { l: 7, t: 0, i: 1018, }, D { l: 138, t: 0, i: 692, }, D { l: 4, t: 0, i: 195 }, D { l: 135, t: 0, i: 802, }, D { l: 140, t: 10, i: 147, }, D { l: 134, t: 0, i: 1546, }, D { l: 134, t: 0, i: 684, }, D { l: 132, t: 10, i: 705, }, D { l: 136, t: 0, i: 345, }, D { l: 11, t: 11, i: 678, }, D { l: 140, t: 11, i: 307, }, D { l: 133, t: 0, i: 365, }, D { l: 134, t: 0, i: 1683, }, D { l: 4, t: 11, i: 65 }, D { l: 5, t: 11, i: 479, }, D { l: 5, t: 11, i: 1004, }, D { l: 7, t: 11, i: 1913, }, D { l: 8, t: 11, i: 317, }, D { l: 9, t: 11, i: 302, }, D { l: 10, t: 11, i: 612, }, D { l: 141, t: 11, i: 22, }, D { l: 138, t: 0, i: 472, }, D { l: 4, t: 11, i: 261, }, D { l: 135, t: 11, i: 510, }, D { l: 134, t: 10, i: 90, }, D { l: 142, t: 0, i: 433, }, D { l: 151, t: 0, i: 28, }, D { l: 4, t: 11, i: 291, }, D { l: 7, t: 11, i: 101, }, D { l: 9, t: 11, i: 515, }, D { l: 12, t: 11, i: 152, }, D { l: 12, t: 11, i: 443, }, D { l: 13, t: 11, i: 392, }, D { l: 142, t: 11, i: 357, }, D { l: 140, t: 0, i: 997, }, D { l: 5, t: 0, i: 3 }, D { l: 8, t: 0, i: 578 }, D { l: 9, t: 0, i: 118 }, D { l: 10, t: 0, i: 705, }, D { l: 141, t: 0, i: 279, }, D { l: 135, t: 11, i: 1266, }, D { l: 7, t: 10, i: 813, }, D { l: 12, t: 10, i: 497, }, D { l: 141, t: 10, i: 56, }, D { l: 133, t: 0, i: 229, }, D { l: 6, t: 10, i: 125, }, D { l: 135, t: 10, i: 1277, }, D { l: 8, t: 0, i: 102 }, D { l: 10, t: 0, i: 578, }, D { l: 10, t: 0, i: 672, }, D { l: 12, t: 0, i: 496, }, D { l: 13, t: 0, i: 408, }, D { l: 14, t: 0, i: 121, }, D { l: 17, t: 0, i: 106, }, D { l: 151, t: 10, i: 12, }, D { l: 6, t: 0, i: 866 }, D { l: 134, t: 0, i: 1080, }, D { l: 136, t: 0, i: 1022, }, D { l: 4, t: 11, i: 130, }, D { l: 135, t: 11, i: 843, }, D { l: 5, t: 11, i: 42 }, D { l: 5, t: 11, i: 879, }, D { l: 7, t: 11, i: 245, }, D { l: 7, t: 11, i: 324, }, D { l: 7, t: 11, i: 1532, }, D { l: 11, t: 11, i: 463, }, D { l: 11, t: 11, i: 472, }, D { l: 13, t: 11, i: 363, }, D { l: 144, t: 11, i: 52, }, D { l: 150, t: 0, i: 55, }, D { l: 8, t: 0, i: 115 }, D { l: 8, t: 0, i: 350 }, D { l: 9, t: 0, i: 489 }, D { l: 10, t: 0, i: 128, }, D { l: 11, t: 0, i: 306, }, D { l: 12, t: 0, i: 373, }, D { l: 14, t: 0, i: 30 }, D { l: 17, t: 0, i: 79 }, D { l: 19, t: 0, i: 80 }, D { l: 4, t: 11, i: 134, }, D { l: 133, t: 11, i: 372, }, D { l: 134, t: 0, i: 657, }, D { l: 134, t: 0, i: 933, }, D { l: 135, t: 11, i: 1147, }, D { l: 4, t: 0, i: 230 }, D { l: 133, t: 0, i: 702, }, D { l: 134, t: 0, i: 1728, }, D { l: 4, t: 0, i: 484 }, D { l: 18, t: 0, i: 26 }, D { l: 19, t: 0, i: 42 }, D { l: 20, t: 0, i: 43 }, D { l: 21, t: 0, i: 0 }, D { l: 23, t: 0, i: 27 }, D { l: 152, t: 0, i: 14, }, D { l: 7, t: 0, i: 185 }, D { l: 135, t: 0, i: 703, }, D { l: 6, t: 0, i: 417 }, D { l: 10, t: 0, i: 618, }, D { l: 7, t: 10, i: 1106, }, D { l: 9, t: 10, i: 770, }, D { l: 11, t: 10, i: 112, }, D { l: 140, t: 10, i: 413, }, D { l: 134, t: 0, i: 803, }, D { l: 132, t: 11, i: 644, }, D { l: 134, t: 0, i: 1262, }, D { l: 7, t: 11, i: 540, }, D { l: 12, t: 10, i: 271, }, D { l: 145, t: 10, i: 109, }, D { l: 135, t: 11, i: 123, }, D { l: 132, t: 0, i: 633, }, D { l: 134, t: 11, i: 623, }, D { l: 4, t: 11, i: 908, }, D { l: 5, t: 11, i: 359, }, D { l: 5, t: 11, i: 508, }, D { l: 6, t: 11, i: 1723, }, D { l: 7, t: 11, i: 343, }, D { l: 7, t: 11, i: 1996, }, D { l: 135, t: 11, i: 2026, }, D { l: 135, t: 0, i: 479, }, D { l: 10, t: 0, i: 262, }, D { l: 7, t: 10, i: 304, }, D { l: 9, t: 10, i: 646, }, D { l: 9, t: 10, i: 862, }, D { l: 11, t: 10, i: 696, }, D { l: 12, t: 10, i: 208, }, D { l: 15, t: 10, i: 79, }, D { l: 147, t: 10, i: 108, }, D { l: 4, t: 11, i: 341, }, D { l: 135, t: 11, i: 480, }, D { l: 134, t: 0, i: 830, }, D { l: 5, t: 0, i: 70 }, D { l: 5, t: 0, i: 622 }, D { l: 6, t: 0, i: 334 }, D { l: 7, t: 0, i: 1032, }, D { l: 9, t: 0, i: 171 }, D { l: 11, t: 0, i: 26 }, D { l: 11, t: 0, i: 213, }, D { l: 11, t: 0, i: 637, }, D { l: 11, t: 0, i: 707, }, D { l: 12, t: 0, i: 202, }, D { l: 12, t: 0, i: 380, }, D { l: 13, t: 0, i: 226, }, D { l: 13, t: 0, i: 355, }, D { l: 14, t: 0, i: 222, }, D { l: 145, t: 0, i: 42, }, D { l: 135, t: 10, i: 981, }, D { l: 143, t: 0, i: 217, }, D { l: 137, t: 11, i: 114, }, D { l: 4, t: 0, i: 23 }, D { l: 4, t: 0, i: 141 }, D { l: 5, t: 0, i: 313 }, D { l: 5, t: 0, i: 1014, }, D { l: 6, t: 0, i: 50 }, D { l: 6, t: 0, i: 51 }, D { l: 7, t: 0, i: 142 }, D { l: 7, t: 0, i: 384 }, D { l: 7, t: 0, i: 559 }, D { l: 8, t: 0, i: 640 }, D { l: 9, t: 0, i: 460 }, D { l: 9, t: 0, i: 783 }, D { l: 11, t: 0, i: 741, }, D { l: 12, t: 0, i: 183, }, D { l: 141, t: 0, i: 488, }, D { l: 141, t: 0, i: 360, }, D { l: 7, t: 0, i: 1586, }, D { l: 7, t: 11, i: 1995, }, D { l: 8, t: 11, i: 299, }, D { l: 11, t: 11, i: 890, }, D { l: 140, t: 11, i: 674, }, D { l: 132, t: 10, i: 434, }, D { l: 7, t: 0, i: 652 }, D { l: 134, t: 10, i: 550, }, D { l: 7, t: 0, i: 766 }, D { l: 5, t: 10, i: 553, }, D { l: 138, t: 10, i: 824, }, D { l: 7, t: 0, i: 737 }, D { l: 8, t: 0, i: 298 }, D { l: 136, t: 10, i: 452, }, D { l: 4, t: 11, i: 238, }, D { l: 5, t: 11, i: 503, }, D { l: 6, t: 11, i: 179, }, D { l: 7, t: 11, i: 2003, }, D { l: 8, t: 11, i: 381, }, D { l: 8, t: 11, i: 473, }, D { l: 9, t: 11, i: 149, }, D { l: 10, t: 11, i: 183, }, D { l: 15, t: 11, i: 45, }, D { l: 143, t: 11, i: 86, }, D { l: 133, t: 10, i: 292, }, D { l: 5, t: 0, i: 222 }, D { l: 9, t: 0, i: 655 }, D { l: 138, t: 0, i: 534, }, D { l: 138, t: 10, i: 135, }, D { l: 4, t: 11, i: 121, }, D { l: 5, t: 11, i: 156, }, D { l: 5, t: 11, i: 349, }, D { l: 9, t: 11, i: 136, }, D { l: 10, t: 11, i: 605, }, D { l: 14, t: 11, i: 342, }, D { l: 147, t: 11, i: 107, }, D { l: 137, t: 0, i: 906, }, D { l: 6, t: 0, i: 1013, }, D { l: 134, t: 0, i: 1250, }, D { l: 6, t: 0, i: 1956, }, D { l: 6, t: 0, i: 2009, }, D { l: 8, t: 0, i: 991 }, D { l: 144, t: 0, i: 120, }, D { l: 135, t: 11, i: 1192, }, D { l: 138, t: 0, i: 503, }, D { l: 5, t: 0, i: 154 }, D { l: 7, t: 0, i: 1491, }, D { l: 10, t: 0, i: 379, }, D { l: 138, t: 0, i: 485, }, D { l: 6, t: 0, i: 1867, }, D { l: 6, t: 0, i: 1914, }, D { l: 6, t: 0, i: 1925, }, D { l: 9, t: 0, i: 917 }, D { l: 9, t: 0, i: 925 }, D { l: 9, t: 0, i: 932 }, D { l: 9, t: 0, i: 951 }, D { l: 9, t: 0, i: 1007, }, D { l: 9, t: 0, i: 1013, }, D { l: 12, t: 0, i: 806, }, D { l: 12, t: 0, i: 810, }, D { l: 12, t: 0, i: 814, }, D { l: 12, t: 0, i: 816, }, D { l: 12, t: 0, i: 824, }, D { l: 12, t: 0, i: 832, }, D { l: 12, t: 0, i: 837, }, D { l: 12, t: 0, i: 863, }, D { l: 12, t: 0, i: 868, }, D { l: 12, t: 0, i: 870, }, D { l: 12, t: 0, i: 889, }, D { l: 12, t: 0, i: 892, }, D { l: 12, t: 0, i: 900, }, D { l: 12, t: 0, i: 902, }, D { l: 12, t: 0, i: 908, }, D { l: 12, t: 0, i: 933, }, D { l: 12, t: 0, i: 942, }, D { l: 12, t: 0, i: 949, }, D { l: 12, t: 0, i: 954, }, D { l: 15, t: 0, i: 175, }, D { l: 15, t: 0, i: 203, }, D { l: 15, t: 0, i: 213, }, D { l: 15, t: 0, i: 218, }, D { l: 15, t: 0, i: 225, }, D { l: 15, t: 0, i: 231, }, D { l: 15, t: 0, i: 239, }, D { l: 15, t: 0, i: 248, }, D { l: 15, t: 0, i: 252, }, D { l: 18, t: 0, i: 190, }, D { l: 18, t: 0, i: 204, }, D { l: 18, t: 0, i: 215, }, D { l: 18, t: 0, i: 216, }, D { l: 18, t: 0, i: 222, }, D { l: 18, t: 0, i: 225, }, D { l: 18, t: 0, i: 230, }, D { l: 18, t: 0, i: 239, }, D { l: 18, t: 0, i: 241, }, D { l: 21, t: 0, i: 42 }, D { l: 21, t: 0, i: 43 }, D { l: 21, t: 0, i: 44 }, D { l: 21, t: 0, i: 45 }, D { l: 21, t: 0, i: 46 }, D { l: 21, t: 0, i: 53 }, D { l: 24, t: 0, i: 27 }, D { l: 152, t: 0, i: 31, }, D { l: 133, t: 0, i: 716, }, D { l: 135, t: 0, i: 844, }, D { l: 4, t: 0, i: 91 }, D { l: 5, t: 0, i: 388 }, D { l: 5, t: 0, i: 845 }, D { l: 6, t: 0, i: 206 }, D { l: 6, t: 0, i: 252 }, D { l: 6, t: 0, i: 365 }, D { l: 7, t: 0, i: 136 }, D { l: 7, t: 0, i: 531 }, D { l: 136, t: 0, i: 621, }, D { l: 7, t: 10, i: 393, }, D { l: 10, t: 10, i: 603, }, D { l: 139, t: 10, i: 206, }, D { l: 6, t: 11, i: 80 }, D { l: 6, t: 11, i: 1694, }, D { l: 7, t: 11, i: 173, }, D { l: 7, t: 11, i: 1974, }, D { l: 9, t: 11, i: 547, }, D { l: 10, t: 11, i: 730, }, D { l: 14, t: 11, i: 18, }, D { l: 150, t: 11, i: 39, }, D { l: 137, t: 0, i: 748, }, D { l: 4, t: 11, i: 923, }, D { l: 134, t: 11, i: 1711, }, D { l: 4, t: 10, i: 912, }, D { l: 137, t: 10, i: 232, }, D { l: 7, t: 10, i: 98 }, D { l: 7, t: 10, i: 1973, }, D { l: 136, t: 10, i: 716, }, D { l: 14, t: 0, i: 103, }, D { l: 133, t: 10, i: 733, }, D { l: 132, t: 11, i: 595, }, D { l: 12, t: 0, i: 158, }, D { l: 18, t: 0, i: 8 }, D { l: 19, t: 0, i: 62 }, D { l: 20, t: 0, i: 6 }, D { l: 22, t: 0, i: 4 }, D { l: 23, t: 0, i: 2 }, D { l: 23, t: 0, i: 9 }, D { l: 5, t: 11, i: 240, }, D { l: 6, t: 11, i: 459, }, D { l: 7, t: 11, i: 12 }, D { l: 7, t: 11, i: 114, }, D { l: 7, t: 11, i: 502, }, D { l: 7, t: 11, i: 1751, }, D { l: 7, t: 11, i: 1753, }, D { l: 7, t: 11, i: 1805, }, D { l: 8, t: 11, i: 658, }, D { l: 9, t: 11, i: 1 }, D { l: 11, t: 11, i: 959, }, D { l: 13, t: 11, i: 446, }, D { l: 142, t: 11, i: 211, }, D { l: 135, t: 0, i: 576, }, D { l: 5, t: 0, i: 771 }, D { l: 5, t: 0, i: 863 }, D { l: 5, t: 0, i: 898 }, D { l: 6, t: 0, i: 648 }, D { l: 6, t: 0, i: 1632, }, D { l: 6, t: 0, i: 1644, }, D { l: 134, t: 0, i: 1780, }, D { l: 133, t: 0, i: 331, }, D { l: 7, t: 11, i: 633, }, D { l: 7, t: 11, i: 905, }, D { l: 7, t: 11, i: 909, }, D { l: 7, t: 11, i: 1538, }, D { l: 9, t: 11, i: 767, }, D { l: 140, t: 11, i: 636, }, D { l: 140, t: 0, i: 632, }, D { l: 5, t: 0, i: 107 }, D { l: 7, t: 0, i: 201 }, D { l: 136, t: 0, i: 518, }, D { l: 6, t: 0, i: 446 }, D { l: 7, t: 0, i: 1817, }, D { l: 134, t: 11, i: 490, }, D { l: 9, t: 0, i: 851 }, D { l: 141, t: 0, i: 510, }, D { l: 7, t: 11, i: 250, }, D { l: 8, t: 11, i: 506, }, D { l: 136, t: 11, i: 507, }, D { l: 4, t: 0, i: 504 }, D { l: 137, t: 10, i: 72, }, D { l: 132, t: 11, i: 158, }, D { l: 4, t: 11, i: 140, }, D { l: 7, t: 11, i: 362, }, D { l: 8, t: 11, i: 209, }, D { l: 9, t: 11, i: 10 }, D { l: 9, t: 11, i: 160, }, D { l: 9, t: 11, i: 503, }, D { l: 10, t: 11, i: 689, }, D { l: 11, t: 11, i: 350, }, D { l: 11, t: 11, i: 553, }, D { l: 11, t: 11, i: 725, }, D { l: 12, t: 11, i: 252, }, D { l: 12, t: 11, i: 583, }, D { l: 13, t: 11, i: 192, }, D { l: 13, t: 11, i: 352, }, D { l: 14, t: 11, i: 269, }, D { l: 14, t: 11, i: 356, }, D { l: 148, t: 11, i: 50, }, D { l: 6, t: 11, i: 597, }, D { l: 135, t: 11, i: 1318, }, D { l: 135, t: 10, i: 1454, }, D { l: 5, t: 0, i: 883 }, D { l: 5, t: 0, i: 975 }, D { l: 8, t: 0, i: 392 }, D { l: 148, t: 0, i: 7 }, D { l: 6, t: 11, i: 228, }, D { l: 7, t: 11, i: 1341, }, D { l: 9, t: 11, i: 408, }, D { l: 138, t: 11, i: 343, }, D { l: 11, t: 11, i: 348, }, D { l: 11, t: 10, i: 600, }, D { l: 12, t: 11, i: 99, }, D { l: 13, t: 10, i: 245, }, D { l: 18, t: 11, i: 1 }, D { l: 18, t: 11, i: 11, }, D { l: 147, t: 11, i: 4, }, D { l: 134, t: 11, i: 296, }, D { l: 5, t: 0, i: 922 }, D { l: 134, t: 0, i: 1707, }, D { l: 132, t: 11, i: 557, }, D { l: 4, t: 11, i: 548, }, D { l: 7, t: 10, i: 164, }, D { l: 7, t: 10, i: 1571, }, D { l: 9, t: 10, i: 107, }, D { l: 140, t: 10, i: 225, }, D { l: 7, t: 11, i: 197, }, D { l: 8, t: 11, i: 142, }, D { l: 8, t: 11, i: 325, }, D { l: 9, t: 11, i: 150, }, D { l: 9, t: 11, i: 596, }, D { l: 10, t: 11, i: 350, }, D { l: 10, t: 11, i: 353, }, D { l: 11, t: 11, i: 74, }, D { l: 11, t: 11, i: 315, }, D { l: 14, t: 11, i: 423, }, D { l: 143, t: 11, i: 141, }, D { l: 5, t: 0, i: 993 }, D { l: 7, t: 0, i: 515 }, D { l: 137, t: 0, i: 91, }, D { l: 4, t: 0, i: 131 }, D { l: 8, t: 0, i: 200 }, D { l: 5, t: 10, i: 484, }, D { l: 5, t: 10, i: 510, }, D { l: 6, t: 10, i: 434, }, D { l: 7, t: 10, i: 1000, }, D { l: 7, t: 10, i: 1098, }, D { l: 136, t: 10, i: 2, }, D { l: 152, t: 0, i: 10, }, D { l: 4, t: 11, i: 62 }, D { l: 5, t: 11, i: 83 }, D { l: 6, t: 11, i: 399, }, D { l: 6, t: 11, i: 579, }, D { l: 7, t: 11, i: 692, }, D { l: 7, t: 11, i: 846, }, D { l: 7, t: 11, i: 1015, }, D { l: 7, t: 11, i: 1799, }, D { l: 8, t: 11, i: 403, }, D { l: 9, t: 11, i: 394, }, D { l: 10, t: 11, i: 133, }, D { l: 12, t: 11, i: 4 }, D { l: 12, t: 11, i: 297, }, D { l: 12, t: 11, i: 452, }, D { l: 16, t: 11, i: 81, }, D { l: 18, t: 11, i: 19, }, D { l: 18, t: 11, i: 25, }, D { l: 21, t: 11, i: 14, }, D { l: 22, t: 11, i: 12, }, D { l: 151, t: 11, i: 18, }, D { l: 140, t: 11, i: 459, }, D { l: 132, t: 11, i: 177, }, D { l: 7, t: 0, i: 1433, }, D { l: 9, t: 0, i: 365 }, D { l: 137, t: 11, i: 365, }, D { l: 132, t: 10, i: 460, }, D { l: 5, t: 0, i: 103 }, D { l: 6, t: 0, i: 2004, }, D { l: 7, t: 0, i: 921 }, D { l: 8, t: 0, i: 580 }, D { l: 8, t: 0, i: 593 }, D { l: 8, t: 0, i: 630 }, D { l: 10, t: 0, i: 28 }, D { l: 5, t: 11, i: 411, }, D { l: 135, t: 11, i: 653, }, D { l: 4, t: 10, i: 932, }, D { l: 133, t: 10, i: 891, }, D { l: 4, t: 0, i: 911 }, D { l: 5, t: 0, i: 867 }, D { l: 5, t: 0, i: 1013, }, D { l: 7, t: 0, i: 2034, }, D { l: 8, t: 0, i: 798 }, D { l: 136, t: 0, i: 813, }, D { l: 7, t: 11, i: 439, }, D { l: 10, t: 11, i: 727, }, D { l: 11, t: 11, i: 260, }, D { l: 139, t: 11, i: 684, }, D { l: 136, t: 10, i: 625, }, D { l: 5, t: 11, i: 208, }, D { l: 7, t: 11, i: 753, }, D { l: 135, t: 11, i: 1528, }, D { l: 5, t: 0, i: 461 }, D { l: 7, t: 0, i: 1925, }, D { l: 12, t: 0, i: 39 }, D { l: 13, t: 0, i: 265, }, D { l: 13, t: 0, i: 439, }, D { l: 134, t: 10, i: 76, }, D { l: 6, t: 0, i: 853 }, D { l: 8, t: 10, i: 92 }, D { l: 137, t: 10, i: 221, }, D { l: 5, t: 0, i: 135 }, D { l: 6, t: 0, i: 519 }, D { l: 7, t: 0, i: 1722, }, D { l: 10, t: 0, i: 271, }, D { l: 11, t: 0, i: 261, }, D { l: 145, t: 0, i: 54, }, D { l: 139, t: 11, i: 814, }, D { l: 14, t: 0, i: 338, }, D { l: 148, t: 0, i: 81, }, D { l: 4, t: 0, i: 300 }, D { l: 133, t: 0, i: 436, }, D { l: 5, t: 0, i: 419 }, D { l: 5, t: 0, i: 687 }, D { l: 7, t: 0, i: 864 }, D { l: 9, t: 0, i: 470 }, D { l: 135, t: 11, i: 864, }, D { l: 9, t: 0, i: 836 }, D { l: 133, t: 11, i: 242, }, D { l: 134, t: 0, i: 1937, }, D { l: 4, t: 10, i: 763, }, D { l: 133, t: 11, i: 953, }, D { l: 132, t: 10, i: 622, }, D { l: 132, t: 0, i: 393, }, D { l: 133, t: 10, i: 253, }, D { l: 8, t: 0, i: 357 }, D { l: 10, t: 0, i: 745, }, D { l: 14, t: 0, i: 426, }, D { l: 17, t: 0, i: 94 }, D { l: 19, t: 0, i: 57 }, D { l: 135, t: 10, i: 546, }, D { l: 5, t: 11, i: 615, }, D { l: 146, t: 11, i: 37, }, D { l: 9, t: 10, i: 73 }, D { l: 10, t: 10, i: 110, }, D { l: 14, t: 10, i: 185, }, D { l: 145, t: 10, i: 119, }, D { l: 11, t: 0, i: 703, }, D { l: 7, t: 10, i: 624, }, D { l: 7, t: 10, i: 916, }, D { l: 10, t: 10, i: 256, }, D { l: 139, t: 10, i: 87, }, D { l: 133, t: 11, i: 290, }, D { l: 5, t: 10, i: 212, }, D { l: 12, t: 10, i: 35, }, D { l: 141, t: 10, i: 382, }, D { l: 132, t: 11, i: 380, }, D { l: 5, t: 11, i: 52 }, D { l: 7, t: 11, i: 277, }, D { l: 9, t: 11, i: 368, }, D { l: 139, t: 11, i: 791, }, D { l: 133, t: 0, i: 387, }, D { l: 10, t: 11, i: 138, }, D { l: 139, t: 11, i: 476, }, D { l: 4, t: 0, i: 6 }, D { l: 5, t: 0, i: 708 }, D { l: 136, t: 0, i: 75, }, D { l: 7, t: 0, i: 1351, }, D { l: 9, t: 0, i: 581 }, D { l: 10, t: 0, i: 639, }, D { l: 11, t: 0, i: 453, }, D { l: 140, t: 0, i: 584, }, D { l: 132, t: 0, i: 303, }, D { l: 138, t: 0, i: 772, }, D { l: 135, t: 10, i: 1175, }, D { l: 4, t: 0, i: 749 }, D { l: 5, t: 10, i: 816, }, D { l: 6, t: 11, i: 256, }, D { l: 7, t: 11, i: 307, }, D { l: 7, t: 11, i: 999, }, D { l: 7, t: 11, i: 1481, }, D { l: 7, t: 11, i: 1732, }, D { l: 7, t: 11, i: 1738, }, D { l: 8, t: 11, i: 265, }, D { l: 9, t: 11, i: 414, }, D { l: 11, t: 11, i: 316, }, D { l: 12, t: 11, i: 52, }, D { l: 13, t: 11, i: 420, }, D { l: 147, t: 11, i: 100, }, D { l: 135, t: 11, i: 1296, }, D { l: 6, t: 0, i: 1065, }, D { l: 5, t: 10, i: 869, }, D { l: 5, t: 10, i: 968, }, D { l: 6, t: 10, i: 1626, }, D { l: 8, t: 10, i: 734, }, D { l: 136, t: 10, i: 784, }, D { l: 4, t: 10, i: 542, }, D { l: 6, t: 10, i: 1716, }, D { l: 6, t: 10, i: 1727, }, D { l: 7, t: 10, i: 1082, }, D { l: 7, t: 10, i: 1545, }, D { l: 8, t: 10, i: 56 }, D { l: 8, t: 10, i: 118, }, D { l: 8, t: 10, i: 412, }, D { l: 8, t: 10, i: 564, }, D { l: 9, t: 10, i: 888, }, D { l: 9, t: 10, i: 908, }, D { l: 10, t: 10, i: 50, }, D { l: 10, t: 10, i: 423, }, D { l: 11, t: 10, i: 685, }, D { l: 11, t: 10, i: 697, }, D { l: 11, t: 10, i: 933, }, D { l: 12, t: 10, i: 299, }, D { l: 13, t: 10, i: 126, }, D { l: 13, t: 10, i: 136, }, D { l: 13, t: 10, i: 170, }, D { l: 141, t: 10, i: 190, }, D { l: 134, t: 0, i: 226, }, D { l: 4, t: 0, i: 106 }, D { l: 7, t: 0, i: 310 }, D { l: 11, t: 0, i: 717, }, D { l: 133, t: 11, i: 723, }, D { l: 5, t: 0, i: 890 }, D { l: 5, t: 0, i: 988 }, D { l: 4, t: 10, i: 232, }, D { l: 9, t: 10, i: 202, }, D { l: 10, t: 10, i: 474, }, D { l: 140, t: 10, i: 433, }, D { l: 6, t: 0, i: 626 }, D { l: 142, t: 0, i: 431, }, D { l: 10, t: 0, i: 706, }, D { l: 150, t: 0, i: 44, }, D { l: 13, t: 0, i: 51 }, D { l: 6, t: 10, i: 108, }, D { l: 7, t: 10, i: 1003, }, D { l: 7, t: 10, i: 1181, }, D { l: 8, t: 10, i: 111, }, D { l: 136, t: 10, i: 343, }, D { l: 132, t: 0, i: 698, }, D { l: 5, t: 11, i: 109, }, D { l: 6, t: 11, i: 1784, }, D { l: 7, t: 11, i: 1895, }, D { l: 12, t: 11, i: 296, }, D { l: 140, t: 11, i: 302, }, D { l: 134, t: 0, i: 828, }, D { l: 134, t: 10, i: 1712, }, D { l: 138, t: 0, i: 17, }, D { l: 7, t: 0, i: 1929, }, D { l: 4, t: 10, i: 133, }, D { l: 5, t: 11, i: 216, }, D { l: 7, t: 10, i: 711, }, D { l: 7, t: 10, i: 1298, }, D { l: 7, t: 10, i: 1585, }, D { l: 7, t: 11, i: 1879, }, D { l: 9, t: 11, i: 141, }, D { l: 9, t: 11, i: 270, }, D { l: 9, t: 11, i: 679, }, D { l: 10, t: 11, i: 159, }, D { l: 10, t: 11, i: 553, }, D { l: 11, t: 11, i: 197, }, D { l: 11, t: 11, i: 438, }, D { l: 12, t: 11, i: 538, }, D { l: 12, t: 11, i: 559, }, D { l: 13, t: 11, i: 193, }, D { l: 13, t: 11, i: 423, }, D { l: 14, t: 11, i: 144, }, D { l: 14, t: 11, i: 166, }, D { l: 14, t: 11, i: 167, }, D { l: 15, t: 11, i: 67, }, D { l: 147, t: 11, i: 84, }, D { l: 141, t: 11, i: 127, }, D { l: 7, t: 11, i: 1872, }, D { l: 137, t: 11, i: 81, }, D { l: 6, t: 10, i: 99 }, D { l: 7, t: 10, i: 1808, }, D { l: 145, t: 10, i: 57, }, D { l: 134, t: 11, i: 391, }, D { l: 5, t: 0, i: 689 }, D { l: 6, t: 0, i: 84 }, D { l: 7, t: 0, i: 1250, }, D { l: 6, t: 10, i: 574, }, D { l: 7, t: 10, i: 428, }, D { l: 10, t: 10, i: 669, }, D { l: 11, t: 10, i: 485, }, D { l: 11, t: 10, i: 840, }, D { l: 12, t: 10, i: 300, }, D { l: 142, t: 10, i: 250, }, D { l: 7, t: 11, i: 322, }, D { l: 136, t: 11, i: 249, }, D { l: 7, t: 11, i: 432, }, D { l: 135, t: 11, i: 1649, }, D { l: 135, t: 10, i: 1871, }, D { l: 137, t: 10, i: 252, }, D { l: 6, t: 11, i: 155, }, D { l: 140, t: 11, i: 234, }, D { l: 7, t: 0, i: 871 }, D { l: 19, t: 0, i: 27 }, D { l: 147, t: 11, i: 27, }, D { l: 140, t: 0, i: 498, }, D { l: 5, t: 0, i: 986 }, D { l: 6, t: 0, i: 130 }, D { l: 138, t: 0, i: 823, }, D { l: 6, t: 0, i: 1793, }, D { l: 7, t: 0, i: 1582, }, D { l: 8, t: 0, i: 458 }, D { l: 10, t: 0, i: 101, }, D { l: 10, t: 0, i: 318, }, D { l: 10, t: 0, i: 945, }, D { l: 12, t: 0, i: 734, }, D { l: 16, t: 0, i: 104, }, D { l: 18, t: 0, i: 177, }, D { l: 6, t: 10, i: 323, }, D { l: 135, t: 10, i: 1564, }, D { l: 5, t: 11, i: 632, }, D { l: 138, t: 11, i: 526, }, D { l: 10, t: 0, i: 435, }, D { l: 7, t: 10, i: 461, }, D { l: 136, t: 10, i: 775, }, D { l: 6, t: 11, i: 144, }, D { l: 7, t: 11, i: 948, }, D { l: 7, t: 11, i: 1042, }, D { l: 7, t: 11, i: 1857, }, D { l: 8, t: 11, i: 235, }, D { l: 8, t: 11, i: 461, }, D { l: 9, t: 11, i: 453, }, D { l: 9, t: 11, i: 530, }, D { l: 10, t: 11, i: 354, }, D { l: 17, t: 11, i: 77, }, D { l: 19, t: 11, i: 99, }, D { l: 148, t: 11, i: 79, }, D { l: 138, t: 0, i: 966, }, D { l: 7, t: 0, i: 1644, }, D { l: 137, t: 0, i: 129, }, D { l: 135, t: 0, i: 997, }, D { l: 136, t: 0, i: 502, }, D { l: 5, t: 11, i: 196, }, D { l: 6, t: 11, i: 486, }, D { l: 7, t: 11, i: 212, }, D { l: 8, t: 11, i: 309, }, D { l: 136, t: 11, i: 346, }, D { l: 7, t: 10, i: 727, }, D { l: 146, t: 10, i: 73, }, D { l: 132, t: 0, i: 823, }, D { l: 132, t: 11, i: 686, }, D { l: 135, t: 0, i: 1927, }, D { l: 4, t: 0, i: 762 }, D { l: 7, t: 0, i: 1756, }, D { l: 137, t: 0, i: 98, }, D { l: 136, t: 10, i: 577, }, D { l: 24, t: 0, i: 8 }, D { l: 4, t: 11, i: 30 }, D { l: 5, t: 11, i: 43 }, D { l: 152, t: 11, i: 8, }, D { l: 7, t: 0, i: 1046, }, D { l: 139, t: 0, i: 160, }, D { l: 7, t: 0, i: 492 }, D { l: 4, t: 10, i: 413, }, D { l: 5, t: 10, i: 677, }, D { l: 7, t: 11, i: 492, }, D { l: 8, t: 10, i: 432, }, D { l: 140, t: 10, i: 280, }, D { l: 6, t: 0, i: 45 }, D { l: 7, t: 0, i: 433 }, D { l: 8, t: 0, i: 129 }, D { l: 9, t: 0, i: 21 }, D { l: 10, t: 0, i: 392, }, D { l: 11, t: 0, i: 79 }, D { l: 12, t: 0, i: 499, }, D { l: 13, t: 0, i: 199, }, D { l: 141, t: 0, i: 451, }, D { l: 7, t: 0, i: 558 }, D { l: 136, t: 0, i: 353, }, D { l: 4, t: 11, i: 220, }, D { l: 7, t: 11, i: 1535, }, D { l: 9, t: 11, i: 93 }, D { l: 139, t: 11, i: 474, }, D { l: 7, t: 10, i: 646, }, D { l: 7, t: 10, i: 1730, }, D { l: 11, t: 10, i: 446, }, D { l: 141, t: 10, i: 178, }, D { l: 133, t: 0, i: 785, }, D { l: 134, t: 0, i: 1145, }, D { l: 8, t: 0, i: 81 }, D { l: 9, t: 0, i: 189 }, D { l: 9, t: 0, i: 201 }, D { l: 11, t: 0, i: 478, }, D { l: 11, t: 0, i: 712, }, D { l: 141, t: 0, i: 338, }, D { l: 5, t: 0, i: 353 }, D { l: 151, t: 0, i: 26, }, D { l: 11, t: 0, i: 762, }, D { l: 132, t: 10, i: 395, }, D { l: 134, t: 0, i: 2024, }, D { l: 4, t: 0, i: 611 }, D { l: 133, t: 0, i: 606, }, D { l: 9, t: 10, i: 174, }, D { l: 10, t: 10, i: 164, }, D { l: 11, t: 10, i: 440, }, D { l: 11, t: 10, i: 841, }, D { l: 143, t: 10, i: 98, }, D { l: 134, t: 10, i: 426, }, D { l: 10, t: 10, i: 608, }, D { l: 139, t: 10, i: 1002, }, D { l: 138, t: 10, i: 250, }, D { l: 6, t: 0, i: 25 }, D { l: 7, t: 0, i: 855 }, D { l: 7, t: 0, i: 1258, }, D { l: 144, t: 0, i: 32, }, D { l: 7, t: 11, i: 1725, }, D { l: 138, t: 11, i: 393, }, D { l: 5, t: 11, i: 263, }, D { l: 134, t: 11, i: 414, }, D { l: 6, t: 0, i: 2011, }, D { l: 133, t: 10, i: 476, }, D { l: 4, t: 0, i: 4 }, D { l: 7, t: 0, i: 1118, }, D { l: 7, t: 0, i: 1320, }, D { l: 7, t: 0, i: 1706, }, D { l: 8, t: 0, i: 277 }, D { l: 9, t: 0, i: 622 }, D { l: 10, t: 0, i: 9 }, D { l: 11, t: 0, i: 724, }, D { l: 12, t: 0, i: 350, }, D { l: 12, t: 0, i: 397, }, D { l: 13, t: 0, i: 28 }, D { l: 13, t: 0, i: 159, }, D { l: 15, t: 0, i: 89 }, D { l: 18, t: 0, i: 5 }, D { l: 19, t: 0, i: 9 }, D { l: 20, t: 0, i: 34 }, D { l: 22, t: 0, i: 47 }, D { l: 6, t: 11, i: 178, }, D { l: 6, t: 11, i: 1750, }, D { l: 8, t: 11, i: 251, }, D { l: 9, t: 11, i: 690, }, D { l: 10, t: 11, i: 155, }, D { l: 10, t: 11, i: 196, }, D { l: 10, t: 11, i: 373, }, D { l: 11, t: 11, i: 698, }, D { l: 13, t: 11, i: 155, }, D { l: 148, t: 11, i: 93, }, D { l: 5, t: 11, i: 97 }, D { l: 137, t: 11, i: 393, }, D { l: 7, t: 0, i: 764 }, D { l: 11, t: 0, i: 461, }, D { l: 12, t: 0, i: 172, }, D { l: 5, t: 10, i: 76 }, D { l: 6, t: 10, i: 458, }, D { l: 6, t: 10, i: 497, }, D { l: 7, t: 10, i: 868, }, D { l: 9, t: 10, i: 658, }, D { l: 10, t: 10, i: 594, }, D { l: 11, t: 10, i: 566, }, D { l: 12, t: 10, i: 338, }, D { l: 141, t: 10, i: 200, }, D { l: 134, t: 0, i: 1449, }, D { l: 138, t: 11, i: 40, }, D { l: 134, t: 11, i: 1639, }, D { l: 134, t: 0, i: 1445, }, D { l: 6, t: 0, i: 1168, }, D { l: 4, t: 10, i: 526, }, D { l: 7, t: 10, i: 1029, }, D { l: 135, t: 10, i: 1054, }, D { l: 4, t: 11, i: 191, }, D { l: 7, t: 11, i: 934, }, D { l: 8, t: 11, i: 647, }, D { l: 145, t: 11, i: 97, }, D { l: 132, t: 10, i: 636, }, D { l: 6, t: 0, i: 233 }, D { l: 7, t: 10, i: 660, }, D { l: 7, t: 10, i: 1124, }, D { l: 17, t: 10, i: 31, }, D { l: 19, t: 10, i: 22, }, D { l: 151, t: 10, i: 14, }, D { l: 6, t: 10, i: 1699, }, D { l: 136, t: 11, i: 110, }, D { l: 12, t: 11, i: 246, }, D { l: 15, t: 11, i: 162, }, D { l: 19, t: 11, i: 64, }, D { l: 20, t: 11, i: 8 }, D { l: 20, t: 11, i: 95, }, D { l: 22, t: 11, i: 24, }, D { l: 152, t: 11, i: 17, }, D { l: 5, t: 11, i: 165, }, D { l: 9, t: 11, i: 346, }, D { l: 138, t: 11, i: 655, }, D { l: 5, t: 11, i: 319, }, D { l: 135, t: 11, i: 534, }, D { l: 134, t: 0, i: 255, }, D { l: 9, t: 0, i: 216 }, D { l: 8, t: 11, i: 128, }, D { l: 139, t: 11, i: 179, }, D { l: 9, t: 0, i: 183 }, D { l: 139, t: 0, i: 286, }, D { l: 11, t: 0, i: 956, }, D { l: 151, t: 0, i: 3 }, D { l: 4, t: 0, i: 536 }, D { l: 7, t: 0, i: 1141, }, D { l: 10, t: 0, i: 723, }, D { l: 139, t: 0, i: 371, }, D { l: 4, t: 10, i: 279, }, D { l: 7, t: 10, i: 301, }, D { l: 137, t: 10, i: 362, }, D { l: 7, t: 0, i: 285 }, D { l: 5, t: 11, i: 57 }, D { l: 6, t: 11, i: 101, }, D { l: 6, t: 11, i: 1663, }, D { l: 7, t: 11, i: 132, }, D { l: 7, t: 11, i: 1048, }, D { l: 7, t: 11, i: 1154, }, D { l: 7, t: 11, i: 1415, }, D { l: 7, t: 11, i: 1507, }, D { l: 12, t: 11, i: 493, }, D { l: 15, t: 11, i: 105, }, D { l: 151, t: 11, i: 15, }, D { l: 5, t: 11, i: 459, }, D { l: 7, t: 11, i: 1073, }, D { l: 7, t: 10, i: 1743, }, D { l: 8, t: 11, i: 241, }, D { l: 136, t: 11, i: 334, }, D { l: 4, t: 10, i: 178, }, D { l: 133, t: 10, i: 399, }, D { l: 135, t: 0, i: 560, }, D { l: 132, t: 0, i: 690, }, D { l: 135, t: 0, i: 1246, }, D { l: 18, t: 0, i: 157, }, D { l: 147, t: 0, i: 63, }, D { l: 10, t: 0, i: 599, }, D { l: 11, t: 0, i: 33 }, D { l: 12, t: 0, i: 571, }, D { l: 149, t: 0, i: 1 }, D { l: 6, t: 11, i: 324, }, D { l: 6, t: 11, i: 520, }, D { l: 7, t: 11, i: 338, }, D { l: 7, t: 11, i: 1616, }, D { l: 7, t: 11, i: 1729, }, D { l: 8, t: 11, i: 228, }, D { l: 9, t: 11, i: 69 }, D { l: 139, t: 11, i: 750, }, D { l: 7, t: 0, i: 1862, }, D { l: 12, t: 0, i: 491, }, D { l: 12, t: 0, i: 520, }, D { l: 13, t: 0, i: 383, }, D { l: 142, t: 0, i: 244, }, D { l: 135, t: 11, i: 734, }, D { l: 134, t: 10, i: 1692, }, D { l: 10, t: 0, i: 448, }, D { l: 11, t: 0, i: 630, }, D { l: 17, t: 0, i: 117, }, D { l: 6, t: 10, i: 202, }, D { l: 7, t: 11, i: 705, }, D { l: 12, t: 10, i: 360, }, D { l: 17, t: 10, i: 118, }, D { l: 18, t: 10, i: 27, }, D { l: 148, t: 10, i: 67, }, D { l: 4, t: 11, i: 73 }, D { l: 6, t: 11, i: 612, }, D { l: 7, t: 11, i: 927, }, D { l: 7, t: 11, i: 1822, }, D { l: 8, t: 11, i: 217, }, D { l: 9, t: 11, i: 472, }, D { l: 9, t: 11, i: 765, }, D { l: 9, t: 11, i: 766, }, D { l: 10, t: 11, i: 408, }, D { l: 11, t: 11, i: 51, }, D { l: 11, t: 11, i: 793, }, D { l: 12, t: 11, i: 266, }, D { l: 15, t: 11, i: 158, }, D { l: 20, t: 11, i: 89, }, D { l: 150, t: 11, i: 32, }, D { l: 4, t: 0, i: 190 }, D { l: 133, t: 0, i: 554, }, D { l: 133, t: 0, i: 1001, }, D { l: 5, t: 11, i: 389, }, D { l: 8, t: 11, i: 636, }, D { l: 137, t: 11, i: 229, }, D { l: 5, t: 0, i: 446 }, D { l: 7, t: 10, i: 872, }, D { l: 10, t: 10, i: 516, }, D { l: 139, t: 10, i: 167, }, D { l: 137, t: 10, i: 313, }, D { l: 132, t: 10, i: 224, }, D { l: 134, t: 0, i: 1313, }, D { l: 5, t: 10, i: 546, }, D { l: 7, t: 10, i: 35 }, D { l: 8, t: 10, i: 11 }, D { l: 8, t: 10, i: 12 }, D { l: 9, t: 10, i: 315, }, D { l: 9, t: 10, i: 533, }, D { l: 10, t: 10, i: 802, }, D { l: 11, t: 10, i: 166, }, D { l: 12, t: 10, i: 525, }, D { l: 142, t: 10, i: 243, }, D { l: 6, t: 0, i: 636 }, D { l: 137, t: 0, i: 837, }, D { l: 5, t: 10, i: 241, }, D { l: 8, t: 10, i: 242, }, D { l: 9, t: 10, i: 451, }, D { l: 10, t: 10, i: 667, }, D { l: 11, t: 10, i: 598, }, D { l: 140, t: 10, i: 429, }, D { l: 22, t: 10, i: 46, }, D { l: 150, t: 11, i: 46, }, D { l: 136, t: 11, i: 472, }, D { l: 11, t: 0, i: 278, }, D { l: 142, t: 0, i: 73, }, D { l: 141, t: 11, i: 185, }, D { l: 132, t: 0, i: 868, }, D { l: 134, t: 0, i: 972, }, D { l: 4, t: 10, i: 366, }, D { l: 137, t: 10, i: 516, }, D { l: 138, t: 0, i: 1010, }, D { l: 5, t: 11, i: 189, }, D { l: 6, t: 10, i: 1736, }, D { l: 7, t: 11, i: 442, }, D { l: 7, t: 11, i: 443, }, D { l: 8, t: 11, i: 281, }, D { l: 12, t: 11, i: 174, }, D { l: 13, t: 11, i: 83, }, D { l: 141, t: 11, i: 261, }, D { l: 139, t: 11, i: 384, }, D { l: 6, t: 11, i: 2 }, D { l: 7, t: 11, i: 191, }, D { l: 7, t: 11, i: 446, }, D { l: 7, t: 11, i: 758, }, D { l: 7, t: 11, i: 1262, }, D { l: 7, t: 11, i: 1737, }, D { l: 8, t: 11, i: 22 }, D { l: 8, t: 11, i: 270, }, D { l: 8, t: 11, i: 612, }, D { l: 9, t: 11, i: 4 }, D { l: 9, t: 11, i: 167, }, D { l: 9, t: 11, i: 312, }, D { l: 9, t: 11, i: 436, }, D { l: 10, t: 11, i: 156, }, D { l: 10, t: 11, i: 216, }, D { l: 10, t: 11, i: 311, }, D { l: 10, t: 11, i: 623, }, D { l: 11, t: 11, i: 72, }, D { l: 11, t: 11, i: 330, }, D { l: 11, t: 11, i: 455, }, D { l: 12, t: 11, i: 101, }, D { l: 12, t: 11, i: 321, }, D { l: 12, t: 11, i: 504, }, D { l: 12, t: 11, i: 530, }, D { l: 12, t: 11, i: 543, }, D { l: 13, t: 11, i: 17, }, D { l: 13, t: 11, i: 156, }, D { l: 13, t: 11, i: 334, }, D { l: 14, t: 11, i: 48, }, D { l: 15, t: 11, i: 70, }, D { l: 17, t: 11, i: 60, }, D { l: 148, t: 11, i: 64, }, D { l: 6, t: 10, i: 331, }, D { l: 136, t: 10, i: 623, }, D { l: 135, t: 0, i: 1231, }, D { l: 132, t: 0, i: 304, }, D { l: 6, t: 11, i: 60 }, D { l: 7, t: 11, i: 670, }, D { l: 7, t: 11, i: 1327, }, D { l: 8, t: 11, i: 411, }, D { l: 8, t: 11, i: 435, }, D { l: 9, t: 11, i: 653, }, D { l: 9, t: 11, i: 740, }, D { l: 10, t: 11, i: 385, }, D { l: 11, t: 11, i: 222, }, D { l: 11, t: 11, i: 324, }, D { l: 11, t: 11, i: 829, }, D { l: 140, t: 11, i: 611, }, D { l: 7, t: 0, i: 506 }, D { l: 6, t: 11, i: 166, }, D { l: 7, t: 11, i: 374, }, D { l: 135, t: 11, i: 1174, }, D { l: 14, t: 11, i: 43, }, D { l: 146, t: 11, i: 21, }, D { l: 135, t: 11, i: 1694, }, D { l: 135, t: 10, i: 1888, }, D { l: 5, t: 11, i: 206, }, D { l: 134, t: 11, i: 398, }, D { l: 135, t: 11, i: 50, }, D { l: 150, t: 0, i: 26, }, D { l: 6, t: 0, i: 53 }, D { l: 6, t: 0, i: 199 }, D { l: 7, t: 0, i: 1408, }, D { l: 8, t: 0, i: 32 }, D { l: 8, t: 0, i: 93 }, D { l: 10, t: 0, i: 397, }, D { l: 10, t: 0, i: 629, }, D { l: 11, t: 0, i: 593, }, D { l: 11, t: 0, i: 763, }, D { l: 13, t: 0, i: 326, }, D { l: 145, t: 0, i: 35, }, D { l: 134, t: 0, i: 105, }, D { l: 132, t: 10, i: 394, }, D { l: 4, t: 0, i: 843 }, D { l: 138, t: 0, i: 794, }, D { l: 11, t: 0, i: 704, }, D { l: 141, t: 0, i: 396, }, D { l: 5, t: 0, i: 114 }, D { l: 5, t: 0, i: 255 }, D { l: 141, t: 0, i: 285, }, D { l: 6, t: 0, i: 619 }, D { l: 7, t: 0, i: 898 }, D { l: 7, t: 0, i: 1092, }, D { l: 8, t: 0, i: 485 }, D { l: 18, t: 0, i: 28 }, D { l: 19, t: 0, i: 116, }, D { l: 135, t: 10, i: 1931, }, D { l: 9, t: 0, i: 145 }, D { l: 7, t: 10, i: 574, }, D { l: 135, t: 10, i: 1719, }, D { l: 7, t: 0, i: 2035, }, D { l: 8, t: 0, i: 19 }, D { l: 9, t: 0, i: 89 }, D { l: 138, t: 0, i: 831, }, D { l: 132, t: 10, i: 658, }, D { l: 6, t: 11, i: 517, }, D { l: 7, t: 11, i: 1159, }, D { l: 10, t: 11, i: 621, }, D { l: 139, t: 11, i: 192, }, D { l: 7, t: 0, i: 1933, }, D { l: 7, t: 11, i: 1933, }, D { l: 9, t: 10, i: 781, }, D { l: 10, t: 10, i: 144, }, D { l: 11, t: 10, i: 385, }, D { l: 13, t: 10, i: 161, }, D { l: 13, t: 10, i: 228, }, D { l: 13, t: 10, i: 268, }, D { l: 148, t: 10, i: 107, }, D { l: 136, t: 10, i: 374, }, D { l: 10, t: 11, i: 223, }, D { l: 139, t: 11, i: 645, }, D { l: 135, t: 0, i: 1728, }, D { l: 7, t: 11, i: 64 }, D { l: 7, t: 11, i: 289, }, D { l: 136, t: 11, i: 245, }, D { l: 4, t: 10, i: 344, }, D { l: 6, t: 10, i: 498, }, D { l: 139, t: 10, i: 323, }, D { l: 136, t: 0, i: 746, }, D { l: 135, t: 10, i: 1063, }, D { l: 137, t: 10, i: 155, }, D { l: 4, t: 0, i: 987 }, D { l: 6, t: 0, i: 1964, }, D { l: 6, t: 0, i: 1974, }, D { l: 6, t: 0, i: 1990, }, D { l: 136, t: 0, i: 995, }, D { l: 133, t: 11, i: 609, }, D { l: 133, t: 10, i: 906, }, D { l: 134, t: 0, i: 1550, }, D { l: 134, t: 0, i: 874, }, D { l: 5, t: 11, i: 129, }, D { l: 6, t: 11, i: 61 }, D { l: 135, t: 11, i: 947, }, D { l: 4, t: 0, i: 1018, }, D { l: 6, t: 0, i: 1938, }, D { l: 6, t: 0, i: 2021, }, D { l: 134, t: 0, i: 2039, }, D { l: 132, t: 0, i: 814, }, D { l: 11, t: 0, i: 126, }, D { l: 139, t: 0, i: 287, }, D { l: 134, t: 0, i: 1264, }, D { l: 5, t: 0, i: 955 }, D { l: 136, t: 0, i: 814, }, D { l: 141, t: 11, i: 506, }, D { l: 132, t: 11, i: 314, }, D { l: 6, t: 0, i: 981 }, D { l: 139, t: 11, i: 1000, }, D { l: 5, t: 0, i: 56 }, D { l: 8, t: 0, i: 892 }, D { l: 8, t: 0, i: 915 }, D { l: 140, t: 0, i: 776, }, D { l: 148, t: 0, i: 100, }, D { l: 10, t: 0, i: 4 }, D { l: 10, t: 0, i: 13 }, D { l: 11, t: 0, i: 638, }, D { l: 148, t: 0, i: 57, }, D { l: 148, t: 11, i: 74, }, D { l: 5, t: 0, i: 738 }, D { l: 132, t: 10, i: 616, }, D { l: 133, t: 11, i: 637, }, D { l: 136, t: 10, i: 692, }, D { l: 133, t: 0, i: 758, }, D { l: 132, t: 10, i: 305, }, D { l: 137, t: 11, i: 590, }, D { l: 5, t: 11, i: 280, }, D { l: 135, t: 11, i: 1226, }, D { l: 134, t: 11, i: 494, }, D { l: 135, t: 0, i: 1112, }, D { l: 133, t: 11, i: 281, }, D { l: 13, t: 0, i: 44 }, D { l: 14, t: 0, i: 214, }, D { l: 5, t: 10, i: 214, }, D { l: 7, t: 10, i: 603, }, D { l: 8, t: 10, i: 611, }, D { l: 9, t: 10, i: 686, }, D { l: 10, t: 10, i: 88, }, D { l: 11, t: 10, i: 459, }, D { l: 11, t: 10, i: 496, }, D { l: 12, t: 10, i: 463, }, D { l: 140, t: 10, i: 590, }, D { l: 139, t: 0, i: 328, }, D { l: 135, t: 11, i: 1064, }, D { l: 137, t: 0, i: 133, }, D { l: 7, t: 0, i: 168 }, D { l: 13, t: 0, i: 196, }, D { l: 141, t: 0, i: 237, }, D { l: 134, t: 10, i: 1703, }, D { l: 134, t: 0, i: 1152, }, D { l: 135, t: 0, i: 1245, }, D { l: 5, t: 0, i: 110 }, D { l: 6, t: 0, i: 169 }, D { l: 6, t: 0, i: 1702, }, D { l: 7, t: 0, i: 400 }, D { l: 8, t: 0, i: 538 }, D { l: 9, t: 0, i: 184 }, D { l: 9, t: 0, i: 524 }, D { l: 140, t: 0, i: 218, }, D { l: 6, t: 0, i: 1816, }, D { l: 10, t: 0, i: 871, }, D { l: 12, t: 0, i: 769, }, D { l: 140, t: 0, i: 785, }, D { l: 132, t: 11, i: 630, }, D { l: 7, t: 11, i: 33 }, D { l: 7, t: 11, i: 120, }, D { l: 8, t: 11, i: 489, }, D { l: 9, t: 11, i: 319, }, D { l: 10, t: 11, i: 820, }, D { l: 11, t: 11, i: 1004, }, D { l: 12, t: 11, i: 379, }, D { l: 13, t: 11, i: 117, }, D { l: 13, t: 11, i: 412, }, D { l: 14, t: 11, i: 25, }, D { l: 15, t: 11, i: 52, }, D { l: 15, t: 11, i: 161, }, D { l: 16, t: 11, i: 47, }, D { l: 149, t: 11, i: 2, }, D { l: 6, t: 0, i: 133 }, D { l: 8, t: 0, i: 413 }, D { l: 9, t: 0, i: 353 }, D { l: 139, t: 0, i: 993, }, D { l: 145, t: 10, i: 19, }, D { l: 4, t: 11, i: 937, }, D { l: 133, t: 11, i: 801, }, D { l: 134, t: 0, i: 978, }, D { l: 6, t: 0, i: 93 }, D { l: 6, t: 0, i: 1508, }, D { l: 7, t: 0, i: 1422, }, D { l: 7, t: 0, i: 1851, }, D { l: 8, t: 0, i: 673 }, D { l: 9, t: 0, i: 529 }, D { l: 140, t: 0, i: 43, }, D { l: 6, t: 0, i: 317 }, D { l: 10, t: 0, i: 512, }, D { l: 4, t: 10, i: 737, }, D { l: 11, t: 10, i: 294, }, D { l: 12, t: 10, i: 60, }, D { l: 12, t: 10, i: 437, }, D { l: 13, t: 10, i: 64, }, D { l: 13, t: 10, i: 380, }, D { l: 142, t: 10, i: 430, }, D { l: 9, t: 0, i: 371 }, D { l: 7, t: 11, i: 1591, }, D { l: 144, t: 11, i: 43, }, D { l: 6, t: 10, i: 1758, }, D { l: 8, t: 10, i: 520, }, D { l: 9, t: 10, i: 345, }, D { l: 9, t: 10, i: 403, }, D { l: 142, t: 10, i: 350, }, D { l: 5, t: 0, i: 526 }, D { l: 10, t: 10, i: 242, }, D { l: 138, t: 10, i: 579, }, D { l: 9, t: 0, i: 25 }, D { l: 10, t: 0, i: 467, }, D { l: 138, t: 0, i: 559, }, D { l: 5, t: 10, i: 139, }, D { l: 7, t: 10, i: 1168, }, D { l: 138, t: 10, i: 539, }, D { l: 4, t: 0, i: 335 }, D { l: 135, t: 0, i: 942, }, D { l: 140, t: 0, i: 754, }, D { l: 132, t: 11, i: 365, }, D { l: 11, t: 0, i: 182, }, D { l: 142, t: 0, i: 195, }, D { l: 142, t: 11, i: 29, }, D { l: 5, t: 11, i: 7 }, D { l: 139, t: 11, i: 774, }, D { l: 4, t: 11, i: 746, }, D { l: 135, t: 11, i: 1090, }, D { l: 8, t: 0, i: 39 }, D { l: 10, t: 0, i: 773, }, D { l: 11, t: 0, i: 84 }, D { l: 12, t: 0, i: 205, }, D { l: 142, t: 0, i: 1 }, D { l: 5, t: 0, i: 601 }, D { l: 5, t: 0, i: 870 }, D { l: 5, t: 11, i: 360, }, D { l: 136, t: 11, i: 237, }, D { l: 132, t: 0, i: 181, }, D { l: 136, t: 0, i: 370, }, D { l: 134, t: 0, i: 1652, }, D { l: 8, t: 0, i: 358 }, D { l: 4, t: 10, i: 107, }, D { l: 7, t: 10, i: 613, }, D { l: 8, t: 10, i: 439, }, D { l: 8, t: 10, i: 504, }, D { l: 9, t: 10, i: 501, }, D { l: 10, t: 10, i: 383, }, D { l: 139, t: 10, i: 477, }, D { l: 132, t: 10, i: 229, }, D { l: 137, t: 11, i: 785, }, D { l: 4, t: 0, i: 97 }, D { l: 5, t: 0, i: 147 }, D { l: 6, t: 0, i: 286 }, D { l: 7, t: 0, i: 1362, }, D { l: 141, t: 0, i: 176, }, D { l: 6, t: 0, i: 537 }, D { l: 7, t: 0, i: 788 }, D { l: 7, t: 0, i: 1816, }, D { l: 132, t: 10, i: 903, }, D { l: 140, t: 10, i: 71, }, D { l: 6, t: 0, i: 743 }, D { l: 134, t: 0, i: 1223, }, D { l: 6, t: 0, i: 375 }, D { l: 7, t: 0, i: 169 }, D { l: 7, t: 0, i: 254 }, D { l: 8, t: 0, i: 780 }, D { l: 135, t: 11, i: 1493, }, D { l: 7, t: 0, i: 1714, }, D { l: 4, t: 10, i: 47 }, D { l: 6, t: 10, i: 373, }, D { l: 7, t: 10, i: 452, }, D { l: 7, t: 10, i: 543, }, D { l: 7, t: 10, i: 1856, }, D { l: 9, t: 10, i: 6 }, D { l: 11, t: 10, i: 257, }, D { l: 139, t: 10, i: 391, }, D { l: 6, t: 0, i: 896 }, D { l: 136, t: 0, i: 1003, }, D { l: 135, t: 0, i: 1447, }, D { l: 137, t: 11, i: 341, }, D { l: 5, t: 10, i: 980, }, D { l: 134, t: 10, i: 1754, }, D { l: 145, t: 11, i: 22, }, D { l: 4, t: 11, i: 277, }, D { l: 5, t: 11, i: 608, }, D { l: 6, t: 11, i: 493, }, D { l: 7, t: 11, i: 457, }, D { l: 140, t: 11, i: 384, }, D { l: 7, t: 10, i: 536, }, D { l: 7, t: 10, i: 1331, }, D { l: 136, t: 10, i: 143, }, D { l: 140, t: 0, i: 744, }, D { l: 7, t: 11, i: 27 }, D { l: 135, t: 11, i: 316, }, D { l: 18, t: 0, i: 126, }, D { l: 5, t: 10, i: 19 }, D { l: 134, t: 10, i: 533, }, D { l: 4, t: 0, i: 788 }, D { l: 11, t: 0, i: 41 }, D { l: 5, t: 11, i: 552, }, D { l: 5, t: 11, i: 586, }, D { l: 5, t: 11, i: 676, }, D { l: 6, t: 11, i: 448, }, D { l: 8, t: 11, i: 244, }, D { l: 11, t: 11, i: 1 }, D { l: 11, t: 11, i: 41, }, D { l: 13, t: 11, i: 3 }, D { l: 16, t: 11, i: 54, }, D { l: 17, t: 11, i: 4 }, D { l: 146, t: 11, i: 13, }, D { l: 4, t: 0, i: 985 }, D { l: 6, t: 0, i: 1801, }, D { l: 4, t: 11, i: 401, }, D { l: 137, t: 11, i: 264, }, D { l: 5, t: 10, i: 395, }, D { l: 5, t: 10, i: 951, }, D { l: 134, t: 10, i: 1776, }, D { l: 5, t: 0, i: 629 }, D { l: 135, t: 0, i: 1549, }, D { l: 11, t: 10, i: 663, }, D { l: 12, t: 10, i: 210, }, D { l: 13, t: 10, i: 166, }, D { l: 13, t: 10, i: 310, }, D { l: 14, t: 10, i: 373, }, D { l: 147, t: 10, i: 43, }, D { l: 9, t: 11, i: 543, }, D { l: 10, t: 11, i: 524, }, D { l: 11, t: 11, i: 30, }, D { l: 12, t: 11, i: 524, }, D { l: 14, t: 11, i: 315, }, D { l: 16, t: 11, i: 18, }, D { l: 20, t: 11, i: 26, }, D { l: 148, t: 11, i: 65, }, D { l: 4, t: 11, i: 205, }, D { l: 5, t: 11, i: 623, }, D { l: 7, t: 11, i: 104, }, D { l: 136, t: 11, i: 519, }, D { l: 5, t: 0, i: 293 }, D { l: 134, t: 0, i: 601, }, D { l: 7, t: 11, i: 579, }, D { l: 9, t: 11, i: 41 }, D { l: 9, t: 11, i: 244, }, D { l: 9, t: 11, i: 669, }, D { l: 10, t: 11, i: 5 }, D { l: 11, t: 11, i: 861, }, D { l: 11, t: 11, i: 951, }, D { l: 139, t: 11, i: 980, }, D { l: 132, t: 11, i: 717, }, D { l: 132, t: 10, i: 695, }, D { l: 7, t: 10, i: 497, }, D { l: 9, t: 10, i: 387, }, D { l: 147, t: 10, i: 81, }, D { l: 132, t: 0, i: 420, }, D { l: 142, t: 0, i: 37, }, D { l: 6, t: 0, i: 1134, }, D { l: 6, t: 0, i: 1900, }, D { l: 12, t: 0, i: 830, }, D { l: 12, t: 0, i: 878, }, D { l: 12, t: 0, i: 894, }, D { l: 15, t: 0, i: 221, }, D { l: 143, t: 0, i: 245, }, D { l: 132, t: 11, i: 489, }, D { l: 7, t: 0, i: 1570, }, D { l: 140, t: 0, i: 542, }, D { l: 8, t: 0, i: 933 }, D { l: 136, t: 0, i: 957, }, D { l: 6, t: 0, i: 1371, }, D { l: 7, t: 0, i: 31 }, D { l: 8, t: 0, i: 373 }, D { l: 5, t: 10, i: 284, }, D { l: 6, t: 10, i: 49 }, D { l: 6, t: 10, i: 350, }, D { l: 7, t: 10, i: 377, }, D { l: 7, t: 10, i: 1693, }, D { l: 8, t: 10, i: 678, }, D { l: 9, t: 10, i: 161, }, D { l: 9, t: 10, i: 585, }, D { l: 9, t: 10, i: 671, }, D { l: 9, t: 10, i: 839, }, D { l: 11, t: 10, i: 912, }, D { l: 141, t: 10, i: 427, }, D { l: 135, t: 11, i: 892, }, D { l: 4, t: 0, i: 325 }, D { l: 138, t: 0, i: 125, }, D { l: 139, t: 11, i: 47, }, D { l: 132, t: 10, i: 597, }, D { l: 138, t: 0, i: 323, }, D { l: 6, t: 0, i: 1547, }, D { l: 7, t: 11, i: 1605, }, D { l: 9, t: 11, i: 473, }, D { l: 11, t: 11, i: 962, }, D { l: 146, t: 11, i: 139, }, D { l: 139, t: 10, i: 908, }, D { l: 7, t: 11, i: 819, }, D { l: 9, t: 11, i: 26 }, D { l: 9, t: 11, i: 392, }, D { l: 10, t: 11, i: 152, }, D { l: 10, t: 11, i: 226, }, D { l: 11, t: 11, i: 19, }, D { l: 12, t: 11, i: 276, }, D { l: 12, t: 11, i: 426, }, D { l: 12, t: 11, i: 589, }, D { l: 13, t: 11, i: 460, }, D { l: 15, t: 11, i: 97, }, D { l: 19, t: 11, i: 48, }, D { l: 148, t: 11, i: 104, }, D { l: 135, t: 11, i: 51, }, D { l: 4, t: 0, i: 718 }, D { l: 135, t: 0, i: 1216, }, D { l: 6, t: 0, i: 1896, }, D { l: 6, t: 0, i: 1905, }, D { l: 6, t: 0, i: 1912, }, D { l: 9, t: 0, i: 947 }, D { l: 9, t: 0, i: 974 }, D { l: 12, t: 0, i: 809, }, D { l: 12, t: 0, i: 850, }, D { l: 12, t: 0, i: 858, }, D { l: 12, t: 0, i: 874, }, D { l: 12, t: 0, i: 887, }, D { l: 12, t: 0, i: 904, }, D { l: 12, t: 0, i: 929, }, D { l: 12, t: 0, i: 948, }, D { l: 12, t: 0, i: 952, }, D { l: 15, t: 0, i: 198, }, D { l: 15, t: 0, i: 206, }, D { l: 15, t: 0, i: 220, }, D { l: 15, t: 0, i: 227, }, D { l: 15, t: 0, i: 247, }, D { l: 18, t: 0, i: 188, }, D { l: 21, t: 0, i: 48 }, D { l: 21, t: 0, i: 50 }, D { l: 24, t: 0, i: 25 }, D { l: 24, t: 0, i: 29 }, D { l: 7, t: 11, i: 761, }, D { l: 7, t: 11, i: 1051, }, D { l: 137, t: 11, i: 545, }, D { l: 5, t: 0, i: 124 }, D { l: 5, t: 0, i: 144 }, D { l: 6, t: 0, i: 548 }, D { l: 7, t: 0, i: 15 }, D { l: 7, t: 0, i: 153 }, D { l: 137, t: 0, i: 629, }, D { l: 135, t: 11, i: 606, }, D { l: 135, t: 10, i: 2014, }, D { l: 7, t: 10, i: 2007, }, D { l: 9, t: 11, i: 46 }, D { l: 9, t: 10, i: 101, }, D { l: 9, t: 10, i: 450, }, D { l: 10, t: 10, i: 66, }, D { l: 10, t: 10, i: 842, }, D { l: 11, t: 10, i: 536, }, D { l: 140, t: 10, i: 587, }, D { l: 6, t: 0, i: 75 }, D { l: 7, t: 0, i: 1531, }, D { l: 8, t: 0, i: 416 }, D { l: 9, t: 0, i: 240 }, D { l: 9, t: 0, i: 275 }, D { l: 10, t: 0, i: 100, }, D { l: 11, t: 0, i: 658, }, D { l: 11, t: 0, i: 979, }, D { l: 12, t: 0, i: 86 }, D { l: 14, t: 0, i: 207, }, D { l: 15, t: 0, i: 20 }, D { l: 143, t: 0, i: 25, }, D { l: 5, t: 0, i: 141 }, D { l: 5, t: 0, i: 915 }, D { l: 6, t: 0, i: 1783, }, D { l: 7, t: 0, i: 211 }, D { l: 7, t: 0, i: 698 }, D { l: 7, t: 0, i: 1353, }, D { l: 9, t: 0, i: 83 }, D { l: 9, t: 0, i: 281 }, D { l: 10, t: 0, i: 376, }, D { l: 10, t: 0, i: 431, }, D { l: 11, t: 0, i: 543, }, D { l: 12, t: 0, i: 664, }, D { l: 13, t: 0, i: 280, }, D { l: 13, t: 0, i: 428, }, D { l: 14, t: 0, i: 61 }, D { l: 14, t: 0, i: 128, }, D { l: 17, t: 0, i: 52 }, D { l: 145, t: 0, i: 81, }, D { l: 132, t: 11, i: 674, }, D { l: 135, t: 0, i: 533, }, D { l: 149, t: 0, i: 6 }, D { l: 132, t: 11, i: 770, }, D { l: 133, t: 0, i: 538, }, D { l: 5, t: 11, i: 79 }, D { l: 7, t: 11, i: 1027, }, D { l: 7, t: 11, i: 1477, }, D { l: 139, t: 11, i: 52, }, D { l: 139, t: 10, i: 62, }, D { l: 4, t: 0, i: 338 }, D { l: 133, t: 0, i: 400, }, D { l: 5, t: 11, i: 789, }, D { l: 134, t: 11, i: 195, }, D { l: 4, t: 11, i: 251, }, D { l: 4, t: 11, i: 688, }, D { l: 7, t: 11, i: 513, }, D { l: 7, t: 11, i: 1284, }, D { l: 9, t: 11, i: 87 }, D { l: 138, t: 11, i: 365, }, D { l: 134, t: 10, i: 1766, }, D { l: 6, t: 0, i: 0 }, D { l: 7, t: 0, i: 84 }, D { l: 11, t: 0, i: 895, }, D { l: 145, t: 0, i: 11, }, D { l: 139, t: 0, i: 892, }, D { l: 4, t: 0, i: 221 }, D { l: 5, t: 0, i: 659 }, D { l: 7, t: 0, i: 697 }, D { l: 7, t: 0, i: 1211, }, D { l: 138, t: 0, i: 284, }, D { l: 133, t: 0, i: 989, }, D { l: 133, t: 11, i: 889, }, D { l: 4, t: 11, i: 160, }, D { l: 5, t: 11, i: 330, }, D { l: 7, t: 11, i: 1434, }, D { l: 136, t: 11, i: 174, }, D { l: 6, t: 10, i: 1665, }, D { l: 7, t: 10, i: 256, }, D { l: 7, t: 10, i: 1388, }, D { l: 10, t: 10, i: 499, }, D { l: 139, t: 10, i: 670, }, D { l: 7, t: 0, i: 848 }, D { l: 4, t: 10, i: 22 }, D { l: 5, t: 10, i: 10 }, D { l: 136, t: 10, i: 97, }, D { l: 138, t: 0, i: 507, }, D { l: 133, t: 10, i: 481, }, D { l: 4, t: 0, i: 188 }, D { l: 135, t: 0, i: 805, }, D { l: 5, t: 0, i: 884 }, D { l: 6, t: 0, i: 732 }, D { l: 139, t: 0, i: 991, }, D { l: 135, t: 11, i: 968, }, D { l: 11, t: 11, i: 636, }, D { l: 15, t: 11, i: 145, }, D { l: 17, t: 11, i: 34, }, D { l: 19, t: 11, i: 50, }, D { l: 151, t: 11, i: 20, }, D { l: 7, t: 0, i: 959 }, D { l: 16, t: 0, i: 60 }, D { l: 6, t: 10, i: 134, }, D { l: 7, t: 10, i: 437, }, D { l: 9, t: 10, i: 37 }, D { l: 14, t: 10, i: 285, }, D { l: 142, t: 10, i: 371, }, D { l: 7, t: 10, i: 486, }, D { l: 8, t: 10, i: 155, }, D { l: 11, t: 10, i: 93, }, D { l: 140, t: 10, i: 164, }, D { l: 134, t: 0, i: 1653, }, D { l: 7, t: 0, i: 337 }, D { l: 133, t: 10, i: 591, }, D { l: 6, t: 0, i: 1989, }, D { l: 8, t: 0, i: 922 }, D { l: 8, t: 0, i: 978 }, D { l: 133, t: 11, i: 374, }, D { l: 132, t: 0, i: 638, }, D { l: 138, t: 0, i: 500, }, D { l: 133, t: 11, i: 731, }, D { l: 5, t: 10, i: 380, }, D { l: 5, t: 10, i: 650, }, D { l: 136, t: 10, i: 310, }, D { l: 138, t: 11, i: 381, }, D { l: 4, t: 10, i: 364, }, D { l: 7, t: 10, i: 1156, }, D { l: 7, t: 10, i: 1187, }, D { l: 137, t: 10, i: 409, }, D { l: 137, t: 11, i: 224, }, D { l: 140, t: 0, i: 166, }, D { l: 134, t: 10, i: 482, }, D { l: 4, t: 11, i: 626, }, D { l: 5, t: 11, i: 642, }, D { l: 6, t: 11, i: 425, }, D { l: 10, t: 11, i: 202, }, D { l: 139, t: 11, i: 141, }, D { l: 4, t: 10, i: 781, }, D { l: 6, t: 10, i: 487, }, D { l: 7, t: 10, i: 926, }, D { l: 8, t: 10, i: 263, }, D { l: 139, t: 10, i: 500, }, D { l: 135, t: 0, i: 418, }, D { l: 4, t: 10, i: 94 }, D { l: 135, t: 10, i: 1265, }, D { l: 136, t: 0, i: 760, }, D { l: 132, t: 10, i: 417, }, D { l: 136, t: 11, i: 835, }, D { l: 5, t: 10, i: 348, }, D { l: 134, t: 10, i: 522, }, D { l: 6, t: 0, i: 1277, }, D { l: 134, t: 0, i: 1538, }, D { l: 139, t: 11, i: 541, }, D { l: 135, t: 11, i: 1597, }, D { l: 5, t: 11, i: 384, }, D { l: 8, t: 11, i: 455, }, D { l: 140, t: 11, i: 48, }, D { l: 136, t: 0, i: 770, }, D { l: 5, t: 11, i: 264, }, D { l: 134, t: 11, i: 184, }, D { l: 4, t: 0, i: 89 }, D { l: 5, t: 0, i: 489 }, D { l: 6, t: 0, i: 315 }, D { l: 7, t: 0, i: 553 }, D { l: 7, t: 0, i: 1745, }, D { l: 138, t: 0, i: 243, }, D { l: 4, t: 10, i: 408, }, D { l: 4, t: 10, i: 741, }, D { l: 135, t: 10, i: 500, }, D { l: 134, t: 0, i: 1396, }, D { l: 133, t: 0, i: 560, }, D { l: 6, t: 0, i: 1658, }, D { l: 9, t: 0, i: 3 }, D { l: 10, t: 0, i: 154, }, D { l: 11, t: 0, i: 641, }, D { l: 13, t: 0, i: 85 }, D { l: 13, t: 0, i: 201, }, D { l: 141, t: 0, i: 346, }, D { l: 135, t: 11, i: 1595, }, D { l: 5, t: 11, i: 633, }, D { l: 6, t: 11, i: 28 }, D { l: 7, t: 11, i: 219, }, D { l: 135, t: 11, i: 1323, }, D { l: 9, t: 11, i: 769, }, D { l: 140, t: 11, i: 185, }, D { l: 135, t: 11, i: 785, }, D { l: 7, t: 11, i: 359, }, D { l: 8, t: 11, i: 243, }, D { l: 140, t: 11, i: 175, }, D { l: 138, t: 0, i: 586, }, D { l: 7, t: 0, i: 1271, }, D { l: 134, t: 10, i: 73, }, D { l: 132, t: 11, i: 105, }, D { l: 4, t: 0, i: 166 }, D { l: 5, t: 0, i: 505 }, D { l: 134, t: 0, i: 1670, }, D { l: 133, t: 10, i: 576, }, D { l: 4, t: 11, i: 324, }, D { l: 138, t: 11, i: 104, }, D { l: 142, t: 10, i: 231, }, D { l: 6, t: 0, i: 637 }, D { l: 7, t: 10, i: 1264, }, D { l: 7, t: 10, i: 1678, }, D { l: 11, t: 10, i: 945, }, D { l: 12, t: 10, i: 341, }, D { l: 12, t: 10, i: 471, }, D { l: 12, t: 10, i: 569, }, D { l: 23, t: 11, i: 21, }, D { l: 151, t: 11, i: 23, }, D { l: 8, t: 11, i: 559, }, D { l: 141, t: 11, i: 109, }, D { l: 134, t: 0, i: 1947, }, D { l: 7, t: 0, i: 445 }, D { l: 8, t: 0, i: 307 }, D { l: 8, t: 0, i: 704 }, D { l: 10, t: 0, i: 41 }, D { l: 10, t: 0, i: 439, }, D { l: 11, t: 0, i: 237, }, D { l: 11, t: 0, i: 622, }, D { l: 140, t: 0, i: 201, }, D { l: 135, t: 11, i: 963, }, D { l: 135, t: 0, i: 1977, }, D { l: 4, t: 0, i: 189 }, D { l: 5, t: 0, i: 713 }, D { l: 136, t: 0, i: 57, }, D { l: 138, t: 0, i: 371, }, D { l: 135, t: 10, i: 538, }, D { l: 132, t: 0, i: 552, }, D { l: 6, t: 0, i: 883 }, D { l: 133, t: 10, i: 413, }, D { l: 6, t: 0, i: 923 }, D { l: 132, t: 11, i: 758, }, D { l: 138, t: 11, i: 215, }, D { l: 136, t: 10, i: 495, }, D { l: 7, t: 10, i: 54 }, D { l: 8, t: 10, i: 312, }, D { l: 10, t: 10, i: 191, }, D { l: 10, t: 10, i: 614, }, D { l: 140, t: 10, i: 567, }, D { l: 7, t: 11, i: 351, }, D { l: 139, t: 11, i: 128, }, D { l: 7, t: 0, i: 875 }, D { l: 6, t: 10, i: 468, }, D { l: 7, t: 10, i: 1478, }, D { l: 8, t: 10, i: 530, }, D { l: 142, t: 10, i: 290, }, D { l: 135, t: 0, i: 1788, }, D { l: 17, t: 0, i: 49 }, D { l: 133, t: 11, i: 918, }, D { l: 12, t: 11, i: 398, }, D { l: 20, t: 11, i: 39, }, D { l: 21, t: 11, i: 11, }, D { l: 150, t: 11, i: 41, }, D { l: 10, t: 0, i: 661, }, D { l: 6, t: 10, i: 484, }, D { l: 135, t: 10, i: 822, }, D { l: 135, t: 0, i: 1945, }, D { l: 134, t: 0, i: 794, }, D { l: 137, t: 10, i: 900, }, D { l: 135, t: 10, i: 1335, }, D { l: 6, t: 10, i: 1724, }, D { l: 135, t: 10, i: 2022, }, D { l: 132, t: 11, i: 340, }, D { l: 134, t: 0, i: 1135, }, D { l: 4, t: 0, i: 784 }, D { l: 133, t: 0, i: 745, }, D { l: 5, t: 0, i: 84 }, D { l: 134, t: 0, i: 163, }, D { l: 133, t: 0, i: 410, }, D { l: 4, t: 0, i: 976 }, D { l: 5, t: 11, i: 985, }, D { l: 7, t: 11, i: 509, }, D { l: 7, t: 11, i: 529, }, D { l: 145, t: 11, i: 96, }, D { l: 132, t: 10, i: 474, }, D { l: 134, t: 0, i: 703, }, D { l: 135, t: 11, i: 1919, }, D { l: 5, t: 0, i: 322 }, D { l: 8, t: 0, i: 186 }, D { l: 9, t: 0, i: 262 }, D { l: 10, t: 0, i: 187, }, D { l: 142, t: 0, i: 208, }, D { l: 135, t: 10, i: 1504, }, D { l: 133, t: 0, i: 227, }, D { l: 9, t: 0, i: 560 }, D { l: 13, t: 0, i: 208, }, D { l: 133, t: 10, i: 305, }, D { l: 132, t: 11, i: 247, }, D { l: 7, t: 0, i: 1395, }, D { l: 8, t: 0, i: 486 }, D { l: 9, t: 0, i: 236 }, D { l: 9, t: 0, i: 878 }, D { l: 10, t: 0, i: 218, }, D { l: 11, t: 0, i: 95 }, D { l: 19, t: 0, i: 17 }, D { l: 147, t: 0, i: 31, }, D { l: 7, t: 0, i: 2043, }, D { l: 8, t: 0, i: 672 }, D { l: 141, t: 0, i: 448, }, D { l: 4, t: 11, i: 184, }, D { l: 5, t: 11, i: 390, }, D { l: 6, t: 11, i: 337, }, D { l: 7, t: 11, i: 23 }, D { l: 7, t: 11, i: 494, }, D { l: 7, t: 11, i: 618, }, D { l: 7, t: 11, i: 1456, }, D { l: 8, t: 11, i: 27 }, D { l: 8, t: 11, i: 599, }, D { l: 10, t: 11, i: 153, }, D { l: 139, t: 11, i: 710, }, D { l: 135, t: 0, i: 466, }, D { l: 135, t: 10, i: 1236, }, D { l: 6, t: 0, i: 167 }, D { l: 7, t: 0, i: 186 }, D { l: 7, t: 0, i: 656 }, D { l: 10, t: 0, i: 643, }, D { l: 4, t: 10, i: 480, }, D { l: 6, t: 10, i: 302, }, D { l: 6, t: 10, i: 1642, }, D { l: 7, t: 10, i: 837, }, D { l: 7, t: 10, i: 1547, }, D { l: 7, t: 10, i: 1657, }, D { l: 8, t: 10, i: 429, }, D { l: 9, t: 10, i: 228, }, D { l: 13, t: 10, i: 289, }, D { l: 13, t: 10, i: 343, }, D { l: 147, t: 10, i: 101, }, D { l: 134, t: 0, i: 1428, }, D { l: 134, t: 0, i: 1440, }, D { l: 5, t: 0, i: 412 }, D { l: 7, t: 10, i: 278, }, D { l: 10, t: 10, i: 739, }, D { l: 11, t: 10, i: 708, }, D { l: 141, t: 10, i: 348, }, D { l: 134, t: 0, i: 1118, }, D { l: 136, t: 0, i: 562, }, D { l: 148, t: 11, i: 46, }, D { l: 9, t: 0, i: 316 }, D { l: 139, t: 0, i: 256, }, D { l: 134, t: 0, i: 1771, }, D { l: 135, t: 0, i: 1190, }, D { l: 137, t: 0, i: 132, }, D { l: 10, t: 11, i: 227, }, D { l: 11, t: 11, i: 497, }, D { l: 11, t: 11, i: 709, }, D { l: 140, t: 11, i: 415, }, D { l: 143, t: 0, i: 66, }, D { l: 6, t: 11, i: 360, }, D { l: 7, t: 11, i: 1664, }, D { l: 136, t: 11, i: 478, }, D { l: 144, t: 10, i: 28, }, D { l: 4, t: 0, i: 317 }, D { l: 135, t: 0, i: 1279, }, D { l: 5, t: 0, i: 63 }, D { l: 133, t: 0, i: 509, }, D { l: 136, t: 11, i: 699, }, D { l: 145, t: 10, i: 36, }, D { l: 134, t: 0, i: 1475, }, D { l: 11, t: 11, i: 343, }, D { l: 142, t: 11, i: 127, }, D { l: 132, t: 11, i: 739, }, D { l: 132, t: 0, i: 288, }, D { l: 135, t: 11, i: 1757, }, D { l: 8, t: 0, i: 89 }, D { l: 8, t: 0, i: 620 }, D { l: 9, t: 0, i: 608 }, D { l: 11, t: 0, i: 628, }, D { l: 12, t: 0, i: 322, }, D { l: 143, t: 0, i: 124, }, D { l: 134, t: 0, i: 1225, }, D { l: 7, t: 0, i: 1189, }, D { l: 4, t: 11, i: 67 }, D { l: 5, t: 11, i: 422, }, D { l: 6, t: 10, i: 363, }, D { l: 7, t: 11, i: 1037, }, D { l: 7, t: 11, i: 1289, }, D { l: 7, t: 11, i: 1555, }, D { l: 7, t: 10, i: 1955, }, D { l: 8, t: 10, i: 725, }, D { l: 9, t: 11, i: 741, }, D { l: 145, t: 11, i: 108, }, D { l: 134, t: 0, i: 1468, }, D { l: 6, t: 0, i: 689 }, D { l: 134, t: 0, i: 1451, }, D { l: 138, t: 0, i: 120, }, D { l: 151, t: 0, i: 1 }, D { l: 137, t: 10, i: 805, }, D { l: 142, t: 0, i: 329, }, D { l: 5, t: 10, i: 813, }, D { l: 135, t: 10, i: 2046, }, D { l: 135, t: 0, i: 226, }, D { l: 138, t: 11, i: 96, }, D { l: 7, t: 0, i: 1855, }, D { l: 5, t: 10, i: 712, }, D { l: 11, t: 10, i: 17, }, D { l: 13, t: 10, i: 321, }, D { l: 144, t: 10, i: 67, }, D { l: 9, t: 0, i: 461 }, D { l: 6, t: 10, i: 320, }, D { l: 7, t: 10, i: 781, }, D { l: 7, t: 10, i: 1921, }, D { l: 9, t: 10, i: 55 }, D { l: 10, t: 10, i: 186, }, D { l: 10, t: 10, i: 273, }, D { l: 10, t: 10, i: 664, }, D { l: 10, t: 10, i: 801, }, D { l: 11, t: 10, i: 996, }, D { l: 11, t: 10, i: 997, }, D { l: 13, t: 10, i: 157, }, D { l: 142, t: 10, i: 170, }, D { l: 8, t: 11, i: 203, }, D { l: 8, t: 10, i: 271, }, D { l: 11, t: 11, i: 823, }, D { l: 11, t: 11, i: 846, }, D { l: 12, t: 11, i: 482, }, D { l: 13, t: 11, i: 133, }, D { l: 13, t: 11, i: 277, }, D { l: 13, t: 11, i: 302, }, D { l: 13, t: 11, i: 464, }, D { l: 14, t: 11, i: 205, }, D { l: 142, t: 11, i: 221, }, D { l: 135, t: 0, i: 1346, }, D { l: 4, t: 11, i: 449, }, D { l: 133, t: 11, i: 718, }, D { l: 134, t: 0, i: 85, }, D { l: 14, t: 0, i: 299, }, D { l: 7, t: 10, i: 103, }, D { l: 7, t: 10, i: 863, }, D { l: 11, t: 10, i: 184, }, D { l: 145, t: 10, i: 62, }, D { l: 4, t: 11, i: 355, }, D { l: 6, t: 11, i: 311, }, D { l: 9, t: 11, i: 256, }, D { l: 138, t: 11, i: 404, }, D { l: 137, t: 10, i: 659, }, D { l: 138, t: 11, i: 758, }, D { l: 133, t: 11, i: 827, }, D { l: 5, t: 11, i: 64 }, D { l: 140, t: 11, i: 581, }, D { l: 134, t: 0, i: 1171, }, D { l: 4, t: 11, i: 442, }, D { l: 7, t: 11, i: 1047, }, D { l: 7, t: 11, i: 1352, }, D { l: 135, t: 11, i: 1643, }, D { l: 132, t: 0, i: 980, }, D { l: 5, t: 11, i: 977, }, D { l: 6, t: 11, i: 288, }, D { l: 7, t: 11, i: 528, }, D { l: 135, t: 11, i: 1065, }, D { l: 5, t: 0, i: 279 }, D { l: 6, t: 0, i: 235 }, D { l: 7, t: 0, i: 468 }, D { l: 8, t: 0, i: 446 }, D { l: 9, t: 0, i: 637 }, D { l: 10, t: 0, i: 717, }, D { l: 11, t: 0, i: 738, }, D { l: 140, t: 0, i: 514, }, D { l: 132, t: 0, i: 293, }, D { l: 11, t: 10, i: 337, }, D { l: 142, t: 10, i: 303, }, D { l: 136, t: 11, i: 285, }, D { l: 5, t: 0, i: 17 }, D { l: 6, t: 0, i: 371 }, D { l: 9, t: 0, i: 528 }, D { l: 12, t: 0, i: 364, }, D { l: 132, t: 11, i: 254, }, D { l: 5, t: 10, i: 77 }, D { l: 7, t: 10, i: 1455, }, D { l: 10, t: 10, i: 843, }, D { l: 147, t: 10, i: 73, }, D { l: 150, t: 0, i: 5 }, D { l: 132, t: 10, i: 458, }, D { l: 6, t: 11, i: 12 }, D { l: 7, t: 11, i: 1219, }, D { l: 145, t: 11, i: 73, }, D { l: 135, t: 10, i: 1420, }, D { l: 6, t: 10, i: 109, }, D { l: 138, t: 10, i: 382, }, D { l: 135, t: 11, i: 125, }, D { l: 6, t: 10, i: 330, }, D { l: 7, t: 10, i: 1084, }, D { l: 139, t: 10, i: 142, }, D { l: 6, t: 11, i: 369, }, D { l: 6, t: 11, i: 502, }, D { l: 7, t: 11, i: 1036, }, D { l: 8, t: 11, i: 348, }, D { l: 9, t: 11, i: 452, }, D { l: 10, t: 11, i: 26, }, D { l: 11, t: 11, i: 224, }, D { l: 11, t: 11, i: 387, }, D { l: 11, t: 11, i: 772, }, D { l: 12, t: 11, i: 95, }, D { l: 12, t: 11, i: 629, }, D { l: 13, t: 11, i: 195, }, D { l: 13, t: 11, i: 207, }, D { l: 13, t: 11, i: 241, }, D { l: 14, t: 11, i: 260, }, D { l: 14, t: 11, i: 270, }, D { l: 143, t: 11, i: 140, }, D { l: 132, t: 11, i: 269, }, D { l: 5, t: 11, i: 480, }, D { l: 7, t: 11, i: 532, }, D { l: 7, t: 11, i: 1197, }, D { l: 7, t: 11, i: 1358, }, D { l: 8, t: 11, i: 291, }, D { l: 11, t: 11, i: 349, }, D { l: 142, t: 11, i: 396, }, D { l: 150, t: 0, i: 48, }, D { l: 10, t: 0, i: 601, }, D { l: 13, t: 0, i: 353, }, D { l: 141, t: 0, i: 376, }, D { l: 5, t: 0, i: 779 }, D { l: 5, t: 0, i: 807 }, D { l: 6, t: 0, i: 1655, }, D { l: 134, t: 0, i: 1676, }, D { l: 142, t: 11, i: 223, }, D { l: 4, t: 0, i: 196 }, D { l: 5, t: 0, i: 558 }, D { l: 133, t: 0, i: 949, }, D { l: 148, t: 11, i: 15, }, D { l: 135, t: 11, i: 1764, }, D { l: 134, t: 0, i: 1322, }, D { l: 132, t: 0, i: 752, }, D { l: 139, t: 0, i: 737, }, D { l: 135, t: 11, i: 657, }, D { l: 136, t: 11, i: 533, }, D { l: 135, t: 0, i: 412, }, D { l: 4, t: 0, i: 227 }, D { l: 5, t: 0, i: 159 }, D { l: 5, t: 0, i: 409 }, D { l: 7, t: 0, i: 80 }, D { l: 8, t: 0, i: 556 }, D { l: 10, t: 0, i: 479, }, D { l: 12, t: 0, i: 418, }, D { l: 14, t: 0, i: 50 }, D { l: 14, t: 0, i: 123, }, D { l: 14, t: 0, i: 192, }, D { l: 14, t: 0, i: 249, }, D { l: 14, t: 0, i: 295, }, D { l: 143, t: 0, i: 27, }, D { l: 7, t: 0, i: 1470, }, D { l: 8, t: 0, i: 66 }, D { l: 8, t: 0, i: 137 }, D { l: 8, t: 0, i: 761 }, D { l: 9, t: 0, i: 638 }, D { l: 11, t: 0, i: 80 }, D { l: 11, t: 0, i: 212, }, D { l: 11, t: 0, i: 368, }, D { l: 11, t: 0, i: 418, }, D { l: 12, t: 0, i: 8 }, D { l: 13, t: 0, i: 15 }, D { l: 16, t: 0, i: 61 }, D { l: 17, t: 0, i: 59 }, D { l: 19, t: 0, i: 28 }, D { l: 148, t: 0, i: 84, }, D { l: 135, t: 10, i: 1985, }, D { l: 4, t: 11, i: 211, }, D { l: 4, t: 11, i: 332, }, D { l: 5, t: 11, i: 335, }, D { l: 6, t: 11, i: 238, }, D { l: 7, t: 11, i: 269, }, D { l: 7, t: 11, i: 811, }, D { l: 7, t: 11, i: 1797, }, D { l: 8, t: 10, i: 122, }, D { l: 8, t: 11, i: 836, }, D { l: 9, t: 11, i: 507, }, D { l: 141, t: 11, i: 242, }, D { l: 6, t: 0, i: 683 }, D { l: 134, t: 0, i: 1252, }, D { l: 4, t: 0, i: 873 }, D { l: 132, t: 10, i: 234, }, D { l: 134, t: 0, i: 835, }, D { l: 6, t: 0, i: 38 }, D { l: 7, t: 0, i: 1220, }, D { l: 8, t: 0, i: 185 }, D { l: 8, t: 0, i: 256 }, D { l: 9, t: 0, i: 22 }, D { l: 9, t: 0, i: 331 }, D { l: 10, t: 0, i: 738, }, D { l: 11, t: 0, i: 205, }, D { l: 11, t: 0, i: 540, }, D { l: 11, t: 0, i: 746, }, D { l: 13, t: 0, i: 465, }, D { l: 14, t: 0, i: 88 }, D { l: 142, t: 0, i: 194, }, D { l: 138, t: 0, i: 986, }, D { l: 5, t: 11, i: 1009, }, D { l: 12, t: 11, i: 582, }, D { l: 146, t: 11, i: 131, }, D { l: 4, t: 0, i: 159 }, D { l: 6, t: 0, i: 115 }, D { l: 7, t: 0, i: 252 }, D { l: 7, t: 0, i: 257 }, D { l: 7, t: 0, i: 1928, }, D { l: 8, t: 0, i: 69 }, D { l: 9, t: 0, i: 384 }, D { l: 10, t: 0, i: 91 }, D { l: 10, t: 0, i: 615, }, D { l: 12, t: 0, i: 375, }, D { l: 14, t: 0, i: 235, }, D { l: 18, t: 0, i: 117, }, D { l: 147, t: 0, i: 123, }, D { l: 133, t: 0, i: 911, }, D { l: 136, t: 0, i: 278, }, D { l: 5, t: 10, i: 430, }, D { l: 5, t: 10, i: 932, }, D { l: 6, t: 10, i: 131, }, D { l: 7, t: 10, i: 417, }, D { l: 9, t: 10, i: 522, }, D { l: 11, t: 10, i: 314, }, D { l: 141, t: 10, i: 390, }, D { l: 14, t: 10, i: 149, }, D { l: 14, t: 10, i: 399, }, D { l: 143, t: 10, i: 57, }, D { l: 4, t: 0, i: 151 }, D { l: 7, t: 0, i: 1567, }, D { l: 136, t: 0, i: 749, }, D { l: 5, t: 11, i: 228, }, D { l: 6, t: 11, i: 203, }, D { l: 7, t: 11, i: 156, }, D { l: 8, t: 11, i: 347, }, D { l: 137, t: 11, i: 265, }, D { l: 132, t: 10, i: 507, }, D { l: 10, t: 0, i: 989, }, D { l: 140, t: 0, i: 956, }, D { l: 133, t: 0, i: 990, }, D { l: 5, t: 0, i: 194 }, D { l: 6, t: 0, i: 927 }, D { l: 7, t: 0, i: 1662, }, D { l: 9, t: 0, i: 90 }, D { l: 140, t: 0, i: 564, }, D { l: 4, t: 10, i: 343, }, D { l: 133, t: 10, i: 511, }, D { l: 133, t: 0, i: 425, }, D { l: 7, t: 10, i: 455, }, D { l: 138, t: 10, i: 591, }, D { l: 4, t: 0, i: 774 }, D { l: 7, t: 11, i: 476, }, D { l: 7, t: 11, i: 1592, }, D { l: 138, t: 11, i: 87, }, D { l: 5, t: 0, i: 971 }, D { l: 135, t: 10, i: 1381, }, D { l: 5, t: 11, i: 318, }, D { l: 147, t: 11, i: 121, }, D { l: 5, t: 11, i: 291, }, D { l: 7, t: 11, i: 765, }, D { l: 9, t: 11, i: 389, }, D { l: 140, t: 11, i: 548, }, D { l: 134, t: 10, i: 575, }, D { l: 4, t: 0, i: 827 }, D { l: 12, t: 0, i: 646, }, D { l: 12, t: 0, i: 705, }, D { l: 12, t: 0, i: 712, }, D { l: 140, t: 0, i: 714, }, D { l: 139, t: 0, i: 752, }, D { l: 137, t: 0, i: 662, }, D { l: 5, t: 0, i: 72 }, D { l: 6, t: 0, i: 264 }, D { l: 7, t: 0, i: 21 }, D { l: 7, t: 0, i: 46 }, D { l: 7, t: 0, i: 2013, }, D { l: 8, t: 0, i: 215 }, D { l: 8, t: 0, i: 513 }, D { l: 10, t: 0, i: 266, }, D { l: 139, t: 0, i: 22, }, D { l: 139, t: 11, i: 522, }, D { l: 6, t: 0, i: 239 }, D { l: 7, t: 0, i: 118 }, D { l: 10, t: 0, i: 95 }, D { l: 11, t: 0, i: 603, }, D { l: 13, t: 0, i: 443, }, D { l: 14, t: 0, i: 160, }, D { l: 143, t: 0, i: 4 }, D { l: 6, t: 0, i: 431 }, D { l: 134, t: 0, i: 669, }, D { l: 7, t: 10, i: 1127, }, D { l: 7, t: 10, i: 1572, }, D { l: 10, t: 10, i: 297, }, D { l: 10, t: 10, i: 422, }, D { l: 11, t: 10, i: 764, }, D { l: 11, t: 10, i: 810, }, D { l: 12, t: 10, i: 264, }, D { l: 13, t: 10, i: 102, }, D { l: 13, t: 10, i: 300, }, D { l: 13, t: 10, i: 484, }, D { l: 14, t: 10, i: 147, }, D { l: 14, t: 10, i: 229, }, D { l: 17, t: 10, i: 71, }, D { l: 18, t: 10, i: 118, }, D { l: 147, t: 10, i: 120, }, D { l: 5, t: 0, i: 874 }, D { l: 6, t: 0, i: 1677, }, D { l: 15, t: 0, i: 0 }, D { l: 10, t: 11, i: 525, }, D { l: 139, t: 11, i: 82, }, D { l: 6, t: 0, i: 65 }, D { l: 7, t: 0, i: 939 }, D { l: 7, t: 0, i: 1172, }, D { l: 7, t: 0, i: 1671, }, D { l: 9, t: 0, i: 540 }, D { l: 10, t: 0, i: 696, }, D { l: 11, t: 0, i: 265, }, D { l: 11, t: 0, i: 732, }, D { l: 11, t: 0, i: 928, }, D { l: 11, t: 0, i: 937, }, D { l: 141, t: 0, i: 438, }, D { l: 134, t: 0, i: 1350, }, D { l: 136, t: 11, i: 547, }, D { l: 132, t: 11, i: 422, }, D { l: 5, t: 11, i: 355, }, D { l: 145, t: 11, i: 0, }, D { l: 137, t: 11, i: 905, }, D { l: 5, t: 0, i: 682 }, D { l: 135, t: 0, i: 1887, }, D { l: 132, t: 0, i: 809, }, D { l: 4, t: 0, i: 696 }, D { l: 133, t: 11, i: 865, }, D { l: 6, t: 0, i: 1074, }, D { l: 6, t: 0, i: 1472, }, D { l: 14, t: 10, i: 35, }, D { l: 142, t: 10, i: 191, }, D { l: 5, t: 11, i: 914, }, D { l: 134, t: 11, i: 1625, }, D { l: 133, t: 11, i: 234, }, D { l: 135, t: 11, i: 1383, }, D { l: 137, t: 11, i: 780, }, D { l: 132, t: 10, i: 125, }, D { l: 4, t: 0, i: 726 }, D { l: 133, t: 0, i: 630, }, D { l: 8, t: 0, i: 802 }, D { l: 136, t: 0, i: 838, }, D { l: 132, t: 10, i: 721, }, D { l: 6, t: 0, i: 1337, }, D { l: 7, t: 0, i: 776 }, D { l: 19, t: 0, i: 56 }, D { l: 136, t: 10, i: 145, }, D { l: 132, t: 0, i: 970, }, D { l: 7, t: 10, i: 792, }, D { l: 8, t: 10, i: 147, }, D { l: 10, t: 10, i: 821, }, D { l: 139, t: 10, i: 1021, }, D { l: 139, t: 10, i: 970, }, D { l: 8, t: 0, i: 940 }, D { l: 137, t: 0, i: 797, }, D { l: 135, t: 11, i: 1312, }, D { l: 9, t: 0, i: 248 }, D { l: 10, t: 0, i: 400, }, D { l: 7, t: 11, i: 816, }, D { l: 7, t: 11, i: 1241, }, D { l: 7, t: 10, i: 1999, }, D { l: 9, t: 11, i: 283, }, D { l: 9, t: 11, i: 520, }, D { l: 10, t: 11, i: 213, }, D { l: 10, t: 11, i: 307, }, D { l: 10, t: 11, i: 463, }, D { l: 10, t: 11, i: 671, }, D { l: 10, t: 11, i: 746, }, D { l: 11, t: 11, i: 401, }, D { l: 11, t: 11, i: 794, }, D { l: 12, t: 11, i: 517, }, D { l: 18, t: 11, i: 107, }, D { l: 147, t: 11, i: 115, }, D { l: 6, t: 0, i: 1951, }, D { l: 134, t: 0, i: 2040, }, D { l: 135, t: 11, i: 339, }, D { l: 13, t: 0, i: 41 }, D { l: 15, t: 0, i: 93 }, D { l: 5, t: 10, i: 168, }, D { l: 5, t: 10, i: 930, }, D { l: 8, t: 10, i: 74 }, D { l: 9, t: 10, i: 623, }, D { l: 12, t: 10, i: 500, }, D { l: 140, t: 10, i: 579, }, D { l: 6, t: 0, i: 118 }, D { l: 7, t: 0, i: 215 }, D { l: 7, t: 0, i: 1521, }, D { l: 140, t: 0, i: 11, }, D { l: 6, t: 10, i: 220, }, D { l: 7, t: 10, i: 1101, }, D { l: 141, t: 10, i: 105, }, D { l: 6, t: 11, i: 421, }, D { l: 7, t: 11, i: 61 }, D { l: 7, t: 11, i: 1540, }, D { l: 10, t: 11, i: 11, }, D { l: 138, t: 11, i: 501, }, D { l: 7, t: 0, i: 615 }, D { l: 138, t: 0, i: 251, }, D { l: 140, t: 11, i: 631, }, D { l: 135, t: 0, i: 1044, }, D { l: 6, t: 10, i: 19 }, D { l: 7, t: 10, i: 1413, }, D { l: 139, t: 10, i: 428, }, D { l: 133, t: 0, i: 225, }, D { l: 7, t: 10, i: 96 }, D { l: 8, t: 10, i: 401, }, D { l: 8, t: 10, i: 703, }, D { l: 137, t: 10, i: 896, }, D { l: 145, t: 10, i: 116, }, D { l: 6, t: 11, i: 102, }, D { l: 7, t: 11, i: 72 }, D { l: 15, t: 11, i: 142, }, D { l: 147, t: 11, i: 67, }, D { l: 7, t: 10, i: 1961, }, D { l: 7, t: 10, i: 1965, }, D { l: 8, t: 10, i: 702, }, D { l: 136, t: 10, i: 750, }, D { l: 7, t: 10, i: 2030, }, D { l: 8, t: 10, i: 150, }, D { l: 8, t: 10, i: 737, }, D { l: 12, t: 10, i: 366, }, D { l: 151, t: 11, i: 30, }, D { l: 4, t: 0, i: 370 }, D { l: 5, t: 0, i: 756 }, D { l: 7, t: 0, i: 1326, }, D { l: 135, t: 11, i: 823, }, D { l: 8, t: 10, i: 800, }, D { l: 9, t: 10, i: 148, }, D { l: 9, t: 10, i: 872, }, D { l: 9, t: 10, i: 890, }, D { l: 11, t: 10, i: 309, }, D { l: 11, t: 10, i: 1001, }, D { l: 13, t: 10, i: 267, }, D { l: 141, t: 10, i: 323, }, D { l: 6, t: 0, i: 1662, }, D { l: 7, t: 0, i: 48 }, D { l: 8, t: 0, i: 771 }, D { l: 10, t: 0, i: 116, }, D { l: 13, t: 0, i: 104, }, D { l: 14, t: 0, i: 105, }, D { l: 14, t: 0, i: 184, }, D { l: 15, t: 0, i: 168, }, D { l: 19, t: 0, i: 92 }, D { l: 148, t: 0, i: 68, }, D { l: 10, t: 0, i: 209, }, D { l: 135, t: 11, i: 1870, }, D { l: 7, t: 11, i: 68 }, D { l: 8, t: 11, i: 48 }, D { l: 8, t: 11, i: 88 }, D { l: 8, t: 11, i: 582, }, D { l: 8, t: 11, i: 681, }, D { l: 9, t: 11, i: 373, }, D { l: 9, t: 11, i: 864, }, D { l: 11, t: 11, i: 157, }, D { l: 11, t: 11, i: 336, }, D { l: 11, t: 11, i: 843, }, D { l: 148, t: 11, i: 27, }, D { l: 134, t: 0, i: 930, }, D { l: 4, t: 11, i: 88 }, D { l: 5, t: 11, i: 137, }, D { l: 5, t: 11, i: 174, }, D { l: 5, t: 11, i: 777, }, D { l: 6, t: 11, i: 1664, }, D { l: 6, t: 11, i: 1725, }, D { l: 7, t: 11, i: 77 }, D { l: 7, t: 11, i: 426, }, D { l: 7, t: 11, i: 1317, }, D { l: 7, t: 11, i: 1355, }, D { l: 8, t: 11, i: 126, }, D { l: 8, t: 11, i: 563, }, D { l: 9, t: 11, i: 523, }, D { l: 9, t: 11, i: 750, }, D { l: 10, t: 11, i: 310, }, D { l: 10, t: 11, i: 836, }, D { l: 11, t: 11, i: 42, }, D { l: 11, t: 11, i: 318, }, D { l: 11, t: 11, i: 731, }, D { l: 12, t: 11, i: 68, }, D { l: 12, t: 11, i: 92, }, D { l: 12, t: 11, i: 507, }, D { l: 12, t: 11, i: 692, }, D { l: 13, t: 11, i: 81, }, D { l: 13, t: 11, i: 238, }, D { l: 13, t: 11, i: 374, }, D { l: 18, t: 11, i: 138, }, D { l: 19, t: 11, i: 78, }, D { l: 19, t: 11, i: 111, }, D { l: 20, t: 11, i: 55, }, D { l: 20, t: 11, i: 77, }, D { l: 148, t: 11, i: 92, }, D { l: 4, t: 11, i: 938, }, D { l: 135, t: 11, i: 1831, }, D { l: 5, t: 10, i: 547, }, D { l: 7, t: 10, i: 424, }, D { l: 8, t: 11, i: 617, }, D { l: 138, t: 11, i: 351, }, D { l: 6, t: 0, i: 1286, }, D { l: 6, t: 11, i: 1668, }, D { l: 7, t: 11, i: 1499, }, D { l: 8, t: 11, i: 117, }, D { l: 9, t: 11, i: 314, }, D { l: 138, t: 11, i: 174, }, D { l: 6, t: 0, i: 759 }, D { l: 6, t: 0, i: 894 }, D { l: 7, t: 11, i: 707, }, D { l: 139, t: 11, i: 563, }, D { l: 4, t: 0, i: 120 }, D { l: 135, t: 0, i: 1894, }, D { l: 9, t: 0, i: 385 }, D { l: 149, t: 0, i: 17, }, D { l: 138, t: 0, i: 429, }, D { l: 133, t: 11, i: 403, }, D { l: 5, t: 0, i: 820 }, D { l: 135, t: 0, i: 931, }, D { l: 10, t: 0, i: 199, }, D { l: 133, t: 10, i: 133, }, D { l: 6, t: 0, i: 151 }, D { l: 6, t: 0, i: 1675, }, D { l: 7, t: 0, i: 383 }, D { l: 151, t: 0, i: 10, }, D { l: 6, t: 0, i: 761 }, D { l: 136, t: 10, i: 187, }, D { l: 8, t: 0, i: 365 }, D { l: 10, t: 10, i: 0 }, D { l: 10, t: 10, i: 818, }, D { l: 139, t: 10, i: 988, }, D { l: 4, t: 11, i: 44 }, D { l: 5, t: 11, i: 311, }, D { l: 6, t: 11, i: 156, }, D { l: 7, t: 11, i: 639, }, D { l: 7, t: 11, i: 762, }, D { l: 7, t: 11, i: 1827, }, D { l: 9, t: 11, i: 8 }, D { l: 9, t: 11, i: 462, }, D { l: 148, t: 11, i: 83, }, D { l: 4, t: 11, i: 346, }, D { l: 7, t: 11, i: 115, }, D { l: 9, t: 11, i: 180, }, D { l: 9, t: 11, i: 456, }, D { l: 138, t: 11, i: 363, }, D { l: 136, t: 10, i: 685, }, D { l: 7, t: 0, i: 1086, }, D { l: 145, t: 0, i: 46, }, D { l: 6, t: 0, i: 1624, }, D { l: 11, t: 0, i: 11 }, D { l: 12, t: 0, i: 422, }, D { l: 13, t: 0, i: 444, }, D { l: 142, t: 0, i: 360, }, D { l: 6, t: 0, i: 1020, }, D { l: 6, t: 0, i: 1260, }, D { l: 134, t: 0, i: 1589, }, D { l: 4, t: 0, i: 43 }, D { l: 5, t: 0, i: 344 }, D { l: 5, t: 0, i: 357 }, D { l: 14, t: 0, i: 472, }, D { l: 150, t: 0, i: 58, }, D { l: 6, t: 0, i: 1864, }, D { l: 6, t: 0, i: 1866, }, D { l: 6, t: 0, i: 1868, }, D { l: 6, t: 0, i: 1869, }, D { l: 6, t: 0, i: 1874, }, D { l: 6, t: 0, i: 1877, }, D { l: 6, t: 0, i: 1903, }, D { l: 6, t: 0, i: 1911, }, D { l: 9, t: 0, i: 920 }, D { l: 9, t: 0, i: 921 }, D { l: 9, t: 0, i: 924 }, D { l: 9, t: 0, i: 946 }, D { l: 9, t: 0, i: 959 }, D { l: 9, t: 0, i: 963 }, D { l: 9, t: 0, i: 970 }, D { l: 9, t: 0, i: 997 }, D { l: 9, t: 0, i: 1008, }, D { l: 9, t: 0, i: 1017, }, D { l: 12, t: 0, i: 795, }, D { l: 12, t: 0, i: 797, }, D { l: 12, t: 0, i: 798, }, D { l: 12, t: 0, i: 800, }, D { l: 12, t: 0, i: 803, }, D { l: 12, t: 0, i: 811, }, D { l: 12, t: 0, i: 820, }, D { l: 12, t: 0, i: 821, }, D { l: 12, t: 0, i: 839, }, D { l: 12, t: 0, i: 841, }, D { l: 12, t: 0, i: 848, }, D { l: 12, t: 0, i: 911, }, D { l: 12, t: 0, i: 921, }, D { l: 12, t: 0, i: 922, }, D { l: 12, t: 0, i: 925, }, D { l: 12, t: 0, i: 937, }, D { l: 12, t: 0, i: 944, }, D { l: 12, t: 0, i: 945, }, D { l: 12, t: 0, i: 953, }, D { l: 15, t: 0, i: 184, }, D { l: 15, t: 0, i: 191, }, D { l: 15, t: 0, i: 199, }, D { l: 15, t: 0, i: 237, }, D { l: 15, t: 0, i: 240, }, D { l: 15, t: 0, i: 243, }, D { l: 15, t: 0, i: 246, }, D { l: 18, t: 0, i: 203, }, D { l: 21, t: 0, i: 40 }, D { l: 21, t: 0, i: 52 }, D { l: 21, t: 0, i: 57 }, D { l: 24, t: 0, i: 23 }, D { l: 24, t: 0, i: 28 }, D { l: 152, t: 0, i: 30, }, D { l: 134, t: 0, i: 725, }, D { l: 145, t: 11, i: 58, }, D { l: 133, t: 0, i: 888, }, D { l: 137, t: 10, i: 874, }, D { l: 4, t: 0, i: 711 }, D { l: 8, t: 10, i: 774, }, D { l: 10, t: 10, i: 670, }, D { l: 140, t: 10, i: 51, }, D { l: 144, t: 11, i: 40, }, D { l: 6, t: 11, i: 185, }, D { l: 7, t: 11, i: 1899, }, D { l: 139, t: 11, i: 673, }, D { l: 137, t: 10, i: 701, }, D { l: 137, t: 0, i: 440, }, D { l: 4, t: 11, i: 327, }, D { l: 5, t: 11, i: 478, }, D { l: 7, t: 11, i: 1332, }, D { l: 8, t: 11, i: 753, }, D { l: 140, t: 11, i: 227, }, D { l: 4, t: 10, i: 127, }, D { l: 5, t: 10, i: 350, }, D { l: 6, t: 10, i: 356, }, D { l: 8, t: 10, i: 426, }, D { l: 9, t: 10, i: 572, }, D { l: 10, t: 10, i: 247, }, D { l: 139, t: 10, i: 312, }, D { l: 5, t: 11, i: 1020, }, D { l: 133, t: 11, i: 1022, }, D { l: 4, t: 11, i: 103, }, D { l: 133, t: 11, i: 401, }, D { l: 6, t: 0, i: 1913, }, D { l: 6, t: 0, i: 1926, }, D { l: 6, t: 0, i: 1959, }, D { l: 9, t: 0, i: 914 }, D { l: 9, t: 0, i: 939 }, D { l: 9, t: 0, i: 952 }, D { l: 9, t: 0, i: 979 }, D { l: 9, t: 0, i: 990 }, D { l: 9, t: 0, i: 998 }, D { l: 9, t: 0, i: 1003, }, D { l: 9, t: 0, i: 1023, }, D { l: 12, t: 0, i: 827, }, D { l: 12, t: 0, i: 834, }, D { l: 12, t: 0, i: 845, }, D { l: 12, t: 0, i: 912, }, D { l: 12, t: 0, i: 935, }, D { l: 12, t: 0, i: 951, }, D { l: 15, t: 0, i: 172, }, D { l: 15, t: 0, i: 174, }, D { l: 18, t: 0, i: 198, }, D { l: 149, t: 0, i: 63, }, D { l: 5, t: 0, i: 958 }, D { l: 5, t: 0, i: 987 }, D { l: 4, t: 11, i: 499, }, D { l: 135, t: 11, i: 1421, }, D { l: 7, t: 0, i: 885 }, D { l: 6, t: 10, i: 59 }, D { l: 6, t: 10, i: 1762, }, D { l: 9, t: 10, i: 603, }, D { l: 141, t: 10, i: 397, }, D { l: 10, t: 11, i: 62, }, D { l: 141, t: 11, i: 164, }, D { l: 4, t: 0, i: 847 }, D { l: 135, t: 0, i: 326, }, D { l: 11, t: 0, i: 276, }, D { l: 142, t: 0, i: 293, }, D { l: 4, t: 0, i: 65 }, D { l: 5, t: 0, i: 479 }, D { l: 5, t: 0, i: 1004, }, D { l: 7, t: 0, i: 1913, }, D { l: 8, t: 0, i: 317 }, D { l: 9, t: 0, i: 302 }, D { l: 10, t: 0, i: 612, }, D { l: 13, t: 0, i: 22 }, D { l: 132, t: 11, i: 96, }, D { l: 4, t: 0, i: 261 }, D { l: 135, t: 0, i: 510, }, D { l: 135, t: 0, i: 1514, }, D { l: 6, t: 10, i: 111, }, D { l: 7, t: 10, i: 4 }, D { l: 8, t: 10, i: 163, }, D { l: 8, t: 10, i: 776, }, D { l: 138, t: 10, i: 566, }, D { l: 4, t: 0, i: 291 }, D { l: 9, t: 0, i: 515 }, D { l: 12, t: 0, i: 152, }, D { l: 12, t: 0, i: 443, }, D { l: 13, t: 0, i: 392, }, D { l: 142, t: 0, i: 357, }, D { l: 7, t: 11, i: 399, }, D { l: 135, t: 11, i: 1492, }, D { l: 4, t: 0, i: 589 }, D { l: 139, t: 0, i: 282, }, D { l: 6, t: 11, i: 563, }, D { l: 135, t: 10, i: 1994, }, D { l: 5, t: 10, i: 297, }, D { l: 135, t: 10, i: 1038, }, D { l: 4, t: 0, i: 130 }, D { l: 7, t: 0, i: 843 }, D { l: 135, t: 0, i: 1562, }, D { l: 5, t: 0, i: 42 }, D { l: 5, t: 0, i: 879 }, D { l: 7, t: 0, i: 245 }, D { l: 7, t: 0, i: 324 }, D { l: 7, t: 0, i: 1532, }, D { l: 11, t: 0, i: 463, }, D { l: 11, t: 0, i: 472, }, D { l: 13, t: 0, i: 363, }, D { l: 144, t: 0, i: 52, }, D { l: 4, t: 0, i: 134 }, D { l: 133, t: 0, i: 372, }, D { l: 133, t: 0, i: 680, }, D { l: 136, t: 10, i: 363, }, D { l: 6, t: 0, i: 1997, }, D { l: 8, t: 0, i: 935 }, D { l: 136, t: 0, i: 977, }, D { l: 4, t: 0, i: 810 }, D { l: 135, t: 0, i: 1634, }, D { l: 135, t: 10, i: 1675, }, D { l: 7, t: 0, i: 1390, }, D { l: 4, t: 11, i: 910, }, D { l: 133, t: 11, i: 832, }, D { l: 7, t: 10, i: 808, }, D { l: 8, t: 11, i: 266, }, D { l: 139, t: 11, i: 578, }, D { l: 132, t: 0, i: 644, }, D { l: 4, t: 0, i: 982 }, D { l: 138, t: 0, i: 867, }, D { l: 132, t: 10, i: 280, }, D { l: 135, t: 0, i: 540, }, D { l: 140, t: 10, i: 54, }, D { l: 135, t: 0, i: 123, }, D { l: 134, t: 0, i: 1978, }, D { l: 4, t: 10, i: 421, }, D { l: 133, t: 10, i: 548, }, D { l: 6, t: 0, i: 623 }, D { l: 136, t: 0, i: 789, }, D { l: 4, t: 0, i: 908 }, D { l: 5, t: 0, i: 359 }, D { l: 5, t: 0, i: 508 }, D { l: 6, t: 0, i: 1723, }, D { l: 7, t: 0, i: 343 }, D { l: 7, t: 0, i: 1996, }, D { l: 135, t: 0, i: 2026, }, D { l: 134, t: 0, i: 1220, }, D { l: 4, t: 0, i: 341 }, D { l: 135, t: 0, i: 480, }, D { l: 6, t: 10, i: 254, }, D { l: 9, t: 10, i: 109, }, D { l: 138, t: 10, i: 103, }, D { l: 134, t: 0, i: 888, }, D { l: 8, t: 11, i: 528, }, D { l: 137, t: 11, i: 348, }, D { l: 7, t: 0, i: 1995, }, D { l: 8, t: 0, i: 299 }, D { l: 11, t: 0, i: 890, }, D { l: 12, t: 0, i: 674, }, D { l: 4, t: 11, i: 20 }, D { l: 133, t: 11, i: 616, }, D { l: 135, t: 11, i: 1094, }, D { l: 134, t: 10, i: 1630, }, D { l: 4, t: 0, i: 238 }, D { l: 5, t: 0, i: 503 }, D { l: 6, t: 0, i: 179 }, D { l: 7, t: 0, i: 2003, }, D { l: 8, t: 0, i: 381 }, D { l: 8, t: 0, i: 473 }, D { l: 9, t: 0, i: 149 }, D { l: 10, t: 0, i: 788, }, D { l: 15, t: 0, i: 45 }, D { l: 15, t: 0, i: 86 }, D { l: 20, t: 0, i: 110, }, D { l: 150, t: 0, i: 57, }, D { l: 133, t: 10, i: 671, }, D { l: 4, t: 11, i: 26 }, D { l: 5, t: 11, i: 429, }, D { l: 6, t: 11, i: 245, }, D { l: 7, t: 11, i: 704, }, D { l: 7, t: 11, i: 1379, }, D { l: 135, t: 11, i: 1474, }, D { l: 4, t: 0, i: 121 }, D { l: 5, t: 0, i: 156 }, D { l: 5, t: 0, i: 349 }, D { l: 9, t: 0, i: 431 }, D { l: 10, t: 0, i: 605, }, D { l: 142, t: 0, i: 342, }, D { l: 7, t: 11, i: 943, }, D { l: 139, t: 11, i: 614, }, D { l: 132, t: 10, i: 889, }, D { l: 132, t: 11, i: 621, }, D { l: 7, t: 10, i: 1382, }, D { l: 7, t: 11, i: 1382, }, D { l: 135, t: 10, i: 1910, }, D { l: 132, t: 10, i: 627, }, D { l: 133, t: 10, i: 775, }, D { l: 133, t: 11, i: 542, }, D { l: 133, t: 11, i: 868, }, D { l: 136, t: 11, i: 433, }, D { l: 6, t: 0, i: 1373, }, D { l: 7, t: 0, i: 1011, }, D { l: 11, t: 10, i: 362, }, D { l: 11, t: 10, i: 948, }, D { l: 140, t: 10, i: 388, }, D { l: 6, t: 0, i: 80 }, D { l: 7, t: 0, i: 173 }, D { l: 9, t: 0, i: 547 }, D { l: 10, t: 0, i: 730, }, D { l: 14, t: 0, i: 18 }, D { l: 22, t: 0, i: 39 }, D { l: 135, t: 11, i: 1495, }, D { l: 6, t: 0, i: 1694, }, D { l: 135, t: 0, i: 1974, }, D { l: 140, t: 0, i: 196, }, D { l: 4, t: 0, i: 923 }, D { l: 6, t: 0, i: 507 }, D { l: 6, t: 0, i: 1711, }, D { l: 7, t: 10, i: 451, }, D { l: 8, t: 10, i: 389, }, D { l: 12, t: 10, i: 490, }, D { l: 13, t: 10, i: 16, }, D { l: 13, t: 10, i: 215, }, D { l: 13, t: 10, i: 351, }, D { l: 18, t: 10, i: 132, }, D { l: 147, t: 10, i: 125, }, D { l: 6, t: 0, i: 646 }, D { l: 134, t: 0, i: 1047, }, D { l: 135, t: 10, i: 841, }, D { l: 136, t: 10, i: 566, }, D { l: 6, t: 0, i: 1611, }, D { l: 135, t: 0, i: 1214, }, D { l: 139, t: 0, i: 926, }, D { l: 132, t: 11, i: 525, }, D { l: 132, t: 0, i: 595, }, D { l: 5, t: 0, i: 240 }, D { l: 6, t: 0, i: 459 }, D { l: 7, t: 0, i: 12 }, D { l: 7, t: 0, i: 114 }, D { l: 7, t: 0, i: 949 }, D { l: 7, t: 0, i: 1753, }, D { l: 7, t: 0, i: 1805, }, D { l: 8, t: 0, i: 658 }, D { l: 9, t: 0, i: 1 }, D { l: 11, t: 0, i: 959, }, D { l: 141, t: 0, i: 446, }, D { l: 5, t: 10, i: 912, }, D { l: 134, t: 10, i: 1695, }, D { l: 132, t: 0, i: 446, }, D { l: 7, t: 11, i: 62 }, D { l: 12, t: 11, i: 45, }, D { l: 147, t: 11, i: 112, }, D { l: 5, t: 10, i: 236, }, D { l: 6, t: 10, i: 572, }, D { l: 8, t: 10, i: 492, }, D { l: 11, t: 10, i: 618, }, D { l: 144, t: 10, i: 56, }, D { l: 5, t: 10, i: 190, }, D { l: 136, t: 10, i: 318, }, D { l: 135, t: 10, i: 1376, }, D { l: 4, t: 11, i: 223, }, D { l: 6, t: 11, i: 359, }, D { l: 11, t: 11, i: 3 }, D { l: 13, t: 11, i: 108, }, D { l: 14, t: 11, i: 89, }, D { l: 144, t: 11, i: 22, }, D { l: 132, t: 11, i: 647, }, D { l: 134, t: 0, i: 490, }, D { l: 134, t: 0, i: 491, }, D { l: 134, t: 0, i: 1584, }, D { l: 135, t: 11, i: 685, }, D { l: 138, t: 11, i: 220, }, D { l: 7, t: 0, i: 250 }, D { l: 136, t: 0, i: 507, }, D { l: 132, t: 0, i: 158, }, D { l: 4, t: 0, i: 140 }, D { l: 7, t: 0, i: 362 }, D { l: 8, t: 0, i: 209 }, D { l: 9, t: 0, i: 10 }, D { l: 9, t: 0, i: 160 }, D { l: 9, t: 0, i: 503 }, D { l: 9, t: 0, i: 614 }, D { l: 10, t: 0, i: 689, }, D { l: 11, t: 0, i: 327, }, D { l: 11, t: 0, i: 553, }, D { l: 11, t: 0, i: 725, }, D { l: 11, t: 0, i: 767, }, D { l: 12, t: 0, i: 252, }, D { l: 12, t: 0, i: 583, }, D { l: 13, t: 0, i: 192, }, D { l: 14, t: 0, i: 269, }, D { l: 14, t: 0, i: 356, }, D { l: 148, t: 0, i: 50, }, D { l: 19, t: 0, i: 1 }, D { l: 19, t: 0, i: 26 }, D { l: 150, t: 0, i: 9 }, D { l: 132, t: 11, i: 109, }, D { l: 6, t: 0, i: 228 }, D { l: 7, t: 0, i: 1341, }, D { l: 9, t: 0, i: 408 }, D { l: 138, t: 0, i: 343, }, D { l: 4, t: 0, i: 373 }, D { l: 5, t: 0, i: 283 }, D { l: 6, t: 0, i: 480 }, D { l: 7, t: 0, i: 609 }, D { l: 10, t: 0, i: 860, }, D { l: 138, t: 0, i: 878, }, D { l: 6, t: 0, i: 779 }, D { l: 134, t: 0, i: 1209, }, D { l: 4, t: 0, i: 557 }, D { l: 7, t: 11, i: 263, }, D { l: 7, t: 11, i: 628, }, D { l: 136, t: 11, i: 349, }, D { l: 132, t: 0, i: 548, }, D { l: 7, t: 0, i: 197 }, D { l: 8, t: 0, i: 142 }, D { l: 8, t: 0, i: 325 }, D { l: 9, t: 0, i: 150 }, D { l: 9, t: 0, i: 596 }, D { l: 10, t: 0, i: 350, }, D { l: 10, t: 0, i: 353, }, D { l: 11, t: 0, i: 74 }, D { l: 11, t: 0, i: 315, }, D { l: 12, t: 0, i: 662, }, D { l: 12, t: 0, i: 681, }, D { l: 14, t: 0, i: 423, }, D { l: 143, t: 0, i: 141, }, D { l: 4, t: 11, i: 40 }, D { l: 10, t: 11, i: 67, }, D { l: 11, t: 11, i: 117, }, D { l: 11, t: 11, i: 768, }, D { l: 139, t: 11, i: 935, }, D { l: 7, t: 11, i: 992, }, D { l: 8, t: 11, i: 301, }, D { l: 9, t: 11, i: 722, }, D { l: 12, t: 11, i: 63, }, D { l: 13, t: 11, i: 29, }, D { l: 14, t: 11, i: 161, }, D { l: 143, t: 11, i: 18, }, D { l: 6, t: 0, i: 1490, }, D { l: 138, t: 11, i: 532, }, D { l: 5, t: 0, i: 580 }, D { l: 7, t: 0, i: 378 }, D { l: 7, t: 0, i: 674 }, D { l: 7, t: 0, i: 1424, }, D { l: 15, t: 0, i: 83 }, D { l: 16, t: 0, i: 11 }, D { l: 15, t: 11, i: 83, }, D { l: 144, t: 11, i: 11, }, D { l: 6, t: 0, i: 1057, }, D { l: 6, t: 0, i: 1335, }, D { l: 10, t: 0, i: 316, }, D { l: 7, t: 10, i: 85 }, D { l: 7, t: 10, i: 247, }, D { l: 8, t: 10, i: 585, }, D { l: 138, t: 10, i: 163, }, D { l: 4, t: 0, i: 169 }, D { l: 5, t: 0, i: 83 }, D { l: 6, t: 0, i: 399 }, D { l: 6, t: 0, i: 579 }, D { l: 6, t: 0, i: 1513, }, D { l: 7, t: 0, i: 692 }, D { l: 7, t: 0, i: 846 }, D { l: 7, t: 0, i: 1015, }, D { l: 7, t: 0, i: 1799, }, D { l: 8, t: 0, i: 403 }, D { l: 9, t: 0, i: 394 }, D { l: 10, t: 0, i: 133, }, D { l: 12, t: 0, i: 4 }, D { l: 12, t: 0, i: 297, }, D { l: 12, t: 0, i: 452, }, D { l: 16, t: 0, i: 81 }, D { l: 18, t: 0, i: 25 }, D { l: 21, t: 0, i: 14 }, D { l: 22, t: 0, i: 12 }, D { l: 151, t: 0, i: 18, }, D { l: 134, t: 0, i: 1106, }, D { l: 7, t: 0, i: 1546, }, D { l: 11, t: 0, i: 299, }, D { l: 142, t: 0, i: 407, }, D { l: 134, t: 0, i: 1192, }, D { l: 132, t: 0, i: 177, }, D { l: 5, t: 0, i: 411 }, D { l: 135, t: 0, i: 653, }, D { l: 7, t: 0, i: 439 }, D { l: 10, t: 0, i: 727, }, D { l: 11, t: 0, i: 260, }, D { l: 139, t: 0, i: 684, }, D { l: 138, t: 10, i: 145, }, D { l: 147, t: 10, i: 83, }, D { l: 5, t: 0, i: 208 }, D { l: 7, t: 0, i: 753 }, D { l: 135, t: 0, i: 1528, }, D { l: 137, t: 11, i: 617, }, D { l: 135, t: 10, i: 1922, }, D { l: 135, t: 11, i: 825, }, D { l: 11, t: 0, i: 422, }, D { l: 13, t: 0, i: 389, }, D { l: 4, t: 10, i: 124, }, D { l: 10, t: 10, i: 457, }, D { l: 11, t: 10, i: 121, }, D { l: 11, t: 10, i: 169, }, D { l: 11, t: 10, i: 870, }, D { l: 12, t: 10, i: 214, }, D { l: 14, t: 10, i: 187, }, D { l: 143, t: 10, i: 77, }, D { l: 11, t: 0, i: 615, }, D { l: 15, t: 0, i: 58 }, D { l: 11, t: 11, i: 615, }, D { l: 143, t: 11, i: 58, }, D { l: 9, t: 0, i: 618 }, D { l: 138, t: 0, i: 482, }, D { l: 6, t: 0, i: 1952, }, D { l: 6, t: 0, i: 1970, }, D { l: 142, t: 0, i: 505, }, D { l: 7, t: 10, i: 1193, }, D { l: 135, t: 11, i: 1838, }, D { l: 133, t: 0, i: 242, }, D { l: 135, t: 10, i: 1333, }, D { l: 6, t: 10, i: 107, }, D { l: 7, t: 10, i: 638, }, D { l: 7, t: 10, i: 1632, }, D { l: 137, t: 10, i: 396, }, D { l: 133, t: 0, i: 953, }, D { l: 5, t: 10, i: 370, }, D { l: 134, t: 10, i: 1756, }, D { l: 5, t: 11, i: 28 }, D { l: 6, t: 11, i: 204, }, D { l: 10, t: 11, i: 320, }, D { l: 10, t: 11, i: 583, }, D { l: 13, t: 11, i: 502, }, D { l: 14, t: 11, i: 72, }, D { l: 14, t: 11, i: 274, }, D { l: 14, t: 11, i: 312, }, D { l: 14, t: 11, i: 344, }, D { l: 15, t: 11, i: 159, }, D { l: 16, t: 11, i: 62, }, D { l: 16, t: 11, i: 69, }, D { l: 17, t: 11, i: 30, }, D { l: 18, t: 11, i: 42, }, D { l: 18, t: 11, i: 53, }, D { l: 18, t: 11, i: 84, }, D { l: 18, t: 11, i: 140, }, D { l: 19, t: 11, i: 68, }, D { l: 19, t: 11, i: 85, }, D { l: 20, t: 11, i: 5 }, D { l: 20, t: 11, i: 45, }, D { l: 20, t: 11, i: 101, }, D { l: 22, t: 11, i: 7 }, D { l: 150, t: 11, i: 20, }, D { l: 4, t: 11, i: 558, }, D { l: 6, t: 11, i: 390, }, D { l: 7, t: 11, i: 162, }, D { l: 7, t: 11, i: 689, }, D { l: 9, t: 11, i: 360, }, D { l: 138, t: 11, i: 653, }, D { l: 11, t: 0, i: 802, }, D { l: 141, t: 0, i: 67, }, D { l: 133, t: 10, i: 204, }, D { l: 133, t: 0, i: 290, }, D { l: 5, t: 10, i: 970, }, D { l: 134, t: 10, i: 1706, }, D { l: 132, t: 0, i: 380, }, D { l: 5, t: 0, i: 52 }, D { l: 7, t: 0, i: 277 }, D { l: 9, t: 0, i: 368 }, D { l: 139, t: 0, i: 791, }, D { l: 5, t: 11, i: 856, }, D { l: 6, t: 11, i: 1672, }, D { l: 6, t: 11, i: 1757, }, D { l: 6, t: 11, i: 1781, }, D { l: 7, t: 11, i: 1150, }, D { l: 7, t: 11, i: 1425, }, D { l: 7, t: 11, i: 1453, }, D { l: 140, t: 11, i: 513, }, D { l: 5, t: 11, i: 92 }, D { l: 7, t: 10, i: 3 }, D { l: 10, t: 11, i: 736, }, D { l: 140, t: 11, i: 102, }, D { l: 4, t: 0, i: 112 }, D { l: 5, t: 0, i: 653 }, D { l: 5, t: 10, i: 483, }, D { l: 5, t: 10, i: 685, }, D { l: 6, t: 10, i: 489, }, D { l: 7, t: 10, i: 1204, }, D { l: 136, t: 10, i: 394, }, D { l: 132, t: 10, i: 921, }, D { l: 6, t: 0, i: 1028, }, D { l: 133, t: 10, i: 1007, }, D { l: 5, t: 11, i: 590, }, D { l: 9, t: 11, i: 213, }, D { l: 145, t: 11, i: 91, }, D { l: 135, t: 10, i: 1696, }, D { l: 10, t: 0, i: 138, }, D { l: 139, t: 0, i: 476, }, D { l: 5, t: 0, i: 725 }, D { l: 5, t: 0, i: 727 }, D { l: 135, t: 0, i: 1811, }, D { l: 4, t: 0, i: 979 }, D { l: 6, t: 0, i: 1821, }, D { l: 6, t: 0, i: 1838, }, D { l: 8, t: 0, i: 876 }, D { l: 8, t: 0, i: 883 }, D { l: 8, t: 0, i: 889 }, D { l: 8, t: 0, i: 893 }, D { l: 8, t: 0, i: 895 }, D { l: 10, t: 0, i: 934, }, D { l: 12, t: 0, i: 720, }, D { l: 14, t: 0, i: 459, }, D { l: 148, t: 0, i: 123, }, D { l: 135, t: 11, i: 551, }, D { l: 4, t: 0, i: 38 }, D { l: 6, t: 0, i: 435 }, D { l: 7, t: 0, i: 307 }, D { l: 7, t: 0, i: 999 }, D { l: 7, t: 0, i: 1481, }, D { l: 7, t: 0, i: 1732, }, D { l: 7, t: 0, i: 1738, }, D { l: 8, t: 0, i: 371 }, D { l: 9, t: 0, i: 414 }, D { l: 11, t: 0, i: 316, }, D { l: 12, t: 0, i: 52 }, D { l: 13, t: 0, i: 420, }, D { l: 147, t: 0, i: 100, }, D { l: 135, t: 0, i: 1296, }, D { l: 132, t: 10, i: 712, }, D { l: 134, t: 10, i: 1629, }, D { l: 133, t: 0, i: 723, }, D { l: 134, t: 0, i: 651, }, D { l: 136, t: 11, i: 191, }, D { l: 9, t: 11, i: 791, }, D { l: 10, t: 11, i: 93, }, D { l: 11, t: 11, i: 301, }, D { l: 16, t: 11, i: 13, }, D { l: 17, t: 11, i: 23, }, D { l: 18, t: 11, i: 135, }, D { l: 19, t: 11, i: 12, }, D { l: 20, t: 11, i: 1 }, D { l: 20, t: 11, i: 12, }, D { l: 148, t: 11, i: 14, }, D { l: 136, t: 11, i: 503, }, D { l: 6, t: 11, i: 466, }, D { l: 135, t: 11, i: 671, }, D { l: 6, t: 0, i: 1200, }, D { l: 134, t: 0, i: 1330, }, D { l: 135, t: 0, i: 1255, }, D { l: 134, t: 0, i: 986, }, D { l: 5, t: 0, i: 109 }, D { l: 6, t: 0, i: 1784, }, D { l: 7, t: 0, i: 1895, }, D { l: 12, t: 0, i: 296, }, D { l: 140, t: 0, i: 302, }, D { l: 135, t: 11, i: 983, }, D { l: 133, t: 10, i: 485, }, D { l: 134, t: 0, i: 660, }, D { l: 134, t: 0, i: 800, }, D { l: 5, t: 0, i: 216 }, D { l: 5, t: 0, i: 294 }, D { l: 6, t: 0, i: 591 }, D { l: 7, t: 0, i: 1879, }, D { l: 9, t: 0, i: 141 }, D { l: 9, t: 0, i: 270 }, D { l: 9, t: 0, i: 679 }, D { l: 10, t: 0, i: 159, }, D { l: 11, t: 0, i: 197, }, D { l: 11, t: 0, i: 438, }, D { l: 12, t: 0, i: 538, }, D { l: 12, t: 0, i: 559, }, D { l: 14, t: 0, i: 144, }, D { l: 14, t: 0, i: 167, }, D { l: 15, t: 0, i: 67 }, D { l: 4, t: 10, i: 285, }, D { l: 5, t: 10, i: 317, }, D { l: 6, t: 10, i: 301, }, D { l: 7, t: 10, i: 7 }, D { l: 8, t: 10, i: 153, }, D { l: 10, t: 10, i: 766, }, D { l: 11, t: 10, i: 468, }, D { l: 12, t: 10, i: 467, }, D { l: 141, t: 10, i: 143, }, D { l: 136, t: 0, i: 945, }, D { l: 134, t: 0, i: 1090, }, D { l: 137, t: 0, i: 81, }, D { l: 12, t: 11, i: 468, }, D { l: 19, t: 11, i: 96, }, D { l: 148, t: 11, i: 24, }, D { l: 134, t: 0, i: 391, }, D { l: 138, t: 11, i: 241, }, D { l: 7, t: 0, i: 322 }, D { l: 136, t: 0, i: 249, }, D { l: 134, t: 0, i: 1412, }, D { l: 135, t: 11, i: 795, }, D { l: 5, t: 0, i: 632 }, D { l: 138, t: 0, i: 526, }, D { l: 136, t: 10, i: 819, }, D { l: 6, t: 0, i: 144 }, D { l: 7, t: 0, i: 948 }, D { l: 7, t: 0, i: 1042, }, D { l: 8, t: 0, i: 235 }, D { l: 8, t: 0, i: 461 }, D { l: 9, t: 0, i: 453 }, D { l: 9, t: 0, i: 796 }, D { l: 10, t: 0, i: 354, }, D { l: 17, t: 0, i: 77 }, D { l: 135, t: 11, i: 954, }, D { l: 139, t: 10, i: 917, }, D { l: 6, t: 0, i: 940 }, D { l: 134, t: 0, i: 1228, }, D { l: 4, t: 0, i: 362 }, D { l: 7, t: 0, i: 52 }, D { l: 135, t: 0, i: 303, }, D { l: 6, t: 11, i: 549, }, D { l: 8, t: 11, i: 34 }, D { l: 8, t: 11, i: 283, }, D { l: 9, t: 11, i: 165, }, D { l: 138, t: 11, i: 475, }, D { l: 7, t: 11, i: 370, }, D { l: 7, t: 11, i: 1007, }, D { l: 7, t: 11, i: 1177, }, D { l: 135, t: 11, i: 1565, }, D { l: 5, t: 11, i: 652, }, D { l: 5, t: 11, i: 701, }, D { l: 135, t: 11, i: 449, }, D { l: 5, t: 0, i: 196 }, D { l: 6, t: 0, i: 486 }, D { l: 7, t: 0, i: 212 }, D { l: 8, t: 0, i: 309 }, D { l: 136, t: 0, i: 346, }, D { l: 6, t: 10, i: 1719, }, D { l: 6, t: 10, i: 1735, }, D { l: 7, t: 10, i: 2016, }, D { l: 7, t: 10, i: 2020, }, D { l: 8, t: 10, i: 837, }, D { l: 137, t: 10, i: 852, }, D { l: 6, t: 11, i: 159, }, D { l: 6, t: 11, i: 364, }, D { l: 7, t: 11, i: 516, }, D { l: 7, t: 11, i: 1439, }, D { l: 137, t: 11, i: 518, }, D { l: 135, t: 0, i: 1912, }, D { l: 135, t: 0, i: 1290, }, D { l: 132, t: 0, i: 686, }, D { l: 141, t: 11, i: 151, }, D { l: 138, t: 0, i: 625, }, D { l: 136, t: 0, i: 706, }, D { l: 138, t: 10, i: 568, }, D { l: 139, t: 0, i: 412, }, D { l: 4, t: 0, i: 30 }, D { l: 133, t: 0, i: 43, }, D { l: 8, t: 10, i: 67 }, D { l: 138, t: 10, i: 419, }, D { l: 7, t: 0, i: 967 }, D { l: 141, t: 0, i: 11, }, D { l: 12, t: 0, i: 758, }, D { l: 14, t: 0, i: 441, }, D { l: 142, t: 0, i: 462, }, D { l: 10, t: 10, i: 657, }, D { l: 14, t: 10, i: 297, }, D { l: 142, t: 10, i: 361, }, D { l: 139, t: 10, i: 729, }, D { l: 4, t: 0, i: 220 }, D { l: 135, t: 0, i: 1535, }, D { l: 7, t: 11, i: 501, }, D { l: 9, t: 11, i: 111, }, D { l: 10, t: 11, i: 141, }, D { l: 11, t: 11, i: 332, }, D { l: 13, t: 11, i: 43, }, D { l: 13, t: 11, i: 429, }, D { l: 14, t: 11, i: 130, }, D { l: 14, t: 11, i: 415, }, D { l: 145, t: 11, i: 102, }, D { l: 4, t: 0, i: 950 }, D { l: 6, t: 0, i: 1859, }, D { l: 7, t: 0, i: 11 }, D { l: 8, t: 0, i: 873 }, D { l: 12, t: 0, i: 710, }, D { l: 12, t: 0, i: 718, }, D { l: 12, t: 0, i: 748, }, D { l: 12, t: 0, i: 765, }, D { l: 148, t: 0, i: 124, }, D { l: 5, t: 11, i: 149, }, D { l: 5, t: 11, i: 935, }, D { l: 136, t: 11, i: 233, }, D { l: 142, t: 11, i: 291, }, D { l: 134, t: 0, i: 1579, }, D { l: 7, t: 0, i: 890 }, D { l: 8, t: 10, i: 51 }, D { l: 9, t: 10, i: 868, }, D { l: 10, t: 10, i: 833, }, D { l: 12, t: 10, i: 481, }, D { l: 12, t: 10, i: 570, }, D { l: 148, t: 10, i: 106, }, D { l: 141, t: 0, i: 2 }, D { l: 132, t: 10, i: 445, }, D { l: 136, t: 11, i: 801, }, D { l: 135, t: 0, i: 1774, }, D { l: 7, t: 0, i: 1725, }, D { l: 138, t: 0, i: 393, }, D { l: 5, t: 0, i: 263 }, D { l: 134, t: 0, i: 414, }, D { l: 132, t: 11, i: 322, }, D { l: 133, t: 10, i: 239, }, D { l: 7, t: 0, i: 456 }, D { l: 7, t: 10, i: 1990, }, D { l: 8, t: 10, i: 130, }, D { l: 139, t: 10, i: 720, }, D { l: 137, t: 0, i: 818, }, D { l: 5, t: 10, i: 123, }, D { l: 6, t: 10, i: 530, }, D { l: 7, t: 10, i: 348, }, D { l: 135, t: 10, i: 1419, }, D { l: 135, t: 10, i: 2024, }, D { l: 6, t: 0, i: 178 }, D { l: 6, t: 0, i: 1750, }, D { l: 8, t: 0, i: 251 }, D { l: 9, t: 0, i: 690 }, D { l: 10, t: 0, i: 155, }, D { l: 10, t: 0, i: 196, }, D { l: 10, t: 0, i: 373, }, D { l: 11, t: 0, i: 698, }, D { l: 13, t: 0, i: 155, }, D { l: 148, t: 0, i: 93, }, D { l: 5, t: 0, i: 97 }, D { l: 137, t: 0, i: 393, }, D { l: 134, t: 0, i: 674, }, D { l: 11, t: 0, i: 223, }, D { l: 140, t: 0, i: 168, }, D { l: 132, t: 10, i: 210, }, D { l: 139, t: 11, i: 464, }, D { l: 6, t: 0, i: 1639, }, D { l: 146, t: 0, i: 159, }, D { l: 139, t: 11, i: 2, }, D { l: 7, t: 0, i: 934 }, D { l: 8, t: 0, i: 647 }, D { l: 17, t: 0, i: 97 }, D { l: 19, t: 0, i: 59 }, D { l: 150, t: 0, i: 2 }, D { l: 132, t: 0, i: 191, }, D { l: 5, t: 0, i: 165 }, D { l: 9, t: 0, i: 346 }, D { l: 10, t: 0, i: 655, }, D { l: 11, t: 0, i: 885, }, D { l: 4, t: 10, i: 430, }, D { l: 135, t: 11, i: 357, }, D { l: 133, t: 0, i: 877, }, D { l: 5, t: 10, i: 213, }, D { l: 133, t: 11, i: 406, }, D { l: 8, t: 0, i: 128 }, D { l: 139, t: 0, i: 179, }, D { l: 6, t: 11, i: 69 }, D { l: 135, t: 11, i: 117, }, D { l: 135, t: 0, i: 1297, }, D { l: 11, t: 11, i: 43, }, D { l: 13, t: 11, i: 72, }, D { l: 141, t: 11, i: 142, }, D { l: 135, t: 11, i: 1830, }, D { l: 142, t: 0, i: 164, }, D { l: 5, t: 0, i: 57 }, D { l: 6, t: 0, i: 101 }, D { l: 6, t: 0, i: 586 }, D { l: 6, t: 0, i: 1663, }, D { l: 7, t: 0, i: 132 }, D { l: 7, t: 0, i: 1154, }, D { l: 7, t: 0, i: 1415, }, D { l: 7, t: 0, i: 1507, }, D { l: 12, t: 0, i: 493, }, D { l: 15, t: 0, i: 105, }, D { l: 151, t: 0, i: 15, }, D { l: 5, t: 0, i: 459 }, D { l: 7, t: 0, i: 1073, }, D { l: 8, t: 0, i: 241 }, D { l: 136, t: 0, i: 334, }, D { l: 133, t: 11, i: 826, }, D { l: 133, t: 10, i: 108, }, D { l: 5, t: 10, i: 219, }, D { l: 10, t: 11, i: 132, }, D { l: 11, t: 11, i: 191, }, D { l: 11, t: 11, i: 358, }, D { l: 139, t: 11, i: 460, }, D { l: 6, t: 0, i: 324 }, D { l: 6, t: 0, i: 520 }, D { l: 7, t: 0, i: 338 }, D { l: 7, t: 0, i: 1729, }, D { l: 8, t: 0, i: 228 }, D { l: 139, t: 0, i: 750, }, D { l: 21, t: 0, i: 30 }, D { l: 22, t: 0, i: 53 }, D { l: 4, t: 10, i: 193, }, D { l: 5, t: 10, i: 916, }, D { l: 7, t: 10, i: 364, }, D { l: 10, t: 10, i: 398, }, D { l: 10, t: 10, i: 726, }, D { l: 11, t: 10, i: 317, }, D { l: 11, t: 10, i: 626, }, D { l: 12, t: 10, i: 142, }, D { l: 12, t: 10, i: 288, }, D { l: 12, t: 10, i: 678, }, D { l: 13, t: 10, i: 313, }, D { l: 15, t: 10, i: 113, }, D { l: 146, t: 10, i: 114, }, D { l: 6, t: 11, i: 110, }, D { l: 135, t: 11, i: 1681, }, D { l: 135, t: 0, i: 910, }, D { l: 6, t: 10, i: 241, }, D { l: 7, t: 10, i: 907, }, D { l: 8, t: 10, i: 832, }, D { l: 9, t: 10, i: 342, }, D { l: 10, t: 10, i: 729, }, D { l: 11, t: 10, i: 284, }, D { l: 11, t: 10, i: 445, }, D { l: 11, t: 10, i: 651, }, D { l: 11, t: 10, i: 863, }, D { l: 13, t: 10, i: 398, }, D { l: 146, t: 10, i: 99, }, D { l: 7, t: 0, i: 705 }, D { l: 9, t: 0, i: 734 }, D { l: 5, t: 11, i: 1000, }, D { l: 7, t: 11, i: 733, }, D { l: 137, t: 11, i: 583, }, D { l: 4, t: 0, i: 73 }, D { l: 6, t: 0, i: 612 }, D { l: 7, t: 0, i: 927 }, D { l: 7, t: 0, i: 1822, }, D { l: 8, t: 0, i: 217 }, D { l: 9, t: 0, i: 765 }, D { l: 9, t: 0, i: 766 }, D { l: 10, t: 0, i: 408, }, D { l: 11, t: 0, i: 51 }, D { l: 11, t: 0, i: 793, }, D { l: 12, t: 0, i: 266, }, D { l: 15, t: 0, i: 158, }, D { l: 20, t: 0, i: 89 }, D { l: 150, t: 0, i: 32, }, D { l: 7, t: 0, i: 1330, }, D { l: 4, t: 11, i: 297, }, D { l: 6, t: 11, i: 529, }, D { l: 7, t: 11, i: 152, }, D { l: 7, t: 11, i: 713, }, D { l: 7, t: 11, i: 1845, }, D { l: 8, t: 11, i: 710, }, D { l: 8, t: 11, i: 717, }, D { l: 140, t: 11, i: 639, }, D { l: 5, t: 0, i: 389 }, D { l: 136, t: 0, i: 636, }, D { l: 134, t: 0, i: 1409, }, D { l: 4, t: 10, i: 562, }, D { l: 9, t: 10, i: 254, }, D { l: 139, t: 10, i: 879, }, D { l: 134, t: 0, i: 893, }, D { l: 132, t: 10, i: 786, }, D { l: 4, t: 11, i: 520, }, D { l: 135, t: 11, i: 575, }, D { l: 136, t: 0, i: 21, }, D { l: 140, t: 0, i: 721, }, D { l: 136, t: 0, i: 959, }, D { l: 7, t: 11, i: 1428, }, D { l: 7, t: 11, i: 1640, }, D { l: 9, t: 11, i: 169, }, D { l: 9, t: 11, i: 182, }, D { l: 9, t: 11, i: 367, }, D { l: 9, t: 11, i: 478, }, D { l: 9, t: 11, i: 506, }, D { l: 9, t: 11, i: 551, }, D { l: 9, t: 11, i: 648, }, D { l: 9, t: 11, i: 651, }, D { l: 9, t: 11, i: 697, }, D { l: 9, t: 11, i: 705, }, D { l: 9, t: 11, i: 725, }, D { l: 9, t: 11, i: 787, }, D { l: 9, t: 11, i: 794, }, D { l: 10, t: 11, i: 198, }, D { l: 10, t: 11, i: 214, }, D { l: 10, t: 11, i: 267, }, D { l: 10, t: 11, i: 275, }, D { l: 10, t: 11, i: 456, }, D { l: 10, t: 11, i: 551, }, D { l: 10, t: 11, i: 561, }, D { l: 10, t: 11, i: 613, }, D { l: 10, t: 11, i: 627, }, D { l: 10, t: 11, i: 668, }, D { l: 10, t: 11, i: 675, }, D { l: 10, t: 11, i: 691, }, D { l: 10, t: 11, i: 695, }, D { l: 10, t: 11, i: 707, }, D { l: 10, t: 11, i: 715, }, D { l: 11, t: 11, i: 183, }, D { l: 11, t: 11, i: 201, }, D { l: 11, t: 11, i: 244, }, D { l: 11, t: 11, i: 262, }, D { l: 11, t: 11, i: 352, }, D { l: 11, t: 11, i: 439, }, D { l: 11, t: 11, i: 493, }, D { l: 11, t: 11, i: 572, }, D { l: 11, t: 11, i: 591, }, D { l: 11, t: 11, i: 608, }, D { l: 11, t: 11, i: 611, }, D { l: 11, t: 11, i: 646, }, D { l: 11, t: 11, i: 674, }, D { l: 11, t: 11, i: 711, }, D { l: 11, t: 11, i: 751, }, D { l: 11, t: 11, i: 761, }, D { l: 11, t: 11, i: 776, }, D { l: 11, t: 11, i: 785, }, D { l: 11, t: 11, i: 850, }, D { l: 11, t: 11, i: 853, }, D { l: 11, t: 11, i: 862, }, D { l: 11, t: 11, i: 865, }, D { l: 11, t: 11, i: 868, }, D { l: 11, t: 11, i: 898, }, D { l: 11, t: 11, i: 902, }, D { l: 11, t: 11, i: 903, }, D { l: 11, t: 11, i: 910, }, D { l: 11, t: 11, i: 932, }, D { l: 11, t: 11, i: 942, }, D { l: 11, t: 11, i: 957, }, D { l: 11, t: 11, i: 967, }, D { l: 11, t: 11, i: 972, }, D { l: 12, t: 11, i: 148, }, D { l: 12, t: 11, i: 195, }, D { l: 12, t: 11, i: 220, }, D { l: 12, t: 11, i: 237, }, D { l: 12, t: 11, i: 318, }, D { l: 12, t: 11, i: 339, }, D { l: 12, t: 11, i: 393, }, D { l: 12, t: 11, i: 445, }, D { l: 12, t: 11, i: 450, }, D { l: 12, t: 11, i: 474, }, D { l: 12, t: 11, i: 509, }, D { l: 12, t: 11, i: 533, }, D { l: 12, t: 11, i: 591, }, D { l: 12, t: 11, i: 594, }, D { l: 12, t: 11, i: 597, }, D { l: 12, t: 11, i: 621, }, D { l: 12, t: 11, i: 633, }, D { l: 12, t: 11, i: 642, }, D { l: 13, t: 11, i: 59, }, D { l: 13, t: 11, i: 60, }, D { l: 13, t: 11, i: 145, }, D { l: 13, t: 11, i: 239, }, D { l: 13, t: 11, i: 250, }, D { l: 13, t: 11, i: 273, }, D { l: 13, t: 11, i: 329, }, D { l: 13, t: 11, i: 344, }, D { l: 13, t: 11, i: 365, }, D { l: 13, t: 11, i: 372, }, D { l: 13, t: 11, i: 387, }, D { l: 13, t: 11, i: 403, }, D { l: 13, t: 11, i: 414, }, D { l: 13, t: 11, i: 456, }, D { l: 13, t: 11, i: 478, }, D { l: 13, t: 11, i: 483, }, D { l: 13, t: 11, i: 489, }, D { l: 14, t: 11, i: 55, }, D { l: 14, t: 11, i: 57, }, D { l: 14, t: 11, i: 81, }, D { l: 14, t: 11, i: 90, }, D { l: 14, t: 11, i: 148, }, D { l: 14, t: 11, i: 239, }, D { l: 14, t: 11, i: 266, }, D { l: 14, t: 11, i: 321, }, D { l: 14, t: 11, i: 326, }, D { l: 14, t: 11, i: 327, }, D { l: 14, t: 11, i: 330, }, D { l: 14, t: 11, i: 347, }, D { l: 14, t: 11, i: 355, }, D { l: 14, t: 11, i: 401, }, D { l: 14, t: 11, i: 411, }, D { l: 14, t: 11, i: 414, }, D { l: 14, t: 11, i: 416, }, D { l: 14, t: 11, i: 420, }, D { l: 15, t: 11, i: 61, }, D { l: 15, t: 11, i: 74, }, D { l: 15, t: 11, i: 87, }, D { l: 15, t: 11, i: 88, }, D { l: 15, t: 11, i: 94, }, D { l: 15, t: 11, i: 96, }, D { l: 15, t: 11, i: 116, }, D { l: 15, t: 11, i: 149, }, D { l: 15, t: 11, i: 154, }, D { l: 16, t: 11, i: 50, }, D { l: 16, t: 11, i: 63, }, D { l: 16, t: 11, i: 73, }, D { l: 17, t: 11, i: 2 }, D { l: 17, t: 11, i: 66, }, D { l: 17, t: 11, i: 92, }, D { l: 17, t: 11, i: 103, }, D { l: 17, t: 11, i: 112, }, D { l: 18, t: 11, i: 50, }, D { l: 18, t: 11, i: 54, }, D { l: 18, t: 11, i: 82, }, D { l: 18, t: 11, i: 86, }, D { l: 18, t: 11, i: 90, }, D { l: 18, t: 11, i: 111, }, D { l: 18, t: 11, i: 115, }, D { l: 18, t: 11, i: 156, }, D { l: 19, t: 11, i: 40, }, D { l: 19, t: 11, i: 79, }, D { l: 20, t: 11, i: 78, }, D { l: 149, t: 11, i: 22, }, D { l: 137, t: 11, i: 170, }, D { l: 134, t: 0, i: 1433, }, D { l: 135, t: 11, i: 1307, }, D { l: 139, t: 11, i: 411, }, D { l: 5, t: 0, i: 189 }, D { l: 7, t: 0, i: 442 }, D { l: 7, t: 0, i: 443 }, D { l: 8, t: 0, i: 281 }, D { l: 12, t: 0, i: 174, }, D { l: 141, t: 0, i: 261, }, D { l: 6, t: 10, i: 216, }, D { l: 7, t: 10, i: 901, }, D { l: 7, t: 10, i: 1343, }, D { l: 136, t: 10, i: 493, }, D { l: 5, t: 11, i: 397, }, D { l: 6, t: 11, i: 154, }, D { l: 7, t: 10, i: 341, }, D { l: 7, t: 11, i: 676, }, D { l: 8, t: 11, i: 443, }, D { l: 8, t: 11, i: 609, }, D { l: 9, t: 11, i: 24 }, D { l: 9, t: 11, i: 325, }, D { l: 10, t: 11, i: 35, }, D { l: 11, t: 10, i: 219, }, D { l: 11, t: 11, i: 535, }, D { l: 11, t: 11, i: 672, }, D { l: 11, t: 11, i: 1018, }, D { l: 12, t: 11, i: 637, }, D { l: 144, t: 11, i: 30, }, D { l: 6, t: 0, i: 2 }, D { l: 7, t: 0, i: 191 }, D { l: 7, t: 0, i: 446 }, D { l: 7, t: 0, i: 1262, }, D { l: 7, t: 0, i: 1737, }, D { l: 8, t: 0, i: 22 }, D { l: 8, t: 0, i: 270 }, D { l: 8, t: 0, i: 612 }, D { l: 9, t: 0, i: 4 }, D { l: 9, t: 0, i: 312 }, D { l: 9, t: 0, i: 436 }, D { l: 9, t: 0, i: 626 }, D { l: 10, t: 0, i: 216, }, D { l: 10, t: 0, i: 311, }, D { l: 10, t: 0, i: 521, }, D { l: 10, t: 0, i: 623, }, D { l: 11, t: 0, i: 72 }, D { l: 11, t: 0, i: 330, }, D { l: 11, t: 0, i: 455, }, D { l: 12, t: 0, i: 321, }, D { l: 12, t: 0, i: 504, }, D { l: 12, t: 0, i: 530, }, D { l: 12, t: 0, i: 543, }, D { l: 13, t: 0, i: 17 }, D { l: 13, t: 0, i: 156, }, D { l: 13, t: 0, i: 334, }, D { l: 14, t: 0, i: 131, }, D { l: 17, t: 0, i: 60 }, D { l: 148, t: 0, i: 64, }, D { l: 7, t: 0, i: 354 }, D { l: 10, t: 0, i: 410, }, D { l: 139, t: 0, i: 815, }, D { l: 139, t: 10, i: 130, }, D { l: 7, t: 10, i: 1734, }, D { l: 137, t: 11, i: 631, }, D { l: 12, t: 0, i: 425, }, D { l: 15, t: 0, i: 112, }, D { l: 10, t: 10, i: 115, }, D { l: 11, t: 10, i: 420, }, D { l: 13, t: 10, i: 404, }, D { l: 14, t: 10, i: 346, }, D { l: 143, t: 10, i: 54, }, D { l: 6, t: 0, i: 60 }, D { l: 6, t: 0, i: 166 }, D { l: 7, t: 0, i: 374 }, D { l: 7, t: 0, i: 670 }, D { l: 7, t: 0, i: 1327, }, D { l: 8, t: 0, i: 411 }, D { l: 8, t: 0, i: 435 }, D { l: 9, t: 0, i: 653 }, D { l: 9, t: 0, i: 740 }, D { l: 10, t: 0, i: 385, }, D { l: 11, t: 0, i: 222, }, D { l: 11, t: 0, i: 324, }, D { l: 11, t: 0, i: 829, }, D { l: 140, t: 0, i: 611, }, D { l: 7, t: 0, i: 1611, }, D { l: 13, t: 0, i: 14 }, D { l: 15, t: 0, i: 44 }, D { l: 19, t: 0, i: 13 }, D { l: 148, t: 0, i: 76, }, D { l: 133, t: 11, i: 981, }, D { l: 4, t: 11, i: 56 }, D { l: 7, t: 11, i: 1791, }, D { l: 8, t: 11, i: 607, }, D { l: 8, t: 11, i: 651, }, D { l: 11, t: 11, i: 465, }, D { l: 11, t: 11, i: 835, }, D { l: 12, t: 11, i: 337, }, D { l: 141, t: 11, i: 480, }, D { l: 6, t: 0, i: 1478, }, D { l: 5, t: 10, i: 1011, }, D { l: 136, t: 10, i: 701, }, D { l: 139, t: 0, i: 596, }, D { l: 5, t: 0, i: 206 }, D { l: 134, t: 0, i: 398, }, D { l: 4, t: 10, i: 54 }, D { l: 5, t: 10, i: 666, }, D { l: 7, t: 10, i: 1039, }, D { l: 7, t: 10, i: 1130, }, D { l: 9, t: 10, i: 195, }, D { l: 138, t: 10, i: 302, }, D { l: 7, t: 0, i: 50 }, D { l: 9, t: 11, i: 158, }, D { l: 138, t: 11, i: 411, }, D { l: 135, t: 11, i: 1120, }, D { l: 6, t: 0, i: 517 }, D { l: 7, t: 0, i: 1159, }, D { l: 10, t: 0, i: 621, }, D { l: 11, t: 0, i: 192, }, D { l: 134, t: 10, i: 1669, }, D { l: 4, t: 0, i: 592 }, D { l: 6, t: 0, i: 600 }, D { l: 135, t: 0, i: 1653, }, D { l: 10, t: 0, i: 223, }, D { l: 139, t: 0, i: 645, }, D { l: 136, t: 11, i: 139, }, D { l: 7, t: 0, i: 64 }, D { l: 136, t: 0, i: 245, }, D { l: 142, t: 0, i: 278, }, D { l: 6, t: 11, i: 622, }, D { l: 135, t: 11, i: 1030, }, D { l: 136, t: 0, i: 604, }, D { l: 134, t: 0, i: 1502, }, D { l: 138, t: 0, i: 265, }, D { l: 141, t: 11, i: 168, }, D { l: 7, t: 0, i: 1763, }, D { l: 140, t: 0, i: 310, }, D { l: 7, t: 10, i: 798, }, D { l: 139, t: 11, i: 719, }, D { l: 7, t: 11, i: 160, }, D { l: 10, t: 11, i: 624, }, D { l: 142, t: 11, i: 279, }, D { l: 132, t: 11, i: 363, }, D { l: 7, t: 10, i: 122, }, D { l: 9, t: 10, i: 259, }, D { l: 10, t: 10, i: 84, }, D { l: 11, t: 10, i: 470, }, D { l: 12, t: 10, i: 541, }, D { l: 141, t: 10, i: 379, }, D { l: 5, t: 0, i: 129 }, D { l: 6, t: 0, i: 61 }, D { l: 135, t: 0, i: 947, }, D { l: 134, t: 0, i: 1356, }, D { l: 135, t: 11, i: 1191, }, D { l: 13, t: 0, i: 505, }, D { l: 141, t: 0, i: 506, }, D { l: 11, t: 0, i: 1000, }, D { l: 5, t: 10, i: 82 }, D { l: 5, t: 10, i: 131, }, D { l: 7, t: 10, i: 1755, }, D { l: 8, t: 10, i: 31 }, D { l: 9, t: 10, i: 168, }, D { l: 9, t: 10, i: 764, }, D { l: 139, t: 10, i: 869, }, D { l: 134, t: 0, i: 966, }, D { l: 134, t: 10, i: 605, }, D { l: 134, t: 11, i: 292, }, D { l: 5, t: 11, i: 177, }, D { l: 6, t: 11, i: 616, }, D { l: 7, t: 11, i: 827, }, D { l: 9, t: 11, i: 525, }, D { l: 138, t: 11, i: 656, }, D { l: 135, t: 11, i: 1486, }, D { l: 138, t: 11, i: 31, }, D { l: 5, t: 10, i: 278, }, D { l: 137, t: 10, i: 68, }, D { l: 4, t: 10, i: 163, }, D { l: 5, t: 10, i: 201, }, D { l: 5, t: 10, i: 307, }, D { l: 5, t: 10, i: 310, }, D { l: 6, t: 10, i: 335, }, D { l: 7, t: 10, i: 284, }, D { l: 136, t: 10, i: 165, }, D { l: 6, t: 0, i: 839 }, D { l: 135, t: 10, i: 1660, }, D { l: 136, t: 10, i: 781, }, D { l: 6, t: 10, i: 33 }, D { l: 135, t: 10, i: 1244, }, D { l: 133, t: 0, i: 637, }, D { l: 4, t: 11, i: 161, }, D { l: 133, t: 11, i: 631, }, D { l: 137, t: 0, i: 590, }, D { l: 7, t: 10, i: 1953, }, D { l: 136, t: 10, i: 720, }, D { l: 5, t: 0, i: 280 }, D { l: 7, t: 0, i: 1226, }, D { l: 138, t: 10, i: 203, }, D { l: 134, t: 0, i: 1386, }, D { l: 5, t: 0, i: 281 }, D { l: 6, t: 0, i: 1026, }, D { l: 6, t: 10, i: 326, }, D { l: 7, t: 10, i: 677, }, D { l: 137, t: 10, i: 425, }, D { l: 7, t: 11, i: 1557, }, D { l: 135, t: 11, i: 1684, }, D { l: 135, t: 0, i: 1064, }, D { l: 9, t: 11, i: 469, }, D { l: 9, t: 11, i: 709, }, D { l: 12, t: 11, i: 512, }, D { l: 14, t: 11, i: 65, }, D { l: 145, t: 11, i: 12, }, D { l: 134, t: 0, i: 917, }, D { l: 10, t: 11, i: 229, }, D { l: 11, t: 11, i: 73, }, D { l: 11, t: 11, i: 376, }, D { l: 139, t: 11, i: 433, }, D { l: 7, t: 0, i: 555 }, D { l: 9, t: 0, i: 192 }, D { l: 13, t: 0, i: 30 }, D { l: 13, t: 0, i: 49 }, D { l: 15, t: 0, i: 150, }, D { l: 16, t: 0, i: 76 }, D { l: 20, t: 0, i: 52 }, D { l: 7, t: 10, i: 1316, }, D { l: 7, t: 10, i: 1412, }, D { l: 7, t: 10, i: 1839, }, D { l: 9, t: 10, i: 589, }, D { l: 11, t: 10, i: 241, }, D { l: 11, t: 10, i: 676, }, D { l: 11, t: 10, i: 811, }, D { l: 11, t: 10, i: 891, }, D { l: 12, t: 10, i: 140, }, D { l: 12, t: 10, i: 346, }, D { l: 12, t: 10, i: 479, }, D { l: 13, t: 10, i: 381, }, D { l: 14, t: 10, i: 188, }, D { l: 146, t: 10, i: 30, }, D { l: 149, t: 0, i: 15, }, D { l: 6, t: 0, i: 1882, }, D { l: 6, t: 0, i: 1883, }, D { l: 6, t: 0, i: 1897, }, D { l: 9, t: 0, i: 945 }, D { l: 9, t: 0, i: 1014, }, D { l: 9, t: 0, i: 1020, }, D { l: 12, t: 0, i: 823, }, D { l: 12, t: 0, i: 842, }, D { l: 12, t: 0, i: 866, }, D { l: 12, t: 0, i: 934, }, D { l: 15, t: 0, i: 242, }, D { l: 146, t: 0, i: 208, }, D { l: 6, t: 0, i: 965 }, D { l: 134, t: 0, i: 1499, }, D { l: 7, t: 0, i: 33 }, D { l: 7, t: 0, i: 120 }, D { l: 8, t: 0, i: 489 }, D { l: 9, t: 0, i: 319 }, D { l: 10, t: 0, i: 820, }, D { l: 11, t: 0, i: 1004, }, D { l: 12, t: 0, i: 379, }, D { l: 12, t: 0, i: 679, }, D { l: 13, t: 0, i: 117, }, D { l: 13, t: 0, i: 412, }, D { l: 14, t: 0, i: 25 }, D { l: 15, t: 0, i: 52 }, D { l: 15, t: 0, i: 161, }, D { l: 16, t: 0, i: 47 }, D { l: 149, t: 0, i: 2 }, D { l: 6, t: 11, i: 558, }, D { l: 7, t: 11, i: 651, }, D { l: 8, t: 11, i: 421, }, D { l: 9, t: 11, i: 0 }, D { l: 138, t: 11, i: 34, }, D { l: 4, t: 0, i: 937 }, D { l: 5, t: 0, i: 801 }, D { l: 7, t: 0, i: 473 }, D { l: 5, t: 10, i: 358, }, D { l: 7, t: 10, i: 1184, }, D { l: 10, t: 10, i: 662, }, D { l: 13, t: 10, i: 212, }, D { l: 13, t: 10, i: 304, }, D { l: 13, t: 10, i: 333, }, D { l: 145, t: 10, i: 98, }, D { l: 132, t: 0, i: 877, }, D { l: 6, t: 0, i: 693 }, D { l: 134, t: 0, i: 824, }, D { l: 132, t: 0, i: 365, }, D { l: 7, t: 11, i: 1832, }, D { l: 138, t: 11, i: 374, }, D { l: 5, t: 0, i: 7 }, D { l: 139, t: 0, i: 774, }, D { l: 4, t: 0, i: 734 }, D { l: 5, t: 0, i: 662 }, D { l: 134, t: 0, i: 430, }, D { l: 4, t: 0, i: 746 }, D { l: 135, t: 0, i: 1090, }, D { l: 5, t: 0, i: 360 }, D { l: 8, t: 0, i: 237 }, D { l: 10, t: 0, i: 231, }, D { l: 147, t: 0, i: 124, }, D { l: 138, t: 11, i: 348, }, D { l: 6, t: 11, i: 6 }, D { l: 7, t: 11, i: 81 }, D { l: 7, t: 11, i: 771, }, D { l: 7, t: 11, i: 1731, }, D { l: 9, t: 11, i: 405, }, D { l: 138, t: 11, i: 421, }, D { l: 6, t: 0, i: 740 }, D { l: 137, t: 0, i: 822, }, D { l: 133, t: 10, i: 946, }, D { l: 7, t: 0, i: 1485, }, D { l: 136, t: 0, i: 929, }, D { l: 7, t: 10, i: 411, }, D { l: 8, t: 10, i: 631, }, D { l: 9, t: 10, i: 323, }, D { l: 10, t: 10, i: 355, }, D { l: 11, t: 10, i: 491, }, D { l: 12, t: 10, i: 143, }, D { l: 12, t: 10, i: 402, }, D { l: 13, t: 10, i: 73, }, D { l: 14, t: 10, i: 408, }, D { l: 15, t: 10, i: 107, }, D { l: 146, t: 10, i: 71, }, D { l: 135, t: 10, i: 590, }, D { l: 5, t: 11, i: 881, }, D { l: 133, t: 11, i: 885, }, D { l: 150, t: 11, i: 25, }, D { l: 4, t: 0, i: 852 }, D { l: 5, t: 11, i: 142, }, D { l: 134, t: 11, i: 546, }, D { l: 7, t: 10, i: 1467, }, D { l: 8, t: 10, i: 328, }, D { l: 10, t: 10, i: 544, }, D { l: 11, t: 10, i: 955, }, D { l: 13, t: 10, i: 320, }, D { l: 145, t: 10, i: 83, }, D { l: 9, t: 0, i: 17 }, D { l: 10, t: 0, i: 291, }, D { l: 11, t: 10, i: 511, }, D { l: 13, t: 10, i: 394, }, D { l: 14, t: 10, i: 298, }, D { l: 14, t: 10, i: 318, }, D { l: 146, t: 10, i: 103, }, D { l: 5, t: 11, i: 466, }, D { l: 11, t: 11, i: 571, }, D { l: 12, t: 11, i: 198, }, D { l: 13, t: 11, i: 283, }, D { l: 14, t: 11, i: 186, }, D { l: 15, t: 11, i: 21, }, D { l: 143, t: 11, i: 103, }, D { l: 134, t: 0, i: 1001, }, D { l: 4, t: 11, i: 185, }, D { l: 5, t: 11, i: 257, }, D { l: 5, t: 11, i: 839, }, D { l: 5, t: 11, i: 936, }, D { l: 7, t: 11, i: 171, }, D { l: 9, t: 11, i: 399, }, D { l: 10, t: 11, i: 258, }, D { l: 10, t: 11, i: 395, }, D { l: 10, t: 11, i: 734, }, D { l: 11, t: 11, i: 1014, }, D { l: 12, t: 11, i: 23, }, D { l: 13, t: 11, i: 350, }, D { l: 14, t: 11, i: 150, }, D { l: 147, t: 11, i: 6, }, D { l: 143, t: 0, i: 35, }, D { l: 132, t: 0, i: 831, }, D { l: 5, t: 10, i: 835, }, D { l: 134, t: 10, i: 483, }, D { l: 4, t: 0, i: 277 }, D { l: 5, t: 0, i: 608 }, D { l: 6, t: 0, i: 493 }, D { l: 7, t: 0, i: 457 }, D { l: 12, t: 0, i: 384, }, D { l: 7, t: 11, i: 404, }, D { l: 7, t: 11, i: 1377, }, D { l: 7, t: 11, i: 1430, }, D { l: 7, t: 11, i: 2017, }, D { l: 8, t: 11, i: 149, }, D { l: 8, t: 11, i: 239, }, D { l: 8, t: 11, i: 512, }, D { l: 8, t: 11, i: 793, }, D { l: 8, t: 11, i: 818, }, D { l: 9, t: 11, i: 474, }, D { l: 9, t: 11, i: 595, }, D { l: 10, t: 11, i: 122, }, D { l: 10, t: 11, i: 565, }, D { l: 10, t: 11, i: 649, }, D { l: 10, t: 11, i: 783, }, D { l: 11, t: 11, i: 239, }, D { l: 11, t: 11, i: 295, }, D { l: 11, t: 11, i: 447, }, D { l: 11, t: 11, i: 528, }, D { l: 11, t: 11, i: 639, }, D { l: 11, t: 11, i: 800, }, D { l: 11, t: 11, i: 936, }, D { l: 12, t: 11, i: 25, }, D { l: 12, t: 11, i: 73, }, D { l: 12, t: 11, i: 77, }, D { l: 12, t: 11, i: 157, }, D { l: 12, t: 11, i: 316, }, D { l: 12, t: 11, i: 390, }, D { l: 12, t: 11, i: 391, }, D { l: 12, t: 11, i: 394, }, D { l: 12, t: 11, i: 395, }, D { l: 12, t: 11, i: 478, }, D { l: 12, t: 11, i: 503, }, D { l: 12, t: 11, i: 592, }, D { l: 12, t: 11, i: 680, }, D { l: 13, t: 11, i: 50, }, D { l: 13, t: 11, i: 53, }, D { l: 13, t: 11, i: 132, }, D { l: 13, t: 11, i: 198, }, D { l: 13, t: 11, i: 275, }, D { l: 13, t: 11, i: 322, }, D { l: 13, t: 11, i: 415, }, D { l: 14, t: 11, i: 71, }, D { l: 14, t: 11, i: 257, }, D { l: 14, t: 11, i: 395, }, D { l: 15, t: 11, i: 71, }, D { l: 15, t: 11, i: 136, }, D { l: 17, t: 11, i: 123, }, D { l: 18, t: 11, i: 93, }, D { l: 147, t: 11, i: 58, }, D { l: 134, t: 0, i: 1351, }, D { l: 7, t: 0, i: 27 }, D { l: 135, t: 0, i: 316, }, D { l: 136, t: 11, i: 712, }, D { l: 136, t: 0, i: 984, }, D { l: 133, t: 0, i: 552, }, D { l: 137, t: 0, i: 264, }, D { l: 132, t: 0, i: 401, }, D { l: 6, t: 0, i: 710 }, D { l: 6, t: 0, i: 1111, }, D { l: 134, t: 0, i: 1343, }, D { l: 134, t: 0, i: 1211, }, D { l: 9, t: 0, i: 543 }, D { l: 10, t: 0, i: 524, }, D { l: 11, t: 0, i: 108, }, D { l: 11, t: 0, i: 653, }, D { l: 12, t: 0, i: 524, }, D { l: 13, t: 0, i: 123, }, D { l: 14, t: 0, i: 252, }, D { l: 16, t: 0, i: 18 }, D { l: 19, t: 0, i: 38 }, D { l: 20, t: 0, i: 26 }, D { l: 20, t: 0, i: 65 }, D { l: 21, t: 0, i: 3 }, D { l: 151, t: 0, i: 11, }, D { l: 4, t: 0, i: 205 }, D { l: 5, t: 0, i: 623 }, D { l: 7, t: 0, i: 104 }, D { l: 8, t: 0, i: 519 }, D { l: 137, t: 0, i: 716, }, D { l: 132, t: 10, i: 677, }, D { l: 4, t: 11, i: 377, }, D { l: 152, t: 11, i: 13, }, D { l: 135, t: 11, i: 1673, }, D { l: 7, t: 0, i: 579 }, D { l: 9, t: 0, i: 41 }, D { l: 9, t: 0, i: 244 }, D { l: 9, t: 0, i: 669 }, D { l: 10, t: 0, i: 5 }, D { l: 11, t: 0, i: 861, }, D { l: 11, t: 0, i: 951, }, D { l: 139, t: 0, i: 980, }, D { l: 132, t: 0, i: 717, }, D { l: 136, t: 0, i: 1011, }, D { l: 132, t: 0, i: 805, }, D { l: 4, t: 11, i: 180, }, D { l: 135, t: 11, i: 1906, }, D { l: 132, t: 10, i: 777, }, D { l: 132, t: 10, i: 331, }, D { l: 132, t: 0, i: 489, }, D { l: 6, t: 0, i: 1024, }, D { l: 4, t: 11, i: 491, }, D { l: 133, t: 10, i: 747, }, D { l: 135, t: 11, i: 1182, }, D { l: 4, t: 11, i: 171, }, D { l: 138, t: 11, i: 234, }, D { l: 4, t: 11, i: 586, }, D { l: 7, t: 11, i: 1186, }, D { l: 138, t: 11, i: 631, }, D { l: 135, t: 0, i: 892, }, D { l: 135, t: 11, i: 336, }, D { l: 9, t: 11, i: 931, }, D { l: 10, t: 11, i: 334, }, D { l: 148, t: 11, i: 71, }, D { l: 137, t: 0, i: 473, }, D { l: 6, t: 0, i: 864 }, D { l: 12, t: 0, i: 659, }, D { l: 139, t: 11, i: 926, }, D { l: 7, t: 0, i: 819 }, D { l: 9, t: 0, i: 26 }, D { l: 9, t: 0, i: 392 }, D { l: 10, t: 0, i: 152, }, D { l: 10, t: 0, i: 226, }, D { l: 11, t: 0, i: 19 }, D { l: 12, t: 0, i: 276, }, D { l: 12, t: 0, i: 426, }, D { l: 12, t: 0, i: 589, }, D { l: 13, t: 0, i: 460, }, D { l: 15, t: 0, i: 97 }, D { l: 19, t: 0, i: 48 }, D { l: 148, t: 0, i: 104, }, D { l: 135, t: 0, i: 51, }, D { l: 133, t: 10, i: 326, }, D { l: 4, t: 10, i: 691, }, D { l: 146, t: 10, i: 16, }, D { l: 9, t: 0, i: 130 }, D { l: 11, t: 0, i: 765, }, D { l: 10, t: 10, i: 680, }, D { l: 10, t: 10, i: 793, }, D { l: 141, t: 10, i: 357, }, D { l: 133, t: 11, i: 765, }, D { l: 8, t: 0, i: 229 }, D { l: 6, t: 10, i: 32 }, D { l: 7, t: 10, i: 385, }, D { l: 7, t: 10, i: 757, }, D { l: 7, t: 10, i: 1916, }, D { l: 8, t: 10, i: 94 }, D { l: 8, t: 10, i: 711, }, D { l: 9, t: 10, i: 541, }, D { l: 10, t: 10, i: 162, }, D { l: 10, t: 10, i: 795, }, D { l: 11, t: 10, i: 989, }, D { l: 11, t: 10, i: 1010, }, D { l: 12, t: 10, i: 14, }, D { l: 142, t: 10, i: 308, }, D { l: 7, t: 11, i: 474, }, D { l: 137, t: 11, i: 578, }, D { l: 132, t: 0, i: 674, }, D { l: 132, t: 0, i: 770, }, D { l: 5, t: 0, i: 79 }, D { l: 7, t: 0, i: 1027, }, D { l: 7, t: 0, i: 1477, }, D { l: 139, t: 0, i: 52, }, D { l: 133, t: 11, i: 424, }, D { l: 134, t: 0, i: 1666, }, D { l: 6, t: 0, i: 409 }, D { l: 6, t: 10, i: 349, }, D { l: 6, t: 10, i: 1682, }, D { l: 7, t: 10, i: 1252, }, D { l: 8, t: 10, i: 112, }, D { l: 8, t: 11, i: 714, }, D { l: 9, t: 10, i: 435, }, D { l: 9, t: 10, i: 668, }, D { l: 10, t: 10, i: 290, }, D { l: 10, t: 10, i: 319, }, D { l: 10, t: 10, i: 815, }, D { l: 11, t: 10, i: 180, }, D { l: 11, t: 10, i: 837, }, D { l: 12, t: 10, i: 240, }, D { l: 13, t: 10, i: 152, }, D { l: 13, t: 10, i: 219, }, D { l: 142, t: 10, i: 158, }, D { l: 5, t: 0, i: 789 }, D { l: 134, t: 0, i: 195, }, D { l: 4, t: 0, i: 251 }, D { l: 4, t: 0, i: 688 }, D { l: 7, t: 0, i: 513 }, D { l: 135, t: 0, i: 1284, }, D { l: 132, t: 10, i: 581, }, D { l: 9, t: 11, i: 420, }, D { l: 10, t: 11, i: 269, }, D { l: 10, t: 11, i: 285, }, D { l: 10, t: 11, i: 576, }, D { l: 11, t: 11, i: 397, }, D { l: 13, t: 11, i: 175, }, D { l: 145, t: 11, i: 90, }, D { l: 6, t: 10, i: 126, }, D { l: 7, t: 10, i: 573, }, D { l: 8, t: 10, i: 397, }, D { l: 142, t: 10, i: 44, }, D { l: 132, t: 11, i: 429, }, D { l: 133, t: 0, i: 889, }, D { l: 4, t: 0, i: 160 }, D { l: 5, t: 0, i: 330 }, D { l: 7, t: 0, i: 1434, }, D { l: 136, t: 0, i: 174, }, D { l: 7, t: 11, i: 18 }, D { l: 7, t: 11, i: 699, }, D { l: 7, t: 11, i: 1966, }, D { l: 8, t: 11, i: 752, }, D { l: 9, t: 11, i: 273, }, D { l: 9, t: 11, i: 412, }, D { l: 9, t: 11, i: 703, }, D { l: 10, t: 11, i: 71, }, D { l: 10, t: 11, i: 427, }, D { l: 10, t: 11, i: 508, }, D { l: 146, t: 11, i: 97, }, D { l: 6, t: 0, i: 872 }, D { l: 134, t: 0, i: 899, }, D { l: 133, t: 10, i: 926, }, D { l: 134, t: 0, i: 1126, }, D { l: 134, t: 0, i: 918, }, D { l: 4, t: 11, i: 53 }, D { l: 5, t: 11, i: 186, }, D { l: 135, t: 11, i: 752, }, D { l: 7, t: 0, i: 268 }, D { l: 136, t: 0, i: 569, }, D { l: 134, t: 0, i: 1224, }, D { l: 6, t: 0, i: 1361, }, D { l: 7, t: 10, i: 1232, }, D { l: 137, t: 10, i: 531, }, D { l: 8, t: 11, i: 575, }, D { l: 10, t: 11, i: 289, }, D { l: 139, t: 11, i: 319, }, D { l: 133, t: 10, i: 670, }, D { l: 132, t: 11, i: 675, }, D { l: 133, t: 0, i: 374, }, D { l: 135, t: 10, i: 1957, }, D { l: 133, t: 0, i: 731, }, D { l: 11, t: 0, i: 190, }, D { l: 15, t: 0, i: 49 }, D { l: 11, t: 11, i: 190, }, D { l: 143, t: 11, i: 49, }, D { l: 4, t: 0, i: 626 }, D { l: 5, t: 0, i: 506 }, D { l: 5, t: 0, i: 642 }, D { l: 6, t: 0, i: 425 }, D { l: 10, t: 0, i: 202, }, D { l: 139, t: 0, i: 141, }, D { l: 137, t: 0, i: 444, }, D { l: 7, t: 10, i: 242, }, D { l: 135, t: 10, i: 1942, }, D { l: 6, t: 11, i: 209, }, D { l: 8, t: 11, i: 468, }, D { l: 9, t: 11, i: 210, }, D { l: 11, t: 11, i: 36, }, D { l: 12, t: 11, i: 28, }, D { l: 12, t: 11, i: 630, }, D { l: 13, t: 11, i: 21, }, D { l: 13, t: 11, i: 349, }, D { l: 14, t: 11, i: 7 }, D { l: 145, t: 11, i: 13, }, D { l: 4, t: 11, i: 342, }, D { l: 135, t: 11, i: 1179, }, D { l: 5, t: 10, i: 834, }, D { l: 7, t: 10, i: 1202, }, D { l: 8, t: 10, i: 14 }, D { l: 9, t: 10, i: 481, }, D { l: 137, t: 10, i: 880, }, D { l: 4, t: 11, i: 928, }, D { l: 133, t: 11, i: 910, }, D { l: 4, t: 11, i: 318, }, D { l: 4, t: 11, i: 496, }, D { l: 7, t: 11, i: 856, }, D { l: 139, t: 11, i: 654, }, D { l: 136, t: 0, i: 835, }, D { l: 7, t: 0, i: 1526, }, D { l: 138, t: 10, i: 465, }, D { l: 151, t: 0, i: 17, }, D { l: 135, t: 0, i: 477, }, D { l: 4, t: 10, i: 357, }, D { l: 6, t: 10, i: 172, }, D { l: 7, t: 10, i: 143, }, D { l: 137, t: 10, i: 413, }, D { l: 6, t: 0, i: 1374, }, D { l: 138, t: 0, i: 994, }, D { l: 18, t: 0, i: 76 }, D { l: 132, t: 10, i: 590, }, D { l: 7, t: 0, i: 287 }, D { l: 8, t: 0, i: 355 }, D { l: 9, t: 0, i: 293 }, D { l: 137, t: 0, i: 743, }, D { l: 134, t: 0, i: 1389, }, D { l: 7, t: 11, i: 915, }, D { l: 8, t: 11, i: 247, }, D { l: 147, t: 11, i: 0, }, D { l: 4, t: 11, i: 202, }, D { l: 5, t: 11, i: 382, }, D { l: 6, t: 11, i: 454, }, D { l: 7, t: 11, i: 936, }, D { l: 7, t: 11, i: 1803, }, D { l: 8, t: 11, i: 758, }, D { l: 9, t: 11, i: 375, }, D { l: 9, t: 11, i: 895, }, D { l: 10, t: 11, i: 743, }, D { l: 10, t: 11, i: 792, }, D { l: 11, t: 11, i: 978, }, D { l: 11, t: 11, i: 1012, }, D { l: 142, t: 11, i: 109, }, D { l: 5, t: 0, i: 384 }, D { l: 8, t: 0, i: 455 }, D { l: 140, t: 0, i: 48, }, D { l: 132, t: 11, i: 390, }, D { l: 5, t: 10, i: 169, }, D { l: 7, t: 10, i: 333, }, D { l: 136, t: 10, i: 45, }, D { l: 5, t: 0, i: 264 }, D { l: 134, t: 0, i: 184, }, D { l: 138, t: 11, i: 791, }, D { l: 133, t: 11, i: 717, }, D { l: 132, t: 10, i: 198, }, D { l: 6, t: 11, i: 445, }, D { l: 7, t: 11, i: 332, }, D { l: 137, t: 11, i: 909, }, D { l: 136, t: 0, i: 1001, }, D { l: 4, t: 10, i: 24 }, D { l: 5, t: 10, i: 140, }, D { l: 5, t: 10, i: 185, }, D { l: 7, t: 10, i: 1500, }, D { l: 11, t: 10, i: 565, }, D { l: 139, t: 10, i: 838, }, D { l: 134, t: 11, i: 578, }, D { l: 5, t: 0, i: 633 }, D { l: 6, t: 0, i: 28 }, D { l: 135, t: 0, i: 1323, }, D { l: 132, t: 0, i: 851, }, D { l: 136, t: 11, i: 267, }, D { l: 7, t: 0, i: 359 }, D { l: 8, t: 0, i: 243 }, D { l: 140, t: 0, i: 175, }, D { l: 4, t: 10, i: 334, }, D { l: 133, t: 10, i: 593, }, D { l: 141, t: 11, i: 87, }, D { l: 136, t: 11, i: 766, }, D { l: 10, t: 0, i: 287, }, D { l: 12, t: 0, i: 138, }, D { l: 10, t: 11, i: 287, }, D { l: 140, t: 11, i: 138, }, D { l: 4, t: 0, i: 105 }, D { l: 132, t: 0, i: 740, }, D { l: 140, t: 10, i: 116, }, D { l: 134, t: 0, i: 857, }, D { l: 135, t: 11, i: 1841, }, D { l: 6, t: 0, i: 1402, }, D { l: 137, t: 0, i: 819, }, D { l: 132, t: 11, i: 584, }, D { l: 132, t: 10, i: 709, }, D { l: 133, t: 10, i: 897, }, D { l: 5, t: 0, i: 224 }, D { l: 13, t: 0, i: 174, }, D { l: 146, t: 0, i: 52, }, D { l: 135, t: 10, i: 1840, }, D { l: 4, t: 10, i: 608, }, D { l: 133, t: 10, i: 497, }, D { l: 139, t: 11, i: 60, }, D { l: 4, t: 0, i: 758 }, D { l: 135, t: 0, i: 1649, }, D { l: 4, t: 11, i: 226, }, D { l: 4, t: 11, i: 326, }, D { l: 135, t: 11, i: 1770, }, D { l: 5, t: 11, i: 426, }, D { l: 8, t: 11, i: 30 }, D { l: 9, t: 11, i: 2 }, D { l: 11, t: 11, i: 549, }, D { l: 147, t: 11, i: 122, }, D { l: 135, t: 10, i: 2039, }, D { l: 6, t: 10, i: 540, }, D { l: 136, t: 10, i: 136, }, D { l: 4, t: 0, i: 573 }, D { l: 8, t: 0, i: 655 }, D { l: 4, t: 10, i: 897, }, D { l: 133, t: 10, i: 786, }, D { l: 7, t: 0, i: 351 }, D { l: 139, t: 0, i: 128, }, D { l: 133, t: 10, i: 999, }, D { l: 4, t: 10, i: 299, }, D { l: 135, t: 10, i: 1004, }, D { l: 133, t: 0, i: 918, }, D { l: 132, t: 11, i: 345, }, D { l: 4, t: 11, i: 385, }, D { l: 7, t: 11, i: 265, }, D { l: 135, t: 11, i: 587, }, D { l: 133, t: 10, i: 456, }, D { l: 136, t: 10, i: 180, }, D { l: 6, t: 0, i: 687 }, D { l: 134, t: 0, i: 1537, }, D { l: 4, t: 11, i: 347, }, D { l: 5, t: 11, i: 423, }, D { l: 5, t: 11, i: 996, }, D { l: 135, t: 11, i: 1329, }, D { l: 132, t: 10, i: 755, }, D { l: 7, t: 11, i: 1259, }, D { l: 9, t: 11, i: 125, }, D { l: 11, t: 11, i: 65, }, D { l: 140, t: 11, i: 285, }, D { l: 5, t: 11, i: 136, }, D { l: 6, t: 11, i: 136, }, D { l: 136, t: 11, i: 644, }, D { l: 134, t: 0, i: 1525, }, D { l: 4, t: 0, i: 1009, }, D { l: 135, t: 0, i: 1139, }, D { l: 139, t: 10, i: 338, }, D { l: 132, t: 0, i: 340, }, D { l: 135, t: 10, i: 1464, }, D { l: 8, t: 0, i: 847 }, D { l: 10, t: 0, i: 861, }, D { l: 10, t: 0, i: 876, }, D { l: 10, t: 0, i: 889, }, D { l: 10, t: 0, i: 922, }, D { l: 10, t: 0, i: 929, }, D { l: 10, t: 0, i: 933, }, D { l: 12, t: 0, i: 784, }, D { l: 140, t: 0, i: 791, }, D { l: 139, t: 0, i: 176, }, D { l: 9, t: 11, i: 134, }, D { l: 10, t: 11, i: 2 }, D { l: 10, t: 11, i: 27, }, D { l: 10, t: 11, i: 333, }, D { l: 11, t: 11, i: 722, }, D { l: 143, t: 11, i: 1, }, D { l: 4, t: 11, i: 433, }, D { l: 133, t: 11, i: 719, }, D { l: 5, t: 0, i: 985 }, D { l: 7, t: 0, i: 509 }, D { l: 7, t: 0, i: 529 }, D { l: 145, t: 0, i: 96, }, D { l: 132, t: 0, i: 615, }, D { l: 4, t: 10, i: 890, }, D { l: 5, t: 10, i: 805, }, D { l: 5, t: 10, i: 819, }, D { l: 5, t: 10, i: 961, }, D { l: 6, t: 10, i: 396, }, D { l: 6, t: 10, i: 1631, }, D { l: 6, t: 10, i: 1678, }, D { l: 7, t: 10, i: 1967, }, D { l: 7, t: 10, i: 2041, }, D { l: 9, t: 10, i: 630, }, D { l: 11, t: 10, i: 8 }, D { l: 11, t: 10, i: 1019, }, D { l: 12, t: 10, i: 176, }, D { l: 13, t: 10, i: 225, }, D { l: 14, t: 10, i: 292, }, D { l: 149, t: 10, i: 24, }, D { l: 135, t: 0, i: 1919, }, D { l: 134, t: 0, i: 1131, }, D { l: 144, t: 11, i: 21, }, D { l: 144, t: 11, i: 51, }, D { l: 135, t: 10, i: 1815, }, D { l: 4, t: 0, i: 247 }, D { l: 7, t: 10, i: 1505, }, D { l: 10, t: 10, i: 190, }, D { l: 10, t: 10, i: 634, }, D { l: 11, t: 10, i: 792, }, D { l: 12, t: 10, i: 358, }, D { l: 140, t: 10, i: 447, }, D { l: 5, t: 10, i: 0 }, D { l: 6, t: 10, i: 536, }, D { l: 7, t: 10, i: 604, }, D { l: 13, t: 10, i: 445, }, D { l: 145, t: 10, i: 126, }, D { l: 4, t: 0, i: 184 }, D { l: 5, t: 0, i: 390 }, D { l: 6, t: 0, i: 337 }, D { l: 7, t: 0, i: 23 }, D { l: 7, t: 0, i: 494 }, D { l: 7, t: 0, i: 618 }, D { l: 7, t: 0, i: 1456, }, D { l: 8, t: 0, i: 27 }, D { l: 8, t: 0, i: 599 }, D { l: 10, t: 0, i: 153, }, D { l: 139, t: 0, i: 710, }, D { l: 6, t: 10, i: 232, }, D { l: 6, t: 10, i: 412, }, D { l: 7, t: 10, i: 1074, }, D { l: 8, t: 10, i: 9 }, D { l: 8, t: 10, i: 157, }, D { l: 8, t: 10, i: 786, }, D { l: 9, t: 10, i: 196, }, D { l: 9, t: 10, i: 352, }, D { l: 9, t: 10, i: 457, }, D { l: 10, t: 10, i: 337, }, D { l: 11, t: 10, i: 232, }, D { l: 11, t: 10, i: 877, }, D { l: 12, t: 10, i: 480, }, D { l: 140, t: 10, i: 546, }, D { l: 13, t: 0, i: 38 }, D { l: 135, t: 10, i: 958, }, D { l: 4, t: 10, i: 382, }, D { l: 136, t: 10, i: 579, }, D { l: 4, t: 10, i: 212, }, D { l: 135, t: 10, i: 1206, }, D { l: 4, t: 11, i: 555, }, D { l: 8, t: 11, i: 536, }, D { l: 138, t: 11, i: 288, }, D { l: 11, t: 11, i: 139, }, D { l: 139, t: 11, i: 171, }, D { l: 9, t: 11, i: 370, }, D { l: 138, t: 11, i: 90, }, D { l: 132, t: 0, i: 1015, }, D { l: 134, t: 0, i: 1088, }, D { l: 5, t: 10, i: 655, }, D { l: 135, t: 11, i: 977, }, D { l: 134, t: 0, i: 1585, }, D { l: 17, t: 10, i: 67, }, D { l: 147, t: 10, i: 74, }, D { l: 10, t: 0, i: 227, }, D { l: 11, t: 0, i: 497, }, D { l: 11, t: 0, i: 709, }, D { l: 140, t: 0, i: 415, }, D { l: 6, t: 0, i: 360 }, D { l: 7, t: 0, i: 1664, }, D { l: 136, t: 0, i: 478, }, D { l: 7, t: 0, i: 95 }, D { l: 6, t: 10, i: 231, }, D { l: 136, t: 10, i: 423, }, D { l: 140, t: 11, i: 65, }, D { l: 4, t: 11, i: 257, }, D { l: 135, t: 11, i: 2031, }, D { l: 135, t: 11, i: 1768, }, D { l: 133, t: 10, i: 300, }, D { l: 139, t: 11, i: 211, }, D { l: 136, t: 0, i: 699, }, D { l: 6, t: 10, i: 237, }, D { l: 7, t: 10, i: 611, }, D { l: 8, t: 10, i: 100, }, D { l: 9, t: 10, i: 416, }, D { l: 11, t: 10, i: 335, }, D { l: 12, t: 10, i: 173, }, D { l: 146, t: 10, i: 101, }, D { l: 14, t: 0, i: 26 }, D { l: 146, t: 0, i: 150, }, D { l: 6, t: 0, i: 581 }, D { l: 135, t: 0, i: 1119, }, D { l: 135, t: 10, i: 1208, }, D { l: 132, t: 0, i: 739, }, D { l: 6, t: 11, i: 83 }, D { l: 6, t: 11, i: 1733, }, D { l: 135, t: 11, i: 1389, }, D { l: 137, t: 0, i: 869, }, D { l: 4, t: 0, i: 67 }, D { l: 5, t: 0, i: 422 }, D { l: 7, t: 0, i: 1037, }, D { l: 7, t: 0, i: 1289, }, D { l: 7, t: 0, i: 1555, }, D { l: 9, t: 0, i: 741 }, D { l: 145, t: 0, i: 108, }, D { l: 133, t: 10, i: 199, }, D { l: 12, t: 10, i: 427, }, D { l: 146, t: 10, i: 38, }, D { l: 136, t: 0, i: 464, }, D { l: 142, t: 0, i: 42, }, D { l: 10, t: 0, i: 96 }, D { l: 8, t: 11, i: 501, }, D { l: 137, t: 11, i: 696, }, D { l: 134, t: 11, i: 592, }, D { l: 4, t: 0, i: 512 }, D { l: 4, t: 0, i: 966 }, D { l: 5, t: 0, i: 342 }, D { l: 6, t: 0, i: 1855, }, D { l: 8, t: 0, i: 869 }, D { l: 8, t: 0, i: 875 }, D { l: 8, t: 0, i: 901 }, D { l: 144, t: 0, i: 26, }, D { l: 8, t: 0, i: 203 }, D { l: 11, t: 0, i: 823, }, D { l: 11, t: 0, i: 846, }, D { l: 12, t: 0, i: 482, }, D { l: 13, t: 0, i: 277, }, D { l: 13, t: 0, i: 302, }, D { l: 13, t: 0, i: 464, }, D { l: 14, t: 0, i: 205, }, D { l: 142, t: 0, i: 221, }, D { l: 4, t: 0, i: 449 }, D { l: 133, t: 0, i: 718, }, D { l: 7, t: 11, i: 1718, }, D { l: 9, t: 11, i: 95 }, D { l: 9, t: 11, i: 274, }, D { l: 10, t: 11, i: 279, }, D { l: 10, t: 11, i: 317, }, D { l: 10, t: 11, i: 420, }, D { l: 11, t: 11, i: 303, }, D { l: 11, t: 11, i: 808, }, D { l: 12, t: 11, i: 134, }, D { l: 12, t: 11, i: 367, }, D { l: 13, t: 11, i: 149, }, D { l: 13, t: 11, i: 347, }, D { l: 14, t: 11, i: 349, }, D { l: 14, t: 11, i: 406, }, D { l: 18, t: 11, i: 22, }, D { l: 18, t: 11, i: 89, }, D { l: 18, t: 11, i: 122, }, D { l: 147, t: 11, i: 47, }, D { l: 133, t: 11, i: 26, }, D { l: 4, t: 0, i: 355 }, D { l: 6, t: 0, i: 311 }, D { l: 9, t: 0, i: 256 }, D { l: 138, t: 0, i: 404, }, D { l: 132, t: 11, i: 550, }, D { l: 10, t: 0, i: 758, }, D { l: 6, t: 10, i: 312, }, D { l: 6, t: 10, i: 1715, }, D { l: 10, t: 10, i: 584, }, D { l: 11, t: 10, i: 546, }, D { l: 11, t: 10, i: 692, }, D { l: 12, t: 10, i: 259, }, D { l: 12, t: 10, i: 295, }, D { l: 13, t: 10, i: 46, }, D { l: 141, t: 10, i: 154, }, D { l: 136, t: 11, i: 822, }, D { l: 5, t: 0, i: 827 }, D { l: 4, t: 11, i: 902, }, D { l: 5, t: 11, i: 809, }, D { l: 6, t: 11, i: 122, }, D { l: 135, t: 11, i: 896, }, D { l: 5, t: 0, i: 64 }, D { l: 140, t: 0, i: 581, }, D { l: 4, t: 0, i: 442 }, D { l: 6, t: 0, i: 739 }, D { l: 7, t: 0, i: 1047, }, D { l: 7, t: 0, i: 1352, }, D { l: 7, t: 0, i: 1643, }, D { l: 7, t: 11, i: 1911, }, D { l: 9, t: 11, i: 449, }, D { l: 10, t: 11, i: 192, }, D { l: 138, t: 11, i: 740, }, D { l: 135, t: 11, i: 262, }, D { l: 132, t: 10, i: 588, }, D { l: 133, t: 11, i: 620, }, D { l: 5, t: 0, i: 977 }, D { l: 6, t: 0, i: 288 }, D { l: 7, t: 0, i: 528 }, D { l: 4, t: 11, i: 34 }, D { l: 5, t: 11, i: 574, }, D { l: 7, t: 11, i: 279, }, D { l: 7, t: 11, i: 1624, }, D { l: 136, t: 11, i: 601, }, D { l: 6, t: 0, i: 1375, }, D { l: 4, t: 10, i: 231, }, D { l: 5, t: 10, i: 61 }, D { l: 6, t: 10, i: 104, }, D { l: 7, t: 10, i: 729, }, D { l: 7, t: 10, i: 964, }, D { l: 7, t: 10, i: 1658, }, D { l: 140, t: 10, i: 414, }, D { l: 6, t: 10, i: 263, }, D { l: 138, t: 10, i: 757, }, D { l: 132, t: 10, i: 320, }, D { l: 4, t: 0, i: 254 }, D { l: 7, t: 0, i: 1309, }, D { l: 5, t: 11, i: 332, }, D { l: 135, t: 11, i: 1309, }, D { l: 6, t: 11, i: 261, }, D { l: 8, t: 11, i: 182, }, D { l: 139, t: 11, i: 943, }, D { l: 132, t: 10, i: 225, }, D { l: 6, t: 0, i: 12 }, D { l: 135, t: 0, i: 1219, }, D { l: 4, t: 0, i: 275 }, D { l: 12, t: 0, i: 376, }, D { l: 6, t: 11, i: 1721, }, D { l: 141, t: 11, i: 490, }, D { l: 4, t: 11, i: 933, }, D { l: 133, t: 11, i: 880, }, D { l: 6, t: 0, i: 951 }, D { l: 6, t: 0, i: 1109, }, D { l: 6, t: 0, i: 1181, }, D { l: 7, t: 0, i: 154 }, D { l: 4, t: 10, i: 405, }, D { l: 7, t: 10, i: 817, }, D { l: 14, t: 10, i: 58, }, D { l: 17, t: 10, i: 37, }, D { l: 146, t: 10, i: 124, }, D { l: 6, t: 0, i: 1520, }, D { l: 133, t: 10, i: 974, }, D { l: 134, t: 0, i: 1753, }, D { l: 6, t: 0, i: 369 }, D { l: 6, t: 0, i: 502 }, D { l: 7, t: 0, i: 1036, }, D { l: 8, t: 0, i: 348 }, D { l: 9, t: 0, i: 452 }, D { l: 10, t: 0, i: 26 }, D { l: 11, t: 0, i: 224, }, D { l: 11, t: 0, i: 387, }, D { l: 11, t: 0, i: 772, }, D { l: 12, t: 0, i: 95 }, D { l: 12, t: 0, i: 629, }, D { l: 13, t: 0, i: 195, }, D { l: 13, t: 0, i: 207, }, D { l: 13, t: 0, i: 241, }, D { l: 14, t: 0, i: 260, }, D { l: 14, t: 0, i: 270, }, D { l: 143, t: 0, i: 140, }, D { l: 132, t: 0, i: 269, }, D { l: 5, t: 0, i: 480 }, D { l: 7, t: 0, i: 532 }, D { l: 7, t: 0, i: 1197, }, D { l: 7, t: 0, i: 1358, }, D { l: 8, t: 0, i: 291 }, D { l: 11, t: 0, i: 349, }, D { l: 142, t: 0, i: 396, }, D { l: 5, t: 10, i: 235, }, D { l: 7, t: 10, i: 1239, }, D { l: 11, t: 10, i: 131, }, D { l: 140, t: 10, i: 370, }, D { l: 7, t: 10, i: 956, }, D { l: 7, t: 10, i: 1157, }, D { l: 7, t: 10, i: 1506, }, D { l: 7, t: 10, i: 1606, }, D { l: 7, t: 10, i: 1615, }, D { l: 7, t: 10, i: 1619, }, D { l: 7, t: 10, i: 1736, }, D { l: 7, t: 10, i: 1775, }, D { l: 8, t: 10, i: 590, }, D { l: 9, t: 10, i: 324, }, D { l: 9, t: 10, i: 736, }, D { l: 9, t: 10, i: 774, }, D { l: 9, t: 10, i: 776, }, D { l: 9, t: 10, i: 784, }, D { l: 10, t: 10, i: 567, }, D { l: 10, t: 10, i: 708, }, D { l: 11, t: 10, i: 518, }, D { l: 11, t: 10, i: 613, }, D { l: 11, t: 10, i: 695, }, D { l: 11, t: 10, i: 716, }, D { l: 11, t: 10, i: 739, }, D { l: 11, t: 10, i: 770, }, D { l: 11, t: 10, i: 771, }, D { l: 11, t: 10, i: 848, }, D { l: 11, t: 10, i: 857, }, D { l: 11, t: 10, i: 931, }, D { l: 11, t: 10, i: 947, }, D { l: 12, t: 10, i: 326, }, D { l: 12, t: 10, i: 387, }, D { l: 12, t: 10, i: 484, }, D { l: 12, t: 10, i: 528, }, D { l: 12, t: 10, i: 552, }, D { l: 12, t: 10, i: 613, }, D { l: 13, t: 10, i: 189, }, D { l: 13, t: 10, i: 256, }, D { l: 13, t: 10, i: 340, }, D { l: 13, t: 10, i: 432, }, D { l: 13, t: 10, i: 436, }, D { l: 13, t: 10, i: 440, }, D { l: 13, t: 10, i: 454, }, D { l: 14, t: 10, i: 174, }, D { l: 14, t: 10, i: 220, }, D { l: 14, t: 10, i: 284, }, D { l: 14, t: 10, i: 390, }, D { l: 145, t: 10, i: 121, }, D { l: 8, t: 11, i: 598, }, D { l: 9, t: 11, i: 664, }, D { l: 138, t: 11, i: 441, }, D { l: 9, t: 10, i: 137, }, D { l: 138, t: 10, i: 221, }, D { l: 133, t: 11, i: 812, }, D { l: 148, t: 0, i: 15, }, D { l: 134, t: 0, i: 1341, }, D { l: 6, t: 0, i: 1017, }, D { l: 4, t: 11, i: 137, }, D { l: 7, t: 11, i: 1178, }, D { l: 135, t: 11, i: 1520, }, D { l: 7, t: 10, i: 390, }, D { l: 138, t: 10, i: 140, }, D { l: 7, t: 11, i: 1260, }, D { l: 135, t: 11, i: 1790, }, D { l: 137, t: 11, i: 191, }, D { l: 135, t: 10, i: 1144, }, D { l: 6, t: 0, i: 1810, }, D { l: 7, t: 0, i: 657 }, D { l: 8, t: 0, i: 886 }, D { l: 10, t: 0, i: 857, }, D { l: 14, t: 0, i: 440, }, D { l: 144, t: 0, i: 96, }, D { l: 8, t: 0, i: 533 }, D { l: 6, t: 11, i: 1661, }, D { l: 7, t: 11, i: 1975, }, D { l: 7, t: 11, i: 2009, }, D { l: 135, t: 11, i: 2011, }, D { l: 6, t: 0, i: 1453, }, D { l: 134, t: 10, i: 464, }, D { l: 132, t: 11, i: 715, }, D { l: 5, t: 10, i: 407, }, D { l: 11, t: 10, i: 204, }, D { l: 11, t: 10, i: 243, }, D { l: 11, t: 10, i: 489, }, D { l: 12, t: 10, i: 293, }, D { l: 19, t: 10, i: 37, }, D { l: 20, t: 10, i: 73, }, D { l: 150, t: 10, i: 38, }, D { l: 133, t: 11, i: 703, }, D { l: 4, t: 0, i: 211 }, D { l: 7, t: 0, i: 1483, }, D { l: 5, t: 10, i: 325, }, D { l: 8, t: 10, i: 5 }, D { l: 8, t: 10, i: 227, }, D { l: 9, t: 10, i: 105, }, D { l: 10, t: 10, i: 585, }, D { l: 140, t: 10, i: 614, }, D { l: 4, t: 0, i: 332 }, D { l: 5, t: 0, i: 335 }, D { l: 6, t: 0, i: 238 }, D { l: 7, t: 0, i: 269 }, D { l: 7, t: 0, i: 811 }, D { l: 7, t: 0, i: 1797, }, D { l: 8, t: 0, i: 836 }, D { l: 9, t: 0, i: 507 }, D { l: 141, t: 0, i: 242, }, D { l: 5, t: 11, i: 89 }, D { l: 7, t: 11, i: 1915, }, D { l: 9, t: 11, i: 185, }, D { l: 9, t: 11, i: 235, }, D { l: 9, t: 11, i: 496, }, D { l: 10, t: 11, i: 64, }, D { l: 10, t: 11, i: 270, }, D { l: 10, t: 11, i: 403, }, D { l: 10, t: 11, i: 469, }, D { l: 10, t: 11, i: 529, }, D { l: 10, t: 11, i: 590, }, D { l: 11, t: 11, i: 140, }, D { l: 11, t: 11, i: 860, }, D { l: 13, t: 11, i: 1 }, D { l: 13, t: 11, i: 422, }, D { l: 14, t: 11, i: 341, }, D { l: 14, t: 11, i: 364, }, D { l: 17, t: 11, i: 93, }, D { l: 18, t: 11, i: 113, }, D { l: 19, t: 11, i: 97, }, D { l: 147, t: 11, i: 113, }, D { l: 133, t: 11, i: 695, }, D { l: 16, t: 0, i: 19 }, D { l: 5, t: 11, i: 6 }, D { l: 6, t: 11, i: 183, }, D { l: 6, t: 10, i: 621, }, D { l: 7, t: 11, i: 680, }, D { l: 7, t: 11, i: 978, }, D { l: 7, t: 11, i: 1013, }, D { l: 7, t: 11, i: 1055, }, D { l: 12, t: 11, i: 230, }, D { l: 13, t: 11, i: 172, }, D { l: 13, t: 10, i: 504, }, D { l: 146, t: 11, i: 29, }, D { l: 136, t: 0, i: 156, }, D { l: 133, t: 0, i: 1009, }, D { l: 6, t: 11, i: 29 }, D { l: 139, t: 11, i: 63, }, D { l: 134, t: 0, i: 820, }, D { l: 134, t: 10, i: 218, }, D { l: 7, t: 10, i: 454, }, D { l: 7, t: 10, i: 782, }, D { l: 8, t: 10, i: 768, }, D { l: 140, t: 10, i: 686, }, D { l: 5, t: 0, i: 228 }, D { l: 6, t: 0, i: 203 }, D { l: 7, t: 0, i: 156 }, D { l: 8, t: 0, i: 347 }, D { l: 9, t: 0, i: 265 }, D { l: 18, t: 0, i: 39 }, D { l: 20, t: 0, i: 54 }, D { l: 21, t: 0, i: 31 }, D { l: 22, t: 0, i: 3 }, D { l: 23, t: 0, i: 0 }, D { l: 15, t: 11, i: 8 }, D { l: 18, t: 11, i: 39, }, D { l: 20, t: 11, i: 54, }, D { l: 21, t: 11, i: 31, }, D { l: 22, t: 11, i: 3 }, D { l: 151, t: 11, i: 0, }, D { l: 7, t: 0, i: 1131, }, D { l: 135, t: 0, i: 1468, }, D { l: 144, t: 10, i: 0, }, D { l: 134, t: 0, i: 1276, }, D { l: 10, t: 10, i: 676, }, D { l: 140, t: 10, i: 462, }, D { l: 132, t: 11, i: 311, }, D { l: 134, t: 11, i: 1740, }, D { l: 7, t: 11, i: 170, }, D { l: 8, t: 11, i: 90 }, D { l: 8, t: 11, i: 177, }, D { l: 8, t: 11, i: 415, }, D { l: 11, t: 11, i: 714, }, D { l: 142, t: 11, i: 281, }, D { l: 134, t: 10, i: 164, }, D { l: 6, t: 0, i: 1792, }, D { l: 138, t: 0, i: 849, }, D { l: 150, t: 10, i: 50, }, D { l: 5, t: 0, i: 291 }, D { l: 5, t: 0, i: 318 }, D { l: 7, t: 0, i: 765 }, D { l: 9, t: 0, i: 389 }, D { l: 12, t: 0, i: 548, }, D { l: 8, t: 11, i: 522, }, D { l: 142, t: 11, i: 328, }, D { l: 11, t: 11, i: 91, }, D { l: 13, t: 11, i: 129, }, D { l: 15, t: 11, i: 101, }, D { l: 145, t: 11, i: 125, }, D { l: 4, t: 11, i: 494, }, D { l: 6, t: 11, i: 74 }, D { l: 7, t: 11, i: 44 }, D { l: 7, t: 11, i: 407, }, D { l: 8, t: 11, i: 551, }, D { l: 12, t: 11, i: 17, }, D { l: 15, t: 11, i: 5 }, D { l: 148, t: 11, i: 11, }, D { l: 4, t: 11, i: 276, }, D { l: 133, t: 11, i: 296, }, D { l: 6, t: 10, i: 343, }, D { l: 7, t: 10, i: 195, }, D { l: 7, t: 11, i: 1777, }, D { l: 9, t: 10, i: 226, }, D { l: 10, t: 10, i: 197, }, D { l: 10, t: 10, i: 575, }, D { l: 11, t: 10, i: 502, }, D { l: 139, t: 10, i: 899, }, D { l: 10, t: 0, i: 525, }, D { l: 139, t: 0, i: 82, }, D { l: 14, t: 0, i: 453, }, D { l: 4, t: 11, i: 7 }, D { l: 5, t: 11, i: 90 }, D { l: 5, t: 11, i: 158, }, D { l: 6, t: 11, i: 542, }, D { l: 7, t: 11, i: 221, }, D { l: 7, t: 11, i: 1574, }, D { l: 9, t: 11, i: 490, }, D { l: 10, t: 11, i: 540, }, D { l: 11, t: 11, i: 443, }, D { l: 139, t: 11, i: 757, }, D { l: 135, t: 0, i: 666, }, D { l: 22, t: 10, i: 29, }, D { l: 150, t: 11, i: 29, }, D { l: 4, t: 0, i: 422 }, D { l: 147, t: 10, i: 8, }, D { l: 5, t: 0, i: 355 }, D { l: 145, t: 0, i: 0 }, D { l: 6, t: 0, i: 1873, }, D { l: 9, t: 0, i: 918 }, D { l: 7, t: 11, i: 588, }, D { l: 9, t: 11, i: 175, }, D { l: 138, t: 11, i: 530, }, D { l: 143, t: 11, i: 31, }, D { l: 11, t: 0, i: 165, }, D { l: 7, t: 10, i: 1125, }, D { l: 9, t: 10, i: 143, }, D { l: 14, t: 10, i: 405, }, D { l: 150, t: 10, i: 21, }, D { l: 9, t: 0, i: 260 }, D { l: 137, t: 0, i: 905, }, D { l: 5, t: 11, i: 872, }, D { l: 6, t: 11, i: 57 }, D { l: 6, t: 11, i: 479, }, D { l: 6, t: 11, i: 562, }, D { l: 7, t: 11, i: 471, }, D { l: 7, t: 11, i: 1060, }, D { l: 9, t: 11, i: 447, }, D { l: 9, t: 11, i: 454, }, D { l: 141, t: 11, i: 6, }, D { l: 138, t: 11, i: 704, }, D { l: 133, t: 0, i: 865, }, D { l: 5, t: 0, i: 914 }, D { l: 134, t: 0, i: 1625, }, D { l: 133, t: 0, i: 234, }, D { l: 7, t: 0, i: 1383, }, D { l: 5, t: 11, i: 31 }, D { l: 6, t: 11, i: 614, }, D { l: 145, t: 11, i: 61, }, D { l: 7, t: 11, i: 1200, }, D { l: 138, t: 11, i: 460, }, D { l: 6, t: 11, i: 424, }, D { l: 135, t: 11, i: 1866, }, D { l: 136, t: 0, i: 306, }, D { l: 5, t: 10, i: 959, }, D { l: 12, t: 11, i: 30, }, D { l: 13, t: 11, i: 148, }, D { l: 14, t: 11, i: 87, }, D { l: 14, t: 11, i: 182, }, D { l: 16, t: 11, i: 42, }, D { l: 18, t: 11, i: 92, }, D { l: 148, t: 11, i: 70, }, D { l: 6, t: 0, i: 1919, }, D { l: 6, t: 0, i: 1921, }, D { l: 9, t: 0, i: 923 }, D { l: 9, t: 0, i: 930 }, D { l: 9, t: 0, i: 941 }, D { l: 9, t: 0, i: 949 }, D { l: 9, t: 0, i: 987 }, D { l: 9, t: 0, i: 988 }, D { l: 9, t: 0, i: 992 }, D { l: 12, t: 0, i: 802, }, D { l: 12, t: 0, i: 815, }, D { l: 12, t: 0, i: 856, }, D { l: 12, t: 0, i: 885, }, D { l: 12, t: 0, i: 893, }, D { l: 12, t: 0, i: 898, }, D { l: 12, t: 0, i: 919, }, D { l: 12, t: 0, i: 920, }, D { l: 12, t: 0, i: 941, }, D { l: 12, t: 0, i: 947, }, D { l: 15, t: 0, i: 183, }, D { l: 15, t: 0, i: 185, }, D { l: 15, t: 0, i: 189, }, D { l: 15, t: 0, i: 197, }, D { l: 15, t: 0, i: 202, }, D { l: 15, t: 0, i: 233, }, D { l: 18, t: 0, i: 218, }, D { l: 18, t: 0, i: 219, }, D { l: 18, t: 0, i: 233, }, D { l: 143, t: 11, i: 156, }, D { l: 135, t: 10, i: 1759, }, D { l: 136, t: 10, i: 173, }, D { l: 13, t: 0, i: 163, }, D { l: 13, t: 0, i: 180, }, D { l: 18, t: 0, i: 78 }, D { l: 20, t: 0, i: 35 }, D { l: 5, t: 11, i: 13 }, D { l: 134, t: 11, i: 142, }, D { l: 134, t: 10, i: 266, }, D { l: 6, t: 11, i: 97 }, D { l: 7, t: 11, i: 116, }, D { l: 8, t: 11, i: 322, }, D { l: 8, t: 11, i: 755, }, D { l: 9, t: 11, i: 548, }, D { l: 10, t: 11, i: 714, }, D { l: 11, t: 11, i: 884, }, D { l: 141, t: 11, i: 324, }, D { l: 135, t: 0, i: 1312, }, D { l: 9, t: 0, i: 814 }, D { l: 137, t: 11, i: 676, }, D { l: 133, t: 0, i: 707, }, D { l: 135, t: 0, i: 1493, }, D { l: 6, t: 0, i: 421 }, D { l: 7, t: 0, i: 61 }, D { l: 7, t: 0, i: 1540, }, D { l: 10, t: 0, i: 11 }, D { l: 138, t: 0, i: 501, }, D { l: 12, t: 0, i: 733, }, D { l: 12, t: 0, i: 766, }, D { l: 7, t: 11, i: 866, }, D { l: 135, t: 11, i: 1163, }, D { l: 137, t: 0, i: 341, }, D { l: 142, t: 0, i: 98, }, D { l: 145, t: 11, i: 115, }, D { l: 135, t: 11, i: 1111, }, D { l: 136, t: 10, i: 300, }, D { l: 136, t: 0, i: 1014, }, D { l: 8, t: 11, i: 1 }, D { l: 9, t: 11, i: 112, }, D { l: 138, t: 11, i: 326, }, D { l: 132, t: 11, i: 730, }, D { l: 5, t: 11, i: 488, }, D { l: 6, t: 11, i: 527, }, D { l: 7, t: 11, i: 489, }, D { l: 7, t: 11, i: 1636, }, D { l: 8, t: 11, i: 121, }, D { l: 8, t: 11, i: 144, }, D { l: 8, t: 11, i: 359, }, D { l: 9, t: 11, i: 193, }, D { l: 9, t: 11, i: 241, }, D { l: 9, t: 11, i: 336, }, D { l: 9, t: 11, i: 882, }, D { l: 11, t: 11, i: 266, }, D { l: 11, t: 11, i: 372, }, D { l: 11, t: 11, i: 944, }, D { l: 12, t: 11, i: 401, }, D { l: 140, t: 11, i: 641, }, D { l: 6, t: 0, i: 971 }, D { l: 134, t: 0, i: 1121, }, D { l: 6, t: 0, i: 102 }, D { l: 7, t: 0, i: 72 }, D { l: 15, t: 0, i: 142, }, D { l: 147, t: 0, i: 67, }, D { l: 151, t: 0, i: 30, }, D { l: 135, t: 0, i: 823, }, D { l: 134, t: 0, i: 1045, }, D { l: 5, t: 10, i: 427, }, D { l: 5, t: 10, i: 734, }, D { l: 7, t: 10, i: 478, }, D { l: 136, t: 10, i: 52, }, D { l: 7, t: 0, i: 1930, }, D { l: 11, t: 10, i: 217, }, D { l: 142, t: 10, i: 165, }, D { l: 6, t: 0, i: 1512, }, D { l: 135, t: 0, i: 1870, }, D { l: 9, t: 11, i: 31 }, D { l: 10, t: 11, i: 244, }, D { l: 10, t: 11, i: 699, }, D { l: 12, t: 11, i: 149, }, D { l: 141, t: 11, i: 497, }, D { l: 133, t: 11, i: 377, }, D { l: 145, t: 11, i: 101, }, D { l: 10, t: 11, i: 158, }, D { l: 13, t: 11, i: 13, }, D { l: 13, t: 11, i: 137, }, D { l: 13, t: 11, i: 258, }, D { l: 14, t: 11, i: 111, }, D { l: 14, t: 11, i: 225, }, D { l: 14, t: 11, i: 253, }, D { l: 14, t: 11, i: 304, }, D { l: 14, t: 11, i: 339, }, D { l: 14, t: 11, i: 417, }, D { l: 146, t: 11, i: 33, }, D { l: 6, t: 0, i: 87 }, D { l: 6, t: 10, i: 1734, }, D { l: 7, t: 10, i: 20 }, D { l: 7, t: 10, i: 1056, }, D { l: 8, t: 10, i: 732, }, D { l: 9, t: 10, i: 406, }, D { l: 9, t: 10, i: 911, }, D { l: 138, t: 10, i: 694, }, D { l: 134, t: 0, i: 1243, }, D { l: 137, t: 0, i: 245, }, D { l: 7, t: 0, i: 68 }, D { l: 8, t: 0, i: 48 }, D { l: 8, t: 0, i: 88 }, D { l: 8, t: 0, i: 582 }, D { l: 8, t: 0, i: 681 }, D { l: 9, t: 0, i: 373 }, D { l: 9, t: 0, i: 864 }, D { l: 11, t: 0, i: 157, }, D { l: 11, t: 0, i: 336, }, D { l: 11, t: 0, i: 843, }, D { l: 148, t: 0, i: 27, }, D { l: 8, t: 11, i: 663, }, D { l: 144, t: 11, i: 8, }, D { l: 133, t: 10, i: 613, }, D { l: 4, t: 0, i: 88 }, D { l: 5, t: 0, i: 137 }, D { l: 5, t: 0, i: 174 }, D { l: 5, t: 0, i: 777 }, D { l: 6, t: 0, i: 1664, }, D { l: 6, t: 0, i: 1725, }, D { l: 7, t: 0, i: 77 }, D { l: 7, t: 0, i: 426 }, D { l: 7, t: 0, i: 1317, }, D { l: 7, t: 0, i: 1355, }, D { l: 8, t: 0, i: 126 }, D { l: 8, t: 0, i: 563 }, D { l: 9, t: 0, i: 523 }, D { l: 9, t: 0, i: 750 }, D { l: 10, t: 0, i: 310, }, D { l: 10, t: 0, i: 836, }, D { l: 11, t: 0, i: 42 }, D { l: 11, t: 0, i: 318, }, D { l: 11, t: 0, i: 731, }, D { l: 12, t: 0, i: 68 }, D { l: 12, t: 0, i: 92 }, D { l: 12, t: 0, i: 507, }, D { l: 12, t: 0, i: 692, }, D { l: 13, t: 0, i: 81 }, D { l: 13, t: 0, i: 238, }, D { l: 13, t: 0, i: 374, }, D { l: 14, t: 0, i: 436, }, D { l: 18, t: 0, i: 138, }, D { l: 19, t: 0, i: 78 }, D { l: 19, t: 0, i: 111, }, D { l: 20, t: 0, i: 55 }, D { l: 20, t: 0, i: 77 }, D { l: 148, t: 0, i: 92, }, D { l: 141, t: 0, i: 418, }, D { l: 4, t: 0, i: 938 }, D { l: 137, t: 0, i: 625, }, D { l: 138, t: 0, i: 351, }, D { l: 5, t: 11, i: 843, }, D { l: 7, t: 10, i: 32 }, D { l: 7, t: 10, i: 984, }, D { l: 8, t: 10, i: 85 }, D { l: 8, t: 10, i: 709, }, D { l: 9, t: 10, i: 579, }, D { l: 9, t: 10, i: 847, }, D { l: 9, t: 10, i: 856, }, D { l: 10, t: 10, i: 799, }, D { l: 11, t: 10, i: 258, }, D { l: 11, t: 10, i: 1007, }, D { l: 12, t: 10, i: 331, }, D { l: 12, t: 10, i: 615, }, D { l: 13, t: 10, i: 188, }, D { l: 13, t: 10, i: 435, }, D { l: 14, t: 10, i: 8 }, D { l: 15, t: 10, i: 165, }, D { l: 16, t: 10, i: 27, }, D { l: 148, t: 10, i: 40, }, D { l: 6, t: 0, i: 1668, }, D { l: 7, t: 0, i: 1499, }, D { l: 8, t: 0, i: 117 }, D { l: 9, t: 0, i: 314 }, D { l: 138, t: 0, i: 174, }, D { l: 135, t: 0, i: 707, }, D { l: 132, t: 11, i: 554, }, D { l: 133, t: 11, i: 536, }, D { l: 5, t: 0, i: 403 }, D { l: 5, t: 11, i: 207, }, D { l: 9, t: 11, i: 79 }, D { l: 11, t: 11, i: 625, }, D { l: 145, t: 11, i: 7, }, D { l: 132, t: 11, i: 424, }, D { l: 136, t: 11, i: 785, }, D { l: 4, t: 10, i: 167, }, D { l: 135, t: 10, i: 82, }, D { l: 9, t: 0, i: 7 }, D { l: 23, t: 0, i: 6 }, D { l: 9, t: 11, i: 7 }, D { l: 151, t: 11, i: 6, }, D { l: 6, t: 0, i: 282 }, D { l: 5, t: 10, i: 62 }, D { l: 6, t: 10, i: 534, }, D { l: 7, t: 10, i: 74 }, D { l: 7, t: 10, i: 678, }, D { l: 7, t: 10, i: 684, }, D { l: 7, t: 10, i: 1043, }, D { l: 7, t: 10, i: 1072, }, D { l: 8, t: 10, i: 280, }, D { l: 8, t: 10, i: 541, }, D { l: 8, t: 10, i: 686, }, D { l: 9, t: 10, i: 258, }, D { l: 10, t: 10, i: 519, }, D { l: 11, t: 10, i: 252, }, D { l: 140, t: 10, i: 282, }, D { l: 138, t: 10, i: 33, }, D { l: 132, t: 10, i: 359, }, D { l: 4, t: 0, i: 44 }, D { l: 5, t: 0, i: 311 }, D { l: 6, t: 0, i: 156 }, D { l: 7, t: 0, i: 639 }, D { l: 7, t: 0, i: 762 }, D { l: 7, t: 0, i: 1827, }, D { l: 9, t: 0, i: 8 }, D { l: 9, t: 0, i: 462 }, D { l: 148, t: 0, i: 83, }, D { l: 7, t: 11, i: 769, }, D { l: 9, t: 11, i: 18 }, D { l: 138, t: 11, i: 358, }, D { l: 4, t: 0, i: 346 }, D { l: 7, t: 0, i: 115 }, D { l: 9, t: 0, i: 180 }, D { l: 9, t: 0, i: 456 }, D { l: 10, t: 0, i: 363, }, D { l: 4, t: 11, i: 896, }, D { l: 134, t: 11, i: 1777, }, D { l: 133, t: 10, i: 211, }, D { l: 7, t: 0, i: 761 }, D { l: 7, t: 0, i: 1051, }, D { l: 137, t: 0, i: 545, }, D { l: 6, t: 10, i: 145, }, D { l: 141, t: 10, i: 336, }, D { l: 7, t: 11, i: 750, }, D { l: 9, t: 11, i: 223, }, D { l: 11, t: 11, i: 27, }, D { l: 11, t: 11, i: 466, }, D { l: 12, t: 11, i: 624, }, D { l: 14, t: 11, i: 265, }, D { l: 146, t: 11, i: 61, }, D { l: 6, t: 0, i: 752 }, D { l: 6, t: 0, i: 768 }, D { l: 6, t: 0, i: 1195, }, D { l: 6, t: 0, i: 1254, }, D { l: 6, t: 0, i: 1619, }, D { l: 137, t: 0, i: 835, }, D { l: 6, t: 0, i: 1936, }, D { l: 8, t: 0, i: 930 }, D { l: 136, t: 0, i: 960, }, D { l: 132, t: 10, i: 263, }, D { l: 132, t: 11, i: 249, }, D { l: 12, t: 0, i: 653, }, D { l: 132, t: 10, i: 916, }, D { l: 4, t: 11, i: 603, }, D { l: 133, t: 11, i: 661, }, D { l: 8, t: 0, i: 344 }, D { l: 4, t: 11, i: 11 }, D { l: 6, t: 11, i: 128, }, D { l: 7, t: 11, i: 231, }, D { l: 7, t: 11, i: 1533, }, D { l: 138, t: 11, i: 725, }, D { l: 134, t: 0, i: 1483, }, D { l: 134, t: 0, i: 875, }, D { l: 6, t: 0, i: 185 }, D { l: 7, t: 0, i: 1899, }, D { l: 9, t: 0, i: 875 }, D { l: 139, t: 0, i: 673, }, D { l: 15, t: 10, i: 155, }, D { l: 144, t: 10, i: 79, }, D { l: 7, t: 0, i: 93 }, D { l: 7, t: 0, i: 210 }, D { l: 7, t: 0, i: 1223, }, D { l: 8, t: 0, i: 451 }, D { l: 8, t: 0, i: 460 }, D { l: 11, t: 0, i: 353, }, D { l: 11, t: 0, i: 475, }, D { l: 4, t: 10, i: 599, }, D { l: 6, t: 10, i: 1634, }, D { l: 7, t: 10, i: 67 }, D { l: 7, t: 10, i: 691, }, D { l: 7, t: 10, i: 979, }, D { l: 7, t: 10, i: 1697, }, D { l: 8, t: 10, i: 207, }, D { l: 8, t: 10, i: 214, }, D { l: 8, t: 10, i: 231, }, D { l: 8, t: 10, i: 294, }, D { l: 8, t: 10, i: 336, }, D { l: 8, t: 10, i: 428, }, D { l: 8, t: 10, i: 471, }, D { l: 8, t: 10, i: 622, }, D { l: 8, t: 10, i: 626, }, D { l: 8, t: 10, i: 679, }, D { l: 8, t: 10, i: 759, }, D { l: 8, t: 10, i: 829, }, D { l: 9, t: 10, i: 11 }, D { l: 9, t: 10, i: 246, }, D { l: 9, t: 10, i: 484, }, D { l: 9, t: 10, i: 573, }, D { l: 9, t: 10, i: 706, }, D { l: 9, t: 10, i: 762, }, D { l: 9, t: 10, i: 798, }, D { l: 9, t: 10, i: 855, }, D { l: 9, t: 10, i: 870, }, D { l: 9, t: 10, i: 912, }, D { l: 10, t: 10, i: 303, }, D { l: 10, t: 10, i: 335, }, D { l: 10, t: 10, i: 424, }, D { l: 10, t: 10, i: 461, }, D { l: 10, t: 10, i: 543, }, D { l: 10, t: 10, i: 759, }, D { l: 10, t: 10, i: 814, }, D { l: 11, t: 10, i: 59, }, D { l: 11, t: 10, i: 235, }, D { l: 11, t: 10, i: 590, }, D { l: 11, t: 10, i: 929, }, D { l: 11, t: 10, i: 963, }, D { l: 11, t: 10, i: 987, }, D { l: 12, t: 10, i: 114, }, D { l: 12, t: 10, i: 182, }, D { l: 12, t: 10, i: 226, }, D { l: 12, t: 10, i: 332, }, D { l: 12, t: 10, i: 439, }, D { l: 12, t: 10, i: 575, }, D { l: 12, t: 10, i: 598, }, D { l: 12, t: 10, i: 675, }, D { l: 13, t: 10, i: 8 }, D { l: 13, t: 10, i: 125, }, D { l: 13, t: 10, i: 194, }, D { l: 13, t: 10, i: 287, }, D { l: 14, t: 10, i: 197, }, D { l: 14, t: 10, i: 383, }, D { l: 15, t: 10, i: 53, }, D { l: 17, t: 10, i: 63, }, D { l: 19, t: 10, i: 46, }, D { l: 19, t: 10, i: 98, }, D { l: 19, t: 10, i: 106, }, D { l: 148, t: 10, i: 85, }, D { l: 132, t: 11, i: 476, }, D { l: 4, t: 0, i: 327 }, D { l: 5, t: 0, i: 478 }, D { l: 7, t: 0, i: 1332, }, D { l: 136, t: 0, i: 753, }, D { l: 5, t: 0, i: 1020, }, D { l: 133, t: 0, i: 1022, }, D { l: 135, t: 11, i: 1807, }, D { l: 4, t: 0, i: 103 }, D { l: 133, t: 0, i: 401, }, D { l: 4, t: 0, i: 499 }, D { l: 135, t: 0, i: 1421, }, D { l: 10, t: 0, i: 207, }, D { l: 13, t: 0, i: 164, }, D { l: 147, t: 10, i: 126, }, D { l: 9, t: 11, i: 20 }, D { l: 10, t: 11, i: 324, }, D { l: 139, t: 11, i: 488, }, D { l: 132, t: 0, i: 96, }, D { l: 9, t: 11, i: 280, }, D { l: 138, t: 11, i: 134, }, D { l: 135, t: 0, i: 968, }, D { l: 133, t: 10, i: 187, }, D { l: 135, t: 10, i: 1286, }, D { l: 5, t: 11, i: 112, }, D { l: 6, t: 11, i: 103, }, D { l: 134, t: 11, i: 150, }, D { l: 8, t: 0, i: 914 }, D { l: 10, t: 0, i: 3 }, D { l: 4, t: 10, i: 215, }, D { l: 9, t: 10, i: 38 }, D { l: 11, t: 10, i: 23, }, D { l: 11, t: 10, i: 127, }, D { l: 139, t: 10, i: 796, }, D { l: 135, t: 0, i: 399, }, D { l: 6, t: 0, i: 563 }, D { l: 137, t: 0, i: 224, }, D { l: 6, t: 0, i: 704 }, D { l: 134, t: 0, i: 1214, }, D { l: 4, t: 11, i: 708, }, D { l: 8, t: 11, i: 15 }, D { l: 9, t: 11, i: 50 }, D { l: 9, t: 11, i: 386, }, D { l: 11, t: 11, i: 18, }, D { l: 11, t: 11, i: 529, }, D { l: 140, t: 11, i: 228, }, D { l: 4, t: 11, i: 563, }, D { l: 7, t: 11, i: 109, }, D { l: 7, t: 11, i: 592, }, D { l: 7, t: 11, i: 637, }, D { l: 7, t: 11, i: 770, }, D { l: 7, t: 11, i: 1701, }, D { l: 8, t: 11, i: 436, }, D { l: 8, t: 11, i: 463, }, D { l: 9, t: 11, i: 60 }, D { l: 9, t: 11, i: 335, }, D { l: 9, t: 11, i: 904, }, D { l: 10, t: 11, i: 73, }, D { l: 11, t: 11, i: 434, }, D { l: 12, t: 11, i: 585, }, D { l: 13, t: 11, i: 331, }, D { l: 18, t: 11, i: 110, }, D { l: 148, t: 11, i: 60, }, D { l: 134, t: 0, i: 1559, }, D { l: 132, t: 11, i: 502, }, D { l: 6, t: 11, i: 347, }, D { l: 138, t: 11, i: 161, }, D { l: 4, t: 11, i: 33 }, D { l: 5, t: 11, i: 102, }, D { l: 5, t: 11, i: 500, }, D { l: 6, t: 11, i: 284, }, D { l: 7, t: 11, i: 1079, }, D { l: 7, t: 11, i: 1423, }, D { l: 7, t: 11, i: 1702, }, D { l: 8, t: 11, i: 470, }, D { l: 9, t: 11, i: 554, }, D { l: 9, t: 11, i: 723, }, D { l: 139, t: 11, i: 333, }, D { l: 7, t: 11, i: 246, }, D { l: 135, t: 11, i: 840, }, D { l: 6, t: 11, i: 10 }, D { l: 8, t: 11, i: 571, }, D { l: 9, t: 11, i: 739, }, D { l: 143, t: 11, i: 91, }, D { l: 8, t: 0, i: 861 }, D { l: 10, t: 0, i: 905, }, D { l: 12, t: 0, i: 730, }, D { l: 12, t: 0, i: 789, }, D { l: 133, t: 11, i: 626, }, D { l: 134, t: 0, i: 946, }, D { l: 5, t: 0, i: 746 }, D { l: 12, t: 0, i: 333, }, D { l: 14, t: 0, i: 332, }, D { l: 12, t: 11, i: 333, }, D { l: 142, t: 11, i: 332, }, D { l: 5, t: 11, i: 18 }, D { l: 6, t: 11, i: 526, }, D { l: 13, t: 11, i: 24, }, D { l: 13, t: 11, i: 110, }, D { l: 19, t: 11, i: 5 }, D { l: 147, t: 11, i: 44, }, D { l: 4, t: 0, i: 910 }, D { l: 5, t: 0, i: 832 }, D { l: 135, t: 10, i: 2002, }, D { l: 10, t: 11, i: 768, }, D { l: 139, t: 11, i: 787, }, D { l: 4, t: 11, i: 309, }, D { l: 5, t: 11, i: 462, }, D { l: 7, t: 11, i: 970, }, D { l: 135, t: 11, i: 1097, }, D { l: 4, t: 10, i: 28 }, D { l: 5, t: 10, i: 440, }, D { l: 7, t: 10, i: 248, }, D { l: 11, t: 10, i: 833, }, D { l: 140, t: 10, i: 344, }, D { l: 134, t: 10, i: 1654, }, D { l: 6, t: 0, i: 632 }, D { l: 6, t: 0, i: 652 }, D { l: 6, t: 0, i: 1272, }, D { l: 6, t: 0, i: 1384, }, D { l: 134, t: 0, i: 1560, }, D { l: 134, t: 11, i: 1704, }, D { l: 6, t: 0, i: 1393, }, D { l: 133, t: 10, i: 853, }, D { l: 6, t: 10, i: 249, }, D { l: 7, t: 10, i: 1234, }, D { l: 139, t: 10, i: 573, }, D { l: 5, t: 11, i: 86 }, D { l: 7, t: 11, i: 743, }, D { l: 9, t: 11, i: 85 }, D { l: 10, t: 11, i: 281, }, D { l: 10, t: 11, i: 432, }, D { l: 11, t: 11, i: 490, }, D { l: 12, t: 11, i: 251, }, D { l: 13, t: 11, i: 118, }, D { l: 14, t: 11, i: 378, }, D { l: 146, t: 11, i: 143, }, D { l: 5, t: 11, i: 524, }, D { l: 133, t: 11, i: 744, }, D { l: 134, t: 0, i: 1514, }, D { l: 10, t: 0, i: 201, }, D { l: 142, t: 0, i: 319, }, D { l: 7, t: 0, i: 717 }, D { l: 10, t: 0, i: 510, }, D { l: 7, t: 10, i: 392, }, D { l: 8, t: 10, i: 20 }, D { l: 8, t: 10, i: 172, }, D { l: 8, t: 10, i: 690, }, D { l: 9, t: 10, i: 383, }, D { l: 9, t: 10, i: 845, }, D { l: 11, t: 10, i: 293, }, D { l: 11, t: 10, i: 832, }, D { l: 11, t: 10, i: 920, }, D { l: 11, t: 10, i: 984, }, D { l: 141, t: 10, i: 221, }, D { l: 134, t: 0, i: 1381, }, D { l: 5, t: 10, i: 858, }, D { l: 133, t: 10, i: 992, }, D { l: 8, t: 0, i: 528 }, D { l: 137, t: 0, i: 348, }, D { l: 10, t: 11, i: 107, }, D { l: 140, t: 11, i: 436, }, D { l: 4, t: 0, i: 20 }, D { l: 133, t: 0, i: 616, }, D { l: 134, t: 0, i: 1251, }, D { l: 132, t: 11, i: 927, }, D { l: 10, t: 11, i: 123, }, D { l: 12, t: 11, i: 670, }, D { l: 13, t: 11, i: 371, }, D { l: 14, t: 11, i: 142, }, D { l: 146, t: 11, i: 94, }, D { l: 134, t: 0, i: 1163, }, D { l: 7, t: 11, i: 1149, }, D { l: 137, t: 11, i: 156, }, D { l: 134, t: 0, i: 307, }, D { l: 133, t: 11, i: 778, }, D { l: 7, t: 0, i: 1091, }, D { l: 135, t: 0, i: 1765, }, D { l: 5, t: 11, i: 502, }, D { l: 6, t: 10, i: 268, }, D { l: 137, t: 10, i: 62, }, D { l: 8, t: 11, i: 196, }, D { l: 10, t: 11, i: 283, }, D { l: 139, t: 11, i: 406, }, D { l: 4, t: 0, i: 26 }, D { l: 5, t: 0, i: 429 }, D { l: 6, t: 0, i: 245 }, D { l: 7, t: 0, i: 704 }, D { l: 7, t: 0, i: 1379, }, D { l: 135, t: 0, i: 1474, }, D { l: 133, t: 11, i: 855, }, D { l: 132, t: 0, i: 881, }, D { l: 4, t: 0, i: 621 }, D { l: 135, t: 11, i: 1596, }, D { l: 7, t: 11, i: 1400, }, D { l: 9, t: 11, i: 446, }, D { l: 138, t: 11, i: 45, }, D { l: 6, t: 0, i: 736 }, D { l: 138, t: 10, i: 106, }, D { l: 133, t: 0, i: 542, }, D { l: 134, t: 0, i: 348, }, D { l: 133, t: 0, i: 868, }, D { l: 136, t: 0, i: 433, }, D { l: 135, t: 0, i: 1495, }, D { l: 138, t: 0, i: 771, }, D { l: 6, t: 10, i: 613, }, D { l: 136, t: 10, i: 223, }, D { l: 138, t: 0, i: 215, }, D { l: 141, t: 0, i: 124, }, D { l: 136, t: 11, i: 391, }, D { l: 135, t: 11, i: 172, }, D { l: 132, t: 10, i: 670, }, D { l: 140, t: 0, i: 55, }, D { l: 9, t: 10, i: 40 }, D { l: 139, t: 10, i: 136, }, D { l: 7, t: 0, i: 62 }, D { l: 147, t: 0, i: 112, }, D { l: 132, t: 0, i: 856, }, D { l: 132, t: 11, i: 568, }, D { l: 12, t: 0, i: 270, }, D { l: 139, t: 10, i: 259, }, D { l: 8, t: 0, i: 572 }, D { l: 137, t: 0, i: 698, }, D { l: 4, t: 11, i: 732, }, D { l: 9, t: 10, i: 310, }, D { l: 137, t: 10, i: 682, }, D { l: 142, t: 10, i: 296, }, D { l: 134, t: 0, i: 939, }, D { l: 136, t: 11, i: 733, }, D { l: 135, t: 11, i: 1435, }, D { l: 7, t: 10, i: 1401, }, D { l: 135, t: 10, i: 1476, }, D { l: 6, t: 0, i: 352 }, D { l: 4, t: 10, i: 296, }, D { l: 7, t: 10, i: 401, }, D { l: 7, t: 10, i: 1410, }, D { l: 7, t: 10, i: 1594, }, D { l: 7, t: 10, i: 1674, }, D { l: 8, t: 10, i: 63 }, D { l: 8, t: 10, i: 660, }, D { l: 137, t: 10, i: 74, }, D { l: 4, t: 11, i: 428, }, D { l: 133, t: 11, i: 668, }, D { l: 4, t: 10, i: 139, }, D { l: 4, t: 10, i: 388, }, D { l: 140, t: 10, i: 188, }, D { l: 7, t: 11, i: 2015, }, D { l: 140, t: 11, i: 665, }, D { l: 132, t: 0, i: 647, }, D { l: 146, t: 0, i: 10, }, D { l: 138, t: 0, i: 220, }, D { l: 142, t: 0, i: 464, }, D { l: 132, t: 0, i: 109, }, D { l: 134, t: 0, i: 1746, }, D { l: 6, t: 0, i: 515 }, D { l: 4, t: 10, i: 747, }, D { l: 6, t: 11, i: 1623, }, D { l: 6, t: 11, i: 1681, }, D { l: 7, t: 10, i: 649, }, D { l: 7, t: 10, i: 1479, }, D { l: 135, t: 10, i: 1583, }, D { l: 133, t: 10, i: 232, }, D { l: 135, t: 0, i: 566, }, D { l: 137, t: 10, i: 887, }, D { l: 4, t: 0, i: 40 }, D { l: 10, t: 0, i: 67 }, D { l: 11, t: 0, i: 117, }, D { l: 11, t: 0, i: 768, }, D { l: 139, t: 0, i: 935, }, D { l: 132, t: 0, i: 801, }, D { l: 7, t: 0, i: 992 }, D { l: 8, t: 0, i: 301 }, D { l: 9, t: 0, i: 722 }, D { l: 12, t: 0, i: 63 }, D { l: 13, t: 0, i: 29 }, D { l: 14, t: 0, i: 161, }, D { l: 143, t: 0, i: 18, }, D { l: 139, t: 0, i: 923, }, D { l: 6, t: 11, i: 1748, }, D { l: 8, t: 11, i: 715, }, D { l: 9, t: 11, i: 802, }, D { l: 10, t: 11, i: 46, }, D { l: 10, t: 11, i: 819, }, D { l: 13, t: 11, i: 308, }, D { l: 14, t: 11, i: 351, }, D { l: 14, t: 11, i: 363, }, D { l: 146, t: 11, i: 67, }, D { l: 137, t: 11, i: 745, }, D { l: 7, t: 0, i: 1145, }, D { l: 4, t: 10, i: 14 }, D { l: 7, t: 10, i: 1801, }, D { l: 10, t: 10, i: 748, }, D { l: 141, t: 10, i: 458, }, D { l: 4, t: 11, i: 63 }, D { l: 5, t: 11, i: 347, }, D { l: 134, t: 11, i: 474, }, D { l: 135, t: 0, i: 568, }, D { l: 4, t: 10, i: 425, }, D { l: 7, t: 11, i: 577, }, D { l: 7, t: 11, i: 1432, }, D { l: 9, t: 11, i: 475, }, D { l: 9, t: 11, i: 505, }, D { l: 9, t: 11, i: 526, }, D { l: 9, t: 11, i: 609, }, D { l: 9, t: 11, i: 689, }, D { l: 9, t: 11, i: 726, }, D { l: 9, t: 11, i: 735, }, D { l: 9, t: 11, i: 738, }, D { l: 10, t: 11, i: 556, }, D { l: 10, t: 11, i: 674, }, D { l: 10, t: 11, i: 684, }, D { l: 11, t: 11, i: 89, }, D { l: 11, t: 11, i: 202, }, D { l: 11, t: 11, i: 272, }, D { l: 11, t: 11, i: 380, }, D { l: 11, t: 11, i: 415, }, D { l: 11, t: 11, i: 505, }, D { l: 11, t: 11, i: 537, }, D { l: 11, t: 11, i: 550, }, D { l: 11, t: 11, i: 562, }, D { l: 11, t: 11, i: 640, }, D { l: 11, t: 11, i: 667, }, D { l: 11, t: 11, i: 688, }, D { l: 11, t: 11, i: 847, }, D { l: 11, t: 11, i: 927, }, D { l: 11, t: 11, i: 930, }, D { l: 11, t: 11, i: 940, }, D { l: 12, t: 11, i: 144, }, D { l: 12, t: 11, i: 325, }, D { l: 12, t: 11, i: 329, }, D { l: 12, t: 11, i: 389, }, D { l: 12, t: 11, i: 403, }, D { l: 12, t: 11, i: 451, }, D { l: 12, t: 11, i: 515, }, D { l: 12, t: 11, i: 604, }, D { l: 12, t: 11, i: 616, }, D { l: 12, t: 11, i: 626, }, D { l: 13, t: 11, i: 66, }, D { l: 13, t: 11, i: 131, }, D { l: 13, t: 11, i: 167, }, D { l: 13, t: 11, i: 236, }, D { l: 13, t: 11, i: 368, }, D { l: 13, t: 11, i: 411, }, D { l: 13, t: 11, i: 434, }, D { l: 13, t: 11, i: 453, }, D { l: 13, t: 11, i: 461, }, D { l: 13, t: 11, i: 474, }, D { l: 14, t: 11, i: 59, }, D { l: 14, t: 11, i: 60, }, D { l: 14, t: 11, i: 139, }, D { l: 14, t: 11, i: 152, }, D { l: 14, t: 11, i: 276, }, D { l: 14, t: 11, i: 353, }, D { l: 14, t: 11, i: 402, }, D { l: 15, t: 11, i: 28, }, D { l: 15, t: 11, i: 81, }, D { l: 15, t: 11, i: 123, }, D { l: 15, t: 11, i: 152, }, D { l: 18, t: 11, i: 136, }, D { l: 148, t: 11, i: 88, }, D { l: 137, t: 0, i: 247, }, D { l: 135, t: 11, i: 1622, }, D { l: 9, t: 11, i: 544, }, D { l: 11, t: 11, i: 413, }, D { l: 144, t: 11, i: 25, }, D { l: 4, t: 0, i: 645 }, D { l: 7, t: 0, i: 825 }, D { l: 6, t: 10, i: 1768, }, D { l: 135, t: 11, i: 89, }, D { l: 140, t: 0, i: 328, }, D { l: 5, t: 10, i: 943, }, D { l: 134, t: 10, i: 1779, }, D { l: 134, t: 0, i: 1363, }, D { l: 5, t: 10, i: 245, }, D { l: 6, t: 10, i: 576, }, D { l: 7, t: 10, i: 582, }, D { l: 136, t: 10, i: 225, }, D { l: 134, t: 0, i: 1280, }, D { l: 5, t: 11, i: 824, }, D { l: 133, t: 11, i: 941, }, D { l: 7, t: 11, i: 440, }, D { l: 8, t: 11, i: 230, }, D { l: 139, t: 11, i: 106, }, D { l: 5, t: 0, i: 28 }, D { l: 6, t: 0, i: 204 }, D { l: 10, t: 0, i: 320, }, D { l: 10, t: 0, i: 583, }, D { l: 13, t: 0, i: 502, }, D { l: 14, t: 0, i: 72 }, D { l: 14, t: 0, i: 274, }, D { l: 14, t: 0, i: 312, }, D { l: 14, t: 0, i: 344, }, D { l: 15, t: 0, i: 159, }, D { l: 16, t: 0, i: 62 }, D { l: 16, t: 0, i: 69 }, D { l: 17, t: 0, i: 30 }, D { l: 18, t: 0, i: 42 }, D { l: 18, t: 0, i: 53 }, D { l: 18, t: 0, i: 84 }, D { l: 18, t: 0, i: 140, }, D { l: 19, t: 0, i: 68 }, D { l: 19, t: 0, i: 85 }, D { l: 20, t: 0, i: 5 }, D { l: 20, t: 0, i: 45 }, D { l: 20, t: 0, i: 101, }, D { l: 22, t: 0, i: 7 }, D { l: 150, t: 0, i: 20, }, D { l: 4, t: 0, i: 558 }, D { l: 6, t: 0, i: 390 }, D { l: 7, t: 0, i: 162 }, D { l: 7, t: 0, i: 689 }, D { l: 9, t: 0, i: 360 }, D { l: 138, t: 0, i: 653, }, D { l: 134, t: 0, i: 764, }, D { l: 6, t: 0, i: 862 }, D { l: 137, t: 0, i: 833, }, D { l: 5, t: 0, i: 856 }, D { l: 6, t: 0, i: 1672, }, D { l: 6, t: 0, i: 1757, }, D { l: 134, t: 0, i: 1781, }, D { l: 5, t: 0, i: 92 }, D { l: 10, t: 0, i: 736, }, D { l: 140, t: 0, i: 102, }, D { l: 6, t: 0, i: 1927, }, D { l: 6, t: 0, i: 1944, }, D { l: 8, t: 0, i: 924 }, D { l: 8, t: 0, i: 948 }, D { l: 10, t: 0, i: 967, }, D { l: 138, t: 0, i: 978, }, D { l: 134, t: 0, i: 1479, }, D { l: 5, t: 0, i: 590 }, D { l: 8, t: 0, i: 360 }, D { l: 9, t: 0, i: 213 }, D { l: 138, t: 0, i: 63, }, D { l: 134, t: 0, i: 1521, }, D { l: 6, t: 0, i: 709 }, D { l: 134, t: 0, i: 891, }, D { l: 132, t: 10, i: 443, }, D { l: 13, t: 0, i: 477, }, D { l: 14, t: 0, i: 120, }, D { l: 148, t: 0, i: 61, }, D { l: 4, t: 11, i: 914, }, D { l: 5, t: 11, i: 800, }, D { l: 133, t: 11, i: 852, }, D { l: 10, t: 11, i: 54, }, D { l: 141, t: 11, i: 115, }, D { l: 4, t: 11, i: 918, }, D { l: 133, t: 11, i: 876, }, D { l: 139, t: 11, i: 152, }, D { l: 4, t: 11, i: 92 }, D { l: 133, t: 11, i: 274, }, D { l: 135, t: 11, i: 1901, }, D { l: 9, t: 11, i: 800, }, D { l: 10, t: 11, i: 693, }, D { l: 11, t: 11, i: 482, }, D { l: 11, t: 11, i: 734, }, D { l: 139, t: 11, i: 789, }, D { l: 9, t: 0, i: 483 }, D { l: 132, t: 10, i: 298, }, D { l: 6, t: 0, i: 1213, }, D { l: 141, t: 11, i: 498, }, D { l: 135, t: 11, i: 1451, }, D { l: 133, t: 11, i: 743, }, D { l: 4, t: 0, i: 1022, }, D { l: 10, t: 0, i: 1000, }, D { l: 12, t: 0, i: 957, }, D { l: 12, t: 0, i: 980, }, D { l: 12, t: 0, i: 1013, }, D { l: 14, t: 0, i: 481, }, D { l: 144, t: 0, i: 116, }, D { l: 8, t: 0, i: 503 }, D { l: 17, t: 0, i: 29 }, D { l: 4, t: 11, i: 49 }, D { l: 7, t: 11, i: 280, }, D { l: 135, t: 11, i: 1633, }, D { l: 135, t: 0, i: 1712, }, D { l: 134, t: 0, i: 466, }, D { l: 136, t: 11, i: 47, }, D { l: 5, t: 10, i: 164, }, D { l: 7, t: 10, i: 121, }, D { l: 142, t: 10, i: 189, }, D { l: 7, t: 10, i: 812, }, D { l: 7, t: 10, i: 1261, }, D { l: 7, t: 10, i: 1360, }, D { l: 9, t: 10, i: 632, }, D { l: 140, t: 10, i: 352, }, D { l: 139, t: 10, i: 556, }, D { l: 132, t: 0, i: 731, }, D { l: 5, t: 11, i: 272, }, D { l: 5, t: 11, i: 908, }, D { l: 5, t: 11, i: 942, }, D { l: 7, t: 11, i: 1008, }, D { l: 7, t: 11, i: 1560, }, D { l: 8, t: 11, i: 197, }, D { l: 9, t: 11, i: 47 }, D { l: 11, t: 11, i: 538, }, D { l: 139, t: 11, i: 742, }, D { l: 4, t: 10, i: 172, }, D { l: 9, t: 10, i: 611, }, D { l: 10, t: 10, i: 436, }, D { l: 12, t: 10, i: 673, }, D { l: 141, t: 10, i: 255, }, D { l: 133, t: 10, i: 844, }, D { l: 10, t: 0, i: 484, }, D { l: 11, t: 0, i: 754, }, D { l: 12, t: 0, i: 457, }, D { l: 14, t: 0, i: 171, }, D { l: 14, t: 0, i: 389, }, D { l: 146, t: 0, i: 153, }, D { l: 9, t: 10, i: 263, }, D { l: 10, t: 10, i: 147, }, D { l: 138, t: 10, i: 492, }, D { l: 137, t: 11, i: 891, }, D { l: 138, t: 0, i: 241, }, D { l: 133, t: 10, i: 537, }, D { l: 6, t: 0, i: 2005, }, D { l: 136, t: 0, i: 964, }, D { l: 137, t: 10, i: 842, }, D { l: 151, t: 11, i: 8, }, D { l: 4, t: 11, i: 407, }, D { l: 132, t: 11, i: 560, }, D { l: 135, t: 11, i: 1884, }, D { l: 6, t: 0, i: 1100, }, D { l: 134, t: 0, i: 1242, }, D { l: 135, t: 0, i: 954, }, D { l: 5, t: 10, i: 230, }, D { l: 5, t: 10, i: 392, }, D { l: 6, t: 10, i: 420, }, D { l: 9, t: 10, i: 568, }, D { l: 140, t: 10, i: 612, }, D { l: 4, t: 11, i: 475, }, D { l: 11, t: 11, i: 35, }, D { l: 11, t: 11, i: 90, }, D { l: 13, t: 11, i: 7 }, D { l: 13, t: 11, i: 71, }, D { l: 13, t: 11, i: 177, }, D { l: 142, t: 11, i: 422, }, D { l: 136, t: 11, i: 332, }, D { l: 135, t: 0, i: 1958, }, D { l: 6, t: 0, i: 549 }, D { l: 8, t: 0, i: 34 }, D { l: 8, t: 0, i: 283 }, D { l: 9, t: 0, i: 165 }, D { l: 138, t: 0, i: 475, }, D { l: 10, t: 0, i: 952, }, D { l: 12, t: 0, i: 966, }, D { l: 140, t: 0, i: 994, }, D { l: 5, t: 0, i: 652 }, D { l: 5, t: 0, i: 701 }, D { l: 135, t: 0, i: 449, }, D { l: 4, t: 0, i: 655 }, D { l: 7, t: 0, i: 850 }, D { l: 17, t: 0, i: 75 }, D { l: 146, t: 0, i: 137, }, D { l: 4, t: 0, i: 146 }, D { l: 7, t: 0, i: 1618, }, D { l: 8, t: 0, i: 670 }, D { l: 5, t: 10, i: 41 }, D { l: 7, t: 10, i: 1459, }, D { l: 7, t: 10, i: 1469, }, D { l: 7, t: 10, i: 1859, }, D { l: 9, t: 10, i: 549, }, D { l: 139, t: 10, i: 905, }, D { l: 133, t: 10, i: 696, }, D { l: 6, t: 0, i: 159 }, D { l: 6, t: 0, i: 364 }, D { l: 7, t: 0, i: 516 }, D { l: 137, t: 0, i: 518, }, D { l: 135, t: 0, i: 1439, }, D { l: 6, t: 11, i: 222, }, D { l: 7, t: 11, i: 636, }, D { l: 7, t: 11, i: 1620, }, D { l: 8, t: 11, i: 409, }, D { l: 9, t: 11, i: 693, }, D { l: 139, t: 11, i: 77, }, D { l: 13, t: 0, i: 151, }, D { l: 141, t: 11, i: 45, }, D { l: 6, t: 0, i: 1027, }, D { l: 4, t: 11, i: 336, }, D { l: 132, t: 10, i: 771, }, D { l: 139, t: 11, i: 392, }, D { l: 10, t: 11, i: 121, }, D { l: 11, t: 11, i: 175, }, D { l: 149, t: 11, i: 16, }, D { l: 8, t: 0, i: 950 }, D { l: 138, t: 0, i: 983, }, D { l: 133, t: 10, i: 921, }, D { l: 135, t: 0, i: 993, }, D { l: 6, t: 10, i: 180, }, D { l: 7, t: 10, i: 1137, }, D { l: 8, t: 10, i: 751, }, D { l: 139, t: 10, i: 805, }, D { l: 7, t: 0, i: 501 }, D { l: 9, t: 0, i: 111 }, D { l: 10, t: 0, i: 141, }, D { l: 11, t: 0, i: 332, }, D { l: 13, t: 0, i: 43 }, D { l: 13, t: 0, i: 429, }, D { l: 14, t: 0, i: 130, }, D { l: 14, t: 0, i: 415, }, D { l: 145, t: 0, i: 102, }, D { l: 4, t: 10, i: 183, }, D { l: 5, t: 11, i: 882, }, D { l: 7, t: 10, i: 271, }, D { l: 11, t: 10, i: 824, }, D { l: 11, t: 10, i: 952, }, D { l: 13, t: 10, i: 278, }, D { l: 13, t: 10, i: 339, }, D { l: 13, t: 10, i: 482, }, D { l: 14, t: 10, i: 424, }, D { l: 148, t: 10, i: 99, }, D { l: 4, t: 10, i: 19 }, D { l: 5, t: 10, i: 477, }, D { l: 5, t: 10, i: 596, }, D { l: 6, t: 10, i: 505, }, D { l: 7, t: 10, i: 1221, }, D { l: 11, t: 10, i: 907, }, D { l: 12, t: 10, i: 209, }, D { l: 141, t: 10, i: 214, }, D { l: 135, t: 10, i: 1215, }, D { l: 133, t: 0, i: 452, }, D { l: 132, t: 11, i: 426, }, D { l: 5, t: 0, i: 149 }, D { l: 136, t: 0, i: 233, }, D { l: 133, t: 0, i: 935, }, D { l: 6, t: 11, i: 58 }, D { l: 7, t: 11, i: 654, }, D { l: 7, t: 11, i: 745, }, D { l: 7, t: 11, i: 1969, }, D { l: 8, t: 11, i: 240, }, D { l: 8, t: 11, i: 675, }, D { l: 9, t: 11, i: 479, }, D { l: 9, t: 11, i: 731, }, D { l: 10, t: 11, i: 330, }, D { l: 10, t: 11, i: 593, }, D { l: 10, t: 11, i: 817, }, D { l: 11, t: 11, i: 32, }, D { l: 11, t: 11, i: 133, }, D { l: 11, t: 11, i: 221, }, D { l: 145, t: 11, i: 68, }, D { l: 12, t: 0, i: 582, }, D { l: 18, t: 0, i: 131, }, D { l: 7, t: 11, i: 102, }, D { l: 137, t: 11, i: 538, }, D { l: 136, t: 0, i: 801, }, D { l: 134, t: 10, i: 1645, }, D { l: 132, t: 0, i: 70, }, D { l: 6, t: 10, i: 92 }, D { l: 6, t: 10, i: 188, }, D { l: 7, t: 10, i: 1269, }, D { l: 7, t: 10, i: 1524, }, D { l: 7, t: 10, i: 1876, }, D { l: 10, t: 10, i: 228, }, D { l: 139, t: 10, i: 1020, }, D { l: 4, t: 10, i: 459, }, D { l: 133, t: 10, i: 966, }, D { l: 138, t: 0, i: 369, }, D { l: 16, t: 0, i: 36 }, D { l: 140, t: 10, i: 330, }, D { l: 141, t: 11, i: 366, }, D { l: 7, t: 0, i: 721 }, D { l: 10, t: 0, i: 236, }, D { l: 12, t: 0, i: 204, }, D { l: 6, t: 10, i: 18 }, D { l: 7, t: 10, i: 932, }, D { l: 8, t: 10, i: 757, }, D { l: 9, t: 10, i: 54 }, D { l: 9, t: 10, i: 65 }, D { l: 9, t: 10, i: 844, }, D { l: 10, t: 10, i: 113, }, D { l: 10, t: 10, i: 315, }, D { l: 10, t: 10, i: 798, }, D { l: 11, t: 10, i: 153, }, D { l: 12, t: 10, i: 151, }, D { l: 12, t: 10, i: 392, }, D { l: 12, t: 10, i: 666, }, D { l: 142, t: 10, i: 248, }, D { l: 7, t: 0, i: 241 }, D { l: 10, t: 0, i: 430, }, D { l: 8, t: 10, i: 548, }, D { l: 9, t: 10, i: 532, }, D { l: 10, t: 10, i: 117, }, D { l: 11, t: 10, i: 351, }, D { l: 11, t: 10, i: 375, }, D { l: 143, t: 10, i: 23, }, D { l: 134, t: 10, i: 1742, }, D { l: 133, t: 10, i: 965, }, D { l: 133, t: 11, i: 566, }, D { l: 6, t: 11, i: 48 }, D { l: 135, t: 11, i: 63, }, D { l: 134, t: 10, i: 182, }, D { l: 10, t: 10, i: 65, }, D { l: 10, t: 10, i: 488, }, D { l: 138, t: 10, i: 497, }, D { l: 6, t: 11, i: 114, }, D { l: 7, t: 11, i: 1224, }, D { l: 7, t: 11, i: 1556, }, D { l: 136, t: 11, i: 3, }, D { l: 134, t: 0, i: 1817, }, D { l: 8, t: 11, i: 576, }, D { l: 137, t: 11, i: 267, }, D { l: 6, t: 0, i: 1078, }, D { l: 144, t: 0, i: 16, }, D { l: 9, t: 10, i: 588, }, D { l: 138, t: 10, i: 260, }, D { l: 138, t: 0, i: 1021, }, D { l: 5, t: 0, i: 406 }, D { l: 134, t: 0, i: 2022, }, D { l: 133, t: 11, i: 933, }, D { l: 6, t: 0, i: 69 }, D { l: 135, t: 0, i: 117, }, D { l: 7, t: 0, i: 1830, }, D { l: 136, t: 11, i: 427, }, D { l: 4, t: 0, i: 432 }, D { l: 135, t: 0, i: 824, }, D { l: 134, t: 10, i: 1786, }, D { l: 133, t: 0, i: 826, }, D { l: 139, t: 11, i: 67, }, D { l: 133, t: 11, i: 759, }, D { l: 135, t: 10, i: 308, }, D { l: 137, t: 0, i: 816, }, D { l: 133, t: 0, i: 1000, }, D { l: 4, t: 0, i: 297 }, D { l: 6, t: 0, i: 529 }, D { l: 7, t: 0, i: 152 }, D { l: 7, t: 0, i: 713 }, D { l: 7, t: 0, i: 1845, }, D { l: 8, t: 0, i: 710 }, D { l: 8, t: 0, i: 717 }, D { l: 12, t: 0, i: 639, }, D { l: 140, t: 0, i: 685, }, D { l: 7, t: 0, i: 423 }, D { l: 136, t: 10, i: 588, }, D { l: 136, t: 10, i: 287, }, D { l: 136, t: 0, i: 510, }, D { l: 134, t: 0, i: 1048, }, D { l: 6, t: 0, i: 618 }, D { l: 7, t: 11, i: 56 }, D { l: 7, t: 11, i: 1989, }, D { l: 8, t: 11, i: 337, }, D { l: 8, t: 11, i: 738, }, D { l: 9, t: 11, i: 600, }, D { l: 10, t: 11, i: 483, }, D { l: 12, t: 11, i: 37, }, D { l: 13, t: 11, i: 447, }, D { l: 142, t: 11, i: 92, }, D { l: 4, t: 0, i: 520 }, D { l: 135, t: 0, i: 575, }, D { l: 8, t: 0, i: 990 }, D { l: 138, t: 0, i: 977, }, D { l: 135, t: 11, i: 774, }, D { l: 9, t: 11, i: 347, }, D { l: 11, t: 11, i: 24, }, D { l: 140, t: 11, i: 170, }, D { l: 136, t: 11, i: 379, }, D { l: 140, t: 10, i: 290, }, D { l: 132, t: 11, i: 328, }, D { l: 4, t: 0, i: 321 }, D { l: 134, t: 0, i: 569, }, D { l: 4, t: 11, i: 101, }, D { l: 135, t: 11, i: 1171, }, D { l: 7, t: 0, i: 723 }, D { l: 7, t: 0, i: 1135, }, D { l: 5, t: 11, i: 833, }, D { l: 136, t: 11, i: 744, }, D { l: 7, t: 10, i: 719, }, D { l: 8, t: 10, i: 809, }, D { l: 136, t: 10, i: 834, }, D { l: 8, t: 0, i: 921 }, D { l: 136, t: 10, i: 796, }, D { l: 5, t: 10, i: 210, }, D { l: 6, t: 10, i: 213, }, D { l: 7, t: 10, i: 60 }, D { l: 10, t: 10, i: 364, }, D { l: 139, t: 10, i: 135, }, D { l: 5, t: 0, i: 397 }, D { l: 6, t: 0, i: 154 }, D { l: 7, t: 0, i: 676 }, D { l: 8, t: 0, i: 443 }, D { l: 8, t: 0, i: 609 }, D { l: 9, t: 0, i: 24 }, D { l: 9, t: 0, i: 325 }, D { l: 10, t: 0, i: 35 }, D { l: 11, t: 0, i: 535, }, D { l: 11, t: 0, i: 672, }, D { l: 11, t: 0, i: 1018, }, D { l: 12, t: 0, i: 637, }, D { l: 16, t: 0, i: 30 }, D { l: 5, t: 10, i: 607, }, D { l: 8, t: 10, i: 326, }, D { l: 136, t: 10, i: 490, }, D { l: 4, t: 10, i: 701, }, D { l: 5, t: 10, i: 472, }, D { l: 6, t: 11, i: 9 }, D { l: 6, t: 11, i: 397, }, D { l: 7, t: 11, i: 53 }, D { l: 7, t: 11, i: 1742, }, D { l: 9, t: 10, i: 758, }, D { l: 10, t: 11, i: 632, }, D { l: 11, t: 11, i: 828, }, D { l: 140, t: 11, i: 146, }, D { l: 135, t: 10, i: 380, }, D { l: 135, t: 10, i: 1947, }, D { l: 148, t: 11, i: 109, }, D { l: 10, t: 10, i: 278, }, D { l: 138, t: 11, i: 278, }, D { l: 134, t: 0, i: 856, }, D { l: 7, t: 0, i: 139 }, D { l: 4, t: 10, i: 386, }, D { l: 8, t: 10, i: 405, }, D { l: 8, t: 10, i: 728, }, D { l: 9, t: 10, i: 497, }, D { l: 11, t: 10, i: 110, }, D { l: 11, t: 10, i: 360, }, D { l: 15, t: 10, i: 37, }, D { l: 144, t: 10, i: 84, }, D { l: 141, t: 0, i: 282, }, D { l: 133, t: 0, i: 981, }, D { l: 5, t: 0, i: 288 }, D { l: 7, t: 10, i: 1452, }, D { l: 7, t: 10, i: 1480, }, D { l: 8, t: 10, i: 634, }, D { l: 140, t: 10, i: 472, }, D { l: 7, t: 0, i: 1890, }, D { l: 8, t: 11, i: 367, }, D { l: 10, t: 11, i: 760, }, D { l: 14, t: 11, i: 79, }, D { l: 20, t: 11, i: 17, }, D { l: 152, t: 11, i: 0, }, D { l: 4, t: 10, i: 524, }, D { l: 136, t: 10, i: 810, }, D { l: 4, t: 0, i: 56 }, D { l: 7, t: 0, i: 1791, }, D { l: 8, t: 0, i: 607 }, D { l: 8, t: 0, i: 651 }, D { l: 11, t: 0, i: 465, }, D { l: 11, t: 0, i: 835, }, D { l: 12, t: 0, i: 337, }, D { l: 141, t: 0, i: 480, }, D { l: 10, t: 10, i: 238, }, D { l: 141, t: 10, i: 33, }, D { l: 11, t: 11, i: 417, }, D { l: 12, t: 11, i: 223, }, D { l: 140, t: 11, i: 265, }, D { l: 9, t: 0, i: 158 }, D { l: 10, t: 0, i: 411, }, D { l: 140, t: 0, i: 261, }, D { l: 133, t: 10, i: 532, }, D { l: 133, t: 10, i: 997, }, D { l: 12, t: 11, i: 186, }, D { l: 12, t: 11, i: 292, }, D { l: 14, t: 11, i: 100, }, D { l: 146, t: 11, i: 70, }, D { l: 6, t: 0, i: 1403, }, D { l: 136, t: 0, i: 617, }, D { l: 134, t: 0, i: 1205, }, D { l: 139, t: 0, i: 563, }, D { l: 4, t: 0, i: 242 }, D { l: 134, t: 0, i: 333, }, D { l: 4, t: 11, i: 186, }, D { l: 5, t: 11, i: 157, }, D { l: 8, t: 11, i: 168, }, D { l: 138, t: 11, i: 6, }, D { l: 132, t: 0, i: 369, }, D { l: 133, t: 11, i: 875, }, D { l: 5, t: 10, i: 782, }, D { l: 5, t: 10, i: 829, }, D { l: 134, t: 10, i: 1738, }, D { l: 134, t: 0, i: 622, }, D { l: 135, t: 11, i: 1272, }, D { l: 6, t: 0, i: 1407, }, D { l: 7, t: 11, i: 111, }, D { l: 136, t: 11, i: 581, }, D { l: 7, t: 10, i: 1823, }, D { l: 139, t: 10, i: 693, }, D { l: 7, t: 0, i: 160 }, D { l: 10, t: 0, i: 624, }, D { l: 142, t: 0, i: 279, }, D { l: 132, t: 0, i: 363, }, D { l: 10, t: 11, i: 589, }, D { l: 12, t: 11, i: 111, }, D { l: 13, t: 11, i: 260, }, D { l: 14, t: 11, i: 82, }, D { l: 18, t: 11, i: 63, }, D { l: 147, t: 11, i: 45, }, D { l: 7, t: 11, i: 1364, }, D { l: 7, t: 11, i: 1907, }, D { l: 141, t: 11, i: 158, }, D { l: 4, t: 11, i: 404, }, D { l: 4, t: 11, i: 659, }, D { l: 135, t: 11, i: 675, }, D { l: 13, t: 11, i: 211, }, D { l: 14, t: 11, i: 133, }, D { l: 14, t: 11, i: 204, }, D { l: 15, t: 11, i: 64, }, D { l: 15, t: 11, i: 69, }, D { l: 15, t: 11, i: 114, }, D { l: 16, t: 11, i: 10, }, D { l: 19, t: 11, i: 23, }, D { l: 19, t: 11, i: 35, }, D { l: 19, t: 11, i: 39, }, D { l: 19, t: 11, i: 51, }, D { l: 19, t: 11, i: 71, }, D { l: 19, t: 11, i: 75, }, D { l: 152, t: 11, i: 15, }, D { l: 4, t: 10, i: 78 }, D { l: 5, t: 10, i: 96 }, D { l: 5, t: 10, i: 182, }, D { l: 7, t: 10, i: 1724, }, D { l: 7, t: 10, i: 1825, }, D { l: 10, t: 10, i: 394, }, D { l: 10, t: 10, i: 471, }, D { l: 11, t: 10, i: 532, }, D { l: 14, t: 10, i: 340, }, D { l: 145, t: 10, i: 88, }, D { l: 135, t: 10, i: 1964, }, D { l: 133, t: 11, i: 391, }, D { l: 11, t: 11, i: 887, }, D { l: 14, t: 11, i: 365, }, D { l: 142, t: 11, i: 375, }, D { l: 5, t: 11, i: 540, }, D { l: 6, t: 11, i: 1697, }, D { l: 7, t: 11, i: 222, }, D { l: 136, t: 11, i: 341, }, D { l: 134, t: 11, i: 78, }, D { l: 9, t: 0, i: 601 }, D { l: 9, t: 0, i: 619 }, D { l: 10, t: 0, i: 505, }, D { l: 10, t: 0, i: 732, }, D { l: 11, t: 0, i: 355, }, D { l: 140, t: 0, i: 139, }, D { l: 134, t: 0, i: 292, }, D { l: 139, t: 0, i: 174, }, D { l: 5, t: 0, i: 177 }, D { l: 6, t: 0, i: 616 }, D { l: 7, t: 0, i: 827 }, D { l: 9, t: 0, i: 525 }, D { l: 138, t: 0, i: 656, }, D { l: 10, t: 0, i: 31 }, D { l: 6, t: 10, i: 215, }, D { l: 7, t: 10, i: 1028, }, D { l: 7, t: 10, i: 1473, }, D { l: 7, t: 10, i: 1721, }, D { l: 9, t: 10, i: 424, }, D { l: 138, t: 10, i: 779, }, D { l: 135, t: 10, i: 584, }, D { l: 136, t: 11, i: 293, }, D { l: 134, t: 0, i: 685, }, D { l: 135, t: 11, i: 1868, }, D { l: 133, t: 11, i: 460, }, D { l: 7, t: 0, i: 647 }, D { l: 6, t: 10, i: 67 }, D { l: 7, t: 10, i: 1630, }, D { l: 9, t: 10, i: 354, }, D { l: 9, t: 10, i: 675, }, D { l: 10, t: 10, i: 830, }, D { l: 14, t: 10, i: 80, }, D { l: 145, t: 10, i: 80, }, D { l: 4, t: 0, i: 161 }, D { l: 133, t: 0, i: 631, }, D { l: 6, t: 10, i: 141, }, D { l: 7, t: 10, i: 225, }, D { l: 9, t: 10, i: 59 }, D { l: 9, t: 10, i: 607, }, D { l: 10, t: 10, i: 312, }, D { l: 11, t: 10, i: 687, }, D { l: 12, t: 10, i: 555, }, D { l: 13, t: 10, i: 373, }, D { l: 13, t: 10, i: 494, }, D { l: 148, t: 10, i: 58, }, D { l: 7, t: 11, i: 965, }, D { l: 7, t: 11, i: 1460, }, D { l: 135, t: 11, i: 1604, }, D { l: 136, t: 10, i: 783, }, D { l: 134, t: 11, i: 388, }, D { l: 6, t: 0, i: 722 }, D { l: 6, t: 0, i: 1267, }, D { l: 4, t: 11, i: 511, }, D { l: 9, t: 11, i: 333, }, D { l: 9, t: 11, i: 379, }, D { l: 10, t: 11, i: 602, }, D { l: 11, t: 11, i: 441, }, D { l: 11, t: 11, i: 723, }, D { l: 11, t: 11, i: 976, }, D { l: 140, t: 11, i: 357, }, D { l: 134, t: 0, i: 1797, }, D { l: 135, t: 0, i: 1684, }, D { l: 9, t: 0, i: 469 }, D { l: 9, t: 0, i: 709 }, D { l: 12, t: 0, i: 512, }, D { l: 14, t: 0, i: 65 }, D { l: 17, t: 0, i: 12 }, D { l: 5, t: 11, i: 938, }, D { l: 136, t: 11, i: 707, }, D { l: 7, t: 0, i: 1230, }, D { l: 136, t: 0, i: 531, }, D { l: 10, t: 0, i: 229, }, D { l: 11, t: 0, i: 73 }, D { l: 11, t: 0, i: 376, }, D { l: 139, t: 0, i: 433, }, D { l: 12, t: 0, i: 268, }, D { l: 12, t: 0, i: 640, }, D { l: 142, t: 0, i: 119, }, D { l: 7, t: 10, i: 430, }, D { l: 139, t: 10, i: 46, }, D { l: 6, t: 0, i: 558 }, D { l: 7, t: 0, i: 651 }, D { l: 8, t: 0, i: 421 }, D { l: 9, t: 0, i: 0 }, D { l: 10, t: 0, i: 34 }, D { l: 139, t: 0, i: 1008, }, D { l: 6, t: 0, i: 106 }, D { l: 7, t: 0, i: 1786, }, D { l: 7, t: 0, i: 1821, }, D { l: 9, t: 0, i: 102 }, D { l: 9, t: 0, i: 763 }, D { l: 5, t: 10, i: 602, }, D { l: 7, t: 10, i: 2018, }, D { l: 137, t: 10, i: 418, }, D { l: 5, t: 0, i: 65 }, D { l: 6, t: 0, i: 416 }, D { l: 7, t: 0, i: 1720, }, D { l: 7, t: 0, i: 1924, }, D { l: 10, t: 0, i: 109, }, D { l: 11, t: 0, i: 14 }, D { l: 11, t: 0, i: 70 }, D { l: 11, t: 0, i: 569, }, D { l: 11, t: 0, i: 735, }, D { l: 15, t: 0, i: 153, }, D { l: 20, t: 0, i: 80 }, D { l: 136, t: 10, i: 677, }, D { l: 135, t: 11, i: 1625, }, D { l: 137, t: 11, i: 772, }, D { l: 136, t: 0, i: 595, }, D { l: 6, t: 11, i: 469, }, D { l: 7, t: 11, i: 1709, }, D { l: 138, t: 11, i: 515, }, D { l: 7, t: 0, i: 1832, }, D { l: 138, t: 0, i: 374, }, D { l: 9, t: 0, i: 106 }, D { l: 9, t: 0, i: 163 }, D { l: 9, t: 0, i: 296 }, D { l: 10, t: 0, i: 167, }, D { l: 10, t: 0, i: 172, }, D { l: 10, t: 0, i: 777, }, D { l: 139, t: 0, i: 16, }, D { l: 6, t: 0, i: 6 }, D { l: 7, t: 0, i: 81 }, D { l: 7, t: 0, i: 771 }, D { l: 7, t: 0, i: 1731, }, D { l: 9, t: 0, i: 405 }, D { l: 138, t: 0, i: 421, }, D { l: 4, t: 11, i: 500, }, D { l: 135, t: 11, i: 938, }, D { l: 5, t: 11, i: 68 }, D { l: 134, t: 11, i: 383, }, D { l: 5, t: 0, i: 881 }, D { l: 133, t: 0, i: 885, }, D { l: 6, t: 0, i: 854 }, D { l: 6, t: 0, i: 1132, }, D { l: 6, t: 0, i: 1495, }, D { l: 6, t: 0, i: 1526, }, D { l: 6, t: 0, i: 1533, }, D { l: 134, t: 0, i: 1577, }, D { l: 4, t: 11, i: 337, }, D { l: 6, t: 11, i: 353, }, D { l: 7, t: 11, i: 1934, }, D { l: 8, t: 11, i: 488, }, D { l: 137, t: 11, i: 429, }, D { l: 7, t: 11, i: 236, }, D { l: 7, t: 11, i: 1795, }, D { l: 8, t: 11, i: 259, }, D { l: 9, t: 11, i: 135, }, D { l: 9, t: 11, i: 177, }, D { l: 10, t: 11, i: 825, }, D { l: 11, t: 11, i: 115, }, D { l: 11, t: 11, i: 370, }, D { l: 11, t: 11, i: 405, }, D { l: 11, t: 11, i: 604, }, D { l: 12, t: 11, i: 10, }, D { l: 12, t: 11, i: 667, }, D { l: 12, t: 11, i: 669, }, D { l: 13, t: 11, i: 76, }, D { l: 14, t: 11, i: 310, }, D { l: 15, t: 11, i: 76, }, D { l: 15, t: 11, i: 147, }, D { l: 148, t: 11, i: 23, }, D { l: 5, t: 0, i: 142 }, D { l: 134, t: 0, i: 546, }, D { l: 4, t: 11, i: 15 }, D { l: 5, t: 11, i: 22 }, D { l: 6, t: 11, i: 244, }, D { l: 7, t: 11, i: 40 }, D { l: 7, t: 11, i: 200, }, D { l: 7, t: 11, i: 906, }, D { l: 7, t: 11, i: 1199, }, D { l: 9, t: 11, i: 616, }, D { l: 10, t: 11, i: 716, }, D { l: 11, t: 11, i: 635, }, D { l: 11, t: 11, i: 801, }, D { l: 140, t: 11, i: 458, }, D { l: 5, t: 0, i: 466 }, D { l: 11, t: 0, i: 571, }, D { l: 12, t: 0, i: 198, }, D { l: 13, t: 0, i: 283, }, D { l: 14, t: 0, i: 186, }, D { l: 15, t: 0, i: 21 }, D { l: 15, t: 0, i: 103, }, D { l: 135, t: 10, i: 329, }, D { l: 4, t: 0, i: 185 }, D { l: 5, t: 0, i: 257 }, D { l: 5, t: 0, i: 839 }, D { l: 5, t: 0, i: 936 }, D { l: 9, t: 0, i: 399 }, D { l: 10, t: 0, i: 258, }, D { l: 10, t: 0, i: 395, }, D { l: 10, t: 0, i: 734, }, D { l: 11, t: 0, i: 1014, }, D { l: 12, t: 0, i: 23 }, D { l: 13, t: 0, i: 350, }, D { l: 14, t: 0, i: 150, }, D { l: 19, t: 0, i: 6 }, D { l: 135, t: 11, i: 1735, }, D { l: 12, t: 11, i: 36, }, D { l: 141, t: 11, i: 337, }, D { l: 5, t: 11, i: 598, }, D { l: 7, t: 11, i: 791, }, D { l: 8, t: 11, i: 108, }, D { l: 137, t: 11, i: 123, }, D { l: 132, t: 10, i: 469, }, D { l: 7, t: 0, i: 404 }, D { l: 7, t: 0, i: 1377, }, D { l: 7, t: 0, i: 1430, }, D { l: 7, t: 0, i: 2017, }, D { l: 8, t: 0, i: 149 }, D { l: 8, t: 0, i: 239 }, D { l: 8, t: 0, i: 512 }, D { l: 8, t: 0, i: 793 }, D { l: 8, t: 0, i: 818 }, D { l: 9, t: 0, i: 474 }, D { l: 9, t: 0, i: 595 }, D { l: 10, t: 0, i: 122, }, D { l: 10, t: 0, i: 565, }, D { l: 10, t: 0, i: 649, }, D { l: 10, t: 0, i: 783, }, D { l: 11, t: 0, i: 239, }, D { l: 11, t: 0, i: 295, }, D { l: 11, t: 0, i: 447, }, D { l: 11, t: 0, i: 528, }, D { l: 11, t: 0, i: 639, }, D { l: 11, t: 0, i: 800, }, D { l: 12, t: 0, i: 25 }, D { l: 12, t: 0, i: 77 }, D { l: 12, t: 0, i: 157, }, D { l: 12, t: 0, i: 256, }, D { l: 12, t: 0, i: 316, }, D { l: 12, t: 0, i: 390, }, D { l: 12, t: 0, i: 391, }, D { l: 12, t: 0, i: 395, }, D { l: 12, t: 0, i: 478, }, D { l: 12, t: 0, i: 503, }, D { l: 12, t: 0, i: 592, }, D { l: 12, t: 0, i: 680, }, D { l: 13, t: 0, i: 50 }, D { l: 13, t: 0, i: 53 }, D { l: 13, t: 0, i: 132, }, D { l: 13, t: 0, i: 198, }, D { l: 13, t: 0, i: 322, }, D { l: 13, t: 0, i: 415, }, D { l: 13, t: 0, i: 511, }, D { l: 14, t: 0, i: 71 }, D { l: 14, t: 0, i: 395, }, D { l: 15, t: 0, i: 71 }, D { l: 15, t: 0, i: 136, }, D { l: 17, t: 0, i: 123, }, D { l: 18, t: 0, i: 93 }, D { l: 147, t: 0, i: 58, }, D { l: 136, t: 0, i: 712, }, D { l: 134, t: 10, i: 1743, }, D { l: 5, t: 10, i: 929, }, D { l: 6, t: 10, i: 340, }, D { l: 8, t: 10, i: 376, }, D { l: 136, t: 10, i: 807, }, D { l: 6, t: 0, i: 1848, }, D { l: 8, t: 0, i: 860 }, D { l: 10, t: 0, i: 856, }, D { l: 10, t: 0, i: 859, }, D { l: 10, t: 0, i: 925, }, D { l: 10, t: 0, i: 941, }, D { l: 140, t: 0, i: 762, }, D { l: 6, t: 0, i: 629 }, D { l: 6, t: 0, i: 906 }, D { l: 9, t: 0, i: 810 }, D { l: 140, t: 0, i: 652, }, D { l: 5, t: 10, i: 218, }, D { l: 7, t: 10, i: 1610, }, D { l: 138, t: 10, i: 83, }, D { l: 7, t: 10, i: 1512, }, D { l: 135, t: 10, i: 1794, }, D { l: 4, t: 0, i: 377 }, D { l: 24, t: 0, i: 13 }, D { l: 4, t: 11, i: 155, }, D { l: 7, t: 11, i: 1689, }, D { l: 11, t: 10, i: 0 }, D { l: 144, t: 10, i: 78, }, D { l: 4, t: 11, i: 164, }, D { l: 5, t: 11, i: 151, }, D { l: 5, t: 11, i: 730, }, D { l: 5, t: 11, i: 741, }, D { l: 7, t: 11, i: 498, }, D { l: 7, t: 11, i: 870, }, D { l: 7, t: 11, i: 1542, }, D { l: 12, t: 11, i: 213, }, D { l: 14, t: 11, i: 36, }, D { l: 14, t: 11, i: 391, }, D { l: 17, t: 11, i: 111, }, D { l: 18, t: 11, i: 6 }, D { l: 18, t: 11, i: 46, }, D { l: 18, t: 11, i: 151, }, D { l: 19, t: 11, i: 36, }, D { l: 20, t: 11, i: 32, }, D { l: 20, t: 11, i: 56, }, D { l: 20, t: 11, i: 69, }, D { l: 20, t: 11, i: 102, }, D { l: 21, t: 11, i: 4 }, D { l: 22, t: 11, i: 8 }, D { l: 22, t: 11, i: 10, }, D { l: 22, t: 11, i: 14, }, D { l: 150, t: 11, i: 31, }, D { l: 7, t: 0, i: 1842, }, D { l: 133, t: 10, i: 571, }, D { l: 4, t: 10, i: 455, }, D { l: 4, t: 11, i: 624, }, D { l: 135, t: 11, i: 1752, }, D { l: 134, t: 0, i: 1501, }, D { l: 4, t: 11, i: 492, }, D { l: 5, t: 11, i: 451, }, D { l: 6, t: 10, i: 161, }, D { l: 7, t: 10, i: 372, }, D { l: 137, t: 10, i: 597, }, D { l: 132, t: 10, i: 349, }, D { l: 4, t: 0, i: 180 }, D { l: 135, t: 0, i: 1906, }, D { l: 135, t: 11, i: 835, }, D { l: 141, t: 11, i: 70, }, D { l: 132, t: 0, i: 491, }, D { l: 137, t: 10, i: 751, }, D { l: 6, t: 10, i: 432, }, D { l: 139, t: 10, i: 322, }, D { l: 4, t: 0, i: 171 }, D { l: 138, t: 0, i: 234, }, D { l: 6, t: 11, i: 113, }, D { l: 135, t: 11, i: 436, }, D { l: 4, t: 0, i: 586 }, D { l: 7, t: 0, i: 1186, }, D { l: 138, t: 0, i: 631, }, D { l: 5, t: 10, i: 468, }, D { l: 10, t: 10, i: 325, }, D { l: 11, t: 10, i: 856, }, D { l: 12, t: 10, i: 345, }, D { l: 143, t: 10, i: 104, }, D { l: 5, t: 10, i: 223, }, D { l: 10, t: 11, i: 592, }, D { l: 10, t: 11, i: 753, }, D { l: 12, t: 11, i: 317, }, D { l: 12, t: 11, i: 355, }, D { l: 12, t: 11, i: 465, }, D { l: 12, t: 11, i: 469, }, D { l: 12, t: 11, i: 560, }, D { l: 12, t: 11, i: 578, }, D { l: 141, t: 11, i: 243, }, D { l: 132, t: 10, i: 566, }, D { l: 135, t: 11, i: 520, }, D { l: 4, t: 10, i: 59 }, D { l: 135, t: 10, i: 1394, }, D { l: 6, t: 10, i: 436, }, D { l: 139, t: 10, i: 481, }, D { l: 9, t: 0, i: 931 }, D { l: 10, t: 0, i: 334, }, D { l: 20, t: 0, i: 71 }, D { l: 4, t: 10, i: 48 }, D { l: 5, t: 10, i: 271, }, D { l: 7, t: 10, i: 953, }, D { l: 135, t: 11, i: 1878, }, D { l: 11, t: 0, i: 170, }, D { l: 5, t: 10, i: 610, }, D { l: 136, t: 10, i: 457, }, D { l: 133, t: 10, i: 755, }, D { l: 6, t: 0, i: 1587, }, D { l: 135, t: 10, i: 1217, }, D { l: 4, t: 10, i: 197, }, D { l: 149, t: 11, i: 26, }, D { l: 133, t: 11, i: 585, }, D { l: 137, t: 11, i: 521, }, D { l: 133, t: 0, i: 765, }, D { l: 133, t: 10, i: 217, }, D { l: 139, t: 11, i: 586, }, D { l: 133, t: 0, i: 424, }, D { l: 9, t: 11, i: 752, }, D { l: 12, t: 11, i: 610, }, D { l: 13, t: 11, i: 431, }, D { l: 16, t: 11, i: 59, }, D { l: 146, t: 11, i: 109, }, D { l: 136, t: 0, i: 714, }, D { l: 7, t: 0, i: 685 }, D { l: 132, t: 11, i: 307, }, D { l: 9, t: 0, i: 420 }, D { l: 10, t: 0, i: 269, }, D { l: 10, t: 0, i: 285, }, D { l: 10, t: 0, i: 576, }, D { l: 11, t: 0, i: 397, }, D { l: 13, t: 0, i: 175, }, D { l: 145, t: 0, i: 90, }, D { l: 132, t: 0, i: 429, }, D { l: 133, t: 11, i: 964, }, D { l: 9, t: 11, i: 463, }, D { l: 138, t: 11, i: 595, }, D { l: 7, t: 0, i: 18 }, D { l: 7, t: 0, i: 699 }, D { l: 7, t: 0, i: 1966, }, D { l: 8, t: 0, i: 752 }, D { l: 9, t: 0, i: 273 }, D { l: 9, t: 0, i: 412 }, D { l: 9, t: 0, i: 703 }, D { l: 10, t: 0, i: 71 }, D { l: 10, t: 0, i: 427, }, D { l: 138, t: 0, i: 508, }, D { l: 4, t: 10, i: 165, }, D { l: 7, t: 10, i: 1398, }, D { l: 135, t: 10, i: 1829, }, D { l: 4, t: 0, i: 53 }, D { l: 5, t: 0, i: 186 }, D { l: 7, t: 0, i: 752 }, D { l: 7, t: 0, i: 828 }, D { l: 142, t: 0, i: 116, }, D { l: 8, t: 0, i: 575 }, D { l: 10, t: 0, i: 289, }, D { l: 139, t: 0, i: 319, }, D { l: 132, t: 0, i: 675, }, D { l: 134, t: 0, i: 1424, }, D { l: 4, t: 11, i: 75 }, D { l: 5, t: 11, i: 180, }, D { l: 6, t: 11, i: 500, }, D { l: 7, t: 11, i: 58 }, D { l: 7, t: 11, i: 710, }, D { l: 138, t: 11, i: 645, }, D { l: 133, t: 11, i: 649, }, D { l: 6, t: 11, i: 276, }, D { l: 7, t: 11, i: 282, }, D { l: 7, t: 11, i: 879, }, D { l: 7, t: 11, i: 924, }, D { l: 8, t: 11, i: 459, }, D { l: 9, t: 11, i: 599, }, D { l: 9, t: 11, i: 754, }, D { l: 11, t: 11, i: 574, }, D { l: 12, t: 11, i: 128, }, D { l: 12, t: 11, i: 494, }, D { l: 13, t: 11, i: 52, }, D { l: 13, t: 11, i: 301, }, D { l: 15, t: 11, i: 30, }, D { l: 143, t: 11, i: 132, }, D { l: 6, t: 0, i: 647 }, D { l: 134, t: 0, i: 1095, }, D { l: 5, t: 10, i: 9 }, D { l: 7, t: 10, i: 297, }, D { l: 7, t: 10, i: 966, }, D { l: 140, t: 10, i: 306, }, D { l: 132, t: 11, i: 200, }, D { l: 134, t: 0, i: 1334, }, D { l: 5, t: 10, i: 146, }, D { l: 6, t: 10, i: 411, }, D { l: 138, t: 10, i: 721, }, D { l: 6, t: 0, i: 209 }, D { l: 6, t: 0, i: 1141, }, D { l: 6, t: 0, i: 1288, }, D { l: 8, t: 0, i: 468 }, D { l: 9, t: 0, i: 210 }, D { l: 11, t: 0, i: 36 }, D { l: 12, t: 0, i: 28 }, D { l: 12, t: 0, i: 630, }, D { l: 13, t: 0, i: 21 }, D { l: 13, t: 0, i: 349, }, D { l: 14, t: 0, i: 7 }, D { l: 145, t: 0, i: 13, }, D { l: 6, t: 10, i: 177, }, D { l: 135, t: 10, i: 467, }, D { l: 4, t: 0, i: 342 }, D { l: 135, t: 0, i: 1179, }, D { l: 10, t: 11, i: 454, }, D { l: 140, t: 11, i: 324, }, D { l: 4, t: 0, i: 928 }, D { l: 133, t: 0, i: 910, }, D { l: 7, t: 0, i: 1838, }, D { l: 6, t: 11, i: 225, }, D { l: 137, t: 11, i: 211, }, D { l: 16, t: 0, i: 101, }, D { l: 20, t: 0, i: 115, }, D { l: 20, t: 0, i: 118, }, D { l: 148, t: 0, i: 122, }, D { l: 4, t: 0, i: 496 }, D { l: 135, t: 0, i: 856, }, D { l: 4, t: 0, i: 318 }, D { l: 11, t: 0, i: 654, }, D { l: 7, t: 11, i: 718, }, D { l: 139, t: 11, i: 102, }, D { l: 8, t: 11, i: 58 }, D { l: 9, t: 11, i: 724, }, D { l: 11, t: 11, i: 809, }, D { l: 13, t: 11, i: 113, }, D { l: 145, t: 11, i: 72, }, D { l: 5, t: 10, i: 200, }, D { l: 6, t: 11, i: 345, }, D { l: 135, t: 11, i: 1247, }, D { l: 8, t: 11, i: 767, }, D { l: 8, t: 11, i: 803, }, D { l: 9, t: 11, i: 301, }, D { l: 137, t: 11, i: 903, }, D { l: 7, t: 0, i: 915 }, D { l: 8, t: 0, i: 247 }, D { l: 19, t: 0, i: 0 }, D { l: 7, t: 11, i: 1949, }, D { l: 136, t: 11, i: 674, }, D { l: 4, t: 0, i: 202 }, D { l: 5, t: 0, i: 382 }, D { l: 6, t: 0, i: 454 }, D { l: 7, t: 0, i: 936 }, D { l: 7, t: 0, i: 1803, }, D { l: 8, t: 0, i: 758 }, D { l: 9, t: 0, i: 375 }, D { l: 9, t: 0, i: 895 }, D { l: 10, t: 0, i: 743, }, D { l: 10, t: 0, i: 792, }, D { l: 11, t: 0, i: 978, }, D { l: 11, t: 0, i: 1012, }, D { l: 142, t: 0, i: 109, }, D { l: 7, t: 0, i: 1150, }, D { l: 7, t: 0, i: 1425, }, D { l: 7, t: 0, i: 1453, }, D { l: 140, t: 0, i: 513, }, D { l: 134, t: 11, i: 259, }, D { l: 138, t: 0, i: 791, }, D { l: 11, t: 0, i: 821, }, D { l: 12, t: 0, i: 110, }, D { l: 12, t: 0, i: 153, }, D { l: 18, t: 0, i: 41 }, D { l: 150, t: 0, i: 19, }, D { l: 134, t: 10, i: 481, }, D { l: 132, t: 0, i: 796, }, D { l: 6, t: 0, i: 445 }, D { l: 9, t: 0, i: 909 }, D { l: 136, t: 11, i: 254, }, D { l: 10, t: 0, i: 776, }, D { l: 13, t: 0, i: 345, }, D { l: 142, t: 0, i: 425, }, D { l: 4, t: 10, i: 84 }, D { l: 7, t: 10, i: 1482, }, D { l: 10, t: 10, i: 76, }, D { l: 138, t: 10, i: 142, }, D { l: 135, t: 11, i: 742, }, D { l: 6, t: 0, i: 578 }, D { l: 133, t: 10, i: 1015, }, D { l: 6, t: 0, i: 1387, }, D { l: 4, t: 10, i: 315, }, D { l: 5, t: 10, i: 507, }, D { l: 135, t: 10, i: 1370, }, D { l: 4, t: 0, i: 438 }, D { l: 133, t: 0, i: 555, }, D { l: 136, t: 0, i: 766, }, D { l: 133, t: 11, i: 248, }, D { l: 134, t: 10, i: 1722, }, D { l: 4, t: 11, i: 116, }, D { l: 5, t: 11, i: 95 }, D { l: 5, t: 11, i: 445, }, D { l: 7, t: 11, i: 1688, }, D { l: 8, t: 11, i: 29 }, D { l: 9, t: 11, i: 272, }, D { l: 11, t: 11, i: 509, }, D { l: 139, t: 11, i: 915, }, D { l: 135, t: 0, i: 541, }, D { l: 133, t: 11, i: 543, }, D { l: 8, t: 10, i: 222, }, D { l: 8, t: 10, i: 476, }, D { l: 9, t: 10, i: 238, }, D { l: 11, t: 10, i: 516, }, D { l: 11, t: 10, i: 575, }, D { l: 15, t: 10, i: 109, }, D { l: 146, t: 10, i: 100, }, D { l: 6, t: 0, i: 880 }, D { l: 134, t: 0, i: 1191, }, D { l: 5, t: 11, i: 181, }, D { l: 136, t: 11, i: 41, }, D { l: 134, t: 0, i: 1506, }, D { l: 132, t: 11, i: 681, }, D { l: 7, t: 11, i: 25 }, D { l: 8, t: 11, i: 202, }, D { l: 138, t: 11, i: 536, }, D { l: 139, t: 0, i: 983, }, D { l: 137, t: 0, i: 768, }, D { l: 132, t: 0, i: 584, }, D { l: 9, t: 11, i: 423, }, D { l: 140, t: 11, i: 89, }, D { l: 8, t: 11, i: 113, }, D { l: 9, t: 11, i: 877, }, D { l: 10, t: 11, i: 554, }, D { l: 11, t: 11, i: 83, }, D { l: 12, t: 11, i: 136, }, D { l: 147, t: 11, i: 109, }, D { l: 7, t: 10, i: 706, }, D { l: 7, t: 10, i: 1058, }, D { l: 138, t: 10, i: 538, }, D { l: 133, t: 11, i: 976, }, D { l: 4, t: 11, i: 206, }, D { l: 135, t: 11, i: 746, }, D { l: 136, t: 11, i: 526, }, D { l: 140, t: 0, i: 737, }, D { l: 11, t: 10, i: 92, }, D { l: 11, t: 10, i: 196, }, D { l: 11, t: 10, i: 409, }, D { l: 11, t: 10, i: 450, }, D { l: 11, t: 10, i: 666, }, D { l: 11, t: 10, i: 777, }, D { l: 12, t: 10, i: 262, }, D { l: 13, t: 10, i: 385, }, D { l: 13, t: 10, i: 393, }, D { l: 15, t: 10, i: 115, }, D { l: 16, t: 10, i: 45, }, D { l: 145, t: 10, i: 82, }, D { l: 4, t: 0, i: 226 }, D { l: 4, t: 0, i: 326 }, D { l: 7, t: 0, i: 1770, }, D { l: 4, t: 11, i: 319, }, D { l: 5, t: 11, i: 699, }, D { l: 138, t: 11, i: 673, }, D { l: 6, t: 10, i: 40 }, D { l: 135, t: 10, i: 1781, }, D { l: 5, t: 0, i: 426 }, D { l: 8, t: 0, i: 30 }, D { l: 9, t: 0, i: 2 }, D { l: 11, t: 0, i: 549, }, D { l: 147, t: 0, i: 122, }, D { l: 6, t: 0, i: 1161, }, D { l: 134, t: 0, i: 1329, }, D { l: 138, t: 10, i: 97, }, D { l: 6, t: 10, i: 423, }, D { l: 7, t: 10, i: 665, }, D { l: 135, t: 10, i: 1210, }, D { l: 7, t: 11, i: 13 }, D { l: 8, t: 11, i: 226, }, D { l: 10, t: 11, i: 537, }, D { l: 11, t: 11, i: 570, }, D { l: 11, t: 11, i: 605, }, D { l: 11, t: 11, i: 799, }, D { l: 11, t: 11, i: 804, }, D { l: 12, t: 11, i: 85, }, D { l: 12, t: 11, i: 516, }, D { l: 12, t: 11, i: 623, }, D { l: 13, t: 11, i: 112, }, D { l: 13, t: 11, i: 361, }, D { l: 14, t: 11, i: 77, }, D { l: 14, t: 11, i: 78, }, D { l: 17, t: 11, i: 28, }, D { l: 147, t: 11, i: 110, }, D { l: 132, t: 11, i: 769, }, D { l: 132, t: 11, i: 551, }, D { l: 132, t: 11, i: 728, }, D { l: 147, t: 0, i: 117, }, D { l: 9, t: 11, i: 57 }, D { l: 9, t: 11, i: 459, }, D { l: 10, t: 11, i: 425, }, D { l: 11, t: 11, i: 119, }, D { l: 12, t: 11, i: 184, }, D { l: 12, t: 11, i: 371, }, D { l: 13, t: 11, i: 358, }, D { l: 145, t: 11, i: 51, }, D { l: 5, t: 11, i: 188, }, D { l: 5, t: 11, i: 814, }, D { l: 8, t: 11, i: 10 }, D { l: 9, t: 11, i: 421, }, D { l: 9, t: 11, i: 729, }, D { l: 10, t: 11, i: 609, }, D { l: 139, t: 11, i: 689, }, D { l: 134, t: 11, i: 624, }, D { l: 135, t: 11, i: 298, }, D { l: 135, t: 0, i: 462, }, D { l: 4, t: 0, i: 345 }, D { l: 139, t: 10, i: 624, }, D { l: 136, t: 10, i: 574, }, D { l: 4, t: 0, i: 385 }, D { l: 7, t: 0, i: 265 }, D { l: 135, t: 0, i: 587, }, D { l: 6, t: 0, i: 808 }, D { l: 132, t: 11, i: 528, }, D { l: 133, t: 0, i: 398, }, D { l: 132, t: 10, i: 354, }, D { l: 4, t: 0, i: 347 }, D { l: 5, t: 0, i: 423 }, D { l: 5, t: 0, i: 996 }, D { l: 135, t: 0, i: 1329, }, D { l: 135, t: 10, i: 1558, }, D { l: 7, t: 0, i: 1259, }, D { l: 9, t: 0, i: 125 }, D { l: 139, t: 0, i: 65, }, D { l: 5, t: 0, i: 136 }, D { l: 6, t: 0, i: 136 }, D { l: 136, t: 0, i: 644, }, D { l: 5, t: 11, i: 104, }, D { l: 6, t: 11, i: 173, }, D { l: 135, t: 11, i: 1631, }, D { l: 135, t: 0, i: 469, }, D { l: 133, t: 10, i: 830, }, D { l: 4, t: 0, i: 278 }, D { l: 5, t: 0, i: 465 }, D { l: 135, t: 0, i: 1367, }, D { l: 7, t: 11, i: 810, }, D { l: 8, t: 11, i: 138, }, D { l: 8, t: 11, i: 342, }, D { l: 9, t: 11, i: 84 }, D { l: 10, t: 11, i: 193, }, D { l: 11, t: 11, i: 883, }, D { l: 140, t: 11, i: 359, }, D { l: 5, t: 10, i: 496, }, D { l: 135, t: 10, i: 203, }, D { l: 4, t: 0, i: 433 }, D { l: 133, t: 0, i: 719, }, D { l: 6, t: 11, i: 95 }, D { l: 134, t: 10, i: 547, }, D { l: 5, t: 10, i: 88 }, D { l: 137, t: 10, i: 239, }, D { l: 6, t: 11, i: 406, }, D { l: 10, t: 11, i: 409, }, D { l: 10, t: 11, i: 447, }, D { l: 11, t: 11, i: 44, }, D { l: 140, t: 11, i: 100, }, D { l: 134, t: 0, i: 1423, }, D { l: 7, t: 10, i: 650, }, D { l: 135, t: 10, i: 1310, }, D { l: 134, t: 0, i: 749, }, D { l: 135, t: 11, i: 1243, }, D { l: 135, t: 0, i: 1363, }, D { l: 6, t: 0, i: 381 }, D { l: 7, t: 0, i: 645 }, D { l: 7, t: 0, i: 694 }, D { l: 8, t: 0, i: 546 }, D { l: 7, t: 10, i: 1076, }, D { l: 9, t: 10, i: 80 }, D { l: 11, t: 10, i: 78, }, D { l: 11, t: 10, i: 421, }, D { l: 11, t: 10, i: 534, }, D { l: 140, t: 10, i: 545, }, D { l: 134, t: 11, i: 1636, }, D { l: 135, t: 11, i: 1344, }, D { l: 12, t: 0, i: 277, }, D { l: 7, t: 10, i: 274, }, D { l: 11, t: 10, i: 479, }, D { l: 139, t: 10, i: 507, }, D { l: 6, t: 0, i: 705 }, D { l: 6, t: 0, i: 783 }, D { l: 6, t: 0, i: 1275, }, D { l: 6, t: 0, i: 1481, }, D { l: 4, t: 11, i: 282, }, D { l: 7, t: 11, i: 1034, }, D { l: 11, t: 11, i: 398, }, D { l: 11, t: 11, i: 634, }, D { l: 12, t: 11, i: 1 }, D { l: 12, t: 11, i: 79, }, D { l: 12, t: 11, i: 544, }, D { l: 14, t: 11, i: 237, }, D { l: 17, t: 11, i: 10, }, D { l: 146, t: 11, i: 20, }, D { l: 134, t: 0, i: 453, }, D { l: 4, t: 0, i: 555 }, D { l: 8, t: 0, i: 536 }, D { l: 10, t: 0, i: 288, }, D { l: 11, t: 0, i: 1005, }, D { l: 4, t: 10, i: 497, }, D { l: 135, t: 10, i: 1584, }, D { l: 5, t: 11, i: 118, }, D { l: 5, t: 11, i: 499, }, D { l: 6, t: 11, i: 476, }, D { l: 7, t: 11, i: 600, }, D { l: 7, t: 11, i: 888, }, D { l: 135, t: 11, i: 1096, }, D { l: 138, t: 0, i: 987, }, D { l: 7, t: 0, i: 1107, }, D { l: 7, t: 10, i: 261, }, D { l: 7, t: 10, i: 1115, }, D { l: 7, t: 10, i: 1354, }, D { l: 7, t: 10, i: 1588, }, D { l: 7, t: 10, i: 1705, }, D { l: 7, t: 10, i: 1902, }, D { l: 9, t: 10, i: 465, }, D { l: 10, t: 10, i: 248, }, D { l: 10, t: 10, i: 349, }, D { l: 10, t: 10, i: 647, }, D { l: 11, t: 10, i: 527, }, D { l: 11, t: 10, i: 660, }, D { l: 11, t: 10, i: 669, }, D { l: 12, t: 10, i: 529, }, D { l: 141, t: 10, i: 305, }, D { l: 7, t: 11, i: 296, }, D { l: 7, t: 11, i: 596, }, D { l: 8, t: 11, i: 560, }, D { l: 8, t: 11, i: 586, }, D { l: 9, t: 11, i: 612, }, D { l: 11, t: 11, i: 100, }, D { l: 11, t: 11, i: 304, }, D { l: 12, t: 11, i: 46, }, D { l: 13, t: 11, i: 89, }, D { l: 14, t: 11, i: 112, }, D { l: 145, t: 11, i: 122, }, D { l: 9, t: 0, i: 370 }, D { l: 138, t: 0, i: 90, }, D { l: 136, t: 10, i: 13, }, D { l: 132, t: 0, i: 860, }, D { l: 7, t: 10, i: 642, }, D { l: 8, t: 10, i: 250, }, D { l: 11, t: 10, i: 123, }, D { l: 11, t: 10, i: 137, }, D { l: 13, t: 10, i: 48, }, D { l: 142, t: 10, i: 95, }, D { l: 135, t: 10, i: 1429, }, D { l: 137, t: 11, i: 321, }, D { l: 132, t: 0, i: 257, }, D { l: 135, t: 0, i: 2031, }, D { l: 7, t: 0, i: 1768, }, D { l: 7, t: 11, i: 1599, }, D { l: 7, t: 11, i: 1723, }, D { l: 8, t: 11, i: 79 }, D { l: 8, t: 11, i: 106, }, D { l: 8, t: 11, i: 190, }, D { l: 8, t: 11, i: 302, }, D { l: 8, t: 11, i: 383, }, D { l: 9, t: 11, i: 119, }, D { l: 9, t: 11, i: 233, }, D { l: 9, t: 11, i: 298, }, D { l: 9, t: 11, i: 419, }, D { l: 9, t: 11, i: 471, }, D { l: 10, t: 11, i: 181, }, D { l: 10, t: 11, i: 406, }, D { l: 11, t: 11, i: 57, }, D { l: 11, t: 11, i: 85, }, D { l: 11, t: 11, i: 120, }, D { l: 11, t: 11, i: 177, }, D { l: 11, t: 11, i: 296, }, D { l: 11, t: 11, i: 382, }, D { l: 11, t: 11, i: 454, }, D { l: 11, t: 11, i: 758, }, D { l: 11, t: 11, i: 999, }, D { l: 12, t: 11, i: 27, }, D { l: 12, t: 11, i: 98, }, D { l: 12, t: 11, i: 131, }, D { l: 12, t: 11, i: 245, }, D { l: 12, t: 11, i: 312, }, D { l: 12, t: 11, i: 446, }, D { l: 12, t: 11, i: 454, }, D { l: 13, t: 11, i: 25, }, D { l: 13, t: 11, i: 98, }, D { l: 13, t: 11, i: 426, }, D { l: 13, t: 11, i: 508, }, D { l: 14, t: 11, i: 6 }, D { l: 14, t: 11, i: 163, }, D { l: 14, t: 11, i: 272, }, D { l: 14, t: 11, i: 277, }, D { l: 14, t: 11, i: 370, }, D { l: 15, t: 11, i: 95, }, D { l: 15, t: 11, i: 138, }, D { l: 15, t: 11, i: 167, }, D { l: 17, t: 11, i: 18, }, D { l: 17, t: 11, i: 38, }, D { l: 20, t: 11, i: 96, }, D { l: 149, t: 11, i: 32, }, D { l: 5, t: 11, i: 722, }, D { l: 134, t: 11, i: 1759, }, D { l: 145, t: 11, i: 16, }, D { l: 6, t: 0, i: 1071, }, D { l: 134, t: 0, i: 1561, }, D { l: 10, t: 10, i: 545, }, D { l: 140, t: 10, i: 301, }, D { l: 6, t: 0, i: 83 }, D { l: 6, t: 0, i: 1733, }, D { l: 135, t: 0, i: 1389, }, D { l: 4, t: 0, i: 835 }, D { l: 135, t: 0, i: 1818, }, D { l: 133, t: 11, i: 258, }, D { l: 4, t: 10, i: 904, }, D { l: 133, t: 10, i: 794, }, D { l: 134, t: 0, i: 2006, }, D { l: 5, t: 11, i: 30 }, D { l: 7, t: 11, i: 495, }, D { l: 8, t: 11, i: 134, }, D { l: 9, t: 11, i: 788, }, D { l: 140, t: 11, i: 438, }, D { l: 135, t: 11, i: 2004, }, D { l: 137, t: 0, i: 696, }, D { l: 5, t: 11, i: 50 }, D { l: 6, t: 11, i: 439, }, D { l: 7, t: 11, i: 780, }, D { l: 135, t: 11, i: 1040, }, D { l: 7, t: 11, i: 772, }, D { l: 7, t: 11, i: 1104, }, D { l: 7, t: 11, i: 1647, }, D { l: 11, t: 11, i: 269, }, D { l: 11, t: 11, i: 539, }, D { l: 11, t: 11, i: 607, }, D { l: 11, t: 11, i: 627, }, D { l: 11, t: 11, i: 706, }, D { l: 11, t: 11, i: 975, }, D { l: 12, t: 11, i: 248, }, D { l: 12, t: 11, i: 311, }, D { l: 12, t: 11, i: 434, }, D { l: 12, t: 11, i: 600, }, D { l: 12, t: 11, i: 622, }, D { l: 13, t: 11, i: 297, }, D { l: 13, t: 11, i: 367, }, D { l: 13, t: 11, i: 485, }, D { l: 14, t: 11, i: 69, }, D { l: 14, t: 11, i: 409, }, D { l: 143, t: 11, i: 108, }, D { l: 5, t: 11, i: 1 }, D { l: 6, t: 11, i: 81 }, D { l: 138, t: 11, i: 520, }, D { l: 7, t: 0, i: 1718, }, D { l: 9, t: 0, i: 95 }, D { l: 9, t: 0, i: 274 }, D { l: 10, t: 0, i: 279, }, D { l: 10, t: 0, i: 317, }, D { l: 10, t: 0, i: 420, }, D { l: 11, t: 0, i: 303, }, D { l: 11, t: 0, i: 808, }, D { l: 12, t: 0, i: 134, }, D { l: 12, t: 0, i: 367, }, D { l: 13, t: 0, i: 149, }, D { l: 13, t: 0, i: 347, }, D { l: 14, t: 0, i: 349, }, D { l: 14, t: 0, i: 406, }, D { l: 18, t: 0, i: 22 }, D { l: 18, t: 0, i: 89 }, D { l: 18, t: 0, i: 122, }, D { l: 147, t: 0, i: 47, }, D { l: 5, t: 11, i: 482, }, D { l: 8, t: 11, i: 98 }, D { l: 9, t: 11, i: 172, }, D { l: 10, t: 11, i: 222, }, D { l: 10, t: 11, i: 700, }, D { l: 10, t: 11, i: 822, }, D { l: 11, t: 11, i: 302, }, D { l: 11, t: 11, i: 778, }, D { l: 12, t: 11, i: 50, }, D { l: 12, t: 11, i: 127, }, D { l: 12, t: 11, i: 396, }, D { l: 13, t: 11, i: 62, }, D { l: 13, t: 11, i: 328, }, D { l: 14, t: 11, i: 122, }, D { l: 147, t: 11, i: 72, }, D { l: 7, t: 10, i: 386, }, D { l: 138, t: 10, i: 713, }, D { l: 6, t: 10, i: 7 }, D { l: 6, t: 10, i: 35 }, D { l: 7, t: 10, i: 147, }, D { l: 7, t: 10, i: 1069, }, D { l: 7, t: 10, i: 1568, }, D { l: 7, t: 10, i: 1575, }, D { l: 7, t: 10, i: 1917, }, D { l: 8, t: 10, i: 43 }, D { l: 8, t: 10, i: 208, }, D { l: 9, t: 10, i: 128, }, D { l: 9, t: 10, i: 866, }, D { l: 10, t: 10, i: 20, }, D { l: 11, t: 10, i: 981, }, D { l: 147, t: 10, i: 33, }, D { l: 133, t: 0, i: 26, }, D { l: 132, t: 0, i: 550, }, D { l: 5, t: 11, i: 2 }, D { l: 7, t: 11, i: 1494, }, D { l: 136, t: 11, i: 589, }, D { l: 6, t: 11, i: 512, }, D { l: 7, t: 11, i: 797, }, D { l: 8, t: 11, i: 253, }, D { l: 9, t: 11, i: 77 }, D { l: 10, t: 11, i: 1 }, D { l: 10, t: 11, i: 129, }, D { l: 10, t: 11, i: 225, }, D { l: 11, t: 11, i: 118, }, D { l: 11, t: 11, i: 226, }, D { l: 11, t: 11, i: 251, }, D { l: 11, t: 11, i: 430, }, D { l: 11, t: 11, i: 701, }, D { l: 11, t: 11, i: 974, }, D { l: 11, t: 11, i: 982, }, D { l: 12, t: 11, i: 64, }, D { l: 12, t: 11, i: 260, }, D { l: 12, t: 11, i: 488, }, D { l: 140, t: 11, i: 690, }, D { l: 7, t: 10, i: 893, }, D { l: 141, t: 10, i: 424, }, D { l: 134, t: 0, i: 901, }, D { l: 136, t: 0, i: 822, }, D { l: 4, t: 0, i: 902 }, D { l: 5, t: 0, i: 809 }, D { l: 134, t: 0, i: 122, }, D { l: 6, t: 0, i: 807 }, D { l: 134, t: 0, i: 1366, }, D { l: 7, t: 0, i: 262 }, D { l: 5, t: 11, i: 748, }, D { l: 134, t: 11, i: 553, }, D { l: 133, t: 0, i: 620, }, D { l: 4, t: 0, i: 34 }, D { l: 5, t: 0, i: 574 }, D { l: 7, t: 0, i: 279 }, D { l: 7, t: 0, i: 1624, }, D { l: 136, t: 0, i: 601, }, D { l: 9, t: 0, i: 170 }, D { l: 6, t: 10, i: 322, }, D { l: 9, t: 10, i: 552, }, D { l: 11, t: 10, i: 274, }, D { l: 13, t: 10, i: 209, }, D { l: 13, t: 10, i: 499, }, D { l: 14, t: 10, i: 85, }, D { l: 15, t: 10, i: 126, }, D { l: 145, t: 10, i: 70, }, D { l: 132, t: 0, i: 537, }, D { l: 4, t: 11, i: 12 }, D { l: 7, t: 11, i: 420, }, D { l: 7, t: 11, i: 522, }, D { l: 7, t: 11, i: 809, }, D { l: 8, t: 11, i: 797, }, D { l: 141, t: 11, i: 88, }, D { l: 133, t: 0, i: 332, }, D { l: 8, t: 10, i: 83 }, D { l: 8, t: 10, i: 742, }, D { l: 8, t: 10, i: 817, }, D { l: 9, t: 10, i: 28 }, D { l: 9, t: 10, i: 29 }, D { l: 9, t: 10, i: 885, }, D { l: 10, t: 10, i: 387, }, D { l: 11, t: 10, i: 633, }, D { l: 11, t: 10, i: 740, }, D { l: 13, t: 10, i: 235, }, D { l: 13, t: 10, i: 254, }, D { l: 15, t: 10, i: 143, }, D { l: 143, t: 10, i: 146, }, D { l: 6, t: 0, i: 1909, }, D { l: 9, t: 0, i: 964 }, D { l: 12, t: 0, i: 822, }, D { l: 12, t: 0, i: 854, }, D { l: 12, t: 0, i: 865, }, D { l: 12, t: 0, i: 910, }, D { l: 12, t: 0, i: 938, }, D { l: 15, t: 0, i: 169, }, D { l: 15, t: 0, i: 208, }, D { l: 15, t: 0, i: 211, }, D { l: 18, t: 0, i: 205, }, D { l: 18, t: 0, i: 206, }, D { l: 18, t: 0, i: 220, }, D { l: 18, t: 0, i: 223, }, D { l: 152, t: 0, i: 24, }, D { l: 140, t: 10, i: 49, }, D { l: 5, t: 11, i: 528, }, D { l: 135, t: 11, i: 1580, }, D { l: 6, t: 0, i: 261 }, D { l: 8, t: 0, i: 182 }, D { l: 139, t: 0, i: 943, }, D { l: 134, t: 0, i: 1721, }, D { l: 4, t: 0, i: 933 }, D { l: 133, t: 0, i: 880, }, D { l: 136, t: 11, i: 321, }, D { l: 5, t: 11, i: 266, }, D { l: 9, t: 11, i: 290, }, D { l: 9, t: 11, i: 364, }, D { l: 10, t: 11, i: 293, }, D { l: 11, t: 11, i: 606, }, D { l: 142, t: 11, i: 45, }, D { l: 6, t: 0, i: 1609, }, D { l: 4, t: 11, i: 50 }, D { l: 6, t: 11, i: 510, }, D { l: 6, t: 11, i: 594, }, D { l: 9, t: 11, i: 121, }, D { l: 10, t: 11, i: 49, }, D { l: 10, t: 11, i: 412, }, D { l: 139, t: 11, i: 834, }, D { l: 7, t: 0, i: 895 }, D { l: 136, t: 11, i: 748, }, D { l: 132, t: 11, i: 466, }, D { l: 4, t: 10, i: 110, }, D { l: 10, t: 10, i: 415, }, D { l: 10, t: 10, i: 597, }, D { l: 142, t: 10, i: 206, }, D { l: 133, t: 0, i: 812, }, D { l: 135, t: 11, i: 281, }, D { l: 6, t: 0, i: 1890, }, D { l: 6, t: 0, i: 1902, }, D { l: 6, t: 0, i: 1916, }, D { l: 9, t: 0, i: 929 }, D { l: 9, t: 0, i: 942 }, D { l: 9, t: 0, i: 975 }, D { l: 9, t: 0, i: 984 }, D { l: 9, t: 0, i: 986 }, D { l: 9, t: 0, i: 1011, }, D { l: 9, t: 0, i: 1019, }, D { l: 12, t: 0, i: 804, }, D { l: 12, t: 0, i: 851, }, D { l: 12, t: 0, i: 867, }, D { l: 12, t: 0, i: 916, }, D { l: 12, t: 0, i: 923, }, D { l: 15, t: 0, i: 194, }, D { l: 15, t: 0, i: 204, }, D { l: 15, t: 0, i: 210, }, D { l: 15, t: 0, i: 222, }, D { l: 15, t: 0, i: 223, }, D { l: 15, t: 0, i: 229, }, D { l: 15, t: 0, i: 250, }, D { l: 18, t: 0, i: 179, }, D { l: 18, t: 0, i: 186, }, D { l: 18, t: 0, i: 192, }, D { l: 7, t: 10, i: 205, }, D { l: 135, t: 10, i: 2000, }, D { l: 132, t: 11, i: 667, }, D { l: 135, t: 0, i: 778, }, D { l: 4, t: 0, i: 137 }, D { l: 7, t: 0, i: 1178, }, D { l: 135, t: 0, i: 1520, }, D { l: 134, t: 0, i: 1314, }, D { l: 4, t: 11, i: 242, }, D { l: 134, t: 11, i: 333, }, D { l: 6, t: 0, i: 1661, }, D { l: 7, t: 0, i: 1975, }, D { l: 7, t: 0, i: 2009, }, D { l: 135, t: 0, i: 2011, }, D { l: 134, t: 0, i: 1591, }, D { l: 4, t: 10, i: 283, }, D { l: 135, t: 10, i: 1194, }, D { l: 11, t: 0, i: 820, }, D { l: 150, t: 0, i: 51, }, D { l: 4, t: 11, i: 39 }, D { l: 5, t: 11, i: 36 }, D { l: 7, t: 11, i: 1843, }, D { l: 8, t: 11, i: 407, }, D { l: 11, t: 11, i: 144, }, D { l: 140, t: 11, i: 523, }, D { l: 134, t: 10, i: 1720, }, D { l: 4, t: 11, i: 510, }, D { l: 7, t: 11, i: 29 }, D { l: 7, t: 11, i: 66 }, D { l: 7, t: 11, i: 1980, }, D { l: 10, t: 11, i: 487, }, D { l: 10, t: 11, i: 809, }, D { l: 146, t: 11, i: 9, }, D { l: 5, t: 0, i: 89 }, D { l: 7, t: 0, i: 1915, }, D { l: 9, t: 0, i: 185 }, D { l: 9, t: 0, i: 235 }, D { l: 10, t: 0, i: 64 }, D { l: 10, t: 0, i: 270, }, D { l: 10, t: 0, i: 403, }, D { l: 10, t: 0, i: 469, }, D { l: 10, t: 0, i: 529, }, D { l: 10, t: 0, i: 590, }, D { l: 11, t: 0, i: 140, }, D { l: 11, t: 0, i: 860, }, D { l: 13, t: 0, i: 1 }, D { l: 13, t: 0, i: 422, }, D { l: 14, t: 0, i: 341, }, D { l: 14, t: 0, i: 364, }, D { l: 17, t: 0, i: 93 }, D { l: 18, t: 0, i: 113, }, D { l: 19, t: 0, i: 97 }, D { l: 147, t: 0, i: 113, }, D { l: 133, t: 0, i: 695, }, D { l: 6, t: 0, i: 987 }, D { l: 134, t: 0, i: 1160, }, D { l: 5, t: 0, i: 6 }, D { l: 6, t: 0, i: 183 }, D { l: 7, t: 0, i: 680 }, D { l: 7, t: 0, i: 978 }, D { l: 7, t: 0, i: 1013, }, D { l: 7, t: 0, i: 1055, }, D { l: 12, t: 0, i: 230, }, D { l: 13, t: 0, i: 172, }, D { l: 146, t: 0, i: 29, }, D { l: 134, t: 11, i: 570, }, D { l: 132, t: 11, i: 787, }, D { l: 134, t: 11, i: 518, }, D { l: 6, t: 0, i: 29 }, D { l: 139, t: 0, i: 63, }, D { l: 132, t: 11, i: 516, }, D { l: 136, t: 11, i: 821, }, D { l: 132, t: 0, i: 311, }, D { l: 134, t: 0, i: 1740, }, D { l: 7, t: 0, i: 170 }, D { l: 8, t: 0, i: 90 }, D { l: 8, t: 0, i: 177 }, D { l: 8, t: 0, i: 415 }, D { l: 11, t: 0, i: 714, }, D { l: 14, t: 0, i: 281, }, D { l: 136, t: 10, i: 735, }, D { l: 134, t: 0, i: 1961, }, D { l: 135, t: 11, i: 1405, }, D { l: 4, t: 11, i: 10 }, D { l: 7, t: 11, i: 917, }, D { l: 139, t: 11, i: 786, }, D { l: 5, t: 10, i: 132, }, D { l: 9, t: 10, i: 486, }, D { l: 9, t: 10, i: 715, }, D { l: 10, t: 10, i: 458, }, D { l: 11, t: 10, i: 373, }, D { l: 11, t: 10, i: 668, }, D { l: 11, t: 10, i: 795, }, D { l: 11, t: 10, i: 897, }, D { l: 12, t: 10, i: 272, }, D { l: 12, t: 10, i: 424, }, D { l: 12, t: 10, i: 539, }, D { l: 12, t: 10, i: 558, }, D { l: 14, t: 10, i: 245, }, D { l: 14, t: 10, i: 263, }, D { l: 14, t: 10, i: 264, }, D { l: 14, t: 10, i: 393, }, D { l: 142, t: 10, i: 403, }, D { l: 11, t: 0, i: 91 }, D { l: 13, t: 0, i: 129, }, D { l: 15, t: 0, i: 101, }, D { l: 145, t: 0, i: 125, }, D { l: 135, t: 0, i: 1132, }, D { l: 4, t: 0, i: 494 }, D { l: 6, t: 0, i: 74 }, D { l: 7, t: 0, i: 44 }, D { l: 7, t: 0, i: 407 }, D { l: 12, t: 0, i: 17 }, D { l: 15, t: 0, i: 5 }, D { l: 148, t: 0, i: 11, }, D { l: 133, t: 10, i: 379, }, D { l: 5, t: 0, i: 270 }, D { l: 5, t: 11, i: 684, }, D { l: 6, t: 10, i: 89 }, D { l: 6, t: 10, i: 400, }, D { l: 7, t: 10, i: 1569, }, D { l: 7, t: 10, i: 1623, }, D { l: 7, t: 10, i: 1850, }, D { l: 8, t: 10, i: 218, }, D { l: 8, t: 10, i: 422, }, D { l: 9, t: 10, i: 570, }, D { l: 138, t: 10, i: 626, }, D { l: 4, t: 0, i: 276 }, D { l: 133, t: 0, i: 296, }, D { l: 6, t: 0, i: 1523, }, D { l: 134, t: 11, i: 27, }, D { l: 6, t: 10, i: 387, }, D { l: 7, t: 10, i: 882, }, D { l: 141, t: 10, i: 111, }, D { l: 6, t: 10, i: 224, }, D { l: 7, t: 10, i: 877, }, D { l: 137, t: 10, i: 647, }, D { l: 135, t: 10, i: 790, }, D { l: 4, t: 0, i: 7 }, D { l: 5, t: 0, i: 90 }, D { l: 5, t: 0, i: 158 }, D { l: 6, t: 0, i: 542 }, D { l: 7, t: 0, i: 221 }, D { l: 7, t: 0, i: 1574, }, D { l: 9, t: 0, i: 490 }, D { l: 10, t: 0, i: 540, }, D { l: 11, t: 0, i: 443, }, D { l: 139, t: 0, i: 757, }, D { l: 7, t: 0, i: 588 }, D { l: 9, t: 0, i: 175 }, D { l: 138, t: 0, i: 530, }, D { l: 135, t: 10, i: 394, }, D { l: 142, t: 11, i: 23, }, D { l: 134, t: 0, i: 786, }, D { l: 135, t: 0, i: 580, }, D { l: 7, t: 0, i: 88 }, D { l: 136, t: 0, i: 627, }, D { l: 5, t: 0, i: 872 }, D { l: 6, t: 0, i: 57 }, D { l: 7, t: 0, i: 471 }, D { l: 9, t: 0, i: 447 }, D { l: 137, t: 0, i: 454, }, D { l: 6, t: 11, i: 342, }, D { l: 6, t: 11, i: 496, }, D { l: 8, t: 11, i: 275, }, D { l: 137, t: 11, i: 206, }, D { l: 4, t: 11, i: 909, }, D { l: 133, t: 11, i: 940, }, D { l: 6, t: 0, i: 735 }, D { l: 132, t: 11, i: 891, }, D { l: 8, t: 0, i: 845 }, D { l: 8, t: 0, i: 916 }, D { l: 135, t: 10, i: 1409, }, D { l: 5, t: 0, i: 31 }, D { l: 134, t: 0, i: 614, }, D { l: 11, t: 0, i: 458, }, D { l: 12, t: 0, i: 15 }, D { l: 140, t: 0, i: 432, }, D { l: 8, t: 0, i: 330 }, D { l: 140, t: 0, i: 477, }, D { l: 4, t: 0, i: 530 }, D { l: 5, t: 0, i: 521 }, D { l: 7, t: 0, i: 1200, }, D { l: 10, t: 0, i: 460, }, D { l: 132, t: 11, i: 687, }, D { l: 6, t: 0, i: 424 }, D { l: 135, t: 0, i: 1866, }, D { l: 9, t: 0, i: 569 }, D { l: 12, t: 0, i: 12 }, D { l: 12, t: 0, i: 81 }, D { l: 12, t: 0, i: 319, }, D { l: 13, t: 0, i: 69 }, D { l: 14, t: 0, i: 259, }, D { l: 16, t: 0, i: 87 }, D { l: 17, t: 0, i: 1 }, D { l: 17, t: 0, i: 21 }, D { l: 17, t: 0, i: 24 }, D { l: 18, t: 0, i: 15 }, D { l: 18, t: 0, i: 56 }, D { l: 18, t: 0, i: 59 }, D { l: 18, t: 0, i: 127, }, D { l: 18, t: 0, i: 154, }, D { l: 19, t: 0, i: 19 }, D { l: 148, t: 0, i: 31, }, D { l: 7, t: 0, i: 1302, }, D { l: 136, t: 10, i: 38, }, D { l: 134, t: 11, i: 253, }, D { l: 5, t: 10, i: 261, }, D { l: 7, t: 10, i: 78 }, D { l: 7, t: 10, i: 199, }, D { l: 8, t: 10, i: 815, }, D { l: 9, t: 10, i: 126, }, D { l: 138, t: 10, i: 342, }, D { l: 5, t: 0, i: 595 }, D { l: 135, t: 0, i: 1863, }, D { l: 6, t: 11, i: 41 }, D { l: 141, t: 11, i: 160, }, D { l: 5, t: 0, i: 13 }, D { l: 134, t: 0, i: 142, }, D { l: 6, t: 0, i: 97 }, D { l: 7, t: 0, i: 116 }, D { l: 8, t: 0, i: 322 }, D { l: 8, t: 0, i: 755 }, D { l: 9, t: 0, i: 548 }, D { l: 10, t: 0, i: 714, }, D { l: 11, t: 0, i: 884, }, D { l: 13, t: 0, i: 324, }, D { l: 7, t: 11, i: 1304, }, D { l: 138, t: 11, i: 477, }, D { l: 132, t: 10, i: 628, }, D { l: 134, t: 11, i: 1718, }, D { l: 7, t: 10, i: 266, }, D { l: 136, t: 10, i: 804, }, D { l: 135, t: 10, i: 208, }, D { l: 7, t: 0, i: 1021, }, D { l: 6, t: 10, i: 79 }, D { l: 135, t: 10, i: 1519, }, D { l: 7, t: 0, i: 1472, }, D { l: 135, t: 0, i: 1554, }, D { l: 6, t: 11, i: 362, }, D { l: 146, t: 11, i: 51, }, D { l: 7, t: 0, i: 1071, }, D { l: 7, t: 0, i: 1541, }, D { l: 7, t: 0, i: 1767, }, D { l: 7, t: 0, i: 1806, }, D { l: 11, t: 0, i: 162, }, D { l: 11, t: 0, i: 242, }, D { l: 11, t: 0, i: 452, }, D { l: 12, t: 0, i: 605, }, D { l: 15, t: 0, i: 26 }, D { l: 144, t: 0, i: 44, }, D { l: 136, t: 10, i: 741, }, D { l: 133, t: 11, i: 115, }, D { l: 145, t: 0, i: 115, }, D { l: 134, t: 10, i: 376, }, D { l: 6, t: 0, i: 1406, }, D { l: 134, t: 0, i: 1543, }, D { l: 5, t: 11, i: 193, }, D { l: 12, t: 11, i: 178, }, D { l: 13, t: 11, i: 130, }, D { l: 145, t: 11, i: 84, }, D { l: 135, t: 0, i: 1111, }, D { l: 8, t: 0, i: 1 }, D { l: 9, t: 0, i: 650 }, D { l: 10, t: 0, i: 326, }, D { l: 5, t: 11, i: 705, }, D { l: 137, t: 11, i: 606, }, D { l: 5, t: 0, i: 488 }, D { l: 6, t: 0, i: 527 }, D { l: 7, t: 0, i: 489 }, D { l: 7, t: 0, i: 1636, }, D { l: 8, t: 0, i: 121 }, D { l: 8, t: 0, i: 144 }, D { l: 8, t: 0, i: 359 }, D { l: 9, t: 0, i: 193 }, D { l: 9, t: 0, i: 241 }, D { l: 9, t: 0, i: 336 }, D { l: 9, t: 0, i: 882 }, D { l: 11, t: 0, i: 266, }, D { l: 11, t: 0, i: 372, }, D { l: 11, t: 0, i: 944, }, D { l: 12, t: 0, i: 401, }, D { l: 140, t: 0, i: 641, }, D { l: 135, t: 11, i: 174, }, D { l: 6, t: 0, i: 267 }, D { l: 7, t: 10, i: 244, }, D { l: 7, t: 10, i: 632, }, D { l: 7, t: 10, i: 1609, }, D { l: 8, t: 10, i: 178, }, D { l: 8, t: 10, i: 638, }, D { l: 141, t: 10, i: 58, }, D { l: 134, t: 0, i: 1983, }, D { l: 134, t: 0, i: 1155, }, D { l: 134, t: 0, i: 1575, }, D { l: 134, t: 0, i: 1438, }, D { l: 9, t: 0, i: 31 }, D { l: 10, t: 0, i: 244, }, D { l: 10, t: 0, i: 699, }, D { l: 12, t: 0, i: 149, }, D { l: 141, t: 0, i: 497, }, D { l: 133, t: 0, i: 377, }, D { l: 4, t: 11, i: 122, }, D { l: 5, t: 11, i: 796, }, D { l: 5, t: 11, i: 952, }, D { l: 6, t: 11, i: 1660, }, D { l: 6, t: 11, i: 1671, }, D { l: 8, t: 11, i: 567, }, D { l: 9, t: 11, i: 687, }, D { l: 9, t: 11, i: 742, }, D { l: 10, t: 11, i: 686, }, D { l: 11, t: 11, i: 356, }, D { l: 11, t: 11, i: 682, }, D { l: 140, t: 11, i: 281, }, D { l: 145, t: 0, i: 101, }, D { l: 11, t: 11, i: 0 }, D { l: 144, t: 11, i: 78, }, D { l: 5, t: 11, i: 179, }, D { l: 5, t: 10, i: 791, }, D { l: 7, t: 11, i: 1095, }, D { l: 135, t: 11, i: 1213, }, D { l: 8, t: 11, i: 372, }, D { l: 9, t: 11, i: 122, }, D { l: 138, t: 11, i: 175, }, D { l: 7, t: 10, i: 686, }, D { l: 8, t: 10, i: 33 }, D { l: 8, t: 10, i: 238, }, D { l: 10, t: 10, i: 616, }, D { l: 11, t: 10, i: 467, }, D { l: 11, t: 10, i: 881, }, D { l: 13, t: 10, i: 217, }, D { l: 13, t: 10, i: 253, }, D { l: 142, t: 10, i: 268, }, D { l: 9, t: 0, i: 476 }, D { l: 4, t: 11, i: 66 }, D { l: 7, t: 11, i: 722, }, D { l: 135, t: 11, i: 904, }, D { l: 7, t: 11, i: 352, }, D { l: 137, t: 11, i: 684, }, D { l: 135, t: 0, i: 2023, }, D { l: 135, t: 0, i: 1836, }, D { l: 132, t: 10, i: 447, }, D { l: 5, t: 0, i: 843 }, D { l: 144, t: 0, i: 35, }, D { l: 137, t: 11, i: 779, }, D { l: 141, t: 11, i: 35, }, D { l: 4, t: 10, i: 128, }, D { l: 5, t: 10, i: 415, }, D { l: 6, t: 10, i: 462, }, D { l: 7, t: 10, i: 294, }, D { l: 7, t: 10, i: 578, }, D { l: 10, t: 10, i: 710, }, D { l: 139, t: 10, i: 86, }, D { l: 132, t: 0, i: 554, }, D { l: 133, t: 0, i: 536, }, D { l: 136, t: 10, i: 587, }, D { l: 5, t: 0, i: 207 }, D { l: 9, t: 0, i: 79 }, D { l: 11, t: 0, i: 625, }, D { l: 145, t: 0, i: 7 }, D { l: 7, t: 0, i: 1371, }, D { l: 6, t: 10, i: 427, }, D { l: 138, t: 10, i: 692, }, D { l: 4, t: 0, i: 424 }, D { l: 4, t: 10, i: 195, }, D { l: 135, t: 10, i: 802, }, D { l: 8, t: 0, i: 785 }, D { l: 133, t: 11, i: 564, }, D { l: 135, t: 0, i: 336, }, D { l: 4, t: 0, i: 896 }, D { l: 6, t: 0, i: 1777, }, D { l: 134, t: 11, i: 556, }, D { l: 137, t: 11, i: 103, }, D { l: 134, t: 10, i: 1683, }, D { l: 7, t: 11, i: 544, }, D { l: 8, t: 11, i: 719, }, D { l: 138, t: 11, i: 61, }, D { l: 138, t: 10, i: 472, }, D { l: 4, t: 11, i: 5 }, D { l: 5, t: 11, i: 498, }, D { l: 136, t: 11, i: 637, }, D { l: 7, t: 0, i: 750 }, D { l: 9, t: 0, i: 223 }, D { l: 11, t: 0, i: 27 }, D { l: 11, t: 0, i: 466, }, D { l: 12, t: 0, i: 624, }, D { l: 14, t: 0, i: 265, }, D { l: 146, t: 0, i: 61, }, D { l: 12, t: 0, i: 238, }, D { l: 18, t: 0, i: 155, }, D { l: 12, t: 11, i: 238, }, D { l: 146, t: 11, i: 155, }, D { l: 151, t: 10, i: 28, }, D { l: 133, t: 11, i: 927, }, D { l: 12, t: 0, i: 383, }, D { l: 5, t: 10, i: 3 }, D { l: 8, t: 10, i: 578, }, D { l: 9, t: 10, i: 118, }, D { l: 10, t: 10, i: 705, }, D { l: 141, t: 10, i: 279, }, D { l: 4, t: 11, i: 893, }, D { l: 5, t: 11, i: 780, }, D { l: 133, t: 11, i: 893, }, D { l: 4, t: 0, i: 603 }, D { l: 133, t: 0, i: 661, }, D { l: 4, t: 0, i: 11 }, D { l: 6, t: 0, i: 128 }, D { l: 7, t: 0, i: 231 }, D { l: 7, t: 0, i: 1533, }, D { l: 10, t: 0, i: 725, }, D { l: 5, t: 10, i: 229, }, D { l: 5, t: 11, i: 238, }, D { l: 135, t: 11, i: 1350, }, D { l: 8, t: 10, i: 102, }, D { l: 10, t: 10, i: 578, }, D { l: 10, t: 10, i: 672, }, D { l: 12, t: 10, i: 496, }, D { l: 13, t: 10, i: 408, }, D { l: 14, t: 10, i: 121, }, D { l: 145, t: 10, i: 106, }, D { l: 132, t: 0, i: 476, }, D { l: 134, t: 0, i: 1552, }, D { l: 134, t: 11, i: 1729, }, D { l: 8, t: 10, i: 115, }, D { l: 8, t: 10, i: 350, }, D { l: 9, t: 10, i: 489, }, D { l: 10, t: 10, i: 128, }, D { l: 11, t: 10, i: 306, }, D { l: 12, t: 10, i: 373, }, D { l: 14, t: 10, i: 30, }, D { l: 17, t: 10, i: 79, }, D { l: 19, t: 10, i: 80, }, D { l: 150, t: 10, i: 55, }, D { l: 135, t: 0, i: 1807, }, D { l: 4, t: 0, i: 680 }, D { l: 4, t: 11, i: 60 }, D { l: 7, t: 11, i: 760, }, D { l: 7, t: 11, i: 1800, }, D { l: 8, t: 11, i: 314, }, D { l: 9, t: 11, i: 700, }, D { l: 139, t: 11, i: 487, }, D { l: 4, t: 10, i: 230, }, D { l: 5, t: 10, i: 702, }, D { l: 148, t: 11, i: 94, }, D { l: 132, t: 11, i: 228, }, D { l: 139, t: 0, i: 435, }, D { l: 9, t: 0, i: 20 }, D { l: 10, t: 0, i: 324, }, D { l: 10, t: 0, i: 807, }, D { l: 139, t: 0, i: 488, }, D { l: 6, t: 10, i: 1728, }, D { l: 136, t: 11, i: 419, }, D { l: 4, t: 10, i: 484, }, D { l: 18, t: 10, i: 26, }, D { l: 19, t: 10, i: 42, }, D { l: 20, t: 10, i: 43, }, D { l: 21, t: 10, i: 0 }, D { l: 23, t: 10, i: 27, }, D { l: 152, t: 10, i: 14, }, D { l: 135, t: 0, i: 1431, }, D { l: 133, t: 11, i: 828, }, D { l: 5, t: 0, i: 112 }, D { l: 6, t: 0, i: 103 }, D { l: 6, t: 0, i: 150 }, D { l: 7, t: 0, i: 1303, }, D { l: 9, t: 0, i: 292 }, D { l: 10, t: 0, i: 481, }, D { l: 20, t: 0, i: 13 }, D { l: 7, t: 11, i: 176, }, D { l: 7, t: 11, i: 178, }, D { l: 7, t: 11, i: 1110, }, D { l: 10, t: 11, i: 481, }, D { l: 148, t: 11, i: 13, }, D { l: 138, t: 0, i: 356, }, D { l: 4, t: 11, i: 51 }, D { l: 5, t: 11, i: 39 }, D { l: 6, t: 11, i: 4 }, D { l: 7, t: 11, i: 591, }, D { l: 7, t: 11, i: 849, }, D { l: 7, t: 11, i: 951, }, D { l: 7, t: 11, i: 1129, }, D { l: 7, t: 11, i: 1613, }, D { l: 7, t: 11, i: 1760, }, D { l: 7, t: 11, i: 1988, }, D { l: 9, t: 11, i: 434, }, D { l: 10, t: 11, i: 754, }, D { l: 11, t: 11, i: 25, }, D { l: 11, t: 11, i: 37, }, D { l: 139, t: 11, i: 414, }, D { l: 6, t: 0, i: 1963, }, D { l: 134, t: 0, i: 2000, }, D { l: 132, t: 10, i: 633, }, D { l: 6, t: 0, i: 1244, }, D { l: 133, t: 11, i: 902, }, D { l: 135, t: 11, i: 928, }, D { l: 140, t: 0, i: 18, }, D { l: 138, t: 0, i: 204, }, D { l: 135, t: 11, i: 1173, }, D { l: 134, t: 0, i: 867, }, D { l: 4, t: 0, i: 708 }, D { l: 8, t: 0, i: 15 }, D { l: 9, t: 0, i: 50 }, D { l: 9, t: 0, i: 386 }, D { l: 11, t: 0, i: 18 }, D { l: 11, t: 0, i: 529, }, D { l: 140, t: 0, i: 228, }, D { l: 134, t: 11, i: 270, }, D { l: 4, t: 0, i: 563 }, D { l: 7, t: 0, i: 109 }, D { l: 7, t: 0, i: 592 }, D { l: 7, t: 0, i: 637 }, D { l: 7, t: 0, i: 770 }, D { l: 8, t: 0, i: 463 }, D { l: 9, t: 0, i: 60 }, D { l: 9, t: 0, i: 335 }, D { l: 9, t: 0, i: 904 }, D { l: 10, t: 0, i: 73 }, D { l: 11, t: 0, i: 434, }, D { l: 12, t: 0, i: 585, }, D { l: 13, t: 0, i: 331, }, D { l: 18, t: 0, i: 110, }, D { l: 148, t: 0, i: 60, }, D { l: 132, t: 0, i: 502, }, D { l: 14, t: 11, i: 359, }, D { l: 19, t: 11, i: 52, }, D { l: 148, t: 11, i: 47, }, D { l: 6, t: 11, i: 377, }, D { l: 7, t: 11, i: 1025, }, D { l: 9, t: 11, i: 613, }, D { l: 145, t: 11, i: 104, }, D { l: 6, t: 0, i: 347 }, D { l: 10, t: 0, i: 161, }, D { l: 5, t: 10, i: 70 }, D { l: 5, t: 10, i: 622, }, D { l: 6, t: 10, i: 334, }, D { l: 7, t: 10, i: 1032, }, D { l: 9, t: 10, i: 171, }, D { l: 11, t: 10, i: 26, }, D { l: 11, t: 10, i: 213, }, D { l: 11, t: 10, i: 637, }, D { l: 11, t: 10, i: 707, }, D { l: 12, t: 10, i: 202, }, D { l: 12, t: 10, i: 380, }, D { l: 13, t: 10, i: 226, }, D { l: 13, t: 10, i: 355, }, D { l: 14, t: 10, i: 222, }, D { l: 145, t: 10, i: 42, }, D { l: 132, t: 11, i: 416, }, D { l: 4, t: 0, i: 33 }, D { l: 5, t: 0, i: 102 }, D { l: 6, t: 0, i: 284 }, D { l: 7, t: 0, i: 1079, }, D { l: 7, t: 0, i: 1423, }, D { l: 7, t: 0, i: 1702, }, D { l: 8, t: 0, i: 470 }, D { l: 9, t: 0, i: 554 }, D { l: 9, t: 0, i: 723 }, D { l: 11, t: 0, i: 333, }, D { l: 142, t: 11, i: 372, }, D { l: 5, t: 11, i: 152, }, D { l: 5, t: 11, i: 197, }, D { l: 7, t: 11, i: 340, }, D { l: 7, t: 11, i: 867, }, D { l: 10, t: 11, i: 548, }, D { l: 10, t: 11, i: 581, }, D { l: 11, t: 11, i: 6 }, D { l: 12, t: 11, i: 3 }, D { l: 12, t: 11, i: 19, }, D { l: 14, t: 11, i: 110, }, D { l: 142, t: 11, i: 289, }, D { l: 7, t: 0, i: 246 }, D { l: 135, t: 0, i: 840, }, D { l: 6, t: 0, i: 10 }, D { l: 8, t: 0, i: 571 }, D { l: 9, t: 0, i: 739 }, D { l: 143, t: 0, i: 91, }, D { l: 6, t: 0, i: 465 }, D { l: 7, t: 0, i: 1465, }, D { l: 4, t: 10, i: 23 }, D { l: 4, t: 10, i: 141, }, D { l: 5, t: 10, i: 313, }, D { l: 5, t: 10, i: 1014, }, D { l: 6, t: 10, i: 50 }, D { l: 7, t: 10, i: 142, }, D { l: 7, t: 10, i: 559, }, D { l: 8, t: 10, i: 640, }, D { l: 9, t: 10, i: 460, }, D { l: 9, t: 10, i: 783, }, D { l: 11, t: 10, i: 741, }, D { l: 12, t: 10, i: 183, }, D { l: 141, t: 10, i: 488, }, D { l: 133, t: 0, i: 626, }, D { l: 136, t: 0, i: 614, }, D { l: 138, t: 0, i: 237, }, D { l: 7, t: 11, i: 34 }, D { l: 7, t: 11, i: 190, }, D { l: 8, t: 11, i: 28 }, D { l: 8, t: 11, i: 141, }, D { l: 8, t: 11, i: 444, }, D { l: 8, t: 11, i: 811, }, D { l: 9, t: 11, i: 468, }, D { l: 11, t: 11, i: 334, }, D { l: 12, t: 11, i: 24, }, D { l: 12, t: 11, i: 386, }, D { l: 140, t: 11, i: 576, }, D { l: 133, t: 11, i: 757, }, D { l: 5, t: 0, i: 18 }, D { l: 6, t: 0, i: 526 }, D { l: 13, t: 0, i: 24 }, D { l: 13, t: 0, i: 110, }, D { l: 19, t: 0, i: 5 }, D { l: 147, t: 0, i: 44, }, D { l: 6, t: 0, i: 506 }, D { l: 134, t: 11, i: 506, }, D { l: 135, t: 11, i: 1553, }, D { l: 4, t: 0, i: 309 }, D { l: 5, t: 0, i: 462 }, D { l: 7, t: 0, i: 970 }, D { l: 7, t: 0, i: 1097, }, D { l: 22, t: 0, i: 30 }, D { l: 22, t: 0, i: 33 }, D { l: 7, t: 11, i: 1385, }, D { l: 11, t: 11, i: 582, }, D { l: 11, t: 11, i: 650, }, D { l: 11, t: 11, i: 901, }, D { l: 11, t: 11, i: 949, }, D { l: 12, t: 11, i: 232, }, D { l: 12, t: 11, i: 236, }, D { l: 13, t: 11, i: 413, }, D { l: 13, t: 11, i: 501, }, D { l: 146, t: 11, i: 116, }, D { l: 9, t: 0, i: 140 }, D { l: 5, t: 10, i: 222, }, D { l: 138, t: 10, i: 534, }, D { l: 6, t: 0, i: 1056, }, D { l: 137, t: 10, i: 906, }, D { l: 134, t: 0, i: 1704, }, D { l: 138, t: 10, i: 503, }, D { l: 134, t: 0, i: 1036, }, D { l: 5, t: 10, i: 154, }, D { l: 7, t: 10, i: 1491, }, D { l: 10, t: 10, i: 379, }, D { l: 138, t: 10, i: 485, }, D { l: 4, t: 11, i: 383, }, D { l: 133, t: 10, i: 716, }, D { l: 134, t: 0, i: 1315, }, D { l: 5, t: 0, i: 86 }, D { l: 7, t: 0, i: 743 }, D { l: 9, t: 0, i: 85 }, D { l: 10, t: 0, i: 281, }, D { l: 10, t: 0, i: 432, }, D { l: 11, t: 0, i: 825, }, D { l: 12, t: 0, i: 251, }, D { l: 13, t: 0, i: 118, }, D { l: 142, t: 0, i: 378, }, D { l: 8, t: 0, i: 264 }, D { l: 4, t: 10, i: 91 }, D { l: 5, t: 10, i: 388, }, D { l: 5, t: 10, i: 845, }, D { l: 6, t: 10, i: 206, }, D { l: 6, t: 10, i: 252, }, D { l: 6, t: 10, i: 365, }, D { l: 7, t: 10, i: 136, }, D { l: 7, t: 10, i: 531, }, D { l: 136, t: 10, i: 621, }, D { l: 5, t: 0, i: 524 }, D { l: 133, t: 0, i: 744, }, D { l: 5, t: 11, i: 277, }, D { l: 141, t: 11, i: 247, }, D { l: 132, t: 11, i: 435, }, D { l: 10, t: 0, i: 107, }, D { l: 140, t: 0, i: 436, }, D { l: 132, t: 0, i: 927, }, D { l: 10, t: 0, i: 123, }, D { l: 12, t: 0, i: 670, }, D { l: 146, t: 0, i: 94, }, D { l: 7, t: 0, i: 1149, }, D { l: 9, t: 0, i: 156 }, D { l: 138, t: 0, i: 957, }, D { l: 5, t: 11, i: 265, }, D { l: 6, t: 11, i: 212, }, D { l: 135, t: 11, i: 28, }, D { l: 133, t: 0, i: 778, }, D { l: 133, t: 0, i: 502, }, D { l: 8, t: 0, i: 196 }, D { l: 10, t: 0, i: 283, }, D { l: 139, t: 0, i: 406, }, D { l: 135, t: 10, i: 576, }, D { l: 136, t: 11, i: 535, }, D { l: 134, t: 0, i: 1312, }, D { l: 5, t: 10, i: 771, }, D { l: 5, t: 10, i: 863, }, D { l: 5, t: 10, i: 898, }, D { l: 6, t: 10, i: 1632, }, D { l: 6, t: 10, i: 1644, }, D { l: 134, t: 10, i: 1780, }, D { l: 5, t: 0, i: 855 }, D { l: 5, t: 10, i: 331, }, D { l: 135, t: 11, i: 1487, }, D { l: 132, t: 11, i: 702, }, D { l: 5, t: 11, i: 808, }, D { l: 135, t: 11, i: 2045, }, D { l: 7, t: 0, i: 1400, }, D { l: 9, t: 0, i: 446 }, D { l: 138, t: 0, i: 45, }, D { l: 140, t: 10, i: 632, }, D { l: 132, t: 0, i: 1003, }, D { l: 5, t: 11, i: 166, }, D { l: 8, t: 11, i: 739, }, D { l: 140, t: 11, i: 511, }, D { l: 5, t: 10, i: 107, }, D { l: 7, t: 10, i: 201, }, D { l: 136, t: 10, i: 518, }, D { l: 6, t: 10, i: 446, }, D { l: 135, t: 10, i: 1817, }, D { l: 134, t: 0, i: 1532, }, D { l: 134, t: 0, i: 1097, }, D { l: 4, t: 11, i: 119, }, D { l: 5, t: 11, i: 170, }, D { l: 5, t: 11, i: 447, }, D { l: 7, t: 11, i: 1708, }, D { l: 7, t: 11, i: 1889, }, D { l: 9, t: 11, i: 357, }, D { l: 9, t: 11, i: 719, }, D { l: 12, t: 11, i: 486, }, D { l: 140, t: 11, i: 596, }, D { l: 9, t: 10, i: 851, }, D { l: 141, t: 10, i: 510, }, D { l: 7, t: 0, i: 612 }, D { l: 8, t: 0, i: 545 }, D { l: 8, t: 0, i: 568 }, D { l: 8, t: 0, i: 642 }, D { l: 9, t: 0, i: 717 }, D { l: 10, t: 0, i: 541, }, D { l: 10, t: 0, i: 763, }, D { l: 11, t: 0, i: 449, }, D { l: 12, t: 0, i: 489, }, D { l: 13, t: 0, i: 153, }, D { l: 13, t: 0, i: 296, }, D { l: 14, t: 0, i: 138, }, D { l: 14, t: 0, i: 392, }, D { l: 15, t: 0, i: 50 }, D { l: 16, t: 0, i: 6 }, D { l: 16, t: 0, i: 12 }, D { l: 20, t: 0, i: 9 }, D { l: 132, t: 10, i: 504, }, D { l: 4, t: 11, i: 450, }, D { l: 135, t: 11, i: 1158, }, D { l: 11, t: 0, i: 54 }, D { l: 13, t: 0, i: 173, }, D { l: 13, t: 0, i: 294, }, D { l: 5, t: 10, i: 883, }, D { l: 5, t: 10, i: 975, }, D { l: 8, t: 10, i: 392, }, D { l: 148, t: 10, i: 7, }, D { l: 13, t: 0, i: 455, }, D { l: 15, t: 0, i: 99 }, D { l: 15, t: 0, i: 129, }, D { l: 144, t: 0, i: 68, }, D { l: 135, t: 0, i: 172, }, D { l: 132, t: 11, i: 754, }, D { l: 5, t: 10, i: 922, }, D { l: 134, t: 10, i: 1707, }, D { l: 134, t: 0, i: 1029, }, D { l: 17, t: 11, i: 39, }, D { l: 148, t: 11, i: 36, }, D { l: 4, t: 0, i: 568 }, D { l: 5, t: 10, i: 993, }, D { l: 7, t: 10, i: 515, }, D { l: 137, t: 10, i: 91, }, D { l: 132, t: 0, i: 732, }, D { l: 10, t: 0, i: 617, }, D { l: 138, t: 11, i: 617, }, D { l: 134, t: 0, i: 974, }, D { l: 7, t: 0, i: 989 }, D { l: 10, t: 0, i: 377, }, D { l: 12, t: 0, i: 363, }, D { l: 13, t: 0, i: 68 }, D { l: 13, t: 0, i: 94 }, D { l: 14, t: 0, i: 108, }, D { l: 142, t: 0, i: 306, }, D { l: 136, t: 0, i: 733, }, D { l: 132, t: 0, i: 428, }, D { l: 7, t: 0, i: 1789, }, D { l: 135, t: 11, i: 1062, }, D { l: 7, t: 0, i: 2015, }, D { l: 140, t: 0, i: 665, }, D { l: 135, t: 10, i: 1433, }, D { l: 5, t: 0, i: 287 }, D { l: 7, t: 10, i: 921, }, D { l: 8, t: 10, i: 580, }, D { l: 8, t: 10, i: 593, }, D { l: 8, t: 10, i: 630, }, D { l: 138, t: 10, i: 28, }, D { l: 138, t: 0, i: 806, }, D { l: 4, t: 10, i: 911, }, D { l: 5, t: 10, i: 867, }, D { l: 5, t: 10, i: 1013, }, D { l: 7, t: 10, i: 2034, }, D { l: 8, t: 10, i: 798, }, D { l: 136, t: 10, i: 813, }, D { l: 134, t: 0, i: 1539, }, D { l: 8, t: 11, i: 523, }, D { l: 150, t: 11, i: 34, }, D { l: 135, t: 11, i: 740, }, D { l: 7, t: 11, i: 238, }, D { l: 7, t: 11, i: 2033, }, D { l: 8, t: 11, i: 120, }, D { l: 8, t: 11, i: 188, }, D { l: 8, t: 11, i: 659, }, D { l: 9, t: 11, i: 598, }, D { l: 10, t: 11, i: 466, }, D { l: 12, t: 11, i: 342, }, D { l: 12, t: 11, i: 588, }, D { l: 13, t: 11, i: 503, }, D { l: 14, t: 11, i: 246, }, D { l: 143, t: 11, i: 92, }, D { l: 7, t: 0, i: 1563, }, D { l: 141, t: 0, i: 182, }, D { l: 5, t: 10, i: 135, }, D { l: 6, t: 10, i: 519, }, D { l: 7, t: 10, i: 1722, }, D { l: 10, t: 10, i: 271, }, D { l: 11, t: 10, i: 261, }, D { l: 145, t: 10, i: 54, }, D { l: 14, t: 10, i: 338, }, D { l: 148, t: 10, i: 81, }, D { l: 7, t: 0, i: 484 }, D { l: 4, t: 10, i: 300, }, D { l: 133, t: 10, i: 436, }, D { l: 145, t: 11, i: 114, }, D { l: 6, t: 0, i: 1623, }, D { l: 134, t: 0, i: 1681, }, D { l: 133, t: 11, i: 640, }, D { l: 4, t: 11, i: 201, }, D { l: 7, t: 11, i: 1744, }, D { l: 8, t: 11, i: 602, }, D { l: 11, t: 11, i: 247, }, D { l: 11, t: 11, i: 826, }, D { l: 145, t: 11, i: 65, }, D { l: 8, t: 11, i: 164, }, D { l: 146, t: 11, i: 62, }, D { l: 6, t: 0, i: 1833, }, D { l: 6, t: 0, i: 1861, }, D { l: 136, t: 0, i: 878, }, D { l: 134, t: 0, i: 1569, }, D { l: 8, t: 10, i: 357, }, D { l: 10, t: 10, i: 745, }, D { l: 14, t: 10, i: 426, }, D { l: 17, t: 10, i: 94, }, D { l: 147, t: 10, i: 57, }, D { l: 12, t: 0, i: 93 }, D { l: 12, t: 0, i: 501, }, D { l: 13, t: 0, i: 362, }, D { l: 14, t: 0, i: 151, }, D { l: 15, t: 0, i: 40 }, D { l: 15, t: 0, i: 59 }, D { l: 16, t: 0, i: 46 }, D { l: 17, t: 0, i: 25 }, D { l: 18, t: 0, i: 14 }, D { l: 18, t: 0, i: 134, }, D { l: 19, t: 0, i: 25 }, D { l: 19, t: 0, i: 69 }, D { l: 20, t: 0, i: 16 }, D { l: 20, t: 0, i: 19 }, D { l: 20, t: 0, i: 66 }, D { l: 21, t: 0, i: 23 }, D { l: 21, t: 0, i: 25 }, D { l: 150, t: 0, i: 42, }, D { l: 6, t: 0, i: 1748, }, D { l: 8, t: 0, i: 715 }, D { l: 9, t: 0, i: 802 }, D { l: 10, t: 0, i: 46 }, D { l: 10, t: 0, i: 819, }, D { l: 13, t: 0, i: 308, }, D { l: 14, t: 0, i: 351, }, D { l: 14, t: 0, i: 363, }, D { l: 146, t: 0, i: 67, }, D { l: 132, t: 0, i: 994, }, D { l: 4, t: 0, i: 63 }, D { l: 133, t: 0, i: 347, }, D { l: 132, t: 0, i: 591, }, D { l: 133, t: 0, i: 749, }, D { l: 7, t: 11, i: 1577, }, D { l: 10, t: 11, i: 304, }, D { l: 10, t: 11, i: 549, }, D { l: 11, t: 11, i: 424, }, D { l: 12, t: 11, i: 365, }, D { l: 13, t: 11, i: 220, }, D { l: 13, t: 11, i: 240, }, D { l: 142, t: 11, i: 33, }, D { l: 133, t: 0, i: 366, }, D { l: 7, t: 0, i: 557 }, D { l: 12, t: 0, i: 547, }, D { l: 14, t: 0, i: 86 }, D { l: 133, t: 10, i: 387, }, D { l: 135, t: 0, i: 1747, }, D { l: 132, t: 11, i: 907, }, D { l: 5, t: 11, i: 100, }, D { l: 10, t: 11, i: 329, }, D { l: 12, t: 11, i: 416, }, D { l: 149, t: 11, i: 29, }, D { l: 4, t: 10, i: 6 }, D { l: 5, t: 10, i: 708, }, D { l: 136, t: 10, i: 75, }, D { l: 7, t: 10, i: 1351, }, D { l: 9, t: 10, i: 581, }, D { l: 10, t: 10, i: 639, }, D { l: 11, t: 10, i: 453, }, D { l: 140, t: 10, i: 584, }, D { l: 7, t: 0, i: 89 }, D { l: 132, t: 10, i: 303, }, D { l: 138, t: 10, i: 772, }, D { l: 132, t: 11, i: 176, }, D { l: 5, t: 11, i: 636, }, D { l: 5, t: 11, i: 998, }, D { l: 8, t: 11, i: 26 }, D { l: 137, t: 11, i: 358, }, D { l: 7, t: 11, i: 9 }, D { l: 7, t: 11, i: 1508, }, D { l: 9, t: 11, i: 317, }, D { l: 10, t: 11, i: 210, }, D { l: 10, t: 11, i: 292, }, D { l: 10, t: 11, i: 533, }, D { l: 11, t: 11, i: 555, }, D { l: 12, t: 11, i: 526, }, D { l: 12, t: 11, i: 607, }, D { l: 13, t: 11, i: 263, }, D { l: 13, t: 11, i: 459, }, D { l: 142, t: 11, i: 271, }, D { l: 134, t: 0, i: 1463, }, D { l: 6, t: 0, i: 772 }, D { l: 6, t: 0, i: 1137, }, D { l: 139, t: 11, i: 595, }, D { l: 7, t: 0, i: 977 }, D { l: 139, t: 11, i: 66, }, D { l: 138, t: 0, i: 893, }, D { l: 20, t: 0, i: 48 }, D { l: 148, t: 11, i: 48, }, D { l: 5, t: 0, i: 824 }, D { l: 133, t: 0, i: 941, }, D { l: 134, t: 11, i: 295, }, D { l: 7, t: 0, i: 1543, }, D { l: 7, t: 0, i: 1785, }, D { l: 10, t: 0, i: 690, }, D { l: 4, t: 10, i: 106, }, D { l: 139, t: 10, i: 717, }, D { l: 7, t: 0, i: 440 }, D { l: 8, t: 0, i: 230 }, D { l: 139, t: 0, i: 106, }, D { l: 5, t: 10, i: 890, }, D { l: 133, t: 10, i: 988, }, D { l: 6, t: 10, i: 626, }, D { l: 142, t: 10, i: 431, }, D { l: 10, t: 11, i: 127, }, D { l: 141, t: 11, i: 27, }, D { l: 17, t: 0, i: 32 }, D { l: 10, t: 10, i: 706, }, D { l: 150, t: 10, i: 44, }, D { l: 132, t: 0, i: 216, }, D { l: 137, t: 0, i: 332, }, D { l: 4, t: 10, i: 698, }, D { l: 136, t: 11, i: 119, }, D { l: 139, t: 11, i: 267, }, D { l: 138, t: 10, i: 17, }, D { l: 11, t: 11, i: 526, }, D { l: 11, t: 11, i: 939, }, D { l: 141, t: 11, i: 290, }, D { l: 7, t: 11, i: 1167, }, D { l: 11, t: 11, i: 934, }, D { l: 13, t: 11, i: 391, }, D { l: 145, t: 11, i: 76, }, D { l: 139, t: 11, i: 39, }, D { l: 134, t: 10, i: 84, }, D { l: 4, t: 0, i: 914 }, D { l: 5, t: 0, i: 800 }, D { l: 133, t: 0, i: 852, }, D { l: 10, t: 0, i: 416, }, D { l: 141, t: 0, i: 115, }, D { l: 7, t: 0, i: 564 }, D { l: 142, t: 0, i: 168, }, D { l: 4, t: 0, i: 918 }, D { l: 133, t: 0, i: 876, }, D { l: 134, t: 0, i: 1764, }, D { l: 152, t: 0, i: 3 }, D { l: 4, t: 0, i: 92 }, D { l: 5, t: 0, i: 274 }, D { l: 7, t: 11, i: 126, }, D { l: 136, t: 11, i: 84, }, D { l: 140, t: 10, i: 498, }, D { l: 136, t: 11, i: 790, }, D { l: 8, t: 0, i: 501 }, D { l: 5, t: 10, i: 986, }, D { l: 6, t: 10, i: 130, }, D { l: 7, t: 10, i: 1582, }, D { l: 8, t: 10, i: 458, }, D { l: 10, t: 10, i: 101, }, D { l: 10, t: 10, i: 318, }, D { l: 138, t: 10, i: 823, }, D { l: 6, t: 11, i: 64 }, D { l: 12, t: 11, i: 377, }, D { l: 141, t: 11, i: 309, }, D { l: 5, t: 0, i: 743 }, D { l: 138, t: 0, i: 851, }, D { l: 4, t: 0, i: 49 }, D { l: 7, t: 0, i: 280 }, D { l: 135, t: 0, i: 1633, }, D { l: 134, t: 0, i: 879, }, D { l: 136, t: 0, i: 47, }, D { l: 7, t: 10, i: 1644, }, D { l: 137, t: 10, i: 129, }, D { l: 132, t: 0, i: 865, }, D { l: 134, t: 0, i: 1202, }, D { l: 9, t: 11, i: 34 }, D { l: 139, t: 11, i: 484, }, D { l: 135, t: 10, i: 997, }, D { l: 5, t: 0, i: 272 }, D { l: 5, t: 0, i: 908 }, D { l: 5, t: 0, i: 942 }, D { l: 8, t: 0, i: 197 }, D { l: 9, t: 0, i: 47 }, D { l: 11, t: 0, i: 538, }, D { l: 139, t: 0, i: 742, }, D { l: 6, t: 11, i: 1700, }, D { l: 7, t: 11, i: 26 }, D { l: 7, t: 11, i: 293, }, D { l: 7, t: 11, i: 382, }, D { l: 7, t: 11, i: 1026, }, D { l: 7, t: 11, i: 1087, }, D { l: 7, t: 11, i: 2027, }, D { l: 8, t: 11, i: 24 }, D { l: 8, t: 11, i: 114, }, D { l: 8, t: 11, i: 252, }, D { l: 8, t: 11, i: 727, }, D { l: 8, t: 11, i: 729, }, D { l: 9, t: 11, i: 30 }, D { l: 9, t: 11, i: 199, }, D { l: 9, t: 11, i: 231, }, D { l: 9, t: 11, i: 251, }, D { l: 9, t: 11, i: 334, }, D { l: 9, t: 11, i: 361, }, D { l: 9, t: 11, i: 488, }, D { l: 9, t: 11, i: 712, }, D { l: 10, t: 11, i: 55, }, D { l: 10, t: 11, i: 60, }, D { l: 10, t: 11, i: 232, }, D { l: 10, t: 11, i: 332, }, D { l: 10, t: 11, i: 384, }, D { l: 10, t: 11, i: 396, }, D { l: 10, t: 11, i: 504, }, D { l: 10, t: 11, i: 542, }, D { l: 10, t: 11, i: 652, }, D { l: 11, t: 11, i: 20, }, D { l: 11, t: 11, i: 48, }, D { l: 11, t: 11, i: 207, }, D { l: 11, t: 11, i: 291, }, D { l: 11, t: 11, i: 298, }, D { l: 11, t: 11, i: 342, }, D { l: 11, t: 11, i: 365, }, D { l: 11, t: 11, i: 394, }, D { l: 11, t: 11, i: 620, }, D { l: 11, t: 11, i: 705, }, D { l: 11, t: 11, i: 1017, }, D { l: 12, t: 11, i: 123, }, D { l: 12, t: 11, i: 340, }, D { l: 12, t: 11, i: 406, }, D { l: 12, t: 11, i: 643, }, D { l: 13, t: 11, i: 61, }, D { l: 13, t: 11, i: 269, }, D { l: 13, t: 11, i: 311, }, D { l: 13, t: 11, i: 319, }, D { l: 13, t: 11, i: 486, }, D { l: 14, t: 11, i: 234, }, D { l: 15, t: 11, i: 62, }, D { l: 15, t: 11, i: 85, }, D { l: 16, t: 11, i: 71, }, D { l: 18, t: 11, i: 119, }, D { l: 148, t: 11, i: 105, }, D { l: 6, t: 0, i: 1455, }, D { l: 150, t: 11, i: 37, }, D { l: 135, t: 10, i: 1927, }, D { l: 135, t: 0, i: 1911, }, D { l: 137, t: 0, i: 891, }, D { l: 7, t: 10, i: 1756, }, D { l: 137, t: 10, i: 98, }, D { l: 7, t: 10, i: 1046, }, D { l: 139, t: 10, i: 160, }, D { l: 132, t: 0, i: 761, }, D { l: 6, t: 11, i: 379, }, D { l: 7, t: 11, i: 270, }, D { l: 7, t: 11, i: 1116, }, D { l: 8, t: 11, i: 176, }, D { l: 8, t: 11, i: 183, }, D { l: 9, t: 11, i: 432, }, D { l: 9, t: 11, i: 661, }, D { l: 12, t: 11, i: 247, }, D { l: 12, t: 11, i: 617, }, D { l: 146, t: 11, i: 125, }, D { l: 6, t: 10, i: 45 }, D { l: 7, t: 10, i: 433, }, D { l: 8, t: 10, i: 129, }, D { l: 9, t: 10, i: 21 }, D { l: 10, t: 10, i: 392, }, D { l: 11, t: 10, i: 79, }, D { l: 12, t: 10, i: 499, }, D { l: 13, t: 10, i: 199, }, D { l: 141, t: 10, i: 451, }, D { l: 4, t: 0, i: 407 }, D { l: 5, t: 11, i: 792, }, D { l: 133, t: 11, i: 900, }, D { l: 132, t: 0, i: 560, }, D { l: 135, t: 0, i: 183, }, D { l: 13, t: 0, i: 490, }, D { l: 7, t: 10, i: 558, }, D { l: 136, t: 10, i: 353, }, D { l: 4, t: 0, i: 475 }, D { l: 6, t: 0, i: 731 }, D { l: 11, t: 0, i: 35 }, D { l: 13, t: 0, i: 71 }, D { l: 13, t: 0, i: 177, }, D { l: 14, t: 0, i: 422, }, D { l: 133, t: 10, i: 785, }, D { l: 8, t: 10, i: 81 }, D { l: 9, t: 10, i: 189, }, D { l: 9, t: 10, i: 201, }, D { l: 11, t: 10, i: 478, }, D { l: 11, t: 10, i: 712, }, D { l: 141, t: 10, i: 338, }, D { l: 4, t: 0, i: 418 }, D { l: 4, t: 0, i: 819 }, D { l: 133, t: 10, i: 353, }, D { l: 151, t: 10, i: 26, }, D { l: 4, t: 11, i: 901, }, D { l: 133, t: 11, i: 776, }, D { l: 132, t: 0, i: 575, }, D { l: 7, t: 0, i: 818 }, D { l: 16, t: 0, i: 92 }, D { l: 17, t: 0, i: 14 }, D { l: 17, t: 0, i: 45 }, D { l: 18, t: 0, i: 75 }, D { l: 148, t: 0, i: 18, }, D { l: 6, t: 0, i: 222 }, D { l: 7, t: 0, i: 636 }, D { l: 7, t: 0, i: 1620, }, D { l: 8, t: 0, i: 409 }, D { l: 9, t: 0, i: 693 }, D { l: 139, t: 0, i: 77, }, D { l: 6, t: 10, i: 25 }, D { l: 7, t: 10, i: 855, }, D { l: 7, t: 10, i: 1258, }, D { l: 144, t: 10, i: 32, }, D { l: 6, t: 0, i: 1880, }, D { l: 6, t: 0, i: 1887, }, D { l: 6, t: 0, i: 1918, }, D { l: 6, t: 0, i: 1924, }, D { l: 9, t: 0, i: 967 }, D { l: 9, t: 0, i: 995 }, D { l: 9, t: 0, i: 1015, }, D { l: 12, t: 0, i: 826, }, D { l: 12, t: 0, i: 849, }, D { l: 12, t: 0, i: 857, }, D { l: 12, t: 0, i: 860, }, D { l: 12, t: 0, i: 886, }, D { l: 12, t: 0, i: 932, }, D { l: 18, t: 0, i: 228, }, D { l: 18, t: 0, i: 231, }, D { l: 146, t: 0, i: 240, }, D { l: 134, t: 0, i: 633, }, D { l: 134, t: 0, i: 1308, }, D { l: 4, t: 11, i: 37 }, D { l: 5, t: 11, i: 334, }, D { l: 135, t: 11, i: 1253, }, D { l: 10, t: 0, i: 86 }, D { l: 4, t: 10, i: 4 }, D { l: 7, t: 10, i: 1118, }, D { l: 7, t: 10, i: 1320, }, D { l: 7, t: 10, i: 1706, }, D { l: 8, t: 10, i: 277, }, D { l: 9, t: 10, i: 622, }, D { l: 11, t: 10, i: 724, }, D { l: 12, t: 10, i: 350, }, D { l: 12, t: 10, i: 397, }, D { l: 13, t: 10, i: 28, }, D { l: 13, t: 10, i: 159, }, D { l: 15, t: 10, i: 89, }, D { l: 18, t: 10, i: 5 }, D { l: 19, t: 10, i: 9 }, D { l: 20, t: 10, i: 34, }, D { l: 150, t: 10, i: 47, }, D { l: 132, t: 11, i: 508, }, D { l: 137, t: 11, i: 448, }, D { l: 12, t: 11, i: 107, }, D { l: 146, t: 11, i: 31, }, D { l: 132, t: 0, i: 817, }, D { l: 134, t: 0, i: 663, }, D { l: 133, t: 0, i: 882, }, D { l: 134, t: 0, i: 914, }, D { l: 132, t: 11, i: 540, }, D { l: 132, t: 11, i: 533, }, D { l: 136, t: 11, i: 608, }, D { l: 8, t: 0, i: 885 }, D { l: 138, t: 0, i: 865, }, D { l: 132, t: 0, i: 426, }, D { l: 6, t: 0, i: 58 }, D { l: 7, t: 0, i: 745 }, D { l: 7, t: 0, i: 1969, }, D { l: 8, t: 0, i: 399 }, D { l: 8, t: 0, i: 675 }, D { l: 9, t: 0, i: 479 }, D { l: 9, t: 0, i: 731 }, D { l: 10, t: 0, i: 330, }, D { l: 10, t: 0, i: 593, }, D { l: 10, t: 0, i: 817, }, D { l: 11, t: 0, i: 32 }, D { l: 11, t: 0, i: 133, }, D { l: 11, t: 0, i: 221, }, D { l: 145, t: 0, i: 68, }, D { l: 134, t: 10, i: 255, }, D { l: 7, t: 0, i: 102 }, D { l: 137, t: 0, i: 538, }, D { l: 137, t: 10, i: 216, }, D { l: 7, t: 11, i: 253, }, D { l: 136, t: 11, i: 549, }, D { l: 135, t: 11, i: 912, }, D { l: 9, t: 10, i: 183, }, D { l: 139, t: 10, i: 286, }, D { l: 11, t: 10, i: 956, }, D { l: 151, t: 10, i: 3, }, D { l: 8, t: 11, i: 527, }, D { l: 18, t: 11, i: 60, }, D { l: 147, t: 11, i: 24, }, D { l: 4, t: 10, i: 536, }, D { l: 7, t: 10, i: 1141, }, D { l: 10, t: 10, i: 723, }, D { l: 139, t: 10, i: 371, }, D { l: 133, t: 11, i: 920, }, D { l: 7, t: 0, i: 876 }, D { l: 135, t: 10, i: 285, }, D { l: 135, t: 10, i: 560, }, D { l: 132, t: 10, i: 690, }, D { l: 142, t: 11, i: 126, }, D { l: 11, t: 10, i: 33, }, D { l: 12, t: 10, i: 571, }, D { l: 149, t: 10, i: 1, }, D { l: 133, t: 0, i: 566, }, D { l: 9, t: 0, i: 139 }, D { l: 10, t: 0, i: 399, }, D { l: 11, t: 0, i: 469, }, D { l: 12, t: 0, i: 634, }, D { l: 13, t: 0, i: 223, }, D { l: 132, t: 11, i: 483, }, D { l: 6, t: 0, i: 48 }, D { l: 135, t: 0, i: 63, }, D { l: 18, t: 0, i: 12 }, D { l: 7, t: 10, i: 1862, }, D { l: 12, t: 10, i: 491, }, D { l: 12, t: 10, i: 520, }, D { l: 13, t: 10, i: 383, }, D { l: 142, t: 10, i: 244, }, D { l: 135, t: 11, i: 1665, }, D { l: 132, t: 11, i: 448, }, D { l: 9, t: 11, i: 495, }, D { l: 146, t: 11, i: 104, }, D { l: 6, t: 0, i: 114 }, D { l: 7, t: 0, i: 1224, }, D { l: 7, t: 0, i: 1556, }, D { l: 136, t: 0, i: 3 }, D { l: 4, t: 10, i: 190, }, D { l: 133, t: 10, i: 554, }, D { l: 8, t: 0, i: 576 }, D { l: 9, t: 0, i: 267 }, D { l: 133, t: 10, i: 1001, }, D { l: 133, t: 10, i: 446, }, D { l: 133, t: 0, i: 933, }, D { l: 139, t: 11, i: 1009, }, D { l: 8, t: 11, i: 653, }, D { l: 13, t: 11, i: 93, }, D { l: 147, t: 11, i: 14, }, D { l: 6, t: 0, i: 692 }, D { l: 6, t: 0, i: 821 }, D { l: 134, t: 0, i: 1077, }, D { l: 5, t: 11, i: 172, }, D { l: 135, t: 11, i: 801, }, D { l: 138, t: 0, i: 752, }, D { l: 4, t: 0, i: 375 }, D { l: 134, t: 0, i: 638, }, D { l: 134, t: 0, i: 1011, }, D { l: 140, t: 11, i: 540, }, D { l: 9, t: 0, i: 96 }, D { l: 133, t: 11, i: 260, }, D { l: 139, t: 11, i: 587, }, D { l: 135, t: 10, i: 1231, }, D { l: 12, t: 0, i: 30 }, D { l: 13, t: 0, i: 148, }, D { l: 14, t: 0, i: 87 }, D { l: 14, t: 0, i: 182, }, D { l: 16, t: 0, i: 42 }, D { l: 20, t: 0, i: 70 }, D { l: 132, t: 10, i: 304, }, D { l: 6, t: 0, i: 1398, }, D { l: 7, t: 0, i: 56 }, D { l: 7, t: 0, i: 1989, }, D { l: 8, t: 0, i: 337 }, D { l: 8, t: 0, i: 738 }, D { l: 9, t: 0, i: 600 }, D { l: 12, t: 0, i: 37 }, D { l: 13, t: 0, i: 447, }, D { l: 142, t: 0, i: 92, }, D { l: 138, t: 0, i: 666, }, D { l: 5, t: 0, i: 394 }, D { l: 7, t: 0, i: 487 }, D { l: 136, t: 0, i: 246, }, D { l: 9, t: 0, i: 437 }, D { l: 6, t: 10, i: 53 }, D { l: 6, t: 10, i: 199, }, D { l: 7, t: 10, i: 1408, }, D { l: 8, t: 10, i: 32 }, D { l: 8, t: 10, i: 93 }, D { l: 10, t: 10, i: 397, }, D { l: 10, t: 10, i: 629, }, D { l: 11, t: 10, i: 593, }, D { l: 11, t: 10, i: 763, }, D { l: 13, t: 10, i: 326, }, D { l: 145, t: 10, i: 35, }, D { l: 134, t: 10, i: 105, }, D { l: 9, t: 0, i: 320 }, D { l: 10, t: 0, i: 506, }, D { l: 138, t: 10, i: 794, }, D { l: 7, t: 11, i: 57 }, D { l: 8, t: 11, i: 167, }, D { l: 8, t: 11, i: 375, }, D { l: 9, t: 11, i: 82 }, D { l: 9, t: 11, i: 561, }, D { l: 10, t: 11, i: 620, }, D { l: 10, t: 11, i: 770, }, D { l: 11, t: 10, i: 704, }, D { l: 141, t: 10, i: 396, }, D { l: 6, t: 0, i: 1003, }, D { l: 5, t: 10, i: 114, }, D { l: 5, t: 10, i: 255, }, D { l: 141, t: 10, i: 285, }, D { l: 7, t: 0, i: 866 }, D { l: 135, t: 0, i: 1163, }, D { l: 133, t: 11, i: 531, }, D { l: 132, t: 0, i: 328, }, D { l: 7, t: 10, i: 2035, }, D { l: 8, t: 10, i: 19 }, D { l: 9, t: 10, i: 89 }, D { l: 138, t: 10, i: 831, }, D { l: 8, t: 11, i: 194, }, D { l: 136, t: 11, i: 756, }, D { l: 136, t: 0, i: 1000, }, D { l: 5, t: 11, i: 453, }, D { l: 134, t: 11, i: 441, }, D { l: 4, t: 0, i: 101 }, D { l: 5, t: 0, i: 833 }, D { l: 7, t: 0, i: 1171, }, D { l: 136, t: 0, i: 744, }, D { l: 133, t: 0, i: 726, }, D { l: 136, t: 10, i: 746, }, D { l: 138, t: 0, i: 176, }, D { l: 6, t: 0, i: 9 }, D { l: 6, t: 0, i: 397 }, D { l: 7, t: 0, i: 53 }, D { l: 7, t: 0, i: 1742, }, D { l: 10, t: 0, i: 632, }, D { l: 11, t: 0, i: 828, }, D { l: 140, t: 0, i: 146, }, D { l: 135, t: 11, i: 22, }, D { l: 145, t: 11, i: 64, }, D { l: 132, t: 0, i: 839, }, D { l: 11, t: 0, i: 417, }, D { l: 12, t: 0, i: 223, }, D { l: 140, t: 0, i: 265, }, D { l: 4, t: 11, i: 102, }, D { l: 7, t: 11, i: 815, }, D { l: 7, t: 11, i: 1699, }, D { l: 139, t: 11, i: 964, }, D { l: 5, t: 10, i: 955, }, D { l: 136, t: 10, i: 814, }, D { l: 6, t: 0, i: 1931, }, D { l: 6, t: 0, i: 2007, }, D { l: 18, t: 0, i: 246, }, D { l: 146, t: 0, i: 247, }, D { l: 8, t: 0, i: 198 }, D { l: 11, t: 0, i: 29 }, D { l: 140, t: 0, i: 534, }, D { l: 135, t: 0, i: 1771, }, D { l: 6, t: 0, i: 846 }, D { l: 7, t: 11, i: 1010, }, D { l: 11, t: 11, i: 733, }, D { l: 11, t: 11, i: 759, }, D { l: 12, t: 11, i: 563, }, D { l: 13, t: 11, i: 34, }, D { l: 14, t: 11, i: 101, }, D { l: 18, t: 11, i: 45, }, D { l: 146, t: 11, i: 129, }, D { l: 4, t: 0, i: 186 }, D { l: 5, t: 0, i: 157 }, D { l: 8, t: 0, i: 168 }, D { l: 138, t: 0, i: 6 }, D { l: 132, t: 11, i: 899, }, D { l: 133, t: 10, i: 56, }, D { l: 148, t: 10, i: 100, }, D { l: 133, t: 0, i: 875, }, D { l: 5, t: 0, i: 773 }, D { l: 5, t: 0, i: 991 }, D { l: 6, t: 0, i: 1635, }, D { l: 134, t: 0, i: 1788, }, D { l: 6, t: 0, i: 1274, }, D { l: 9, t: 0, i: 477 }, D { l: 141, t: 0, i: 78, }, D { l: 4, t: 0, i: 639 }, D { l: 7, t: 0, i: 111 }, D { l: 8, t: 0, i: 581 }, D { l: 12, t: 0, i: 177, }, D { l: 6, t: 11, i: 52 }, D { l: 9, t: 11, i: 104, }, D { l: 9, t: 11, i: 559, }, D { l: 10, t: 10, i: 4 }, D { l: 10, t: 10, i: 13, }, D { l: 11, t: 10, i: 638, }, D { l: 12, t: 11, i: 308, }, D { l: 19, t: 11, i: 87, }, D { l: 148, t: 10, i: 57, }, D { l: 132, t: 11, i: 604, }, D { l: 4, t: 11, i: 301, }, D { l: 133, t: 10, i: 738, }, D { l: 133, t: 10, i: 758, }, D { l: 134, t: 0, i: 1747, }, D { l: 7, t: 11, i: 1440, }, D { l: 11, t: 11, i: 854, }, D { l: 11, t: 11, i: 872, }, D { l: 11, t: 11, i: 921, }, D { l: 12, t: 11, i: 551, }, D { l: 13, t: 11, i: 472, }, D { l: 142, t: 11, i: 367, }, D { l: 7, t: 0, i: 1364, }, D { l: 7, t: 0, i: 1907, }, D { l: 141, t: 0, i: 158, }, D { l: 134, t: 0, i: 873, }, D { l: 4, t: 0, i: 404 }, D { l: 4, t: 0, i: 659 }, D { l: 7, t: 0, i: 552 }, D { l: 135, t: 0, i: 675, }, D { l: 135, t: 10, i: 1112, }, D { l: 139, t: 10, i: 328, }, D { l: 7, t: 11, i: 508, }, D { l: 137, t: 10, i: 133, }, D { l: 133, t: 0, i: 391, }, D { l: 5, t: 10, i: 110, }, D { l: 6, t: 10, i: 169, }, D { l: 6, t: 10, i: 1702, }, D { l: 7, t: 10, i: 400, }, D { l: 8, t: 10, i: 538, }, D { l: 9, t: 10, i: 184, }, D { l: 9, t: 10, i: 524, }, D { l: 140, t: 10, i: 218, }, D { l: 6, t: 11, i: 310, }, D { l: 7, t: 11, i: 1849, }, D { l: 8, t: 11, i: 72 }, D { l: 8, t: 11, i: 272, }, D { l: 8, t: 11, i: 431, }, D { l: 9, t: 11, i: 12 }, D { l: 9, t: 11, i: 351, }, D { l: 10, t: 11, i: 563, }, D { l: 10, t: 11, i: 630, }, D { l: 10, t: 11, i: 810, }, D { l: 11, t: 11, i: 367, }, D { l: 11, t: 11, i: 599, }, D { l: 11, t: 11, i: 686, }, D { l: 140, t: 11, i: 672, }, D { l: 5, t: 0, i: 540 }, D { l: 6, t: 0, i: 1697, }, D { l: 136, t: 0, i: 668, }, D { l: 132, t: 0, i: 883, }, D { l: 134, t: 0, i: 78, }, D { l: 12, t: 0, i: 628, }, D { l: 18, t: 0, i: 79 }, D { l: 6, t: 10, i: 133, }, D { l: 9, t: 10, i: 353, }, D { l: 139, t: 10, i: 993, }, D { l: 6, t: 11, i: 181, }, D { l: 7, t: 11, i: 537, }, D { l: 8, t: 11, i: 64 }, D { l: 9, t: 11, i: 127, }, D { l: 10, t: 11, i: 496, }, D { l: 12, t: 11, i: 510, }, D { l: 141, t: 11, i: 384, }, D { l: 6, t: 10, i: 93 }, D { l: 7, t: 10, i: 1422, }, D { l: 7, t: 10, i: 1851, }, D { l: 8, t: 10, i: 673, }, D { l: 9, t: 10, i: 529, }, D { l: 140, t: 10, i: 43, }, D { l: 137, t: 10, i: 371, }, D { l: 134, t: 0, i: 1460, }, D { l: 134, t: 0, i: 962, }, D { l: 4, t: 11, i: 244, }, D { l: 135, t: 11, i: 233, }, D { l: 9, t: 10, i: 25 }, D { l: 10, t: 10, i: 467, }, D { l: 138, t: 10, i: 559, }, D { l: 4, t: 10, i: 335, }, D { l: 135, t: 10, i: 942, }, D { l: 133, t: 0, i: 460, }, D { l: 135, t: 11, i: 334, }, D { l: 134, t: 11, i: 1650, }, D { l: 4, t: 0, i: 199 }, D { l: 139, t: 0, i: 34, }, D { l: 5, t: 10, i: 601, }, D { l: 8, t: 10, i: 39 }, D { l: 10, t: 10, i: 773, }, D { l: 11, t: 10, i: 84, }, D { l: 12, t: 10, i: 205, }, D { l: 142, t: 10, i: 1, }, D { l: 133, t: 10, i: 870, }, D { l: 134, t: 0, i: 388, }, D { l: 14, t: 0, i: 474, }, D { l: 148, t: 0, i: 120, }, D { l: 133, t: 11, i: 369, }, D { l: 139, t: 0, i: 271, }, D { l: 4, t: 0, i: 511 }, D { l: 9, t: 0, i: 333 }, D { l: 9, t: 0, i: 379 }, D { l: 10, t: 0, i: 602, }, D { l: 11, t: 0, i: 441, }, D { l: 11, t: 0, i: 723, }, D { l: 11, t: 0, i: 976, }, D { l: 12, t: 0, i: 357, }, D { l: 132, t: 10, i: 181, }, D { l: 134, t: 0, i: 608, }, D { l: 134, t: 10, i: 1652, }, D { l: 22, t: 0, i: 49 }, D { l: 137, t: 11, i: 338, }, D { l: 140, t: 0, i: 988, }, D { l: 134, t: 0, i: 617, }, D { l: 5, t: 0, i: 938 }, D { l: 136, t: 0, i: 707, }, D { l: 132, t: 10, i: 97, }, D { l: 5, t: 10, i: 147, }, D { l: 6, t: 10, i: 286, }, D { l: 7, t: 10, i: 1362, }, D { l: 141, t: 10, i: 176, }, D { l: 6, t: 0, i: 756 }, D { l: 134, t: 0, i: 1149, }, D { l: 133, t: 11, i: 896, }, D { l: 6, t: 10, i: 375, }, D { l: 7, t: 10, i: 169, }, D { l: 7, t: 10, i: 254, }, D { l: 136, t: 10, i: 780, }, D { l: 134, t: 0, i: 1583, }, D { l: 135, t: 10, i: 1447, }, D { l: 139, t: 0, i: 285, }, D { l: 7, t: 11, i: 1117, }, D { l: 8, t: 11, i: 393, }, D { l: 136, t: 11, i: 539, }, D { l: 135, t: 0, i: 344, }, D { l: 6, t: 0, i: 469 }, D { l: 7, t: 0, i: 1709, }, D { l: 138, t: 0, i: 515, }, D { l: 5, t: 10, i: 629, }, D { l: 135, t: 10, i: 1549, }, D { l: 5, t: 11, i: 4 }, D { l: 5, t: 11, i: 810, }, D { l: 6, t: 11, i: 13 }, D { l: 6, t: 11, i: 538, }, D { l: 6, t: 11, i: 1690, }, D { l: 6, t: 11, i: 1726, }, D { l: 7, t: 11, i: 499, }, D { l: 7, t: 11, i: 1819, }, D { l: 8, t: 11, i: 148, }, D { l: 8, t: 11, i: 696, }, D { l: 8, t: 11, i: 791, }, D { l: 12, t: 11, i: 125, }, D { l: 13, t: 11, i: 54, }, D { l: 143, t: 11, i: 9, }, D { l: 135, t: 11, i: 1268, }, D { l: 137, t: 0, i: 404, }, D { l: 132, t: 0, i: 500, }, D { l: 5, t: 0, i: 68 }, D { l: 134, t: 0, i: 383, }, D { l: 11, t: 0, i: 216, }, D { l: 139, t: 0, i: 340, }, D { l: 4, t: 11, i: 925, }, D { l: 5, t: 11, i: 803, }, D { l: 8, t: 11, i: 698, }, D { l: 138, t: 11, i: 828, }, D { l: 4, t: 0, i: 337 }, D { l: 6, t: 0, i: 353 }, D { l: 7, t: 0, i: 1934, }, D { l: 8, t: 0, i: 488 }, D { l: 137, t: 0, i: 429, }, D { l: 7, t: 0, i: 236 }, D { l: 7, t: 0, i: 1795, }, D { l: 8, t: 0, i: 259 }, D { l: 9, t: 0, i: 135 }, D { l: 9, t: 0, i: 177 }, D { l: 9, t: 0, i: 860 }, D { l: 10, t: 0, i: 825, }, D { l: 11, t: 0, i: 115, }, D { l: 11, t: 0, i: 370, }, D { l: 11, t: 0, i: 405, }, D { l: 11, t: 0, i: 604, }, D { l: 12, t: 0, i: 10 }, D { l: 12, t: 0, i: 667, }, D { l: 12, t: 0, i: 669, }, D { l: 13, t: 0, i: 76 }, D { l: 14, t: 0, i: 310, }, D { l: 15, t: 0, i: 76 }, D { l: 15, t: 0, i: 147, }, D { l: 148, t: 0, i: 23, }, D { l: 4, t: 0, i: 15 }, D { l: 4, t: 0, i: 490 }, D { l: 5, t: 0, i: 22 }, D { l: 6, t: 0, i: 244 }, D { l: 7, t: 0, i: 40 }, D { l: 7, t: 0, i: 200 }, D { l: 7, t: 0, i: 906 }, D { l: 7, t: 0, i: 1199, }, D { l: 9, t: 0, i: 616 }, D { l: 10, t: 0, i: 716, }, D { l: 11, t: 0, i: 635, }, D { l: 11, t: 0, i: 801, }, D { l: 140, t: 0, i: 458, }, D { l: 12, t: 0, i: 756, }, D { l: 132, t: 10, i: 420, }, D { l: 134, t: 0, i: 1504, }, D { l: 6, t: 0, i: 757 }, D { l: 133, t: 11, i: 383, }, D { l: 6, t: 0, i: 1266, }, D { l: 135, t: 0, i: 1735, }, D { l: 5, t: 0, i: 598 }, D { l: 7, t: 0, i: 791 }, D { l: 8, t: 0, i: 108 }, D { l: 9, t: 0, i: 123 }, D { l: 7, t: 10, i: 1570, }, D { l: 140, t: 10, i: 542, }, D { l: 142, t: 11, i: 410, }, D { l: 9, t: 11, i: 660, }, D { l: 138, t: 11, i: 347, }, ]; brotli-6.0.0/src/enc/stride_eval.rs000064400000000000000000000266221046102023000153350ustar 00000000000000use super::super::alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use super::backward_references::BrotliEncoderParams; use super::input_pair::{InputPair, InputReference, InputReferenceMut}; use super::interface; use super::ir_interpret::{push_base, IRInterpreter}; use super::prior_eval::DEFAULT_SPEED; use super::util::{floatX, FastLog2u16}; const NIBBLE_PRIOR_SIZE: usize = 16; pub const STRIDE_PRIOR_SIZE: usize = 256 * 256 * NIBBLE_PRIOR_SIZE * 2; pub fn local_init_cdfs(cdfs: &mut [u16]) { for (index, item) in cdfs.iter_mut().enumerate() { *item = 4 + 4 * (index as u16 & 0x0f); } } #[allow(unused_variables)] fn stride_lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { if let Some(nibble) = high_nibble { 1 + 2 * (actual_context | ((stride_byte as usize & 0xf) << 8) | ((nibble as usize) << 12)) } else { 2 * (actual_context | ((stride_byte as usize) << 8)) } } struct CDF<'a> { cdf: &'a mut [u16], } struct Stride1Prior {} impl Stride1Prior { fn lookup_lin( stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> usize { stride_lookup_lin(stride_byte, selected_context, actual_context, high_nibble) } fn lookup_mut( data: &mut [u16], stride_byte: u8, selected_context: u8, actual_context: usize, high_nibble: Option, ) -> CDF { let index = Self::lookup_lin(stride_byte, selected_context, actual_context, high_nibble) * NIBBLE_PRIOR_SIZE; CDF::from(data.split_at_mut(index).1.split_at_mut(16).0) } } impl<'a> CDF<'a> { pub fn cost(&self, nibble_u8: u8) -> floatX { assert_eq!(self.cdf.len(), 16); let nibble = nibble_u8 as usize & 0xf; let mut pdf = self.cdf[nibble]; if nibble_u8 != 0 { pdf -= self.cdf[nibble - 1]; } FastLog2u16(self.cdf[15]) - FastLog2u16(pdf) } pub fn update(&mut self, nibble_u8: u8, speed: (u16, u16)) { assert_eq!(self.cdf.len(), 16); for nib_range in (nibble_u8 as usize & 0xf)..16 { self.cdf[nib_range] += speed.0; } if self.cdf[15] >= speed.1 { const CDF_BIAS: [u16; 16] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; for nibble_index in 0..16 { let tmp = &mut self.cdf[nibble_index]; *tmp = (tmp.wrapping_add(CDF_BIAS[nibble_index])) .wrapping_sub(tmp.wrapping_add(CDF_BIAS[nibble_index]) >> 2); } } } } impl<'a> From<&'a mut [u16]> for CDF<'a> { fn from(cdf: &'a mut [u16]) -> CDF<'a> { assert_eq!(cdf.len(), 16); CDF { cdf } } } pub struct StrideEval< 'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + 'a, > { input: InputPair<'a>, alloc: &'a mut Alloc, context_map: &'a interface::PredictionModeContextMap>, block_type: u8, local_byte_offset: usize, stride_priors: [>::AllocatedMemory; 8], score: >::AllocatedMemory, cur_score_epoch: usize, stride_speed: [(u16, u16); 2], cur_stride: u8, } impl<'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator + 'a> StrideEval<'a, Alloc> { pub fn new( alloc: &'a mut Alloc, input: InputPair<'a>, prediction_mode: &'a interface::PredictionModeContextMap>, params: &BrotliEncoderParams, ) -> Self { let do_alloc = true; let mut stride_speed = prediction_mode.stride_context_speed(); if stride_speed[0] == (0, 0) { stride_speed[0] = params.literal_adaptation[0] } if stride_speed[0] == (0, 0) { stride_speed[0] = DEFAULT_SPEED; } if stride_speed[1] == (0, 0) { stride_speed[1] = params.literal_adaptation[1] } if stride_speed[1] == (0, 0) { stride_speed[1] = stride_speed[0]; } let score = if do_alloc { >::alloc_cell(alloc, 8 * 4) // FIXME make this bigger than just 4 } else { >::AllocatedMemory::default() }; let stride_priors = if do_alloc { [ >::alloc_cell(alloc, STRIDE_PRIOR_SIZE), >::alloc_cell(alloc, STRIDE_PRIOR_SIZE), >::alloc_cell(alloc, STRIDE_PRIOR_SIZE), >::alloc_cell(alloc, STRIDE_PRIOR_SIZE), >::alloc_cell(alloc, STRIDE_PRIOR_SIZE), >::alloc_cell(alloc, STRIDE_PRIOR_SIZE), >::alloc_cell(alloc, STRIDE_PRIOR_SIZE), >::alloc_cell(alloc, STRIDE_PRIOR_SIZE), ] } else { [ >::AllocatedMemory::default(), >::AllocatedMemory::default(), >::AllocatedMemory::default(), >::AllocatedMemory::default(), >::AllocatedMemory::default(), >::AllocatedMemory::default(), >::AllocatedMemory::default(), >::AllocatedMemory::default(), ] }; let mut ret = StrideEval:: { input, context_map: prediction_mode, block_type: 0, alloc, cur_stride: 1, cur_score_epoch: 0, local_byte_offset: 0, stride_priors, score, stride_speed, }; for stride_prior in ret.stride_priors.iter_mut() { local_init_cdfs(stride_prior.slice_mut()); } ret } pub fn alloc(&mut self) -> &mut Alloc { self.alloc } pub fn choose_stride(&self, stride_data: &mut [u8]) { assert_eq!(stride_data.len(), self.cur_score_epoch); assert!(self.score.slice().len() > stride_data.len()); assert!(self.score.slice().len() > (stride_data.len() << 3) + 7 + 8); for (index, choice) in stride_data.iter_mut().enumerate() { let choices = self .score .slice() .split_at((1 + index) << 3) .1 .split_at(8) .0; let mut best_choice: u8 = 0; let mut best_score = choices[0]; for (cur_index, cur_score) in choices.iter().enumerate() { if *cur_score + 2.0 < best_score { // needs to be 2 bits better to be worth the type switch best_score = *cur_score; best_choice = cur_index as u8; } } *choice = best_choice; } } pub fn num_types(&self) -> usize { self.cur_score_epoch } fn update_cost_base( &mut self, stride_prior: [u8; 8], selected_bits: u8, cm_prior: usize, literal: u8, ) { type CurPrior = Stride1Prior; { for i in 0..8 { let mut cdf = CurPrior::lookup_mut( self.stride_priors[i].slice_mut(), stride_prior[i], selected_bits, cm_prior, None, ); self.score.slice_mut()[self.cur_score_epoch * 8 + i] += cdf.cost(literal >> 4); cdf.update(literal >> 4, self.stride_speed[1]); } } { for i in 0..8 { let mut cdf = CurPrior::lookup_mut( self.stride_priors[i].slice_mut(), stride_prior[i], selected_bits, cm_prior, Some(literal >> 4), ); self.score.slice_mut()[self.cur_score_epoch * 8 + i] += cdf.cost(literal & 0xf); cdf.update(literal & 0xf, self.stride_speed[0]); } } } } impl<'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator> Drop for StrideEval<'a, Alloc> { fn drop(&mut self) { >::free_cell(self.alloc, core::mem::take(&mut self.score)); for i in 0..8 { >::free_cell( self.alloc, core::mem::take(&mut self.stride_priors[i]), ); } } } impl<'a, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator> IRInterpreter for StrideEval<'a, Alloc> { fn inc_local_byte_offset(&mut self, inc: usize) { self.local_byte_offset += inc; } fn local_byte_offset(&self) -> usize { self.local_byte_offset } fn update_block_type(&mut self, new_type: u8, stride: u8) { self.block_type = new_type; self.cur_stride = stride; self.cur_score_epoch += 1; if self.cur_score_epoch * 8 + 7 >= self.score.slice().len() { let new_len = self.score.slice().len() * 2; let mut new_score = >::alloc_cell(self.alloc, new_len); for (src, dst) in self.score.slice().iter().zip( new_score .slice_mut() .split_at_mut(self.score.slice().len()) .0 .iter_mut(), ) { *dst = *src; } >::free_cell( self.alloc, core::mem::replace(&mut self.score, new_score), ); } } fn block_type(&self) -> u8 { self.block_type } fn literal_data_at_offset(&self, index: usize) -> u8 { self.input[index] } fn literal_context_map(&self) -> &[u8] { self.context_map.literal_context_map.slice() } fn prediction_mode(&self) -> ::interface::LiteralPredictionModeNibble { self.context_map.literal_prediction_mode() } fn update_cost( &mut self, stride_prior: [u8; 8], stride_prior_offset: usize, selected_bits: u8, cm_prior: usize, literal: u8, ) { let reversed_stride_priors = [ stride_prior[stride_prior_offset & 7], stride_prior[stride_prior_offset.wrapping_sub(1) & 7], stride_prior[stride_prior_offset.wrapping_sub(2) & 7], stride_prior[stride_prior_offset.wrapping_sub(3) & 7], stride_prior[stride_prior_offset.wrapping_sub(4) & 7], stride_prior[stride_prior_offset.wrapping_sub(5) & 7], stride_prior[stride_prior_offset.wrapping_sub(6) & 7], stride_prior[stride_prior_offset.wrapping_sub(7) & 7], ]; self.update_cost_base(reversed_stride_priors, selected_bits, cm_prior, literal) } } impl<'a, 'b, Alloc: alloc::Allocator + alloc::Allocator + alloc::Allocator> interface::CommandProcessor<'b> for StrideEval<'a, Alloc> { fn push(&mut self, val: interface::Command>) { push_base(self, val) } } brotli-6.0.0/src/enc/test.rs000075500000000000000000000422411046102023000140110ustar 00000000000000#![cfg(test)] use super::{s16, v8}; use core; use core::cmp::min; extern crate alloc_no_stdlib; extern crate brotli_decompressor; use super::super::alloc::{ bzero, AllocatedStackMemory, Allocator, SliceWrapper, SliceWrapperMut, StackAllocator, }; use super::cluster::HistogramPair; use super::encode::{BrotliEncoderOperation, BrotliEncoderParameter}; use super::histogram::{ContextType, HistogramCommand, HistogramDistance, HistogramLiteral}; use super::StaticCommand; use super::ZopfliNode; extern "C" { fn calloc(n_elem: usize, el_size: usize) -> *mut u8; } extern "C" { fn free(ptr: *mut u8); } pub use super::super::{BrotliDecompressStream, BrotliResult, BrotliState}; use super::combined_alloc::CombiningAllocator; use super::command::Command; use super::entropy_encode::HuffmanTree; use super::interface; use super::pdf::PDF; use brotli_decompressor::HuffmanCode; use core::ops; use enc::encode::BrotliEncoderStateStruct; declare_stack_allocator_struct!(MemPool, 128, stack); declare_stack_allocator_struct!(CallocatedFreelist4096, 128, calloc); declare_stack_allocator_struct!(CallocatedFreelist2048, 64, calloc); declare_stack_allocator_struct!(CallocatedFreelist1024, 32, calloc); declare_stack_allocator_struct!(StackAllocatedFreelist64, 64, stack); fn oneshot_compress( input: &[u8], output: &mut [u8], quality: u32, lgwin: u32, magic: bool, in_batch_size: usize, out_batch_size: usize, ) -> (bool, usize) { let stack_u8_buffer = unsafe { define_allocator_memory_pool!(96, u8, [0; 24 * 1024 * 1024], calloc) }; let stack_u16_buffer = unsafe { define_allocator_memory_pool!(96, u16, [0; 128 * 1024], calloc) }; let stack_i32_buffer = unsafe { define_allocator_memory_pool!(96, i32, [0; 128 * 1024], calloc) }; let stack_u32_buffer = unsafe { define_allocator_memory_pool!(96, u32, [0; 32 * 1024 * 1024], calloc) }; let stack_u64_buffer = unsafe { define_allocator_memory_pool!(96, u64, [0; 32 * 1024], calloc) }; let stack_f64_buffer = unsafe { define_allocator_memory_pool!(48, super::util::floatX, [0; 128 * 1024], calloc) }; let mut stack_global_buffer_v8 = define_allocator_memory_pool!(64, v8, [v8::default(); 1024 * 16], stack); let mf8 = StackAllocatedFreelist64::::new_allocator(&mut stack_global_buffer_v8, bzero); let mut stack_16x16_buffer = define_allocator_memory_pool!(64, s16, [s16::default(); 1024 * 16], stack); let m16x16 = StackAllocatedFreelist64::::new_allocator(&mut stack_16x16_buffer, bzero); let stack_hl_buffer = unsafe { define_allocator_memory_pool!(48, HistogramLiteral, [0; 128 * 1024], calloc) }; let stack_hc_buffer = unsafe { define_allocator_memory_pool!(48, HistogramCommand, [0; 128 * 1024], calloc) }; let stack_hd_buffer = unsafe { define_allocator_memory_pool!(48, HistogramDistance, [0; 128 * 1024], calloc) }; let stack_hp_buffer = unsafe { define_allocator_memory_pool!(48, HistogramPair, [0; 128 * 1024], calloc) }; let stack_ct_buffer = unsafe { define_allocator_memory_pool!(48, ContextType, [0; 128 * 1024], calloc) }; let stack_ht_buffer = unsafe { define_allocator_memory_pool!(48, HuffmanTree, [0; 128 * 1024], calloc) }; let stack_zn_buffer = unsafe { define_allocator_memory_pool!(48, ZopfliNode, [0; 1024], calloc) }; let stack_mc_buffer = unsafe { define_allocator_memory_pool!(48, Command, [0; 128 * 1024], calloc) }; let stack_pdf_buffer = unsafe { define_allocator_memory_pool!(48, PDF, [0; 1], calloc) }; let stack_sc_buffer = unsafe { define_allocator_memory_pool!(48, StaticCommand, [0; 100], calloc) }; let stack_u8_allocator = CallocatedFreelist4096::::new_allocator(stack_u8_buffer.data, bzero); let stack_u16_allocator = CallocatedFreelist4096::::new_allocator(stack_u16_buffer.data, bzero); let stack_i32_allocator = CallocatedFreelist1024::::new_allocator(stack_i32_buffer.data, bzero); let stack_u32_allocator = CallocatedFreelist4096::::new_allocator(stack_u32_buffer.data, bzero); let stack_u64_allocator = CallocatedFreelist1024::::new_allocator(stack_u64_buffer.data, bzero); let stack_zn_allocator = CallocatedFreelist1024::::new_allocator(stack_zn_buffer.data, bzero); let mf64 = CallocatedFreelist2048::::new_allocator(stack_f64_buffer.data, bzero); let mpdf = CallocatedFreelist2048::::new_allocator(stack_pdf_buffer.data, bzero); let msc = CallocatedFreelist2048::::new_allocator(stack_sc_buffer.data, bzero); let stack_mc_allocator = CallocatedFreelist2048::::new_allocator(stack_mc_buffer.data, bzero); let mhl = CallocatedFreelist2048::::new_allocator(stack_hl_buffer.data, bzero); let mhc = CallocatedFreelist2048::::new_allocator(stack_hc_buffer.data, bzero); let mhd = CallocatedFreelist2048::::new_allocator(stack_hd_buffer.data, bzero); let mhp = CallocatedFreelist2048::::new_allocator(stack_hp_buffer.data, bzero); let mct = CallocatedFreelist2048::::new_allocator(stack_ct_buffer.data, bzero); let mht = CallocatedFreelist2048::::new_allocator(stack_ht_buffer.data, bzero); let mut s_orig = BrotliEncoderStateStruct::new(CombiningAllocator::new( stack_u8_allocator, stack_u16_allocator, stack_i32_allocator, stack_u32_allocator, stack_u64_allocator, stack_mc_allocator, mf64, mf8, m16x16, mpdf, msc, mhl, mhc, mhd, mhp, mct, mht, stack_zn_allocator, )); let mut next_in_offset: usize = 0; let mut next_out_offset: usize = 0; { let s = &mut s_orig; s.set_parameter(BrotliEncoderParameter::BROTLI_PARAM_QUALITY, quality); if magic { s.set_parameter( BrotliEncoderParameter::BROTLI_PARAM_MAGIC_NUMBER, magic as u32, ); } if quality >= 10 { s.set_parameter(BrotliEncoderParameter::BROTLI_PARAM_Q9_5, 1); } s.set_parameter(BrotliEncoderParameter::BROTLI_PARAM_LGWIN, lgwin); s.set_parameter(BrotliEncoderParameter::BROTLI_PARAM_MODE, 0); // gen, text, font s.set_parameter( BrotliEncoderParameter::BROTLI_PARAM_SIZE_HINT, input.len() as u32, ); loop { let mut available_in: usize = min(input.len() - next_in_offset, in_batch_size); let mut available_out: usize = min(output.len() - next_out_offset, out_batch_size); if available_out == 0 { panic!("No output buffer space"); } let mut total_out = Some(0); let op: BrotliEncoderOperation; if available_in == input.len() - next_in_offset { op = BrotliEncoderOperation::BROTLI_OPERATION_FINISH; } else { op = BrotliEncoderOperation::BROTLI_OPERATION_PROCESS; } let mut nop_callback = |_data: &mut interface::PredictionModeContextMap, _cmds: &mut [interface::StaticCommand], _mb: interface::InputPair, _mfv: &mut CombiningAllocator< _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, >| (); let result = s.compress_stream( op, &mut available_in, input, &mut next_in_offset, &mut available_out, output, &mut next_out_offset, &mut total_out, &mut nop_callback, ); if !result { return (result, next_out_offset); } if s.is_finished() { break; } } } (true, next_out_offset) } fn oneshot_decompress(compressed: &[u8], output: &mut [u8]) -> (BrotliResult, usize, usize) { let mut available_in: usize = compressed.len(); let mut available_out: usize = output.len(); let mut stack_u8_buffer = define_allocator_memory_pool!(128, u8, [0; 100 * 1024], stack); let mut stack_u32_buffer = define_allocator_memory_pool!(128, u32, [0; 36 * 1024], stack); let mut stack_hc_buffer = define_allocator_memory_pool!( 128, HuffmanCode, [HuffmanCode::default(); 116 * 1024], stack ); let stack_u8_allocator = MemPool::::new_allocator(&mut stack_u8_buffer, bzero); let stack_u32_allocator = MemPool::::new_allocator(&mut stack_u32_buffer, bzero); let stack_hc_allocator = MemPool::::new_allocator(&mut stack_hc_buffer, bzero); let mut input_offset: usize = 0; let mut output_offset: usize = 0; let mut written: usize = 0; let mut brotli_state = BrotliState::new(stack_u8_allocator, stack_u32_allocator, stack_hc_allocator); let result = BrotliDecompressStream( &mut available_in, &mut input_offset, compressed, &mut available_out, &mut output_offset, output, &mut written, &mut brotli_state, ); (result, input_offset, output_offset) } fn oneshot( input: &[u8], compressed: &mut [u8], output: &mut [u8], q: u32, lg: u32, magic: bool, in_buffer_size: usize, out_buffer_size: usize, ) -> (BrotliResult, usize, usize) { let (success, mut available_in) = oneshot_compress( input, compressed, q, lg, magic, in_buffer_size, out_buffer_size, ); if !success { //return (BrotliResult::ResultFailure, 0, 0); available_in = compressed.len(); } oneshot_decompress(&mut compressed[..available_in], output) } #[test] fn test_roundtrip_10x10y() { const BUFFER_SIZE: usize = 128; let mut compressed: [u8; 13] = [0; 13]; let mut output = [0u8; BUFFER_SIZE]; let mut input = [ 'x' as u8, 'x' as u8, 'x' as u8, 'x' as u8, 'x' as u8, 'x' as u8, 'x' as u8, 'x' as u8, 'x' as u8, 'x' as u8, 'y' as u8, 'y' as u8, 'y' as u8, 'y' as u8, 'y' as u8, 'y' as u8, 'y' as u8, 'y' as u8, 'y' as u8, 'y' as u8, ]; let (result, compressed_offset, output_offset) = oneshot( &mut input[..], &mut compressed, &mut output[..], 9, 10, false, 1, 1, ); match result { BrotliResult::ResultSuccess => {} _ => assert!(false), } let mut i: usize = 0; while i < 10 { assert_eq!(output[i], 'x' as u8); assert_eq!(output[i + 10], 'y' as u8); i += 1; } assert_eq!(output_offset, 20); assert_eq!(compressed_offset, compressed.len()); } macro_rules! test_roundtrip_file { ($filedata : expr, $bufsize: expr, $quality: expr, $lgwin: expr, $magic: expr, $in_buf:expr, $out_buf:expr) => {{ let stack_u8_buffer = unsafe { define_allocator_memory_pool!(4096, u8, [0; 18 * 1024 * 1024], calloc) }; let mut stack_u8_allocator = CallocatedFreelist4096::::new_allocator(stack_u8_buffer.data, bzero); let mut compressed = stack_u8_allocator.alloc_cell($bufsize); let inp = $filedata; let mut output = stack_u8_allocator.alloc_cell(inp.len() + 16); let (result, compressed_offset, output_offset) = oneshot( &inp[..], compressed.slice_mut(), output.slice_mut(), $quality, $lgwin, $magic, $in_buf, $out_buf, ); match result { BrotliResult::ResultSuccess => {} _ => assert!(false), } for i in 0..inp.len() { if inp[i] != output[i] { assert_eq!((i, inp[i]), (i, output[i])); } assert_eq!(inp[i], output[i]); } assert!(compressed_offset <= compressed.slice().len()); assert_eq!(output_offset, inp.len()); stack_u8_allocator.free_cell(output); stack_u8_allocator.free_cell(compressed); }}; } #[test] fn test_roundtrip_64x() { test_roundtrip_file!(include_bytes!("../../testdata/64x"), 72, 9, 10, false, 3, 2); } #[test] fn test_roundtrip_ukkonooa() { test_roundtrip_file!( include_bytes!("../../testdata/ukkonooa"), 82, 9, 10, true, 3, 2 ); } #[test] fn test_roundtrip_backward65536() { test_roundtrip_file!( include_bytes!("../../testdata/backward65536"), 72000, 9, 10, false, 3, 2 ); } #[test] fn test_roundtrip_aaabaaaa() { test_roundtrip_file!( include_bytes!("../../testdata/aaabaaaa"), 72000, 9, 10, true, 3, 2 ); } #[test] fn test_roundtrip_monkey() { test_roundtrip_file!( include_bytes!("../../testdata/monkey"), 72000, 9, 10, false, 16, 15 ); } #[test] fn test_roundtrip_quickfox_repeated() { test_roundtrip_file!( include_bytes!("../../testdata/quickfox_repeated"), 16384, 9, 10, true, 257, 255 ); } #[test] fn test_roundtrip_asyoulik() { test_roundtrip_file!( include_bytes!("../../testdata/asyoulik.txt"), 64384, 9, 15, false, 513, 511 ); } #[test] fn test_roundtrip_asyoulik9_5() { test_roundtrip_file!( include_bytes!("../../testdata/asyoulik.txt"), 62384, 10, 15, true, 513, 511 ); } #[test] fn test_roundtrip_compressed() { test_roundtrip_file!( include_bytes!("../../testdata/compressed_file"), 50400, 9, 10, false, 1025, 1024 ); } #[test] fn test_roundtrip_compressed_repeated() { test_roundtrip_file!( include_bytes!("../../testdata/compressed_repeated"), 120000, 9, 16, false, 2049, 2047 ); } #[test] fn test_roundtrip_first_58_bytes_alice() { test_roundtrip_file!( &include_bytes!("../../testdata/alice29.txt")[..58], 50400, 2, 10, true, 1, 2 ); } #[test] fn test_roundtrip_first_2_bytes_alice() { test_roundtrip_file!( &include_bytes!("../../testdata/alice29.txt")[..2], 50400, 2, 10, true, 1, 2 ); } #[test] fn test_roundtrip_quickfox() { test_roundtrip_file!( include_bytes!("../../testdata/quickfox"), 256, 9, 10, false, 1, 2 ); } #[test] fn test_roundtrip_x() { const BUFFER_SIZE: usize = 16384; let mut compressed: [u8; 6] = [0x0b, 0x00, 0x80, 0x58, 0x03, 0]; let mut output = [0u8; BUFFER_SIZE]; let mut input = ['X' as u8]; let (result, compressed_offset, output_offset) = oneshot( &mut input[..], &mut compressed[..], &mut output[..], 9, 10, false, 1, 2, ); match result { BrotliResult::ResultSuccess => {} _ => assert!(false), } assert_eq!(output[0], 'X' as u8); assert_eq!(output_offset, 1); assert_eq!(compressed_offset, compressed.len()); } #[test] fn test_roundtrip_empty() { let mut compressed: [u8; 2] = [0x06, 0]; let mut output = [0u8; 1]; let (result, compressed_offset, output_offset) = oneshot( &mut [], &mut compressed[..], &mut output[..], 9, 10, false, 2, 3, ); match result { BrotliResult::ResultSuccess => {} _ => assert!(false), } assert_eq!(output_offset, 0); assert_eq!(compressed_offset, compressed.len()); } /* #[cfg(feature="std")] struct Buffer { data: Vec, read_offset: usize, } #[cfg(feature="std")] impl Buffer { pub fn new(buf: &[u8]) -> Buffer { let mut ret = Buffer { data: Vec::::new(), read_offset: 0, }; ret.data.extend(buf); return ret; } } #[cfg(feature="std")] impl io::Read for Buffer { fn read(self: &mut Self, buf: &mut [u8]) -> io::Result { let bytes_to_read = min(buf.len(), self.data.len() - self.read_offset); if bytes_to_read > 0 { buf[0..bytes_to_read] .clone_from_slice(&self.data[self.read_offset..self.read_offset + bytes_to_read]); } self.read_offset += bytes_to_read; return Ok(bytes_to_read); } } #[cfg(feature="std")] impl io::Write for Buffer { fn write(self: &mut Self, buf: &[u8]) -> io::Result { self.data.extend(buf); return Ok(buf.len()); } fn flush(self: &mut Self) -> io::Result<()> { return Ok(()); } } */ brotli-6.0.0/src/enc/threading.rs000064400000000000000000000520221046102023000147720ustar 00000000000000use super::backward_references::{AnyHasher, BrotliEncoderParams, CloneWithAlloc, UnionHasher}; use super::encode::{ BrotliEncoderDestroyInstance, BrotliEncoderMaxCompressedSize, BrotliEncoderOperation, HasherSetup, SanitizeParams, }; use super::BrotliAlloc; use alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use concat::{BroCatli, BroCatliResult}; use core::any; use core::marker::PhantomData; use core::mem; use core::ops::Range; use enc::encode::BrotliEncoderStateStruct; pub type PoisonedThreadError = (); #[cfg(feature = "std")] pub type LowLevelThreadError = std::boxed::Box; #[cfg(not(feature = "std"))] pub type LowLevelThreadError = (); pub trait AnyBoxConstructor { fn new(data: LowLevelThreadError) -> Self; } pub trait Joinable: Sized { fn join(self) -> Result; } #[derive(Debug)] pub enum BrotliEncoderThreadError { InsufficientOutputSpace, ConcatenationDidNotProcessFullFile, ConcatenationError(BroCatliResult), ConcatenationFinalizationError(BroCatliResult), OtherThreadPanic, ThreadExecError(LowLevelThreadError), } impl AnyBoxConstructor for BrotliEncoderThreadError { fn new(data: LowLevelThreadError) -> Self { BrotliEncoderThreadError::ThreadExecError(data) } } pub struct CompressedFileChunk where >::AllocatedMemory: Send, { data_backing: >::AllocatedMemory, data_size: usize, } pub struct CompressionThreadResult where >::AllocatedMemory: Send, { compressed: Result, BrotliEncoderThreadError>, alloc: Alloc, } pub enum InternalSendAlloc< ReturnVal: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, Join: Joinable, > where >::AllocatedMemory: Send, { A(Alloc, ExtraInput), Join(Join), SpawningOrJoining(PhantomData), } impl< ReturnVal: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, Join: Joinable, > InternalSendAlloc where >::AllocatedMemory: Send, { fn unwrap_input(&mut self) -> (&mut Alloc, &mut ExtraInput) { match *self { InternalSendAlloc::A(ref mut alloc, ref mut extra) => (alloc, extra), _ => panic!("Bad state for allocator"), } } } pub struct SendAlloc< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, Join: Joinable, >(pub InternalSendAlloc) //FIXME pub where >::AllocatedMemory: Send; impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, Join: Joinable, > SendAlloc where >::AllocatedMemory: Send, { pub fn new(alloc: Alloc, extra_input: ExtraInput) -> Self { SendAlloc::(InternalSendAlloc::A(alloc, extra_input)) } pub fn unwrap_or(self, other: Alloc, other_extra: ExtraInput) -> (Alloc, ExtraInput) { match self.0 { InternalSendAlloc::A(alloc, extra_input) => (alloc, extra_input), InternalSendAlloc::SpawningOrJoining(_) | InternalSendAlloc::Join(_) => { (other, other_extra) } } } fn unwrap_view_mut(&mut self) -> (&mut Alloc, &mut ExtraInput) { match self.0 { InternalSendAlloc::A(ref mut alloc, ref mut extra_input) => (alloc, extra_input), InternalSendAlloc::SpawningOrJoining(_) | InternalSendAlloc::Join(_) => { panic!("Item permanently borrowed/leaked") } } } pub fn unwrap(self) -> (Alloc, ExtraInput) { match self.0 { InternalSendAlloc::A(alloc, extra_input) => (alloc, extra_input), InternalSendAlloc::SpawningOrJoining(_) | InternalSendAlloc::Join(_) => { panic!("Item permanently borrowed/leaked") } } } pub fn replace_with_default(&mut self) -> (Alloc, ExtraInput) { match mem::replace( &mut self.0, InternalSendAlloc::SpawningOrJoining(PhantomData), ) { InternalSendAlloc::A(alloc, extra_input) => (alloc, extra_input), InternalSendAlloc::SpawningOrJoining(_) | InternalSendAlloc::Join(_) => { panic!("Item permanently borrowed/leaked") } } } } pub enum InternalOwned { // FIXME pub Item(T), Borrowed, } pub struct Owned(pub InternalOwned); // FIXME pub impl Owned { pub fn new(data: T) -> Self { Owned::(InternalOwned::Item(data)) } pub fn unwrap_or(self, other: T) -> T { if let InternalOwned::Item(x) = self.0 { x } else { other } } pub fn unwrap(self) -> T { if let InternalOwned::Item(x) = self.0 { x } else { panic!("Item permanently borrowed") } } pub fn view(&self) -> &T { if let InternalOwned::Item(ref x) = self.0 { x } else { panic!("Item permanently borrowed") } } } pub trait OwnedRetriever { fn view T>(&self, f: F) -> Result; fn unwrap(self) -> Result; } #[cfg(feature = "std")] impl OwnedRetriever for std::sync::Arc> { fn view T>(&self, f: F) -> Result { match self.read() { Ok(ref u) => Ok(f(u)), Err(_) => Err(PoisonedThreadError::default()), } } fn unwrap(self) -> Result { match std::sync::Arc::try_unwrap(self) { Ok(rwlock) => match rwlock.into_inner() { Ok(u) => Ok(u), Err(_) => Err(PoisonedThreadError::default()), }, Err(_) => Err(PoisonedThreadError::default()), } } } pub trait BatchSpawnable< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > where >::AllocatedMemory: Send + 'static, { type JoinHandle: Joinable; type FinalJoinHandle: OwnedRetriever; // this function takes in an input slice // a SendAlloc per thread and converts them all into JoinHandle // the input is borrowed until the joins complete // owned is set to borrowed // the final join handle is a r/w lock which will return the SliceW to the owner // the FinalJoinHandle is only to be called when each individual JoinHandle has been examined // the function is called with the thread_index, the num_threads, a reference to the slice under a read lock, // and an allocator from the alloc_per_thread fn make_spawner(&mut self, input: &mut Owned) -> Self::FinalJoinHandle; fn spawn ReturnValue + Send + 'static + Copy>( &mut self, handle: &mut Self::FinalJoinHandle, alloc: &mut SendAlloc, index: usize, num_threads: usize, f: F, ); } pub trait BatchSpawnableLite< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > where >::AllocatedMemory: Send + 'static, { type JoinHandle: Joinable; type FinalJoinHandle: OwnedRetriever; fn make_spawner(&mut self, input: &mut Owned) -> Self::FinalJoinHandle; fn spawn( &mut self, handle: &mut Self::FinalJoinHandle, alloc_per_thread: &mut SendAlloc, index: usize, num_threads: usize, f: fn(ExtraInput, usize, usize, &U, Alloc) -> ReturnValue, ); } /* impl BatchSpawnableLite for BatchSpawnable { type JoinHandle = >::JoinHandle; type FinalJoinHandle = >::FinalJoinHandle; fn batch_spawn( &mut self, input: &mut Owned, alloc_per_thread:&mut [SendAlloc], f: fn(usize, usize, &U, Alloc) -> T, ) -> Self::FinalJoinHandle { >::batch_spawn(self, input, alloc_per_thread, f) } }*/ pub fn CompressMultiSlice< Alloc: BrotliAlloc + Send + 'static, Spawner: BatchSpawnableLite< CompressionThreadResult, UnionHasher, Alloc, ( >::AllocatedMemory, BrotliEncoderParams, ), >, >( params: &BrotliEncoderParams, input_slice: &[u8], output: &mut [u8], alloc_per_thread: &mut [SendAlloc< CompressionThreadResult, UnionHasher, Alloc, Spawner::JoinHandle, >], thread_spawner: &mut Spawner, ) -> Result where >::AllocatedMemory: Send + Sync, >::AllocatedMemory: Send + Sync, >::AllocatedMemory: Send + Sync, { let input = if let InternalSendAlloc::A(ref mut alloc, ref _extra) = alloc_per_thread[0].0 { let mut input = >::alloc_cell(alloc, input_slice.len()); input.slice_mut().clone_from_slice(input_slice); input } else { >::AllocatedMemory::default() }; let mut owned_input = Owned::new(input); let ret = CompressMulti( params, &mut owned_input, output, alloc_per_thread, thread_spawner, ); if let InternalSendAlloc::A(ref mut alloc, ref _extra) = alloc_per_thread[0].0 { >::free_cell(alloc, owned_input.unwrap()); } ret } fn get_range(thread_index: usize, num_threads: usize, file_size: usize) -> Range { ((thread_index * file_size) / num_threads)..(((thread_index + 1) * file_size) / num_threads) } fn compress_part>( hasher: UnionHasher, thread_index: usize, num_threads: usize, input_and_params: &(SliceW, BrotliEncoderParams), mut alloc: Alloc, ) -> CompressionThreadResult where >::AllocatedMemory: Send + 'static, { let mut range = get_range(thread_index, num_threads, input_and_params.0.len()); let mut mem = >::alloc_cell( &mut alloc, BrotliEncoderMaxCompressedSize(range.end - range.start), ); let mut state = BrotliEncoderStateStruct::new(alloc); state.params = input_and_params.1.clone(); if thread_index != 0 { state.params.catable = true; // make sure we can concatenate this to the other work results state.params.magic_number = false; // no reason to pepper this around } state.params.appendable = true; // make sure we are at least appendable, so that future items can be catted in if thread_index != 0 { state.set_custom_dictionary_with_optional_precomputed_hasher( range.start, &input_and_params.0.slice()[..range.start], hasher, ); } let mut out_offset = 0usize; let compression_result; let mut available_out = mem.len(); loop { let mut next_in_offset = 0usize; let mut available_in = range.end - range.start; let result = state.compress_stream( BrotliEncoderOperation::BROTLI_OPERATION_FINISH, &mut available_in, &input_and_params.0.slice()[range.clone()], &mut next_in_offset, &mut available_out, mem.slice_mut(), &mut out_offset, &mut None, &mut |_a, _b, _c, _d| (), ); let new_range = range.start + next_in_offset..range.end; range = new_range; if result { compression_result = Ok(out_offset); break; } else if available_out == 0 { compression_result = Err(BrotliEncoderThreadError::InsufficientOutputSpace); // mark no space?? break; } } BrotliEncoderDestroyInstance(&mut state); match compression_result { Ok(size) => CompressionThreadResult:: { compressed: Ok(CompressedFileChunk { data_backing: mem, data_size: size, }), alloc: state.m8, }, Err(e) => { >::free_cell(&mut state.m8, mem); CompressionThreadResult:: { compressed: Err(e), alloc: state.m8, } } } } pub fn CompressMulti< Alloc: BrotliAlloc + Send + 'static, SliceW: SliceWrapper + Send + 'static + Sync, Spawner: BatchSpawnableLite< CompressionThreadResult, UnionHasher, Alloc, (SliceW, BrotliEncoderParams), >, >( params: &BrotliEncoderParams, owned_input: &mut Owned, output: &mut [u8], alloc_per_thread: &mut [SendAlloc< CompressionThreadResult, UnionHasher, Alloc, Spawner::JoinHandle, >], thread_spawner: &mut Spawner, ) -> Result where >::AllocatedMemory: Send, >::AllocatedMemory: Send, >::AllocatedMemory: Send, { let num_threads = alloc_per_thread.len(); let actually_owned_mem = mem::replace(owned_input, Owned(InternalOwned::Borrowed)); let mut owned_input_pair = Owned::new((actually_owned_mem.unwrap(), params.clone())); // start thread spawner let mut spawner_and_input = thread_spawner.make_spawner(&mut owned_input_pair); if num_threads > 1 { // spawn first thread without "custom dictionary" while we compute the custom dictionary for other work items thread_spawner.spawn( &mut spawner_and_input, &mut alloc_per_thread[0], 0, num_threads, compress_part, ); } // populate all hashers at once, cloning them one by one let mut compression_last_thread_result; if num_threads > 1 && params.favor_cpu_efficiency { let mut local_params = params.clone(); SanitizeParams(&mut local_params); let mut hasher = UnionHasher::Uninit; HasherSetup( alloc_per_thread[num_threads - 1].0.unwrap_input().0, &mut hasher, &mut local_params, &[], 0, 0, 0, ); for thread_index in 1..num_threads { let res = spawner_and_input.view(|input_and_params: &(SliceW, BrotliEncoderParams)| { let range = get_range(thread_index - 1, num_threads, input_and_params.0.len()); let overlap = hasher.StoreLookahead().wrapping_sub(1); if range.end - range.start > overlap { hasher.BulkStoreRange( input_and_params.0.slice(), !(0), if range.start > overlap { range.start - overlap } else { 0 }, range.end - overlap, ); } }); if let Err(_e) = res { return Err(BrotliEncoderThreadError::OtherThreadPanic); } if thread_index + 1 != num_threads { { let (alloc, out_hasher) = alloc_per_thread[thread_index].unwrap_view_mut(); *out_hasher = hasher.clone_with_alloc(alloc); } thread_spawner.spawn( &mut spawner_and_input, &mut alloc_per_thread[thread_index], thread_index, num_threads, compress_part, ); } } let (alloc, _extra) = alloc_per_thread[num_threads - 1].replace_with_default(); compression_last_thread_result = spawner_and_input.view(move |input_and_params:&(SliceW, BrotliEncoderParams)| -> CompressionThreadResult { compress_part(hasher, num_threads - 1, num_threads, input_and_params, alloc, ) }); } else { if num_threads > 1 { for thread_index in 1..num_threads - 1 { thread_spawner.spawn( &mut spawner_and_input, &mut alloc_per_thread[thread_index], thread_index, num_threads, compress_part, ); } } let (alloc, _extra) = alloc_per_thread[num_threads - 1].replace_with_default(); compression_last_thread_result = spawner_and_input.view(move |input_and_params:&(SliceW, BrotliEncoderParams)| -> CompressionThreadResult { compress_part(UnionHasher::Uninit, num_threads - 1, num_threads, input_and_params, alloc, ) }); } let mut compression_result = Err(BrotliEncoderThreadError::InsufficientOutputSpace); let mut out_file_size = 0usize; let mut bro_cat_li = BroCatli::new(); for (index, thread) in alloc_per_thread.iter_mut().enumerate() { let mut cur_result = if index + 1 == num_threads { match mem::replace(&mut compression_last_thread_result, Err(())) { Ok(result) => result, Err(_err) => return Err(BrotliEncoderThreadError::OtherThreadPanic), } } else { match mem::replace( &mut thread.0, InternalSendAlloc::SpawningOrJoining(PhantomData), ) { InternalSendAlloc::A(_, _) | InternalSendAlloc::SpawningOrJoining(_) => { panic!("Thread not properly spawned") } InternalSendAlloc::Join(join) => match join.join() { Ok(result) => result, Err(err) => { return Err(err); } }, } }; match cur_result.compressed { Ok(compressed_out) => { bro_cat_li.new_brotli_file(); let mut in_offset = 0usize; let cat_result = bro_cat_li.stream( &compressed_out.data_backing.slice()[..compressed_out.data_size], &mut in_offset, output, &mut out_file_size, ); match cat_result { BroCatliResult::Success | BroCatliResult::NeedsMoreInput => { compression_result = Ok(out_file_size); } BroCatliResult::NeedsMoreOutput => { compression_result = Err(BrotliEncoderThreadError::InsufficientOutputSpace); // not enough space } err => { compression_result = Err(BrotliEncoderThreadError::ConcatenationError(err)); // misc error } } >::free_cell( &mut cur_result.alloc, compressed_out.data_backing, ); } Err(e) => { compression_result = Err(e); } } thread.0 = InternalSendAlloc::A(cur_result.alloc, UnionHasher::Uninit); } compression_result?; match bro_cat_li.finish(output, &mut out_file_size) { BroCatliResult::Success => compression_result = Ok(out_file_size), err => { compression_result = Err(BrotliEncoderThreadError::ConcatenationFinalizationError( err, )) } } if let Ok(retrieved_owned_input) = spawner_and_input.unwrap() { *owned_input = Owned::new(retrieved_owned_input.0); // return the input to its rightful owner before returning } else if compression_result.is_ok() { compression_result = Err(BrotliEncoderThreadError::OtherThreadPanic); } compression_result } brotli-6.0.0/src/enc/utf8_util.rs000075500000000000000000000044121046102023000147530ustar 00000000000000#![allow(dead_code)] static kMinUTF8Ratio: super::util::floatX = 0.75 as super::util::floatX; fn BrotliParseAsUTF8(symbol: &mut i32, input: &[u8], size: usize) -> usize { if input[0] & 0x80 == 0 { *symbol = input[0] as i32; if *symbol > 0i32 { return 1usize; } } if size > 1u32 as usize && (input[0] as i32 & 0xe0i32 == 0xc0i32) && (input[1] as i32 & 0xc0i32 == 0x80i32) { *symbol = (input[0] as i32 & 0x1fi32) << 6 | input[1] as i32 & 0x3fi32; if *symbol > 0x7fi32 { return 2usize; } } if size > 2u32 as usize && (input[0] as i32 & 0xf0i32 == 0xe0i32) && (input[1] as i32 & 0xc0i32 == 0x80i32) && (input[2] as i32 & 0xc0i32 == 0x80i32) { *symbol = (input[0] as i32 & 0xfi32) << 12 | (input[1] as i32 & 0x3fi32) << 6 | input[2] as i32 & 0x3fi32; if *symbol > 0x7ffi32 { return 3usize; } } if size > 3u32 as usize && (input[0] as i32 & 0xf8i32 == 0xf0i32) && (input[1] as i32 & 0xc0i32 == 0x80i32) && (input[2] as i32 & 0xc0i32 == 0x80i32) && (input[3] as i32 & 0xc0i32 == 0x80i32) { *symbol = (input[0] as i32 & 0x7i32) << 18 | (input[1] as i32 & 0x3fi32) << 12 | (input[2] as i32 & 0x3fi32) << 6 | input[3] as i32 & 0x3fi32; if *symbol > 0xffffi32 && (*symbol <= 0x10ffffi32) { return 4usize; } } *symbol = 0x110000i32 | input[0] as i32; 1usize } pub fn BrotliIsMostlyUTF8( data: &[u8], pos: usize, mask: usize, length: usize, min_fraction: super::util::floatX, ) -> i32 { let mut size_utf8: usize = 0usize; let mut i: usize = 0usize; while i < length { let mut symbol: i32 = 0; let bytes_read: usize = BrotliParseAsUTF8( &mut symbol, &data[(pos.wrapping_add(i) & mask)..], length.wrapping_sub(i), ); i = i.wrapping_add(bytes_read); if symbol < 0x110000i32 { size_utf8 = size_utf8.wrapping_add(bytes_read); } } if size_utf8 as (super::util::floatX) > min_fraction * length as (super::util::floatX) { 1i32 } else { 0i32 } } brotli-6.0.0/src/enc/util.rs000075500000000000000000046067631046102023000140320ustar 00000000000000#![allow(dead_code)] #![allow(clippy::excessive_precision)] #[cfg(feature = "float64")] pub type floatX = f64; #[cfg(not(feature = "float64"))] pub type floatX = f32; static kLog2Table: [f32; 256] = [ 0.0000000000000000, 0.0000000000000000, 1.0000000000000000, 1.5849625007211563, 2.0000000000000000, 2.3219280948873622, 2.5849625007211561, 2.8073549220576042, 3.0000000000000000, 3.1699250014423126, 3.3219280948873626, 3.4594316186372978, 3.5849625007211565, 3.7004397181410922, 3.8073549220576037, 3.9068905956085187, 4.0000000000000000, 4.0874628412503400, 4.1699250014423122, 4.2479275134435852, 4.3219280948873626, 4.3923174227787607, 4.4594316186372973, 4.5235619560570131, 4.5849625007211570, 4.6438561897747244, 4.7004397181410926, 4.7548875021634691, 4.8073549220576037, 4.8579809951275728, 4.9068905956085187, 4.9541963103868758, 5.0000000000000000, 5.0443941193584534, 5.0874628412503400, 5.1292830169449664, 5.1699250014423122, 5.2094533656289501, 5.2479275134435852, 5.2854022188622487, 5.3219280948873626, 5.3575520046180838, 5.3923174227787607, 5.4262647547020979, 5.4594316186372973, 5.4918530963296748, 5.5235619560570131, 5.5545888516776376, 5.5849625007211570, 5.6147098441152083, 5.6438561897747244, 5.6724253419714961, 5.7004397181410926, 5.7279204545631996, 5.7548875021634691, 5.7813597135246599, 5.8073549220576046, 5.8328900141647422, 5.8579809951275719, 5.8826430493618416, 5.9068905956085187, 5.9307373375628867, 5.9541963103868758, 5.9772799234999168, 6.0000000000000000, 6.0223678130284544, 6.0443941193584534, 6.0660891904577721, 6.0874628412503400, 6.1085244567781700, 6.1292830169449672, 6.1497471195046822, 6.1699250014423122, 6.1898245588800176, 6.2094533656289510, 6.2288186904958804, 6.2479275134435861, 6.2667865406949019, 6.2854022188622487, 6.3037807481771031, 6.3219280948873617, 6.3398500028846252, 6.3575520046180847, 6.3750394313469254, 6.3923174227787598, 6.4093909361377026, 6.4262647547020979, 6.4429434958487288, 6.4594316186372982, 6.4757334309663976, 6.4918530963296748, 6.5077946401986964, 6.5235619560570131, 6.5391588111080319, 6.5545888516776376, 6.5698556083309478, 6.5849625007211561, 6.5999128421871278, 6.6147098441152092, 6.6293566200796095, 6.6438561897747253, 6.6582114827517955, 6.6724253419714952, 6.6865005271832185, 6.7004397181410917, 6.7142455176661224, 6.7279204545631988, 6.7414669864011465, 6.7548875021634691, 6.7681843247769260, 6.7813597135246599, 6.7944158663501062, 6.8073549220576037, 6.8201789624151887, 6.8328900141647422, 6.8454900509443757, 6.8579809951275719, 6.8703647195834048, 6.8826430493618416, 6.8948177633079437, 6.9068905956085187, 6.9188632372745955, 6.9307373375628867, 6.9425145053392399, 6.9541963103868758, 6.9657842846620879, 6.9772799234999168, 6.9886846867721664, 7.0000000000000000, 7.0112272554232540, 7.0223678130284544, 7.0334230015374501, 7.0443941193584534, 7.0552824355011898, 7.0660891904577721, 7.0768155970508317, 7.0874628412503400, 7.0980320829605272, 7.1085244567781700, 7.1189410727235076, 7.1292830169449664, 7.1395513523987937, 7.1497471195046822, 7.1598713367783891, 7.1699250014423130, 7.1799090900149345, 7.1898245588800176, 7.1996723448363644, 7.2094533656289492, 7.2191685204621621, 7.2288186904958804, 7.2384047393250794, 7.2479275134435861, 7.2573878426926521, 7.2667865406949019, 7.2761244052742384, 7.2854022188622487, 7.2946207488916270, 7.3037807481771031, 7.3128829552843557, 7.3219280948873617, 7.3309168781146177, 7.3398500028846243, 7.3487281542310781, 7.3575520046180847, 7.3663222142458151, 7.3750394313469254, 7.3837042924740528, 7.3923174227787607, 7.4008794362821844, 7.4093909361377026, 7.4178525148858991, 7.4262647547020979, 7.4346282276367255, 7.4429434958487288, 7.4512111118323299, 7.4594316186372973, 7.4676055500829976, 7.4757334309663976, 7.4838157772642564, 7.4918530963296748, 7.4998458870832057, 7.5077946401986964, 7.5156998382840436, 7.5235619560570131, 7.5313814605163119, 7.5391588111080319, 7.5468944598876373, 7.5545888516776376, 7.5622424242210728, 7.5698556083309478, 7.5774288280357487, 7.5849625007211561, 7.5924570372680806, 7.5999128421871278, 7.6073303137496113, 7.6147098441152075, 7.6220518194563764, 7.6293566200796095, 7.6366246205436488, 7.6438561897747244, 7.6510516911789290, 7.6582114827517955, 7.6653359171851765, 7.6724253419714952, 7.6794800995054464, 7.6865005271832185, 7.6934869574993252, 7.7004397181410926, 7.7073591320808825, 7.7142455176661224, 7.7210991887071856, 7.7279204545631996, 7.7347096202258392, 7.7414669864011465, 7.7481928495894596, 7.7548875021634691, 7.7615512324444795, 7.7681843247769260, 7.7747870596011737, 7.7813597135246608, 7.7879025593914317, 7.7944158663501062, 7.8008998999203047, 7.8073549220576037, 7.8137811912170374, 7.8201789624151887, 7.8265484872909159, 7.8328900141647422, 7.8392037880969445, 7.8454900509443757, 7.8517490414160571, 7.8579809951275719, 7.8641861446542798, 7.8703647195834048, 7.8765169465650002, 7.8826430493618425, 7.8887432488982601, 7.8948177633079446, 7.9008668079807496, 7.9068905956085187, 7.9128893362299619, 7.9188632372745955, 7.9248125036057813, 7.9307373375628867, 7.9366379390025719, 7.9425145053392399, 7.9483672315846778, 7.9541963103868758, 7.9600019320680806, 7.9657842846620870, 7.9715435539507720, 7.9772799234999168, 7.9829935746943104, 7.9886846867721664, 7.9943534368588578, ]; #[inline(always)] pub fn FastLog2u16(v: u16) -> floatX { log64k[v as usize] } #[cfg(feature = "std")] #[inline(always)] pub fn FastLog2(v: u64) -> floatX { if v < 256 { return kLog2Table[v as usize] as floatX; } (v as f32).log2() as floatX } #[cfg(not(feature = "std"))] #[inline(always)] pub fn FastLog2(v: u64) -> floatX { if v < 256 { return kLog2Table[v as usize] as floatX; } FastLog2u64(v) } #[cfg(feature = "std")] #[inline(always)] pub fn FastLog2f64(v: u64) -> floatX { if v < 256 { return kLog2Table[v as usize] as floatX; } (v as floatX).log2() } #[cfg(not(feature = "std"))] #[inline(always)] pub fn FastLog2f64(v: u64) -> floatX { FastLog2(v) as floatX } #[inline] pub fn FastLog2u64(v: u64) -> floatX { let bsr_8 = 56i8 - v.leading_zeros() as i8; let offset = bsr_8 & -((bsr_8 >= 0) as i8); offset as floatX + kLog2Table[(v >> offset) as u8 as usize] as (floatX) } #[inline(always)] pub fn FastLog2u32(v: i32) -> floatX { let bsr_8 = 24i8 - v.leading_zeros() as i8; let offset = bsr_8 & -((bsr_8 >= 0) as i8); offset as floatX + kLog2Table[(v >> offset) as u8 as usize] as (floatX) } #[inline(always)] pub fn xFastLog2u16(v: u16) -> floatX { let bsr_8 = 8i8 - v.leading_zeros() as i8; let offset = (bsr_8 & -((bsr_8 >= 0) as i8)); offset as floatX + kLog2Table[(v >> offset) as u8 as usize] as (floatX) } #[cfg(feature = "std")] #[inline(always)] pub fn FastPow2(v: super::util::floatX) -> super::util::floatX { (2 as super::util::floatX).powf(v) } #[cfg(not(feature = "std"))] #[inline(always)] pub fn FastPow2(v: super::util::floatX) -> super::util::floatX { assert!(v >= 0 as super::util::floatX); let round_down = v as i32; let remainder = v - round_down as super::util::floatX; let mut x = 1 as super::util::floatX; // (1 + (x/n) * ln2) ^ n // let n = 8 x += remainder * (0.693147180559945309417232121458 / 256.0) as super::util::floatX; x *= x; x *= x; x *= x; x *= x; x *= x; x *= x; x *= x; x *= x; return (1 << round_down) as super::util::floatX * x; } #[inline(always)] pub fn Log2FloorNonZero(v: u64) -> u32 { (63u32 ^ v.leading_zeros()) } mod test { fn baseline_log2_floor_non_zero(mut n: u64) -> u32 { let mut result: u32 = 0u32; while { n >>= 1i32; n } != 0 { result = result.wrapping_add(1); } result } #[test] fn log2floor_non_zero_works() { let examples = [ 4u64, 254, 256, 1428, 25412509, 21350891256, 65536, 1258912591, 60968101, 1, 12589125190825, 105912059215091, 0, ]; for example in examples.iter() { let fast_version = super::Log2FloorNonZero(*example); let baseline_version = baseline_log2_floor_non_zero(*example); if *example != 0 { // make sure we don't panic when computing...but don't care about result assert_eq!(fast_version, baseline_version); } } } pub fn approx_eq(a: f64, b: f64, tol: f64) { let mut t0 = a - b; let mut t1 = b - a; if t0 < 0.0 { t0 = -t0; } if t1 < 0.0 { t1 = -t1; } if (!(t1 < tol)) { assert_eq!(a, b); } if (!(t0 < tol)) { assert_eq!(a, b); } } #[test] fn fast_log2_works() { let examples = [ 4u64, 254, 256, 1428, 25412509, 21350891256, 65536, 1258912591, 60968101, 1, 12589125190825, 105912059215091, 0, ]; let tol = [ 0.00001, 0.0001, 0.0001, 0.005, 0.007, 0.008, 0.01, 0.01, 0.01, 0.000001, 0.01, 0.01, 0.0001, ]; for (index, example) in examples.iter().enumerate() { let fast_version = super::FastLog2(*example); if *example != 0 { // make sure we don't panic when computing...but don't care about result let baseline_version = (*example as f64).log2(); approx_eq(fast_version as f64, baseline_version, tol[index]); } else { //assert_eq!(fast_version as f64, 0.0 as f64); } } } } static log64k: [floatX; 65536] = [ 0.0, 0.0, 1.0, 1.58496250072, 2.0, 2.32192809489, 2.58496250072, 2.80735492206, 3.0, 3.16992500144, 3.32192809489, 3.45943161864, 3.58496250072, 3.70043971814, 3.80735492206, 3.90689059561, 4.0, 4.08746284125, 4.16992500144, 4.24792751344, 4.32192809489, 4.39231742278, 4.45943161864, 4.52356195606, 4.58496250072, 4.64385618977, 4.70043971814, 4.75488750216, 4.80735492206, 4.85798099513, 4.90689059561, 4.95419631039, 5.0, 5.04439411936, 5.08746284125, 5.12928301694, 5.16992500144, 5.20945336563, 5.24792751344, 5.28540221886, 5.32192809489, 5.35755200462, 5.39231742278, 5.4262647547, 5.45943161864, 5.49185309633, 5.52356195606, 5.55458885168, 5.58496250072, 5.61470984412, 5.64385618977, 5.67242534197, 5.70043971814, 5.72792045456, 5.75488750216, 5.78135971352, 5.80735492206, 5.83289001416, 5.85798099513, 5.88264304936, 5.90689059561, 5.93073733756, 5.95419631039, 5.9772799235, 6.0, 6.02236781303, 6.04439411936, 6.06608919046, 6.08746284125, 6.10852445678, 6.12928301694, 6.1497471195, 6.16992500144, 6.18982455888, 6.20945336563, 6.2288186905, 6.24792751344, 6.26678654069, 6.28540221886, 6.30378074818, 6.32192809489, 6.33985000288, 6.35755200462, 6.37503943135, 6.39231742278, 6.40939093614, 6.4262647547, 6.44294349585, 6.45943161864, 6.47573343097, 6.49185309633, 6.5077946402, 6.52356195606, 6.53915881111, 6.55458885168, 6.56985560833, 6.58496250072, 6.59991284219, 6.61470984412, 6.62935662008, 6.64385618977, 6.65821148275, 6.67242534197, 6.68650052718, 6.70043971814, 6.71424551767, 6.72792045456, 6.7414669864, 6.75488750216, 6.76818432478, 6.78135971352, 6.79441586635, 6.80735492206, 6.82017896242, 6.83289001416, 6.84549005094, 6.85798099513, 6.87036471958, 6.88264304936, 6.89481776331, 6.90689059561, 6.91886323727, 6.93073733756, 6.94251450534, 6.95419631039, 6.96578428466, 6.9772799235, 6.98868468677, 7.0, 7.01122725542, 7.02236781303, 7.03342300154, 7.04439411936, 7.0552824355, 7.06608919046, 7.07681559705, 7.08746284125, 7.09803208296, 7.10852445678, 7.11894107272, 7.12928301694, 7.1395513524, 7.1497471195, 7.15987133678, 7.16992500144, 7.17990909001, 7.18982455888, 7.19967234484, 7.20945336563, 7.21916852046, 7.2288186905, 7.23840473933, 7.24792751344, 7.25738784269, 7.26678654069, 7.27612440527, 7.28540221886, 7.29462074889, 7.30378074818, 7.31288295528, 7.32192809489, 7.33091687811, 7.33985000288, 7.34872815423, 7.35755200462, 7.36632221425, 7.37503943135, 7.38370429247, 7.39231742278, 7.40087943628, 7.40939093614, 7.41785251489, 7.4262647547, 7.43462822764, 7.44294349585, 7.45121111183, 7.45943161864, 7.46760555008, 7.47573343097, 7.48381577726, 7.49185309633, 7.49984588708, 7.5077946402, 7.51569983828, 7.52356195606, 7.53138146052, 7.53915881111, 7.54689445989, 7.55458885168, 7.56224242422, 7.56985560833, 7.57742882804, 7.58496250072, 7.59245703727, 7.59991284219, 7.60733031375, 7.61470984412, 7.62205181946, 7.62935662008, 7.63662462054, 7.64385618977, 7.65105169118, 7.65821148275, 7.66533591719, 7.67242534197, 7.67948009951, 7.68650052718, 7.6934869575, 7.70043971814, 7.70735913208, 7.71424551767, 7.72109918871, 7.72792045456, 7.73470962023, 7.7414669864, 7.74819284959, 7.75488750216, 7.76155123244, 7.76818432478, 7.7747870596, 7.78135971352, 7.78790255939, 7.79441586635, 7.80089989992, 7.80735492206, 7.81378119122, 7.82017896242, 7.82654848729, 7.83289001416, 7.8392037881, 7.84549005094, 7.85174904142, 7.85798099513, 7.86418614465, 7.87036471958, 7.87651694657, 7.88264304936, 7.8887432489, 7.89481776331, 7.90086680798, 7.90689059561, 7.91288933623, 7.91886323727, 7.92481250361, 7.93073733756, 7.936637939, 7.94251450534, 7.94836723158, 7.95419631039, 7.96000193207, 7.96578428466, 7.97154355395, 7.9772799235, 7.98299357469, 7.98868468677, 7.99435343686, 8.0, 8.00562454919, 8.01122725542, 8.01680828769, 8.02236781303, 8.02790599657, 8.03342300154, 8.03891898929, 8.04439411936, 8.04984854945, 8.0552824355, 8.06069593169, 8.06608919046, 8.07146236256, 8.07681559705, 8.08214904135, 8.08746284125, 8.09275714092, 8.09803208296, 8.10328780841, 8.10852445678, 8.11374216605, 8.11894107272, 8.12412131183, 8.12928301694, 8.13442632022, 8.1395513524, 8.14465824283, 8.1497471195, 8.15481810905, 8.15987133678, 8.16490692668, 8.16992500144, 8.1749256825, 8.17990909001, 8.18487534291, 8.18982455888, 8.19475685442, 8.19967234484, 8.20457114425, 8.20945336563, 8.2143191208, 8.21916852046, 8.2240016742, 8.2288186905, 8.23361967676, 8.23840473933, 8.24317398347, 8.24792751344, 8.25266543245, 8.25738784269, 8.26209484537, 8.26678654069, 8.2714630279, 8.27612440527, 8.28077077013, 8.28540221886, 8.29001884693, 8.29462074889, 8.29920801839, 8.30378074818, 8.30833903014, 8.31288295528, 8.31741261376, 8.32192809489, 8.32642948712, 8.33091687811, 8.33539035469, 8.33985000288, 8.34429590792, 8.34872815423, 8.3531468255, 8.35755200462, 8.36194377374, 8.36632221425, 8.37068740681, 8.37503943135, 8.37937836707, 8.38370429247, 8.38801728535, 8.39231742278, 8.39660478118, 8.40087943628, 8.40514146314, 8.40939093614, 8.41362792902, 8.41785251489, 8.42206476617, 8.4262647547, 8.43045255167, 8.43462822764, 8.43879185258, 8.44294349585, 8.44708322621, 8.45121111183, 8.4553272203, 8.45943161864, 8.46352437327, 8.46760555008, 8.47167521439, 8.47573343097, 8.47978026403, 8.48381577726, 8.48784003382, 8.49185309633, 8.49585502689, 8.49984588708, 8.503825738, 8.5077946402, 8.51175265377, 8.51569983828, 8.51963625284, 8.52356195606, 8.52747700606, 8.53138146052, 8.53527537662, 8.53915881111, 8.54303182026, 8.54689445989, 8.55074678538, 8.55458885168, 8.55842071327, 8.56224242422, 8.56605403817, 8.56985560833, 8.57364718749, 8.57742882804, 8.58120058192, 8.58496250072, 8.58871463558, 8.59245703727, 8.59618975614, 8.59991284219, 8.60362634499, 8.60733031375, 8.61102479731, 8.61470984412, 8.61838550226, 8.62205181946, 8.62570884306, 8.62935662008, 8.63299519714, 8.63662462054, 8.64024493622, 8.64385618977, 8.64745842645, 8.65105169118, 8.65463602853, 8.65821148275, 8.66177809777, 8.66533591719, 8.66888498427, 8.67242534197, 8.67595703294, 8.67948009951, 8.68299458368, 8.68650052718, 8.68999797142, 8.6934869575, 8.69696752623, 8.70043971814, 8.70390357344, 8.70735913208, 8.7108064337, 8.71424551767, 8.71767642307, 8.72109918871, 8.72451385312, 8.72792045456, 8.73131903103, 8.73470962023, 8.73809225962, 8.7414669864, 8.7448338375, 8.74819284959, 8.75154405909, 8.75488750216, 8.75822321473, 8.76155123244, 8.76487159074, 8.76818432478, 8.7714894695, 8.7747870596, 8.77807712954, 8.78135971352, 8.78463484556, 8.78790255939, 8.79116288856, 8.79441586635, 8.79766152585, 8.80089989992, 8.80413102118, 8.80735492206, 8.81057163474, 8.81378119122, 8.81698362326, 8.82017896242, 8.82336724005, 8.82654848729, 8.82972273509, 8.83289001416, 8.83605035506, 8.8392037881, 8.84235034341, 8.84549005094, 8.84862294043, 8.85174904142, 8.85486838326, 8.85798099513, 8.861086906, 8.86418614465, 8.86727873971, 8.87036471958, 8.87344411252, 8.87651694656, 8.87958324961, 8.88264304936, 8.88569637334, 8.8887432489, 8.89178370322, 8.89481776331, 8.89784545601, 8.90086680798, 8.90388184574, 8.90689059561, 8.90989308377, 8.91288933623, 8.91587937884, 8.91886323727, 8.92184093707, 8.92481250361, 8.92777796208, 8.93073733756, 8.93369065495, 8.936637939, 8.93957921431, 8.94251450534, 8.94544383638, 8.94836723158, 8.95128471497, 8.95419631039, 8.95710204156, 8.96000193207, 8.96289600534, 8.96578428466, 8.9686667932, 8.97154355395, 8.97441458981, 8.9772799235, 8.98013957764, 8.98299357469, 8.985841937, 8.98868468677, 8.99152184608, 8.99435343686, 8.99717948094, 9.0, 9.00281501561, 9.00562454919, 9.00842862207, 9.01122725542, 9.01402047031, 9.01680828769, 9.01959072836, 9.02236781303, 9.02513956228, 9.02790599657, 9.03066713625, 9.03342300154, 9.03617361255, 9.03891898929, 9.04165915164, 9.04439411936, 9.04712391211, 9.04984854945, 9.0525680508, 9.0552824355, 9.05799172276, 9.06069593169, 9.06339508129, 9.06608919046, 9.06877827799, 9.07146236256, 9.07414146275, 9.07681559705, 9.07948478383, 9.08214904135, 9.0848083878, 9.08746284125, 9.09011241966, 9.09275714092, 9.09539702279, 9.09803208296, 9.10066233901, 9.10328780841, 9.10590850857, 9.10852445678, 9.11113567023, 9.11374216605, 9.11634396124, 9.11894107272, 9.12153351734, 9.12412131183, 9.12670447284, 9.12928301694, 9.13185696061, 9.13442632022, 9.13699111208, 9.1395513524, 9.1421070573, 9.14465824283, 9.14720492494, 9.1497471195, 9.15228484231, 9.15481810905, 9.15734693536, 9.15987133678, 9.16239132876, 9.16490692668, 9.16741814583, 9.16992500144, 9.17242750865, 9.1749256825, 9.17741953799, 9.17990909001, 9.1823943534, 9.18487534291, 9.1873520732, 9.18982455888, 9.19229281447, 9.19475685442, 9.19721669311, 9.19967234484, 9.20212382383, 9.20457114425, 9.20701432018, 9.20945336563, 9.21188829455, 9.2143191208, 9.2167458582, 9.21916852046, 9.22158712126, 9.2240016742, 9.22641219279, 9.2288186905, 9.23122118071, 9.23361967676, 9.2360141919, 9.23840473933, 9.24079133216, 9.24317398347, 9.24555270626, 9.24792751344, 9.25029841791, 9.25266543245, 9.25502856982, 9.25738784269, 9.25974326369, 9.26209484537, 9.26444260023, 9.26678654069, 9.26912667915, 9.2714630279, 9.27379559921, 9.27612440527, 9.27844945822, 9.28077077013, 9.28308835302, 9.28540221886, 9.28771237955, 9.29001884693, 9.2923216328, 9.29462074889, 9.29691620688, 9.29920801839, 9.30149619498, 9.30378074818, 9.30606168943, 9.30833903014, 9.31061278166, 9.31288295528, 9.31514956226, 9.31741261376, 9.31967212095, 9.32192809489, 9.32418054662, 9.32642948712, 9.32867492733, 9.33091687811, 9.33315535031, 9.33539035469, 9.33762190199, 9.33985000288, 9.342074668, 9.34429590792, 9.34651373317, 9.34872815423, 9.35093918155, 9.3531468255, 9.35535109642, 9.35755200462, 9.35974956032, 9.36194377374, 9.36413465501, 9.36632221425, 9.36850646151, 9.37068740681, 9.37286506011, 9.37503943135, 9.37721053039, 9.37937836707, 9.38154295118, 9.38370429247, 9.38586240064, 9.38801728535, 9.3901689562, 9.39231742278, 9.39446269461, 9.39660478118, 9.39874369194, 9.40087943628, 9.40301202357, 9.40514146314, 9.40726776424, 9.40939093614, 9.41151098801, 9.41362792902, 9.41574176829, 9.41785251489, 9.41996017785, 9.42206476617, 9.42416628882, 9.4262647547, 9.4283601727, 9.43045255167, 9.43254190039, 9.43462822764, 9.43671154214, 9.43879185258, 9.44086916761, 9.44294349585, 9.44501484587, 9.44708322621, 9.44914864538, 9.45121111183, 9.45327063401, 9.4553272203, 9.45738087907, 9.45943161864, 9.46147944729, 9.46352437327, 9.46556640481, 9.46760555008, 9.46964181724, 9.47167521439, 9.47370574962, 9.47573343097, 9.47775826644, 9.47978026403, 9.48179943167, 9.48381577726, 9.4858293087, 9.48784003382, 9.48984796044, 9.49185309633, 9.49385544924, 9.49585502689, 9.49785183695, 9.49984588708, 9.5018371849, 9.503825738, 9.50581155392, 9.5077946402, 9.50977500433, 9.51175265377, 9.51372759595, 9.51569983828, 9.51766938813, 9.51963625284, 9.52160043972, 9.52356195606, 9.5255208091, 9.52747700606, 9.52943055415, 9.53138146052, 9.53332973231, 9.53527537662, 9.53721840054, 9.53915881111, 9.54109661535, 9.54303182026, 9.54496443279, 9.54689445989, 9.54882190846, 9.55074678538, 9.55266909751, 9.55458885168, 9.55650605467, 9.55842071327, 9.56033283421, 9.56224242422, 9.56414948999, 9.56605403817, 9.56795607542, 9.56985560833, 9.5717526435, 9.57364718749, 9.57553924683, 9.57742882804, 9.57931593758, 9.58120058192, 9.5830827675, 9.58496250072, 9.58683978796, 9.58871463558, 9.59058704992, 9.59245703727, 9.59432460392, 9.59618975614, 9.59805250016, 9.59991284219, 9.60177078841, 9.60362634499, 9.60547951806, 9.60733031375, 9.60917873814, 9.61102479731, 9.61286849729, 9.61470984412, 9.61654884378, 9.61838550226, 9.62021982551, 9.62205181946, 9.62388149001, 9.62570884306, 9.62753388447, 9.62935662008, 9.6311770557, 9.63299519714, 9.63481105017, 9.63662462054, 9.63843591399, 9.64024493622, 9.64205169293, 9.64385618977, 9.64565843241, 9.64745842645, 9.64925617752, 9.65105169118, 9.652844973, 9.65463602853, 9.65642486328, 9.65821148275, 9.65999589243, 9.66177809777, 9.66355810422, 9.66533591719, 9.66711154208, 9.66888498427, 9.67065624912, 9.67242534197, 9.67419226815, 9.67595703294, 9.67771964164, 9.67948009951, 9.68123841178, 9.68299458368, 9.68474862042, 9.68650052718, 9.68825030913, 9.68999797142, 9.69174351917, 9.6934869575, 9.6952282915, 9.69696752623, 9.69870466677, 9.70043971814, 9.70217268537, 9.70390357344, 9.70563238736, 9.70735913208, 9.70908381255, 9.7108064337, 9.71252700044, 9.71424551767, 9.71596199026, 9.71767642307, 9.71938882094, 9.72109918871, 9.72280753117, 9.72451385312, 9.72621815933, 9.72792045456, 9.72962074355, 9.73131903103, 9.73301532169, 9.73470962023, 9.73640193132, 9.73809225962, 9.73978060977, 9.7414669864, 9.74315139411, 9.7448338375, 9.74651432114, 9.74819284959, 9.7498694274, 9.75154405909, 9.75321674918, 9.75488750216, 9.75655632252, 9.75822321473, 9.75988818322, 9.76155123244, 9.76321236681, 9.76487159074, 9.7665289086, 9.76818432478, 9.76983784363, 9.7714894695, 9.77313920672, 9.7747870596, 9.77643303244, 9.77807712954, 9.77971935514, 9.78135971352, 9.78299820892, 9.78463484556, 9.78626962765, 9.78790255939, 9.78953364497, 9.79116288856, 9.7927902943, 9.79441586635, 9.79603960883, 9.79766152585, 9.79928162152, 9.80089989992, 9.80251636512, 9.80413102118, 9.80574387215, 9.80735492206, 9.80896417492, 9.81057163474, 9.81217730551, 9.81378119122, 9.81538329581, 9.81698362326, 9.81858217748, 9.82017896242, 9.82177398197, 9.82336724005, 9.82495874053, 9.82654848729, 9.82813648419, 9.82972273509, 9.8313072438, 9.83289001416, 9.83447104998, 9.83605035506, 9.83762793317, 9.8392037881, 9.8407779236, 9.84235034341, 9.84392105129, 9.84549005094, 9.84705734609, 9.84862294043, 9.85018683765, 9.85174904142, 9.8533095554, 9.85486838326, 9.85642552863, 9.85798099513, 9.85953478638, 9.861086906, 9.86263735756, 9.86418614465, 9.86573327085, 9.86727873971, 9.86882255477, 9.87036471958, 9.87190523766, 9.87344411252, 9.87498134765, 9.87651694657, 9.87805091273, 9.87958324961, 9.88111396068, 9.88264304936, 9.88417051911, 9.88569637334, 9.88722061547, 9.8887432489, 9.89026427702, 9.89178370322, 9.89330153086, 9.89481776331, 9.89633240391, 9.89784545601, 9.89935692292, 9.90086680798, 9.90237511449, 9.90388184574, 9.90538700502, 9.90689059561, 9.90839262077, 9.90989308377, 9.91139198784, 9.91288933623, 9.91438513216, 9.91587937884, 9.91737207948, 9.91886323727, 9.92035285542, 9.92184093707, 9.92332748542, 9.92481250361, 9.92629599478, 9.92777796208, 9.92925840864, 9.93073733756, 9.93221475197, 9.93369065495, 9.9351650496, 9.936637939, 9.93810932622, 9.93957921431, 9.94104760634, 9.94251450534, 9.94397991434, 9.94544383638, 9.94690627446, 9.94836723158, 9.94982671076, 9.95128471497, 9.95274124719, 9.95419631039, 9.95564990753, 9.95710204156, 9.95855271543, 9.96000193207, 9.9614496944, 9.96289600534, 9.96434086779, 9.96578428466, 9.96722625884, 9.9686667932, 9.97010589061, 9.97154355395, 9.97297978607, 9.97441458981, 9.97584796801, 9.9772799235, 9.97871045911, 9.98013957764, 9.9815672819, 9.98299357469, 9.9844184588, 9.985841937, 9.98726401207, 9.98868468677, 9.99010396386, 9.99152184608, 9.99293833617, 9.99435343686, 9.99576715088, 9.99717948094, 9.99859042975, 10.0, 10.0014081944, 10.0028150156, 10.0042204663, 10.0056245492, 10.0070272669, 10.0084286221, 10.0098286174, 10.0112272554, 10.0126245389, 10.0140204703, 10.0154150524, 10.0168082877, 10.0182001788, 10.0195907284, 10.0209799389, 10.022367813, 10.0237543533, 10.0251395623, 10.0265234425, 10.0279059966, 10.029287227, 10.0306671362, 10.0320457269, 10.0334230015, 10.0347989626, 10.0361736126, 10.037546954, 10.0389189893, 10.040289721, 10.0416591516, 10.0430272836, 10.0443941194, 10.0457596614, 10.0471239121, 10.048486874, 10.0498485495, 10.0512089409, 10.0525680508, 10.0539258815, 10.0552824355, 10.0566377151, 10.0579917228, 10.0593444608, 10.0606959317, 10.0620461377, 10.0633950813, 10.0647427648, 10.0660891905, 10.0674343608, 10.068778278, 10.0701209445, 10.0714623626, 10.0728025345, 10.0741414628, 10.0754791495, 10.0768155971, 10.0781508077, 10.0794847838, 10.0808175276, 10.0821490414, 10.0834793273, 10.0848083878, 10.086136225, 10.0874628413, 10.0887882387, 10.0901124197, 10.0914353863, 10.0927571409, 10.0940776857, 10.0953970228, 10.0967151545, 10.098032083, 10.0993478104, 10.100662339, 10.1019756709, 10.1032878084, 10.1045987536, 10.1059085086, 10.1072170756, 10.1085244568, 10.1098306543, 10.1111356702, 10.1124395068, 10.113742166, 10.1150436502, 10.1163439612, 10.1176431014, 10.1189410727, 10.1202378773, 10.1215335173, 10.1228279948, 10.1241213118, 10.1254134705, 10.1267044728, 10.127994321, 10.1292830169, 10.1305705628, 10.1318569606, 10.1331422124, 10.1344263202, 10.1357092861, 10.1369911121, 10.1382718002, 10.1395513524, 10.1408297708, 10.1421070573, 10.143383214, 10.1446582428, 10.1459321458, 10.1472049249, 10.1484765822, 10.1497471195, 10.1510165389, 10.1522848423, 10.1535520317, 10.1548181091, 10.1560830763, 10.1573469354, 10.1586096882, 10.1598713368, 10.161131883, 10.1623913288, 10.163649676, 10.1649069267, 10.1661630826, 10.1674181458, 10.1686721181, 10.1699250014, 10.1711767977, 10.1724275086, 10.1736771363, 10.1749256825, 10.1761731491, 10.177419538, 10.178664851, 10.17990909, 10.1811522569, 10.1823943534, 10.1836353815, 10.1848753429, 10.1861142395, 10.1873520732, 10.1885888457, 10.1898245589, 10.1910592145, 10.1922928145, 10.1935253605, 10.1947568544, 10.195987298, 10.1972166931, 10.1984450415, 10.1996723448, 10.200898605, 10.2021238238, 10.203348003, 10.2045711442, 10.2057932494, 10.2070143202, 10.2082343583, 10.2094533656, 10.2106713438, 10.2118882945, 10.2131042196, 10.2143191208, 10.2155329997, 10.2167458582, 10.2179576979, 10.2191685205, 10.2203783277, 10.2215871213, 10.2227949029, 10.2240016742, 10.2252074369, 10.2264121928, 10.2276159434, 10.2288186905, 10.2300204357, 10.2312211807, 10.2324209272, 10.2336196768, 10.2348174311, 10.2360141919, 10.2372099608, 10.2384047393, 10.2395985292, 10.2407913322, 10.2419831497, 10.2431739835, 10.2443638351, 10.2455527063, 10.2467405985, 10.2479275134, 10.2491134527, 10.2502984179, 10.2514824106, 10.2526654325, 10.253847485, 10.2550285698, 10.2562086885, 10.2573878427, 10.2585660339, 10.2597432637, 10.2609195337, 10.2620948454, 10.2632692004, 10.2644426002, 10.2656150465, 10.2667865407, 10.2679570844, 10.2691266791, 10.2702953265, 10.2714630279, 10.272629785, 10.2737955992, 10.2749604721, 10.2761244053, 10.2772874001, 10.2784494582, 10.2796105811, 10.2807707701, 10.281930027, 10.283088353, 10.2842457498, 10.2854022189, 10.2865577616, 10.2877123795, 10.2888660742, 10.2900188469, 10.2911706993, 10.2923216328, 10.2934716488, 10.2946207489, 10.2957689344, 10.2969162069, 10.2980625677, 10.2992080184, 10.3003525603, 10.301496195, 10.3026389238, 10.3037807482, 10.3049216696, 10.3060616894, 10.3072008091, 10.3083390301, 10.3094763538, 10.3106127817, 10.311748315, 10.3128829553, 10.3140167039, 10.3151495623, 10.3162815317, 10.3174126138, 10.3185428097, 10.3196721209, 10.3208005489, 10.3219280949, 10.3230547603, 10.3241805466, 10.3253054551, 10.3264294871, 10.3275526441, 10.3286749273, 10.3297963382, 10.3309168781, 10.3320365484, 10.3331553503, 10.3342732853, 10.3353903547, 10.3365065598, 10.337621902, 10.3387363826, 10.3398500029, 10.3409627643, 10.342074668, 10.3431857154, 10.3442959079, 10.3454052467, 10.3465137332, 10.3476213686, 10.3487281542, 10.3498340915, 10.3509391815, 10.3520434258, 10.3531468255, 10.3542493819, 10.3553510964, 10.3564519702, 10.3575520046, 10.3586512009, 10.3597495603, 10.3608470842, 10.3619437737, 10.3630396303, 10.364134655, 10.3652288493, 10.3663222142, 10.3674147512, 10.3685064615, 10.3695973463, 10.3706874068, 10.3717766443, 10.3728650601, 10.3739526554, 10.3750394313, 10.3761253893, 10.3772105304, 10.3782948559, 10.3793783671, 10.3804610651, 10.3815429512, 10.3826240266, 10.3837042925, 10.3847837501, 10.3858624006, 10.3869402453, 10.3880172853, 10.3890935219, 10.3901689562, 10.3912435894, 10.3923174228, 10.3933904574, 10.3944626946, 10.3955341355, 10.3966047812, 10.3976746329, 10.3987436919, 10.3998119593, 10.4008794363, 10.401946124, 10.4030120236, 10.4040771362, 10.4051414631, 10.4062050054, 10.4072677642, 10.4083297408, 10.4093909361, 10.4104513515, 10.411510988, 10.4125698468, 10.413627929, 10.4146852358, 10.4157417683, 10.4167975276, 10.4178525149, 10.4189067313, 10.4199601778, 10.4210128558, 10.4220647662, 10.4231159101, 10.4241662888, 10.4252159033, 10.4262647547, 10.4273128441, 10.4283601727, 10.4294067415, 10.4304525517, 10.4314976043, 10.4325419004, 10.4335854412, 10.4346282276, 10.4356702609, 10.4367115421, 10.4377520723, 10.4387918526, 10.439830884, 10.4408691676, 10.4419067045, 10.4429434958, 10.4439795426, 10.4450148459, 10.4460494067, 10.4470832262, 10.4481163054, 10.4491486454, 10.4501802472, 10.4512111118, 10.4522412404, 10.453270634, 10.4542992936, 10.4553272203, 10.4563544151, 10.4573808791, 10.4584066132, 10.4594316186, 10.4604558963, 10.4614794473, 10.4625022726, 10.4635243733, 10.4645457503, 10.4655664048, 10.4665863377, 10.4676055501, 10.4686240429, 10.4696418172, 10.4706588741, 10.4716752144, 10.4726908392, 10.4737057496, 10.4747199465, 10.475733431, 10.4767462039, 10.4777582664, 10.4787696195, 10.479780264, 10.4807902011, 10.4817994317, 10.4828079567, 10.4838157773, 10.4848228943, 10.4858293087, 10.4868350216, 10.4878400338, 10.4888443465, 10.4898479604, 10.4908508767, 10.4918530963, 10.4928546202, 10.4938554492, 10.4948555845, 10.4958550269, 10.4968537774, 10.497851837, 10.4988492065, 10.4998458871, 10.5008418796, 10.5018371849, 10.5028318041, 10.503825738, 10.5048189876, 10.5058115539, 10.5068034378, 10.5077946402, 10.5087851621, 10.5097750043, 10.5107641679, 10.5117526538, 10.5127404628, 10.513727596, 10.5147140541, 10.5156998383, 10.5166849493, 10.5176693881, 10.5186531557, 10.5196362528, 10.5206186806, 10.5216004397, 10.5225815313, 10.5235619561, 10.524541715, 10.5255208091, 10.5264992391, 10.5274770061, 10.5284541108, 10.5294305541, 10.5304063371, 10.5313814605, 10.5323559253, 10.5333297323, 10.5343028825, 10.5352753766, 10.5362472157, 10.5372184005, 10.5381889321, 10.5391588111, 10.5401280386, 10.5410966153, 10.5420645423, 10.5430318203, 10.5439984501, 10.5449644328, 10.5459297691, 10.5468944599, 10.5478585061, 10.5488219085, 10.5497846679, 10.5507467854, 10.5517082616, 10.5526690975, 10.5536292939, 10.5545888517, 10.5555477716, 10.5565060547, 10.5574637016, 10.5584207133, 10.5593770905, 10.5603328342, 10.5612879452, 10.5622424242, 10.5631962722, 10.56414949, 10.5651020784, 10.5660540382, 10.5670053702, 10.5679560754, 10.5689061545, 10.5698556083, 10.5708044377, 10.5717526435, 10.5727002265, 10.5736471875, 10.5745935273, 10.5755392468, 10.5764843468, 10.577428828, 10.5783726914, 10.5793159376, 10.5802585675, 10.5812005819, 10.5821419817, 10.5830827675, 10.5840229403, 10.5849625007, 10.5859014497, 10.586839788, 10.5877775163, 10.5887146356, 10.5896511465, 10.5905870499, 10.5915223466, 10.5924570373, 10.5933911228, 10.5943246039, 10.5952574814, 10.5961897561, 10.5971214288, 10.5980525002, 10.598982971, 10.5999128422, 10.6008421144, 10.6017707884, 10.602698865, 10.603626345, 10.6045532291, 10.6054795181, 10.6064052127, 10.6073303137, 10.608254822, 10.6091787381, 10.610102063, 10.6110247973, 10.6119469418, 10.6128684973, 10.6137894645, 10.6147098441, 10.615629637, 10.6165488438, 10.6174674653, 10.6183855023, 10.6193029554, 10.6202198255, 10.6211361133, 10.6220518195, 10.6229669448, 10.62388149, 10.6247954559, 10.6257088431, 10.6266216524, 10.6275338845, 10.6284455401, 10.6293566201, 10.630267125, 10.6311770557, 10.6320864128, 10.6329951971, 10.6339034093, 10.6348110502, 10.6357181203, 10.6366246205, 10.6375305515, 10.638435914, 10.6393407087, 10.6402449362, 10.6411485974, 10.6420516929, 10.6429542235, 10.6438561898, 10.6447575925, 10.6456584324, 10.6465587102, 10.6474584265, 10.648357582, 10.6492561775, 10.6501542137, 10.6510516912, 10.6519486107, 10.652844973, 10.6537407787, 10.6546360285, 10.6555307232, 10.6564248633, 10.6573184496, 10.6582114828, 10.6591039635, 10.6599958924, 10.6608872703, 10.6617780978, 10.6626683755, 10.6635581042, 10.6644472845, 10.6653359172, 10.6662240028, 10.6671115421, 10.6679985357, 10.6688849843, 10.6697708885, 10.6706562491, 10.6715410667, 10.672425342, 10.6733090756, 10.6741922681, 10.6750749204, 10.6759570329, 10.6768386065, 10.6777196416, 10.6786001391, 10.6794800995, 10.6803595235, 10.6812384118, 10.682116765, 10.6829945837, 10.6838718686, 10.6847486204, 10.6856248397, 10.6865005272, 10.6873756834, 10.6882503091, 10.6891244049, 10.6899979714, 10.6908710093, 10.6917435192, 10.6926155017, 10.6934869575, 10.6943578872, 10.6952282915, 10.696098171, 10.6969675262, 10.697836358, 10.6987046668, 10.6995724533, 10.7004397181, 10.701306462, 10.7021726854, 10.703038389, 10.7039035734, 10.7047682394, 10.7056323874, 10.7064960181, 10.7073591321, 10.70822173, 10.7090838126, 10.7099453802, 10.7108064337, 10.7116669736, 10.7125270004, 10.7133865149, 10.7142455177, 10.7151040092, 10.7159619903, 10.7168194613, 10.7176764231, 10.7185328761, 10.7193888209, 10.7202442583, 10.7210991887, 10.7219536128, 10.7228075312, 10.7236609444, 10.7245138531, 10.7253662579, 10.7262181593, 10.727069558, 10.7279204546, 10.7287708495, 10.7296207436, 10.7304701372, 10.731319031, 10.7321674257, 10.7330153217, 10.7338627197, 10.7347096202, 10.7355560239, 10.7364019313, 10.737247343, 10.7380922596, 10.7389366817, 10.7397806098, 10.7406240445, 10.7414669864, 10.7423094361, 10.7431513941, 10.7439928611, 10.7448338375, 10.745674324, 10.7465143211, 10.7473538295, 10.7481928496, 10.749031382, 10.7498694274, 10.7507069862, 10.7515440591, 10.7523806466, 10.7532167492, 10.7540523675, 10.7548875022, 10.7557221536, 10.7565563225, 10.7573900094, 10.7582232147, 10.7590559392, 10.7598881832, 10.7607199475, 10.7615512324, 10.7623820387, 10.7632123668, 10.7640422173, 10.7648715907, 10.7657004877, 10.7665289086, 10.7673568541, 10.7681843248, 10.7690113211, 10.7698378436, 10.7706638929, 10.7714894695, 10.7723145739, 10.7731392067, 10.7739633684, 10.7747870596, 10.7756102808, 10.7764330324, 10.7772553152, 10.7780771295, 10.778898476, 10.7797193551, 10.7805397675, 10.7813597135, 10.7821791938, 10.7829982089, 10.7838167593, 10.7846348456, 10.7854524682, 10.7862696276, 10.7870863246, 10.7879025594, 10.7887183327, 10.789533645, 10.7903484968, 10.7911628886, 10.7919768209, 10.7927902943, 10.7936033093, 10.7944158664, 10.795227966, 10.7960396088, 10.7968507953, 10.7976615259, 10.7984718011, 10.7992816215, 10.8000909876, 10.8008998999, 10.8017083589, 10.8025163651, 10.803323919, 10.8041310212, 10.8049376721, 10.8057438722, 10.806549622, 10.8073549221, 10.8081597729, 10.8089641749, 10.8097681287, 10.8105716347, 10.8113746935, 10.8121773055, 10.8129794713, 10.8137811912, 10.8145824659, 10.8153832958, 10.8161836814, 10.8169836233, 10.8177831218, 10.8185821775, 10.8193807909, 10.8201789624, 10.8209766926, 10.821773982, 10.822570831, 10.82336724, 10.8241632097, 10.8249587405, 10.8257538329, 10.8265484873, 10.8273427042, 10.8281364842, 10.8289298277, 10.8297227351, 10.830515207, 10.8313072438, 10.832098846, 10.8328900142, 10.8336807487, 10.83447105, 10.8352609186, 10.8360503551, 10.8368393597, 10.8376279332, 10.8384160758, 10.8392037881, 10.8399910705, 10.8407779236, 10.8415643477, 10.8423503434, 10.8431359111, 10.8439210513, 10.8447057644, 10.8454900509, 10.8462739113, 10.8470573461, 10.8478403556, 10.8486229404, 10.8494051009, 10.8501868376, 10.850968151, 10.8517490414, 10.8525295094, 10.8533095554, 10.8540891799, 10.8548683833, 10.855647166, 10.8564255286, 10.8572034715, 10.8579809951, 10.8587580999, 10.8595347864, 10.8603110549, 10.861086906, 10.8618623401, 10.8626373576, 10.8634119589, 10.8641861447, 10.8649599151, 10.8657332709, 10.8665062122, 10.8672787397, 10.8680508537, 10.8688225548, 10.8695938432, 10.8703647196, 10.8711351842, 10.8719052377, 10.8726748803, 10.8734441125, 10.8742129348, 10.8749813477, 10.8757493514, 10.8765169466, 10.8772841335, 10.8780509127, 10.8788172846, 10.8795832496, 10.8803488082, 10.8811139607, 10.8818787076, 10.8826430494, 10.8834069864, 10.8841705191, 10.8849336479, 10.8856963733, 10.8864586957, 10.8872206155, 10.8879821331, 10.8887432489, 10.8895039634, 10.890264277, 10.8910241901, 10.8917837032, 10.8925428166, 10.8933015309, 10.8940598463, 10.8948177633, 10.8955752824, 10.8963324039, 10.8970891283, 10.897845456, 10.8986013874, 10.8993569229, 10.900112063, 10.900866808, 10.9016211583, 10.9023751145, 10.9031286768, 10.9038818457, 10.9046346217, 10.905387005, 10.9061389962, 10.9068905956, 10.9076418037, 10.9083926208, 10.9091430473, 10.9098930838, 10.9106427305, 10.9113919878, 10.9121408563, 10.9128893362, 10.913637428, 10.9143851322, 10.915132449, 10.9158793788, 10.9166259222, 10.9173720795, 10.918117851, 10.9188632373, 10.9196082386, 10.9203528554, 10.9210970881, 10.9218409371, 10.9225844027, 10.9233274854, 10.9240701856, 10.9248125036, 10.9255544399, 10.9262959948, 10.9270371687, 10.9277779621, 10.9285183753, 10.9292584086, 10.9299980626, 10.9307373376, 10.9314762339, 10.932214752, 10.9329528922, 10.933690655, 10.9344280406, 10.9351650496, 10.9359016823, 10.936637939, 10.9373738202, 10.9381093262, 10.9388444575, 10.9395792143, 10.9403135971, 10.9410476063, 10.9417812423, 10.9425145053, 10.9432473959, 10.9439799143, 10.944712061, 10.9454438364, 10.9461752407, 10.9469062745, 10.947636938, 10.9483672316, 10.9490971557, 10.9498267108, 10.950555897, 10.951284715, 10.9520131649, 10.9527412472, 10.9534689622, 10.9541963104, 10.954923292, 10.9556499075, 10.9563761572, 10.9571020416, 10.9578275608, 10.9585527154, 10.9592775057, 10.9600019321, 10.9607259948, 10.9614496944, 10.9621730311, 10.9628960053, 10.9636186174, 10.9643408678, 10.9650627567, 10.9657842847, 10.9665054519, 10.9672262588, 10.9679467058, 10.9686667932, 10.9693865213, 10.9701058906, 10.9708249014, 10.971543554, 10.9722618487, 10.9729797861, 10.9736973663, 10.9744145898, 10.9751314569, 10.975847968, 10.9765641234, 10.9772799235, 10.9779953686, 10.9787104591, 10.9794251953, 10.9801395776, 10.9808536064, 10.9815672819, 10.9822806046, 10.9829935747, 10.9837061927, 10.9844184588, 10.9851303735, 10.985841937, 10.9865531498, 10.9872640121, 10.9879745243, 10.9886846868, 10.9893944998, 10.9901039639, 10.9908130792, 10.9915218461, 10.992230265, 10.9929383362, 10.99364606, 10.9943534369, 10.995060467, 10.9957671509, 10.9964734887, 10.9971794809, 10.9978851278, 10.9985904297, 10.999295387, 11.0, 11.000704269, 11.0014081944, 11.0021117765, 11.0028150156, 11.0035179121, 11.0042204663, 11.0049226786, 11.0056245492, 11.0063260785, 11.0070272669, 11.0077281146, 11.0084286221, 11.0091287895, 11.0098286174, 11.0105281059, 11.0112272554, 11.0119260663, 11.0126245389, 11.0133226734, 11.0140204703, 11.0147179299, 11.0154150524, 11.0161118382, 11.0168082877, 11.0175044011, 11.0182001788, 11.0188956211, 11.0195907284, 11.0202855008, 11.0209799389, 11.0216740429, 11.022367813, 11.0230612497, 11.0237543533, 11.024447124, 11.0251395623, 11.0258316683, 11.0265234425, 11.0272148852, 11.0279059966, 11.0285967771, 11.029287227, 11.0299773466, 11.0306671362, 11.0313565963, 11.0320457269, 11.0327345286, 11.0334230015, 11.0341111461, 11.0347989626, 11.0354864513, 11.0361736126, 11.0368604467, 11.037546954, 11.0382331347, 11.0389189893, 11.039604518, 11.040289721, 11.0409745988, 11.0416591516, 11.0423433798, 11.0430272836, 11.0437108633, 11.0443941194, 11.0450770519, 11.0457596614, 11.046441948, 11.0471239121, 11.047805554, 11.048486874, 11.0491678724, 11.0498485495, 11.0505289055, 11.0512089409, 11.0518886559, 11.0525680508, 11.0532471259, 11.0539258815, 11.054604318, 11.0552824355, 11.0559602345, 11.0566377151, 11.0573148778, 11.0579917228, 11.0586682503, 11.0593444608, 11.0600203545, 11.0606959317, 11.0613711927, 11.0620461377, 11.0627207672, 11.0633950813, 11.0640690804, 11.0647427648, 11.0654161347, 11.0660891905, 11.0667619324, 11.0674343608, 11.0681064759, 11.068778278, 11.0694497674, 11.0701209445, 11.0707918094, 11.0714623626, 11.0721326042, 11.0728025345, 11.073472154, 11.0741414628, 11.0748104612, 11.0754791495, 11.076147528, 11.0768155971, 11.0774833569, 11.0781508077, 11.07881795, 11.0794847838, 11.0801513096, 11.0808175276, 11.0814834381, 11.0821490414, 11.0828143377, 11.0834793273, 11.0841440106, 11.0848083878, 11.0854724592, 11.086136225, 11.0867996856, 11.0874628413, 11.0881256922, 11.0887882387, 11.0894504811, 11.0901124197, 11.0907740546, 11.0914353863, 11.092096415, 11.0927571409, 11.0934175644, 11.0940776857, 11.094737505, 11.0953970228, 11.0960562392, 11.0967151545, 11.097373769, 11.098032083, 11.0986900967, 11.0993478104, 11.1000052244, 11.100662339, 11.1013191544, 11.1019756709, 11.1026318889, 11.1032878084, 11.1039434299, 11.1045987536, 11.1052537797, 11.1059085086, 11.1065629404, 11.1072170756, 11.1078709143, 11.1085244568, 11.1091777034, 11.1098306543, 11.1104833098, 11.1111356702, 11.1117877358, 11.1124395068, 11.1130909834, 11.113742166, 11.1143930549, 11.1150436502, 11.1156939522, 11.1163439612, 11.1169936775, 11.1176431014, 11.118292233, 11.1189410727, 11.1195896207, 11.1202378773, 11.1208858428, 11.1215335173, 11.1221809013, 11.1228279948, 11.1234747982, 11.1241213118, 11.1247675358, 11.1254134705, 11.1260591161, 11.1267044728, 11.1273495411, 11.127994321, 11.1286388129, 11.1292830169, 11.1299269335, 11.1305705628, 11.1312139051, 11.1318569606, 11.1324997296, 11.1331422124, 11.1337844092, 11.1344263202, 11.1350679458, 11.1357092861, 11.1363503415, 11.1369911121, 11.1376315982, 11.1382718002, 11.1389117181, 11.1395513524, 11.1401907032, 11.1408297708, 11.1414685554, 11.1421070573, 11.1427452768, 11.143383214, 11.1440208693, 11.1446582428, 11.1452953349, 11.1459321458, 11.1465686757, 11.1472049249, 11.1478408937, 11.1484765822, 11.1491119907, 11.1497471195, 11.1503819688, 11.1510165389, 11.15165083, 11.1522848423, 11.1529185761, 11.1535520317, 11.1541852093, 11.1548181091, 11.1554507313, 11.1560830763, 11.1567151442, 11.1573469354, 11.1579784499, 11.1586096882, 11.1592406504, 11.1598713368, 11.1605017476, 11.161131883, 11.1617617433, 11.1623913288, 11.1630206396, 11.163649676, 11.1642784383, 11.1649069267, 11.1655351414, 11.1661630826, 11.1667907507, 11.1674181458, 11.1680452682, 11.1686721181, 11.1692986958, 11.1699250014, 11.1705510353, 11.1711767977, 11.1718022887, 11.1724275086, 11.1730524578, 11.1736771363, 11.1743015445, 11.1749256825, 11.1755495506, 11.1761731491, 11.1767964781, 11.177419538, 11.1780423289, 11.178664851, 11.1792871046, 11.17990909, 11.1805308073, 11.1811522569, 11.1817734388, 11.1823943534, 11.1830150009, 11.1836353815, 11.1842554954, 11.1848753429, 11.1854949242, 11.1861142395, 11.1867332891, 11.1873520732, 11.187970592, 11.1885888457, 11.1892068346, 11.1898245589, 11.1904420188, 11.1910592145, 11.1916761464, 11.1922928145, 11.1929092191, 11.1935253605, 11.1941412389, 11.1947568544, 11.1953722074, 11.195987298, 11.1966021265, 11.1972166931, 11.197830998, 11.1984450415, 11.1990588237, 11.1996723448, 11.2002856052, 11.200898605, 11.2015113445, 11.2021238238, 11.2027360433, 11.203348003, 11.2039597032, 11.2045711442, 11.2051823262, 11.2057932494, 11.206403914, 11.2070143202, 11.2076244682, 11.2082343583, 11.2088439907, 11.2094533656, 11.2100624832, 11.2106713438, 11.2112799475, 11.2118882945, 11.2124963852, 11.2131042196, 11.2137117981, 11.2143191208, 11.2149261879, 11.2155329997, 11.2161395564, 11.2167458582, 11.2173519053, 11.2179576979, 11.2185632362, 11.2191685205, 11.2197735509, 11.2203783277, 11.2209828511, 11.2215871213, 11.2221911385, 11.2227949029, 11.2233984147, 11.2240016742, 11.2246046815, 11.2252074369, 11.2258099406, 11.2264121928, 11.2270141936, 11.2276159434, 11.2282174423, 11.2288186905, 11.2294196882, 11.2300204357, 11.2306209331, 11.2312211807, 11.2318211787, 11.2324209272, 11.2330204265, 11.2336196768, 11.2342186782, 11.2348174311, 11.2354159356, 11.2360141919, 11.2366122002, 11.2372099608, 11.2378074737, 11.2384047393, 11.2390017578, 11.2395985292, 11.240195054, 11.2407913322, 11.241387364, 11.2419831497, 11.2425786895, 11.2431739835, 11.243769032, 11.2443638351, 11.2449583932, 11.2455527063, 11.2461467746, 11.2467405985, 11.247334178, 11.2479275134, 11.2485206049, 11.2491134527, 11.249706057, 11.2502984179, 11.2508905357, 11.2514824106, 11.2520740428, 11.2526654325, 11.2532565798, 11.253847485, 11.2544381483, 11.2550285698, 11.2556187498, 11.2562086885, 11.2567983861, 11.2573878427, 11.2579770586, 11.2585660339, 11.2591547689, 11.2597432637, 11.2603315186, 11.2609195337, 11.2615073092, 11.2620948454, 11.2626821424, 11.2632692004, 11.2638560196, 11.2644426002, 11.2650289425, 11.2656150465, 11.2662009125, 11.2667865407, 11.2673719313, 11.2679570844, 11.2685420003, 11.2691266791, 11.2697111211, 11.2702953265, 11.2708792953, 11.2714630279, 11.2720465244, 11.272629785, 11.2732128099, 11.2737955992, 11.2743781532, 11.2749604721, 11.2755425561, 11.2761244053, 11.2767060199, 11.2772874001, 11.2778685462, 11.2784494582, 11.2790301364, 11.2796105811, 11.2801907922, 11.2807707701, 11.281350515, 11.281930027, 11.2825093062, 11.283088353, 11.2836671675, 11.2842457498, 11.2848241002, 11.2854022189, 11.2859801059, 11.2865577616, 11.2871351861, 11.2877123795, 11.2882893422, 11.2888660742, 11.2894425757, 11.2900188469, 11.2905948881, 11.2911706993, 11.2917462808, 11.2923216328, 11.2928967554, 11.2934716488, 11.2940463133, 11.2946207489, 11.2951949559, 11.2957689344, 11.2963426847, 11.2969162069, 11.2974895012, 11.2980625677, 11.2986354067, 11.2992080184, 11.2997804029, 11.3003525603, 11.300924491, 11.301496195, 11.3020676725, 11.3026389238, 11.3032099489, 11.3037807482, 11.3043513217, 11.3049216696, 11.3054917921, 11.3060616894, 11.3066313617, 11.3072008091, 11.3077700319, 11.3083390301, 11.3089078041, 11.3094763538, 11.3100446796, 11.3106127817, 11.3111806601, 11.311748315, 11.3123157467, 11.3128829553, 11.313449941, 11.3140167039, 11.3145832443, 11.3151495623, 11.315715658, 11.3162815317, 11.3168471836, 11.3174126138, 11.3179778224, 11.3185428097, 11.3191075758, 11.3196721209, 11.3202364452, 11.3208005489, 11.321364432, 11.3219280949, 11.3224915376, 11.3230547603, 11.3236177633, 11.3241805466, 11.3247431105, 11.3253054551, 11.3258675806, 11.3264294871, 11.3269911749, 11.3275526441, 11.3281138948, 11.3286749273, 11.3292357417, 11.3297963382, 11.330356717, 11.3309168781, 11.3314768219, 11.3320365484, 11.3325960578, 11.3331553503, 11.3337144261, 11.3342732853, 11.3348319281, 11.3353903547, 11.3359485652, 11.3365065598, 11.3370643387, 11.337621902, 11.3381792499, 11.3387363826, 11.3392933002, 11.3398500029, 11.3404064909, 11.3409627643, 11.3415188232, 11.342074668, 11.3426302987, 11.3431857154, 11.3437409185, 11.3442959079, 11.3448506839, 11.3454052467, 11.3459595964, 11.3465137332, 11.3470676572, 11.3476213686, 11.3481748675, 11.3487281542, 11.3492812288, 11.3498340915, 11.3503867423, 11.3509391815, 11.3514914093, 11.3520434258, 11.3525952311, 11.3531468255, 11.353698209, 11.3542493819, 11.3548003444, 11.3553510964, 11.3559016383, 11.3564519702, 11.3570020923, 11.3575520046, 11.3581017074, 11.3586512009, 11.3592004851, 11.3597495603, 11.3602984266, 11.3608470842, 11.3613955332, 11.3619437737, 11.362491806, 11.3630396303, 11.3635872465, 11.364134655, 11.3646818559, 11.3652288493, 11.3657756353, 11.3663222142, 11.3668685862, 11.3674147512, 11.3679607096, 11.3685064615, 11.369052007, 11.3695973463, 11.3701424795, 11.3706874068, 11.3712321284, 11.3717766443, 11.3723209549, 11.3728650601, 11.3734089602, 11.3739526554, 11.3744961457, 11.3750394313, 11.3755825125, 11.3761253893, 11.3766680619, 11.3772105304, 11.377752795, 11.3782948559, 11.3788367132, 11.3793783671, 11.3799198176, 11.3804610651, 11.3810021096, 11.3815429512, 11.3820835901, 11.3826240266, 11.3831642606, 11.3837042925, 11.3842441222, 11.3847837501, 11.3853231762, 11.3858624006, 11.3864014236, 11.3869402453, 11.3874788658, 11.3880172853, 11.388555504, 11.3890935219, 11.3896313393, 11.3901689562, 11.3907063729, 11.3912435894, 11.391780606, 11.3923174228, 11.3928540399, 11.3933904574, 11.3939266756, 11.3944626946, 11.3949985145, 11.3955341355, 11.3960695576, 11.3966047812, 11.3971398062, 11.3976746329, 11.3982092615, 11.3987436919, 11.3992779245, 11.3998119593, 11.4003457965, 11.4008794363, 11.4014128787, 11.401946124, 11.4024791722, 11.4030120236, 11.4035446782, 11.4040771362, 11.4046093978, 11.4051414631, 11.4056733323, 11.4062050054, 11.4067364827, 11.4072677642, 11.4077988502, 11.4083297408, 11.408860436, 11.4093909361, 11.4099212412, 11.4104513515, 11.410981267, 11.411510988, 11.4120405146, 11.4125698468, 11.4130989849, 11.413627929, 11.4141566793, 11.4146852358, 11.4152135988, 11.4157417683, 11.4162697445, 11.4167975276, 11.4173251177, 11.4178525149, 11.4183797194, 11.4189067313, 11.4194335507, 11.4199601778, 11.4204866128, 11.4210128558, 11.4215389068, 11.4220647662, 11.4225904339, 11.4231159101, 11.4236411951, 11.4241662888, 11.4246911915, 11.4252159033, 11.4257404243, 11.4262647547, 11.4267888946, 11.4273128441, 11.4278366035, 11.4283601727, 11.428883552, 11.4294067415, 11.4299297414, 11.4304525517, 11.4309751726, 11.4314976043, 11.4320198468, 11.4325419004, 11.4330637651, 11.4335854412, 11.4341069286, 11.4346282276, 11.4351493384, 11.4356702609, 11.4361909955, 11.4367115421, 11.437231901, 11.4377520723, 11.4382720561, 11.4387918526, 11.4393114618, 11.439830884, 11.4403501192, 11.4408691676, 11.4413880293, 11.4419067045, 11.4424251933, 11.4429434958, 11.4434616122, 11.4439795426, 11.4444972871, 11.4450148459, 11.445532219, 11.4460494067, 11.4465664091, 11.4470832262, 11.4475998583, 11.4481163054, 11.4486325677, 11.4491486454, 11.4496645385, 11.4501802472, 11.4506957716, 11.4512111118, 11.4517262681, 11.4522412404, 11.452756029, 11.453270634, 11.4537850555, 11.4542992936, 11.4548133485, 11.4553272203, 11.4558409091, 11.4563544151, 11.4568677384, 11.4573808791, 11.4578938373, 11.4584066132, 11.458919207, 11.4594316186, 11.4599438484, 11.4604558963, 11.4609677626, 11.4614794473, 11.4619909506, 11.4625022726, 11.4630134134, 11.4635243733, 11.4640351522, 11.4645457503, 11.4650561678, 11.4655664048, 11.4660764614, 11.4665863377, 11.4670960339, 11.4676055501, 11.4681148864, 11.4686240429, 11.4691330198, 11.4696418172, 11.4701504353, 11.4706588741, 11.4711671337, 11.4716752144, 11.4721831162, 11.4726908392, 11.4731983837, 11.4737057496, 11.4742129372, 11.4747199465, 11.4752267777, 11.475733431, 11.4762399063, 11.4767462039, 11.4772523239, 11.4777582664, 11.4782640316, 11.4787696195, 11.4792750303, 11.479780264, 11.4802853209, 11.4807902011, 11.4812949046, 11.4817994317, 11.4823037823, 11.4828079567, 11.483311955, 11.4838157773, 11.4843194236, 11.4848228943, 11.4853261892, 11.4858293087, 11.4863322528, 11.4868350216, 11.4873376152, 11.4878400338, 11.4883422775, 11.4888443465, 11.4893462407, 11.4898479604, 11.4903495057, 11.4908508767, 11.4913520736, 11.4918530963, 11.4923539452, 11.4928546202, 11.4933551215, 11.4938554492, 11.4943556035, 11.4948555845, 11.4953553922, 11.4958550269, 11.4963544886, 11.4968537774, 11.4973528935, 11.497851837, 11.4983506079, 11.4988492065, 11.4993476329, 11.4998458871, 11.5003439693, 11.5008418796, 11.5013396181, 11.5018371849, 11.5023345802, 11.5028318041, 11.5033288566, 11.503825738, 11.5043224483, 11.5048189876, 11.5053153561, 11.5058115539, 11.5063075811, 11.5068034378, 11.5072991241, 11.5077946402, 11.5082899861, 11.5087851621, 11.5092801681, 11.5097750043, 11.5102696709, 11.5107641679, 11.5112584955, 11.5117526538, 11.5122466428, 11.5127404628, 11.5132341138, 11.513727596, 11.5142209094, 11.5147140541, 11.5152070304, 11.5156998383, 11.5161924779, 11.5166849493, 11.5171772527, 11.5176693881, 11.5181613558, 11.5186531557, 11.519144788, 11.5196362528, 11.5201275503, 11.5206186806, 11.5211096437, 11.5216004397, 11.5220910689, 11.5225815313, 11.5230718269, 11.5235619561, 11.5240519187, 11.524541715, 11.5250313451, 11.5255208091, 11.5260101071, 11.5264992391, 11.5269882054, 11.5274770061, 11.5279656411, 11.5284541108, 11.5289424151, 11.5294305541, 11.5299185281, 11.5304063371, 11.5308939812, 11.5313814605, 11.5318687752, 11.5323559253, 11.532842911, 11.5333297323, 11.5338163894, 11.5343028825, 11.5347892115, 11.5352753766, 11.535761378, 11.5362472157, 11.5367328898, 11.5372184005, 11.5377037479, 11.5381889321, 11.5386739531, 11.5391588111, 11.5396435062, 11.5401280386, 11.5406124082, 11.5410966153, 11.54158066, 11.5420645423, 11.5425482623, 11.5430318203, 11.5435152162, 11.5439984501, 11.5444815223, 11.5449644328, 11.5454471817, 11.5459297691, 11.5464121951, 11.5468944599, 11.5473765635, 11.5478585061, 11.5483402877, 11.5488219085, 11.5493033685, 11.5497846679, 11.5502658069, 11.5507467854, 11.5512276036, 11.5517082616, 11.5521887596, 11.5526690975, 11.5531492756, 11.5536292939, 11.5541091526, 11.5545888517, 11.5550683913, 11.5555477716, 11.5560269927, 11.5565060547, 11.5569849576, 11.5574637016, 11.5579422868, 11.5584207133, 11.5588989811, 11.5593770905, 11.5598550415, 11.5603328342, 11.5608104687, 11.5612879452, 11.5617652636, 11.5622424242, 11.562719427, 11.5631962722, 11.5636729598, 11.56414949, 11.5646258628, 11.5651020784, 11.5655781368, 11.5660540382, 11.5665297826, 11.5670053702, 11.5674808011, 11.5679560754, 11.5684311932, 11.5689061545, 11.5693809595, 11.5698556083, 11.570330101, 11.5708044377, 11.5712786185, 11.5717526435, 11.5722265128, 11.5727002265, 11.5731737847, 11.5736471875, 11.574120435, 11.5745935273, 11.5750664646, 11.5755392468, 11.5760118742, 11.5764843468, 11.5769566647, 11.577428828, 11.5779008369, 11.5783726914, 11.5788443916, 11.5793159376, 11.5797873295, 11.5802585675, 11.5807296516, 11.5812005819, 11.5816713586, 11.5821419817, 11.5826124513, 11.5830827675, 11.5835529305, 11.5840229403, 11.584492797, 11.5849625007, 11.5854320516, 11.5859014497, 11.5863706951, 11.586839788, 11.5873087283, 11.5877775163, 11.588246152, 11.5887146356, 11.589182967, 11.5896511465, 11.5901191741, 11.5905870499, 11.591054774, 11.5915223466, 11.5919897676, 11.5924570373, 11.5929241556, 11.5933911228, 11.5938579389, 11.5943246039, 11.5947911181, 11.5952574814, 11.5957236941, 11.5961897561, 11.5966556677, 11.5971214288, 11.5975870396, 11.5980525002, 11.5985178106, 11.598982971, 11.5994479815, 11.5999128422, 11.6003775531, 11.6008421144, 11.6013065261, 11.6017707884, 11.6022349013, 11.602698865, 11.6031626795, 11.603626345, 11.6040898615, 11.6045532291, 11.6050164479, 11.6054795181, 11.6059424396, 11.6064052127, 11.6068678374, 11.6073303137, 11.6077926419, 11.608254822, 11.608716854, 11.6091787381, 11.6096404744, 11.610102063, 11.6105635039, 11.6110247973, 11.6114859432, 11.6119469418, 11.6124077931, 11.6128684973, 11.6133290544, 11.6137894645, 11.6142497277, 11.6147098441, 11.6151698138, 11.615629637, 11.6160893136, 11.6165488438, 11.6170082277, 11.6174674653, 11.6179265568, 11.6183855023, 11.6188443018, 11.6193029554, 11.6197614633, 11.6202198255, 11.6206780421, 11.6211361133, 11.621594039, 11.6220518195, 11.6225094547, 11.6229669448, 11.6234242899, 11.62388149, 11.6243385453, 11.6247954559, 11.6252522217, 11.6257088431, 11.6261653199, 11.6266216524, 11.6270778405, 11.6275338845, 11.6279897843, 11.6284455401, 11.628901152, 11.6293566201, 11.6298119444, 11.630267125, 11.6307221621, 11.6311770557, 11.6316318059, 11.6320864128, 11.6325408765, 11.6329951971, 11.6334493747, 11.6339034093, 11.6343573011, 11.6348110502, 11.6352646565, 11.6357181203, 11.6361714416, 11.6366246205, 11.6370776571, 11.6375305515, 11.6379833038, 11.638435914, 11.6388883823, 11.6393407087, 11.6397928933, 11.6402449362, 11.6406968376, 11.6411485974, 11.6416002158, 11.6420516929, 11.6425030288, 11.6429542235, 11.6434052771, 11.6438561898, 11.6443069615, 11.6447575925, 11.6452080828, 11.6456584324, 11.6461086415, 11.6465587102, 11.6470086384, 11.6474584265, 11.6479080743, 11.648357582, 11.6488069497, 11.6492561775, 11.6497052655, 11.6501542137, 11.6506030222, 11.6510516912, 11.6515002207, 11.6519486107, 11.6523968615, 11.652844973, 11.6532929454, 11.6537407787, 11.6541884731, 11.6546360285, 11.6550834452, 11.6555307232, 11.6559778625, 11.6564248633, 11.6568717256, 11.6573184496, 11.6577650353, 11.6582114828, 11.6586577921, 11.6591039635, 11.6595499969, 11.6599958924, 11.6604416502, 11.6608872703, 11.6613327528, 11.6617780978, 11.6622233053, 11.6626683755, 11.6631133085, 11.6635581042, 11.6640027629, 11.6644472845, 11.6648916693, 11.6653359172, 11.6657800283, 11.6662240028, 11.6666678407, 11.6671115421, 11.667555107, 11.6679985357, 11.6684418281, 11.6688849843, 11.6693280044, 11.6697708885, 11.6702136367, 11.6706562491, 11.6710987257, 11.6715410667, 11.6719832721, 11.672425342, 11.6728672764, 11.6733090756, 11.6737507394, 11.6741922681, 11.6746336618, 11.6750749204, 11.6755160441, 11.6759570329, 11.676397887, 11.6768386065, 11.6772791913, 11.6777196416, 11.6781599575, 11.6786001391, 11.6790401864, 11.6794800995, 11.6799198785, 11.6803595235, 11.6807990346, 11.6812384118, 11.6816776552, 11.682116765, 11.6825557411, 11.6829945837, 11.6834332928, 11.6838718686, 11.6843103111, 11.6847486204, 11.6851867966, 11.6856248397, 11.6860627499, 11.6865005272, 11.6869381717, 11.6873756834, 11.6878130626, 11.6882503091, 11.6886874232, 11.6891244049, 11.6895612543, 11.6899979714, 11.6904345564, 11.6908710093, 11.6913073302, 11.6917435192, 11.6921795763, 11.6926155017, 11.6930512954, 11.6934869575, 11.6939224881, 11.6943578872, 11.694793155, 11.6952282915, 11.6956632968, 11.696098171, 11.6965329141, 11.6969675262, 11.6974020075, 11.697836358, 11.6982705777, 11.6987046668, 11.6991386253, 11.6995724533, 11.7000061509, 11.7004397181, 11.7008731551, 11.701306462, 11.7017396387, 11.7021726854, 11.7026056021, 11.703038389, 11.7034710461, 11.7039035734, 11.7043359712, 11.7047682394, 11.7052003781, 11.7056323874, 11.7060642673, 11.7064960181, 11.7069276396, 11.7073591321, 11.7077904955, 11.70822173, 11.7086528357, 11.7090838126, 11.7095146607, 11.7099453802, 11.7103759712, 11.7108064337, 11.7112367678, 11.7116669736, 11.7120970511, 11.7125270004, 11.7129568217, 11.7133865149, 11.7138160802, 11.7142455177, 11.7146748273, 11.7151040092, 11.7155330635, 11.7159619903, 11.7163907895, 11.7168194613, 11.7172480058, 11.7176764231, 11.7181047131, 11.7185328761, 11.718960912, 11.7193888209, 11.719816603, 11.7202442583, 11.7206717868, 11.7210991887, 11.721526464, 11.7219536128, 11.7223806352, 11.7228075312, 11.7232343009, 11.7236609444, 11.7240874618, 11.7245138531, 11.7249401185, 11.7253662579, 11.7257922715, 11.7262181593, 11.7266439215, 11.727069558, 11.727495069, 11.7279204546, 11.7283457147, 11.7287708495, 11.7291958591, 11.7296207436, 11.7300455029, 11.7304701372, 11.7308946465, 11.731319031, 11.7317432907, 11.7321674257, 11.732591436, 11.7330153217, 11.7334390829, 11.7338627197, 11.7342862321, 11.7347096202, 11.7351328841, 11.7355560239, 11.7359790396, 11.7364019313, 11.7368246991, 11.737247343, 11.7376698632, 11.7380922596, 11.7385145324, 11.7389366817, 11.7393587074, 11.7397806098, 11.7402023888, 11.7406240445, 11.741045577, 11.7414669864, 11.7418882727, 11.7423094361, 11.7427304765, 11.7431513941, 11.7435721889, 11.7439928611, 11.7444134106, 11.7448338375, 11.745254142, 11.745674324, 11.7460943837, 11.7465143211, 11.7469341364, 11.7473538295, 11.7477734005, 11.7481928496, 11.7486121767, 11.749031382, 11.7494504656, 11.7498694274, 11.7502882676, 11.7507069862, 11.7511255834, 11.7515440591, 11.7519624135, 11.7523806466, 11.7527987584, 11.7532167492, 11.7536346189, 11.7540523675, 11.7544699953, 11.7548875022, 11.7553048883, 11.7557221536, 11.7561392984, 11.7565563225, 11.7569732262, 11.7573900094, 11.7578066722, 11.7582232147, 11.758639637, 11.7590559392, 11.7594721212, 11.7598881832, 11.7603041253, 11.7607199475, 11.7611356498, 11.7615512324, 11.7619666954, 11.7623820387, 11.7627972625, 11.7632123668, 11.7636273517, 11.7640422173, 11.7644569636, 11.7648715907, 11.7652860987, 11.7657004877, 11.7661147576, 11.7665289086, 11.7669429408, 11.7673568541, 11.7677706488, 11.7681843248, 11.7685978822, 11.7690113211, 11.7694246416, 11.7698378436, 11.7702509274, 11.7706638929, 11.7710767403, 11.7714894695, 11.7719020807, 11.7723145739, 11.7727269492, 11.7731392067, 11.7735513464, 11.7739633684, 11.7743752728, 11.7747870596, 11.7751987289, 11.7756102808, 11.7760217153, 11.7764330324, 11.7768442324, 11.7772553152, 11.7776662809, 11.7780771295, 11.7784878612, 11.778898476, 11.779308974, 11.7797193551, 11.7801296196, 11.7805397675, 11.7809497987, 11.7813597135, 11.7817695119, 11.7821791938, 11.7825887595, 11.7829982089, 11.7834075422, 11.7838167593, 11.7842258604, 11.7846348456, 11.7850437148, 11.7854524682, 11.7858611058, 11.7862696276, 11.7866780339, 11.7870863246, 11.7874944997, 11.7879025594, 11.7883105037, 11.7887183327, 11.7891260464, 11.789533645, 11.7899411284, 11.7903484968, 11.7907557501, 11.7911628886, 11.7915699121, 11.7919768209, 11.7923836149, 11.7927902943, 11.7931968591, 11.7936033093, 11.794009645, 11.7944158664, 11.7948219733, 11.795227966, 11.7956338445, 11.7960396088, 11.7964452591, 11.7968507953, 11.7972562175, 11.7976615259, 11.7980667204, 11.7984718011, 11.7988767681, 11.7992816215, 11.7996863613, 11.8000909876, 11.8004955005, 11.8008998999, 11.801304186, 11.8017083589, 11.8021124186, 11.8025163651, 11.8029201986, 11.803323919, 11.8037275266, 11.8041310212, 11.804534403, 11.8049376721, 11.8053408284, 11.8057438722, 11.8061468033, 11.806549622, 11.8069523282, 11.8073549221, 11.8077574036, 11.8081597729, 11.80856203, 11.8089641749, 11.8093662078, 11.8097681287, 11.8101699377, 11.8105716347, 11.81097322, 11.8113746935, 11.8117760553, 11.8121773055, 11.8125784441, 11.8129794713, 11.8133803869, 11.8137811912, 11.8141818842, 11.8145824659, 11.8149829364, 11.8153832958, 11.8157835441, 11.8161836814, 11.8165837078, 11.8169836233, 11.8173834279, 11.8177831218, 11.8181827049, 11.8185821775, 11.8189815394, 11.8193807909, 11.8197799318, 11.8201789624, 11.8205778827, 11.8209766926, 11.8213753924, 11.821773982, 11.8221724615, 11.822570831, 11.8229690905, 11.82336724, 11.8237652798, 11.8241632097, 11.82456103, 11.8249587405, 11.8253563415, 11.8257538329, 11.8261512148, 11.8265484873, 11.8269456504, 11.8273427042, 11.8277396488, 11.8281364842, 11.8285332105, 11.8289298277, 11.8293263358, 11.8297227351, 11.8301190254, 11.830515207, 11.8309112797, 11.8313072438, 11.8317030992, 11.832098846, 11.8324944843, 11.8328900142, 11.8332854356, 11.8336807487, 11.8340759534, 11.83447105, 11.8348660384, 11.8352609186, 11.8356556908, 11.8360503551, 11.8364449113, 11.8368393597, 11.8372337003, 11.8376279332, 11.8380220583, 11.8384160758, 11.8388099857, 11.8392037881, 11.839597483, 11.8399910705, 11.8403845507, 11.8407779236, 11.8411711892, 11.8415643477, 11.8419573991, 11.8423503434, 11.8427431807, 11.8431359111, 11.8435285346, 11.8439210513, 11.8443134612, 11.8447057644, 11.845097961, 11.8454900509, 11.8458820344, 11.8462739113, 11.8466656819, 11.8470573461, 11.847448904, 11.8478403556, 11.8482317011, 11.8486229404, 11.8490140737, 11.8494051009, 11.8497960222, 11.8501868376, 11.8505775472, 11.850968151, 11.851358649, 11.8517490414, 11.8521393282, 11.8525295094, 11.8529195851, 11.8533095554, 11.8536994203, 11.8540891799, 11.8544788342, 11.8548683833, 11.8552578272, 11.855647166, 11.8560363998, 11.8564255286, 11.8568145525, 11.8572034715, 11.8575922857, 11.8579809951, 11.8583695999, 11.8587580999, 11.8591464954, 11.8595347864, 11.8599229729, 11.8603110549, 11.8606990326, 11.861086906, 11.8614746751, 11.8618623401, 11.8622499009, 11.8626373576, 11.8630247102, 11.8634119589, 11.8637991037, 11.8641861447, 11.8645730818, 11.8649599151, 11.8653466448, 11.8657332709, 11.8661197933, 11.8665062122, 11.8668925277, 11.8672787397, 11.8676648484, 11.8680508537, 11.8684367559, 11.8688225548, 11.8692082506, 11.8695938432, 11.8699793329, 11.8703647196, 11.8707500033, 11.8711351842, 11.8715202623, 11.8719052377, 11.8722901103, 11.8726748803, 11.8730595477, 11.8734441125, 11.8738285749, 11.8742129348, 11.8745971924, 11.8749813477, 11.8753654006, 11.8757493514, 11.8761332, 11.8765169466, 11.876900591, 11.8772841335, 11.8776675741, 11.8780509127, 11.8784341496, 11.8788172846, 11.8792003179, 11.8795832496, 11.8799660797, 11.8803488082, 11.8807314351, 11.8811139607, 11.8814963848, 11.8818787076, 11.8822609291, 11.8826430494, 11.8830250684, 11.8834069864, 11.8837888033, 11.8841705191, 11.884552134, 11.8849336479, 11.885315061, 11.8856963733, 11.8860775849, 11.8864586957, 11.8868397059, 11.8872206155, 11.8876014245, 11.8879821331, 11.8883627412, 11.8887432489, 11.8891236563, 11.8895039634, 11.8898841703, 11.890264277, 11.8906442836, 11.8910241901, 11.8914039967, 11.8917837032, 11.8921633099, 11.8925428166, 11.8929222236, 11.8933015309, 11.8936807384, 11.8940598463, 11.8944388546, 11.8948177633, 11.8951965726, 11.8955752824, 11.8959538928, 11.8963324039, 11.8967108157, 11.8970891283, 11.8974673417, 11.897845456, 11.8982234712, 11.8986013874, 11.8989792046, 11.8993569229, 11.8997345424, 11.900112063, 11.9004894848, 11.900866808, 11.9012440325, 11.9016211583, 11.9019981857, 11.9023751145, 11.9027519449, 11.9031286768, 11.9035053104, 11.9038818457, 11.9042582828, 11.9046346217, 11.9050108624, 11.905387005, 11.9057630496, 11.9061389962, 11.9065148448, 11.9068905956, 11.9072662485, 11.9076418037, 11.9080172611, 11.9083926208, 11.9087678828, 11.9091430473, 11.9095181143, 11.9098930838, 11.9102679558, 11.9106427305, 11.9110174078, 11.9113919878, 11.9117664707, 11.9121408563, 11.9125151448, 11.9128893362, 11.9132634306, 11.913637428, 11.9140113285, 11.9143851322, 11.9147588389, 11.915132449, 11.9155059622, 11.9158793788, 11.9162526988, 11.9166259222, 11.9169990491, 11.9173720795, 11.9177450134, 11.918117851, 11.9184905923, 11.9188632373, 11.919235786, 11.9196082386, 11.919980595, 11.9203528554, 11.9207250198, 11.9210970881, 11.9214690605, 11.9218409371, 11.9222127178, 11.9225844027, 11.9229559919, 11.9233274854, 11.9236988833, 11.9240701856, 11.9244413923, 11.9248125036, 11.9251835194, 11.9255544399, 11.925925265, 11.9262959948, 11.9266666293, 11.9270371687, 11.9274076129, 11.9277779621, 11.9281482162, 11.9285183753, 11.9288884394, 11.9292584086, 11.929628283, 11.9299980626, 11.9303677474, 11.9307373376, 11.931106833, 11.9314762339, 11.9318455402, 11.932214752, 11.9325838693, 11.9329528922, 11.9333218207, 11.933690655, 11.9340593949, 11.9344280406, 11.9347965922, 11.9351650496, 11.935533413, 11.9359016823, 11.9362698576, 11.936637939, 11.9370059265, 11.9373738202, 11.9377416201, 11.9381093262, 11.9384769387, 11.9388444575, 11.9392118827, 11.9395792143, 11.9399464525, 11.9403135971, 11.9406806484, 11.9410476063, 11.9414144709, 11.9417812423, 11.9421479204, 11.9425145053, 11.9428809972, 11.9432473959, 11.9436137016, 11.9439799143, 11.9443460341, 11.944712061, 11.9450779951, 11.9454438364, 11.9458095849, 11.9461752407, 11.9465408039, 11.9469062745, 11.9472716525, 11.947636938, 11.948002131, 11.9483672316, 11.9487322398, 11.9490971557, 11.9494619794, 11.9498267108, 11.95019135, 11.950555897, 11.950920352, 11.951284715, 11.9516489859, 11.9520131649, 11.952377252, 11.9527412472, 11.9531051506, 11.9534689622, 11.9538326821, 11.9541963104, 11.954559847, 11.954923292, 11.9552866455, 11.9556499075, 11.9560130781, 11.9563761572, 11.9567391451, 11.9571020416, 11.9574648468, 11.9578275608, 11.9581901837, 11.9585527154, 11.9589151561, 11.9592775057, 11.9596397644, 11.9600019321, 11.9603640089, 11.9607259948, 11.96108789, 11.9614496944, 11.9618114081, 11.9621730311, 11.9625345635, 11.9628960053, 11.9632573566, 11.9636186174, 11.9639797878, 11.9643408678, 11.9647018574, 11.9650627567, 11.9654235658, 11.9657842847, 11.9661449133, 11.9665054519, 11.9668659004, 11.9672262588, 11.9675865273, 11.9679467058, 11.9683067944, 11.9686667932, 11.9690267022, 11.9693865213, 11.9697462508, 11.9701058906, 11.9704654408, 11.9708249014, 11.9711842724, 11.971543554, 11.971902746, 11.9722618487, 11.9726208621, 11.9729797861, 11.9733386208, 11.9736973663, 11.9740560226, 11.9744145898, 11.9747730679, 11.9751314569, 11.9754897569, 11.975847968, 11.9762060901, 11.9765641234, 11.9769220679, 11.9772799235, 11.9776376904, 11.9779953686, 11.9783529582, 11.9787104591, 11.9790678715, 11.9794251953, 11.9797824307, 11.9801395776, 11.9804966362, 11.9808536064, 11.9812104883, 11.9815672819, 11.9819239873, 11.9822806046, 11.9826371337, 11.9829935747, 11.9833499277, 11.9837061927, 11.9840623697, 11.9844184588, 11.98477446, 11.9851303735, 11.9854861991, 11.985841937, 11.9861975872, 11.9865531498, 11.9869086247, 11.9872640121, 11.9876193119, 11.9879745243, 11.9883296492, 11.9886846868, 11.989039637, 11.9893944998, 11.9897492755, 11.9901039639, 11.9904585651, 11.9908130792, 11.9911675061, 11.9915218461, 11.991876099, 11.992230265, 11.992584344, 11.9929383362, 11.9932922415, 11.99364606, 11.9939997918, 11.9943534369, 11.9947069953, 11.995060467, 11.9954138522, 11.9957671509, 11.996120363, 11.9964734887, 11.996826528, 11.9971794809, 11.9975323475, 11.9978851278, 11.9982378219, 11.9985904297, 11.9989429514, 11.999295387, 11.9996477365, 12.0, 12.0003521775, 12.000704269, 12.0010562746, 12.0014081944, 12.0017600283, 12.0021117765, 12.0024634389, 12.0028150156, 12.0031665067, 12.0035179121, 12.003869232, 12.0042204663, 12.0045716152, 12.0049226786, 12.0052736566, 12.0056245492, 12.0059753565, 12.0063260785, 12.0066767153, 12.0070272669, 12.0073777333, 12.0077281146, 12.0080784109, 12.0084286221, 12.0087787483, 12.0091287895, 12.0094787459, 12.0098286174, 12.010178404, 12.0105281059, 12.010877723, 12.0112272554, 12.0115767032, 12.0119260663, 12.0122753449, 12.0126245389, 12.0129736484, 12.0133226734, 12.0136716141, 12.0140204703, 12.0143692422, 12.0147179299, 12.0150665332, 12.0154150524, 12.0157634874, 12.0161118382, 12.016460105, 12.0168082877, 12.0171563864, 12.0175044011, 12.0178523319, 12.0182001788, 12.0185479419, 12.0188956211, 12.0192432166, 12.0195907284, 12.0199381564, 12.0202855008, 12.0206327617, 12.0209799389, 12.0213270326, 12.0216740429, 12.0220209696, 12.022367813, 12.022714573, 12.0230612497, 12.0234078431, 12.0237543533, 12.0241007803, 12.024447124, 12.0247933847, 12.0251395623, 12.0254856568, 12.0258316683, 12.0261775969, 12.0265234425, 12.0268692053, 12.0272148852, 12.0275604822, 12.0279059966, 12.0282514282, 12.0285967771, 12.0289420433, 12.029287227, 12.029632328, 12.0299773466, 12.0303222826, 12.0306671362, 12.0310119074, 12.0313565963, 12.0317012027, 12.0320457269, 12.0323901689, 12.0327345286, 12.0330788061, 12.0334230015, 12.0337671148, 12.0341111461, 12.0344550953, 12.0347989626, 12.0351427479, 12.0354864513, 12.0358300728, 12.0361736126, 12.0365170705, 12.0368604467, 12.0372037412, 12.037546954, 12.0378900851, 12.0382331347, 12.0385761028, 12.0389189893, 12.0392617943, 12.039604518, 12.0399471602, 12.040289721, 12.0406322006, 12.0409745988, 12.0413169158, 12.0416591516, 12.0420013063, 12.0423433798, 12.0426853722, 12.0430272836, 12.043369114, 12.0437108633, 12.0440525318, 12.0443941194, 12.0447356261, 12.0450770519, 12.045418397, 12.0457596614, 12.046100845, 12.046441948, 12.0467829704, 12.0471239121, 12.0474647733, 12.047805554, 12.0481462542, 12.048486874, 12.0488274134, 12.0491678724, 12.0495082511, 12.0498485495, 12.0501887676, 12.0505289055, 12.0508689633, 12.0512089409, 12.0515488384, 12.0518886559, 12.0522283933, 12.0525680508, 12.0529076283, 12.0532471259, 12.0535865436, 12.0539258815, 12.0542651396, 12.054604318, 12.0549434166, 12.0552824355, 12.0556213748, 12.0559602345, 12.0562990146, 12.0566377151, 12.0569763362, 12.0573148778, 12.05765334, 12.0579917228, 12.0583300262, 12.0586682503, 12.0590063952, 12.0593444608, 12.0596824472, 12.0600203545, 12.0603581826, 12.0606959317, 12.0610336017, 12.0613711927, 12.0617087047, 12.0620461377, 12.0623834919, 12.0627207672, 12.0630579636, 12.0633950813, 12.0637321202, 12.0640690804, 12.0644059619, 12.0647427648, 12.065079489, 12.0654161347, 12.0657527018, 12.0660891905, 12.0664256006, 12.0667619324, 12.0670981857, 12.0674343608, 12.0677704574, 12.0681064759, 12.068442416, 12.068778278, 12.0691140618, 12.0694497674, 12.069785395, 12.0701209445, 12.0704564159, 12.0707918094, 12.0711271249, 12.0714623626, 12.0717975223, 12.0721326042, 12.0724676082, 12.0728025345, 12.0731373831, 12.073472154, 12.0738068472, 12.0741414628, 12.0744760007, 12.0748104612, 12.0751448441, 12.0754791495, 12.0758133775, 12.076147528, 12.0764816012, 12.0768155971, 12.0771495156, 12.0774833569, 12.0778171209, 12.0781508077, 12.0784844174, 12.07881795, 12.0791514054, 12.0794847838, 12.0798180852, 12.0801513096, 12.0804844571, 12.0808175276, 12.0811505213, 12.0814834381, 12.0818162781, 12.0821490414, 12.0824817279, 12.0828143377, 12.0831468708, 12.0834793273, 12.0838117073, 12.0841440106, 12.0844762375, 12.0848083878, 12.0851404617, 12.0854724592, 12.0858043803, 12.086136225, 12.0864679935, 12.0867996856, 12.0871313015, 12.0874628413, 12.0877943048, 12.0881256922, 12.0884570035, 12.0887882387, 12.0891193979, 12.0894504811, 12.0897814884, 12.0901124197, 12.0904432751, 12.0907740546, 12.0911047584, 12.0914353863, 12.0917659385, 12.092096415, 12.0924268158, 12.0927571409, 12.0930873904, 12.0934175644, 12.0937476628, 12.0940776857, 12.0944076331, 12.094737505, 12.0950673016, 12.0953970228, 12.0957266686, 12.0960562392, 12.0963857345, 12.0967151545, 12.0970444993, 12.097373769, 12.0977029635, 12.098032083, 12.0983611273, 12.0986900967, 12.099018991, 12.0993478104, 12.0996765549, 12.1000052244, 12.1003338191, 12.100662339, 12.1009907841, 12.1013191544, 12.10164745, 12.1019756709, 12.1023038172, 12.1026318889, 12.1029598859, 12.1032878084, 12.1036156564, 12.1039434299, 12.1042711289, 12.1045987536, 12.1049263038, 12.1052537797, 12.1055811813, 12.1059085086, 12.1062357616, 12.1065629404, 12.1068900451, 12.1072170756, 12.107544032, 12.1078709143, 12.1081977225, 12.1085244568, 12.108851117, 12.1091777034, 12.1095042158, 12.1098306543, 12.110157019, 12.1104833098, 12.1108095269, 12.1111356702, 12.1114617399, 12.1117877358, 12.1121136581, 12.1124395068, 12.1127652819, 12.1130909834, 12.1134166115, 12.113742166, 12.1140676472, 12.1143930549, 12.1147183892, 12.1150436502, 12.1153688378, 12.1156939522, 12.1160189933, 12.1163439612, 12.116668856, 12.1169936775, 12.117318426, 12.1176431014, 12.1179677037, 12.118292233, 12.1186166894, 12.1189410727, 12.1192653832, 12.1195896207, 12.1199137855, 12.1202378773, 12.1205618964, 12.1208858428, 12.1212097164, 12.1215335173, 12.1218572456, 12.1221809013, 12.1225044843, 12.1228279948, 12.1231514328, 12.1234747982, 12.1237980913, 12.1241213118, 12.12444446, 12.1247675358, 12.1250905393, 12.1254134705, 12.1257363294, 12.1260591161, 12.1263818305, 12.1267044728, 12.127027043, 12.1273495411, 12.127671967, 12.127994321, 12.1283166029, 12.1286388129, 12.1289609509, 12.1292830169, 12.1296050112, 12.1299269335, 12.1302487841, 12.1305705628, 12.1308922698, 12.1312139051, 12.1315354687, 12.1318569606, 12.1321783809, 12.1324997296, 12.1328210068, 12.1331422124, 12.1334633465, 12.1337844092, 12.1341054004, 12.1344263202, 12.1347471687, 12.1350679458, 12.1353886516, 12.1357092861, 12.1360298494, 12.1363503415, 12.1366707623, 12.1369911121, 12.1373113907, 12.1376315982, 12.1379517347, 12.1382718002, 12.1385917946, 12.1389117181, 12.1392315707, 12.1395513524, 12.1398710632, 12.1401907032, 12.1405102724, 12.1408297708, 12.1411491984, 12.1414685554, 12.1417878417, 12.1421070573, 12.1424262023, 12.1427452768, 12.1430642806, 12.143383214, 12.1437020769, 12.1440208693, 12.1443395912, 12.1446582428, 12.1449768241, 12.1452953349, 12.1456137755, 12.1459321458, 12.1462504459, 12.1465686757, 12.1468868354, 12.1472049249, 12.1475229444, 12.1478408937, 12.1481587729, 12.1484765822, 12.1487943214, 12.1491119907, 12.1494295901, 12.1497471195, 12.1500645791, 12.1503819688, 12.1506992887, 12.1510165389, 12.1513337193, 12.15165083, 12.151967871, 12.1522848423, 12.152601744, 12.1529185761, 12.1532353387, 12.1535520317, 12.1538686552, 12.1541852093, 12.1545016939, 12.1548181091, 12.1551344549, 12.1554507313, 12.1557669384, 12.1560830763, 12.1563991449, 12.1567151442, 12.1570310744, 12.1573469354, 12.1576627272, 12.1579784499, 12.1582941036, 12.1586096882, 12.1589252038, 12.1592406504, 12.1595560281, 12.1598713368, 12.1601865766, 12.1605017476, 12.1608168497, 12.161131883, 12.1614468475, 12.1617617433, 12.1620765704, 12.1623913288, 12.1627060185, 12.1630206396, 12.1633351921, 12.163649676, 12.1639640914, 12.1642784383, 12.1645927167, 12.1649069267, 12.1652210682, 12.1655351414, 12.1658491462, 12.1661630826, 12.1664769508, 12.1667907507, 12.1671044824, 12.1674181458, 12.1677317411, 12.1680452682, 12.1683587272, 12.1686721181, 12.168985441, 12.1692986958, 12.1696118826, 12.1699250014, 12.1702380523, 12.1705510353, 12.1708639504, 12.1711767977, 12.1714895771, 12.1718022887, 12.1721149325, 12.1724275086, 12.172740017, 12.1730524578, 12.1733648308, 12.1736771363, 12.1739893742, 12.1743015445, 12.1746136472, 12.1749256825, 12.1752376503, 12.1755495506, 12.1758613836, 12.1761731491, 12.1764848473, 12.1767964781, 12.1771080417, 12.177419538, 12.177730967, 12.1780423289, 12.1783536235, 12.178664851, 12.1789760114, 12.1792871046, 12.1795981308, 12.17990909, 12.1802199822, 12.1805308073, 12.1808415656, 12.1811522569, 12.1814628813, 12.1817734388, 12.1820839295, 12.1823943534, 12.1827047105, 12.1830150009, 12.1833252245, 12.1836353815, 12.1839454718, 12.1842554954, 12.1845654524, 12.1848753429, 12.1851851668, 12.1854949242, 12.1858046151, 12.1861142395, 12.1864237975, 12.1867332891, 12.1870427143, 12.1873520732, 12.1876613657, 12.187970592, 12.188279752, 12.1885888457, 12.1888978732, 12.1892068346, 12.1895157298, 12.1898245589, 12.1901333219, 12.1904420188, 12.1907506497, 12.1910592145, 12.1913677134, 12.1916761464, 12.1919845134, 12.1922928145, 12.1926010497, 12.1929092191, 12.1932173227, 12.1935253605, 12.1938333325, 12.1941412389, 12.1944490795, 12.1947568544, 12.1950645637, 12.1953722074, 12.1956797855, 12.195987298, 12.196294745, 12.1966021265, 12.1969094425, 12.1972166931, 12.1975238783, 12.197830998, 12.1981380524, 12.1984450415, 12.1987519652, 12.1990588237, 12.1993656169, 12.1996723448, 12.1999790076, 12.2002856052, 12.2005921377, 12.200898605, 12.2012050073, 12.2015113445, 12.2018176167, 12.2021238238, 12.202429966, 12.2027360433, 12.2030420556, 12.203348003, 12.2036538855, 12.2039597032, 12.2042654561, 12.2045711442, 12.2048767676, 12.2051823262, 12.2054878202, 12.2057932494, 12.206098614, 12.206403914, 12.2067091494, 12.2070143202, 12.2073194265, 12.2076244682, 12.2079294455, 12.2082343583, 12.2085392067, 12.2088439907, 12.2091487104, 12.2094533656, 12.2097579566, 12.2100624832, 12.2103669456, 12.2106713438, 12.2109756777, 12.2112799475, 12.2115841531, 12.2118882945, 12.2121923719, 12.2124963852, 12.2128003344, 12.2131042196, 12.2134080409, 12.2137117981, 12.2140154914, 12.2143191208, 12.2146226863, 12.2149261879, 12.2152296257, 12.2155329997, 12.21583631, 12.2161395564, 12.2164427392, 12.2167458582, 12.2170489136, 12.2173519053, 12.2176548334, 12.2179576979, 12.2182604988, 12.2185632362, 12.2188659101, 12.2191685205, 12.2194710674, 12.2197735509, 12.220075971, 12.2203783277, 12.2206806211, 12.2209828511, 12.2212850178, 12.2215871213, 12.2218891615, 12.2221911385, 12.2224930522, 12.2227949029, 12.2230966903, 12.2233984147, 12.223700076, 12.2240016742, 12.2243032094, 12.2246046815, 12.2249060907, 12.2252074369, 12.2255087202, 12.2258099406, 12.2261110981, 12.2264121928, 12.2267132246, 12.2270141936, 12.2273150999, 12.2276159434, 12.2279167242, 12.2282174423, 12.2285180977, 12.2288186905, 12.2291192207, 12.2294196882, 12.2297200932, 12.2300204357, 12.2303207157, 12.2306209331, 12.2309210881, 12.2312211807, 12.2315212109, 12.2318211787, 12.2321210841, 12.2324209272, 12.232720708, 12.2330204265, 12.2333200827, 12.2336196768, 12.2339192086, 12.2342186782, 12.2345180857, 12.2348174311, 12.2351167144, 12.2354159356, 12.2357150948, 12.2360141919, 12.236313227, 12.2366122002, 12.2369111114, 12.2372099608, 12.2375087482, 12.2378074737, 12.2381061374, 12.2384047393, 12.2387032794, 12.2390017578, 12.2393001744, 12.2395985292, 12.2398968224, 12.240195054, 12.2404932239, 12.2407913322, 12.2410893789, 12.241387364, 12.2416852876, 12.2419831497, 12.2422809503, 12.2425786895, 12.2428763672, 12.2431739835, 12.2434715384, 12.243769032, 12.2440664642, 12.2443638351, 12.2446611448, 12.2449583932, 12.2452555803, 12.2455527063, 12.245849771, 12.2461467746, 12.2464437171, 12.2467405985, 12.2470374188, 12.247334178, 12.2476308762, 12.2479275134, 12.2482240897, 12.2485206049, 12.2488170593, 12.2491134527, 12.2494097853, 12.249706057, 12.2500022678, 12.2502984179, 12.2505945072, 12.2508905357, 12.2511865035, 12.2514824106, 12.251778257, 12.2520740428, 12.2523697679, 12.2526654325, 12.2529610364, 12.2532565798, 12.2535520626, 12.253847485, 12.2541428469, 12.2544381483, 12.2547333892, 12.2550285698, 12.25532369, 12.2556187498, 12.2559137493, 12.2562086885, 12.2565035674, 12.2567983861, 12.2570931445, 12.2573878427, 12.2576824807, 12.2579770586, 12.2582715763, 12.2585660339, 12.2588604314, 12.2591547689, 12.2594490463, 12.2597432637, 12.2600374211, 12.2603315186, 12.2606255561, 12.2609195337, 12.2612134514, 12.2615073092, 12.2618011072, 12.2620948454, 12.2623885238, 12.2626821424, 12.2629757012, 12.2632692004, 12.2635626398, 12.2638560196, 12.2641493397, 12.2644426002, 12.2647358011, 12.2650289425, 12.2653220242, 12.2656150465, 12.2659080092, 12.2662009125, 12.2664937563, 12.2667865407, 12.2670792657, 12.2673719313, 12.2676645375, 12.2679570844, 12.268249572, 12.2685420003, 12.2688343693, 12.2691266791, 12.2694189297, 12.2697111211, 12.2700032534, 12.2702953265, 12.2705873404, 12.2708792953, 12.2711711911, 12.2714630279, 12.2717548056, 12.2720465244, 12.2723381842, 12.272629785, 12.2729213269, 12.2732128099, 12.273504234, 12.2737955992, 12.2740869056, 12.2743781532, 12.2746693421, 12.2749604721, 12.2752515435, 12.2755425561, 12.27583351, 12.2761244053, 12.2764152419, 12.2767060199, 12.2769967393, 12.2772874001, 12.2775780024, 12.2778685462, 12.2781590314, 12.2784494582, 12.2787398266, 12.2790301364, 12.2793203879, 12.2796105811, 12.2799007158, 12.2801907922, 12.2804808103, 12.2807707701, 12.2810606717, 12.281350515, 12.2816403001, 12.281930027, 12.2822196957, 12.2825093062, 12.2827988587, 12.283088353, 12.2833777893, 12.2836671675, 12.2839564877, 12.2842457498, 12.284534954, 12.2848241002, 12.2851131885, 12.2854022189, 12.2856911913, 12.2859801059, 12.2862689627, 12.2865577616, 12.2868465027, 12.2871351861, 12.2874238117, 12.2877123795, 12.2880008897, 12.2882893422, 12.288577737, 12.2888660742, 12.2891543537, 12.2894425757, 12.2897307401, 12.2900188469, 12.2903068963, 12.2905948881, 12.2908828224, 12.2911706993, 12.2914585188, 12.2917462808, 12.2920339855, 12.2923216328, 12.2926092228, 12.2928967554, 12.2931842308, 12.2934716488, 12.2937590097, 12.2940463133, 12.2943335597, 12.2946207489, 12.294907881, 12.2951949559, 12.2954819737, 12.2957689344, 12.2960558381, 12.2963426847, 12.2966294743, 12.2969162069, 12.2972028825, 12.2974895012, 12.2977760629, 12.2980625677, 12.2983490157, 12.2986354067, 12.298921741, 12.2992080184, 12.299494239, 12.2997804029, 12.30006651, 12.3003525603, 12.300638554, 12.300924491, 12.3012103713, 12.301496195, 12.3017819621, 12.3020676725, 12.3023533264, 12.3026389238, 12.3029244646, 12.3032099489, 12.3034953768, 12.3037807482, 12.3040660631, 12.3043513217, 12.3046365238, 12.3049216696, 12.305206759, 12.3054917921, 12.3057767689, 12.3060616894, 12.3063465537, 12.3066313617, 12.3069161135, 12.3072008091, 12.3074854486, 12.3077700319, 12.3080545591, 12.3083390301, 12.3086234451, 12.3089078041, 12.309192107, 12.3094763538, 12.3097605447, 12.3100446796, 12.3103287586, 12.3106127817, 12.3108967488, 12.3111806601, 12.3114645154, 12.311748315, 12.3120320587, 12.3123157467, 12.3125993789, 12.3128829553, 12.313166476, 12.313449941, 12.3137333503, 12.3140167039, 12.3143000019, 12.3145832443, 12.3148664311, 12.3151495623, 12.3154326379, 12.315715658, 12.3159986226, 12.3162815317, 12.3165643854, 12.3168471836, 12.3171299264, 12.3174126138, 12.3176952458, 12.3179778224, 12.3182603437, 12.3185428097, 12.3188252204, 12.3191075758, 12.319389876, 12.3196721209, 12.3199543107, 12.3202364452, 12.3205185246, 12.3208005489, 12.321082518, 12.321364432, 12.321646291, 12.3219280949, 12.3222098437, 12.3224915376, 12.3227731765, 12.3230547603, 12.3233362893, 12.3236177633, 12.3238991824, 12.3241805466, 12.324461856, 12.3247431105, 12.3250243102, 12.3253054551, 12.3255865452, 12.3258675806, 12.3261485612, 12.3264294871, 12.3267103583, 12.3269911749, 12.3272719368, 12.3275526441, 12.3278332968, 12.3281138948, 12.3283944384, 12.3286749273, 12.3289553618, 12.3292357417, 12.3295160672, 12.3297963382, 12.3300765548, 12.330356717, 12.3306368247, 12.3309168781, 12.3311968772, 12.3314768219, 12.3317567123, 12.3320365484, 12.3323163302, 12.3325960578, 12.3328757312, 12.3331553503, 12.3334349153, 12.3337144261, 12.3339938828, 12.3342732853, 12.3345526338, 12.3348319281, 12.3351111684, 12.3353903547, 12.3356694869, 12.3359485652, 12.3362275895, 12.3365065598, 12.3367854762, 12.3370643387, 12.3373431473, 12.337621902, 12.3379006029, 12.3381792499, 12.3384578431, 12.3387363826, 12.3390148683, 12.3392933002, 12.3395716784, 12.3398500029, 12.3401282737, 12.3404064909, 12.3406846544, 12.3409627643, 12.3412408205, 12.3415188232, 12.3417967724, 12.342074668, 12.3423525101, 12.3426302987, 12.3429080338, 12.3431857154, 12.3434633437, 12.3437409185, 12.3440184399, 12.3442959079, 12.3445733226, 12.3448506839, 12.345127992, 12.3454052467, 12.3456824482, 12.3459595964, 12.3462366914, 12.3465137332, 12.3467907218, 12.3470676572, 12.3473445394, 12.3476213686, 12.3478981446, 12.3481748675, 12.3484515374, 12.3487281542, 12.349004718, 12.3492812288, 12.3495576866, 12.3498340915, 12.3501104433, 12.3503867423, 12.3506629884, 12.3509391815, 12.3512153219, 12.3514914093, 12.351767444, 12.3520434258, 12.3523193548, 12.3525952311, 12.3528710547, 12.3531468255, 12.3534225436, 12.353698209, 12.3539738218, 12.3542493819, 12.3545248894, 12.3548003444, 12.3550757467, 12.3553510964, 12.3556263936, 12.3559016383, 12.3561768305, 12.3564519702, 12.3567270575, 12.3570020923, 12.3572770746, 12.3575520046, 12.3578268822, 12.3581017074, 12.3583764803, 12.3586512009, 12.3589258692, 12.3592004851, 12.3594750488, 12.3597495603, 12.3600240196, 12.3602984266, 12.3605727815, 12.3608470842, 12.3611213347, 12.3613955332, 12.3616696795, 12.3619437737, 12.3622178159, 12.362491806, 12.3627657442, 12.3630396303, 12.3633134644, 12.3635872465, 12.3638609767, 12.364134655, 12.3644082814, 12.3646818559, 12.3649553785, 12.3652288493, 12.3655022682, 12.3657756353, 12.3660489507, 12.3663222142, 12.3665954261, 12.3668685862, 12.3671416946, 12.3674147512, 12.3676877563, 12.3679607096, 12.3682336114, 12.3685064615, 12.36877926, 12.369052007, 12.3693247024, 12.3695973463, 12.3698699386, 12.3701424795, 12.3704149689, 12.3706874068, 12.3709597933, 12.3712321284, 12.371504412, 12.3717766443, 12.3720488253, 12.3723209549, 12.3725930331, 12.3728650601, 12.3731370358, 12.3734089602, 12.3736808334, 12.3739526554, 12.3742244261, 12.3744961457, 12.3747678141, 12.3750394313, 12.3753109975, 12.3755825125, 12.3758539764, 12.3761253893, 12.3763967511, 12.3766680619, 12.3769393216, 12.3772105304, 12.3774816882, 12.377752795, 12.3780238509, 12.3782948559, 12.37856581, 12.3788367132, 12.3791075656, 12.3793783671, 12.3796491178, 12.3799198176, 12.3801904667, 12.3804610651, 12.3807316127, 12.3810021096, 12.3812725557, 12.3815429512, 12.381813296, 12.3820835901, 12.3823538337, 12.3826240266, 12.3828941689, 12.3831642606, 12.3834343018, 12.3837042925, 12.3839742326, 12.3842441222, 12.3845139614, 12.3847837501, 12.3850534883, 12.3853231762, 12.3855928136, 12.3858624006, 12.3861319373, 12.3864014236, 12.3866708596, 12.3869402453, 12.3872095807, 12.3874788658, 12.3877481007, 12.3880172853, 12.3882864198, 12.388555504, 12.388824538, 12.3890935219, 12.3893624556, 12.3896313393, 12.3899001728, 12.3901689562, 12.3904376896, 12.3907063729, 12.3909750062, 12.3912435894, 12.3915121227, 12.391780606, 12.3920490394, 12.3923174228, 12.3925857563, 12.3928540399, 12.3931222736, 12.3933904574, 12.3936585915, 12.3939266756, 12.39419471, 12.3944626946, 12.3947306294, 12.3949985145, 12.3952663498, 12.3955341355, 12.3958018714, 12.3960695576, 12.3963371942, 12.3966047812, 12.3968723185, 12.3971398062, 12.3974072444, 12.3976746329, 12.397941972, 12.3982092615, 12.3984765014, 12.3987436919, 12.399010833, 12.3992779245, 12.3995449666, 12.3998119593, 12.4000789026, 12.4003457965, 12.4006126411, 12.4008794363, 12.4011461822, 12.4014128787, 12.401679526, 12.401946124, 12.4022126727, 12.4024791722, 12.4027456225, 12.4030120236, 12.4032783755, 12.4035446782, 12.4038109318, 12.4040771362, 12.4043432916, 12.4046093978, 12.404875455, 12.4051414631, 12.4054074222, 12.4056733323, 12.4059391933, 12.4062050054, 12.4064707685, 12.4067364827, 12.4070021479, 12.4072677642, 12.4075333317, 12.4077988502, 12.4080643199, 12.4083297408, 12.4085951128, 12.408860436, 12.4091257105, 12.4093909361, 12.4096561131, 12.4099212412, 12.4101863207, 12.4104513515, 12.4107163336, 12.410981267, 12.4112461518, 12.411510988, 12.4117757756, 12.4120405146, 12.412305205, 12.4125698468, 12.4128344401, 12.4130989849, 12.4133634812, 12.413627929, 12.4138923284, 12.4141566793, 12.4144209817, 12.4146852358, 12.4149494415, 12.4152135988, 12.4154777077, 12.4157417683, 12.4160057806, 12.4162697445, 12.4165336602, 12.4167975276, 12.4170613468, 12.4173251177, 12.4175888404, 12.4178525149, 12.4181161412, 12.4183797194, 12.4186432494, 12.4189067313, 12.419170165, 12.4194335507, 12.4196968883, 12.4199601778, 12.4202234193, 12.4204866128, 12.4207497583, 12.4210128558, 12.4212759053, 12.4215389068, 12.4218018605, 12.4220647662, 12.422327624, 12.4225904339, 12.4228531959, 12.4231159101, 12.4233785765, 12.4236411951, 12.4239037658, 12.4241662888, 12.424428764, 12.4246911915, 12.4249535713, 12.4252159033, 12.4254781876, 12.4257404243, 12.4260026133, 12.4262647547, 12.4265268485, 12.4267888946, 12.4270508932, 12.4273128441, 12.4275747476, 12.4278366035, 12.4280984118, 12.4283601727, 12.4286218861, 12.428883552, 12.4291451705, 12.4294067415, 12.4296682651, 12.4299297414, 12.4301911702, 12.4304525517, 12.4307138858, 12.4309751726, 12.4312364121, 12.4314976043, 12.4317587492, 12.4320198468, 12.4322808972, 12.4325419004, 12.4328028564, 12.4330637651, 12.4333246267, 12.4335854412, 12.4338462084, 12.4341069286, 12.4343676017, 12.4346282276, 12.4348888065, 12.4351493384, 12.4354098232, 12.4356702609, 12.4359306517, 12.4361909955, 12.4364512923, 12.4367115421, 12.436971745, 12.437231901, 12.4374920101, 12.4377520723, 12.4380120877, 12.4382720561, 12.4385319778, 12.4387918526, 12.4390516806, 12.4393114618, 12.4395711963, 12.439830884, 12.440090525, 12.4403501192, 12.4406096667, 12.4408691676, 12.4411286218, 12.4413880293, 12.4416473903, 12.4419067045, 12.4421659722, 12.4424251933, 12.4426843679, 12.4429434958, 12.4432025773, 12.4434616122, 12.4437206007, 12.4439795426, 12.4442384381, 12.4444972871, 12.4447560897, 12.4450148459, 12.4452735556, 12.445532219, 12.445790836, 12.4460494067, 12.4463079311, 12.4465664091, 12.4468248408, 12.4470832262, 12.4473415654, 12.4475998583, 12.447858105, 12.4481163054, 12.4483744597, 12.4486325677, 12.4488906296, 12.4491486454, 12.449406615, 12.4496645385, 12.4499224159, 12.4501802472, 12.4504380324, 12.4506957716, 12.4509534647, 12.4512111118, 12.4514687129, 12.4517262681, 12.4519837772, 12.4522412404, 12.4524986577, 12.452756029, 12.4530133545, 12.453270634, 12.4535278677, 12.4537850555, 12.4540421975, 12.4542992936, 12.454556344, 12.4548133485, 12.4550703073, 12.4553272203, 12.4555840876, 12.4558409091, 12.456097685, 12.4563544151, 12.4566110996, 12.4568677384, 12.4571243315, 12.4573808791, 12.457637381, 12.4578938373, 12.4581502481, 12.4584066132, 12.4586629329, 12.458919207, 12.4591754356, 12.4594316186, 12.4596877562, 12.4599438484, 12.4601998951, 12.4604558963, 12.4607118521, 12.4609677626, 12.4612236276, 12.4614794473, 12.4617352216, 12.4619909506, 12.4622466342, 12.4625022726, 12.4627578657, 12.4630134134, 12.463268916, 12.4635243733, 12.4637797853, 12.4640351522, 12.4642904739, 12.4645457503, 12.4648009817, 12.4650561678, 12.4653113089, 12.4655664048, 12.4658214556, 12.4660764614, 12.4663314221, 12.4665863377, 12.4668412083, 12.4670960339, 12.4673508145, 12.4676055501, 12.4678602407, 12.4681148864, 12.4683694871, 12.4686240429, 12.4688785538, 12.4691330198, 12.469387441, 12.4696418172, 12.4698961487, 12.4701504353, 12.4704046771, 12.4706588741, 12.4709130263, 12.4711671337, 12.4714211964, 12.4716752144, 12.4719291876, 12.4721831162, 12.4724370001, 12.4726908392, 12.4729446338, 12.4731983837, 12.473452089, 12.4737057496, 12.4739593657, 12.4742129372, 12.4744664641, 12.4747199465, 12.4749733844, 12.4752267777, 12.4754801266, 12.475733431, 12.4759866909, 12.4762399063, 12.4764930773, 12.4767462039, 12.4769992861, 12.4772523239, 12.4775053174, 12.4777582664, 12.4780111712, 12.4782640316, 12.4785168477, 12.4787696195, 12.479022347, 12.4792750303, 12.4795276693, 12.479780264, 12.4800328146, 12.4802853209, 12.4805377831, 12.4807902011, 12.4810425749, 12.4812949046, 12.4815471902, 12.4817994317, 12.482051629, 12.4823037823, 12.4825558915, 12.4828079567, 12.4830599779, 12.483311955, 12.4835638881, 12.4838157773, 12.4840676224, 12.4843194236, 12.4845711809, 12.4848228943, 12.4850745637, 12.4853261892, 12.4855777709, 12.4858293087, 12.4860808027, 12.4863322528, 12.4865836591, 12.4868350216, 12.4870863403, 12.4873376152, 12.4875888464, 12.4878400338, 12.4880911775, 12.4883422775, 12.4885933338, 12.4888443465, 12.4890953154, 12.4893462407, 12.4895971224, 12.4898479604, 12.4900987549, 12.4903495057, 12.490600213, 12.4908508767, 12.4911014969, 12.4913520736, 12.4916026067, 12.4918530963, 12.4921035425, 12.4923539452, 12.4926043044, 12.4928546202, 12.4931048925, 12.4933551215, 12.4936053071, 12.4938554492, 12.4941055481, 12.4943556035, 12.4946056157, 12.4948555845, 12.49510551, 12.4953553922, 12.4956052312, 12.4958550269, 12.4961047793, 12.4963544886, 12.4966041546, 12.4968537774, 12.497103357, 12.4973528935, 12.4976023868, 12.497851837, 12.498101244, 12.4983506079, 12.4985999288, 12.4988492065, 12.4990984412, 12.4993476329, 12.4995967815, 12.4998458871, 12.5000949497, 12.5003439693, 12.5005929459, 12.5008418796, 12.5010907703, 12.5013396181, 12.5015884229, 12.5018371849, 12.502085904, 12.5023345802, 12.5025832136, 12.5028318041, 12.5030803518, 12.5033288566, 12.5035773187, 12.503825738, 12.5040741145, 12.5043224483, 12.5045707393, 12.5048189876, 12.5050671932, 12.5053153561, 12.5055634764, 12.5058115539, 12.5060595888, 12.5063075811, 12.5065555308, 12.5068034378, 12.5070513022, 12.5072991241, 12.5075469034, 12.5077946402, 12.5080423344, 12.5082899861, 12.5085375953, 12.5087851621, 12.5090326863, 12.5092801681, 12.5095276074, 12.5097750043, 12.5100223588, 12.5102696709, 12.5105169406, 12.5107641679, 12.5110113529, 12.5112584955, 12.5115055958, 12.5117526538, 12.5119996694, 12.5122466428, 12.5124935739, 12.5127404628, 12.5129873094, 12.5132341138, 12.513480876, 12.513727596, 12.5139742737, 12.5142209094, 12.5144675028, 12.5147140541, 12.5149605633, 12.5152070304, 12.5154534554, 12.5156998383, 12.5159461791, 12.5161924779, 12.5164387346, 12.5166849493, 12.516931122, 12.5171772527, 12.5174233414, 12.5176693881, 12.5179153929, 12.5181613558, 12.5184072767, 12.5186531557, 12.5188989928, 12.519144788, 12.5193905413, 12.5196362528, 12.5198819225, 12.5201275503, 12.5203731363, 12.5206186806, 12.520864183, 12.5211096437, 12.5213550626, 12.5216004397, 12.5218457752, 12.5220910689, 12.5223363209, 12.5225815313, 12.5228266999, 12.5230718269, 12.5233169123, 12.5235619561, 12.5238069582, 12.5240519187, 12.5242968377, 12.524541715, 12.5247865509, 12.5250313451, 12.5252760979, 12.5255208091, 12.5257654788, 12.5260101071, 12.5262546938, 12.5264992391, 12.526743743, 12.5269882054, 12.5272326264, 12.5274770061, 12.5277213443, 12.5279656411, 12.5282098966, 12.5284541108, 12.5286982836, 12.5289424151, 12.5291865053, 12.5294305541, 12.5296745618, 12.5299185281, 12.5301624532, 12.5304063371, 12.5306501798, 12.5308939812, 12.5311377414, 12.5313814605, 12.5316251384, 12.5318687752, 12.5321123708, 12.5323559253, 12.5325994387, 12.532842911, 12.5330863422, 12.5333297323, 12.5335730814, 12.5338163894, 12.5340596565, 12.5343028825, 12.5345460675, 12.5347892115, 12.5350323145, 12.5352753766, 12.5355183978, 12.535761378, 12.5360043173, 12.5362472157, 12.5364900732, 12.5367328898, 12.5369756656, 12.5372184005, 12.5374610946, 12.5377037479, 12.5379463604, 12.5381889321, 12.538431463, 12.5386739531, 12.5389164025, 12.5391588111, 12.539401179, 12.5396435062, 12.5398857928, 12.5401280386, 12.5403702437, 12.5406124082, 12.5408545321, 12.5410966153, 12.541338658, 12.54158066, 12.5418226214, 12.5420645423, 12.5423064226, 12.5425482623, 12.5427900616, 12.5430318203, 12.5432735384, 12.5435152162, 12.5437568534, 12.5439984501, 12.5442400064, 12.5444815223, 12.5447229978, 12.5449644328, 12.5452058274, 12.5454471817, 12.5456884956, 12.5459297691, 12.5461710023, 12.5464121951, 12.5466533477, 12.5468944599, 12.5471355318, 12.5473765635, 12.5476175549, 12.5478585061, 12.548099417, 12.5483402877, 12.5485811182, 12.5488219085, 12.5490626586, 12.5493033685, 12.5495440383, 12.5497846679, 12.5500252575, 12.5502658069, 12.5505063162, 12.5507467854, 12.5509872145, 12.5512276036, 12.5514679526, 12.5517082616, 12.5519485306, 12.5521887596, 12.5524289485, 12.5526690975, 12.5529092065, 12.5531492756, 12.5533893047, 12.5536292939, 12.5538692432, 12.5541091526, 12.5543490221, 12.5545888517, 12.5548286414, 12.5550683913, 12.5553081014, 12.5555477716, 12.5557874021, 12.5560269927, 12.5562665436, 12.5565060547, 12.556745526, 12.5569849576, 12.5572243495, 12.5574637016, 12.557703014, 12.5579422868, 12.5581815199, 12.5584207133, 12.558659867, 12.5588989811, 12.5591380556, 12.5593770905, 12.5596160858, 12.5598550415, 12.5600939576, 12.5603328342, 12.5605716712, 12.5608104687, 12.5610492267, 12.5612879452, 12.5615266241, 12.5617652636, 12.5620038637, 12.5622424242, 12.5624809453, 12.562719427, 12.5629578693, 12.5631962722, 12.5634346357, 12.5636729598, 12.5639112446, 12.56414949, 12.5643876961, 12.5646258628, 12.5648639902, 12.5651020784, 12.5653401272, 12.5655781368, 12.5658161071, 12.5660540382, 12.56629193, 12.5665297826, 12.566767596, 12.5670053702, 12.5672431053, 12.5674808011, 12.5677184579, 12.5679560754, 12.5681936539, 12.5684311932, 12.5686686934, 12.5689061545, 12.5691435765, 12.5693809595, 12.5696183034, 12.5698556083, 12.5700928742, 12.570330101, 12.5705672889, 12.5708044377, 12.5710415476, 12.5712786185, 12.5715156505, 12.5717526435, 12.5719895976, 12.5722265128, 12.5724633891, 12.5727002265, 12.572937025, 12.5731737847, 12.5734105055, 12.5736471875, 12.5738838307, 12.574120435, 12.5743570006, 12.5745935273, 12.5748300153, 12.5750664646, 12.5753028751, 12.5755392468, 12.5757755799, 12.5760118742, 12.5762481298, 12.5764843468, 12.5767205251, 12.5769566647, 12.5771927657, 12.577428828, 12.5776648518, 12.5779008369, 12.5781367834, 12.5783726914, 12.5786085607, 12.5788443916, 12.5790801838, 12.5793159376, 12.5795516528, 12.5797873295, 12.5800229678, 12.5802585675, 12.5804941288, 12.5807296516, 12.580965136, 12.5812005819, 12.5814359895, 12.5816713586, 12.5819066893, 12.5821419817, 12.5823772356, 12.5826124513, 12.5828476286, 12.5830827675, 12.5833178681, 12.5835529305, 12.5837879545, 12.5840229403, 12.5842578877, 12.584492797, 12.584727668, 12.5849625007, 12.5851972953, 12.5854320516, 12.5856667697, 12.5859014497, 12.5861360915, 12.5863706951, 12.5866052606, 12.586839788, 12.5870742772, 12.5873087283, 12.5875431414, 12.5877775163, 12.5880118532, 12.588246152, 12.5884804128, 12.5887146356, 12.5889488203, 12.589182967, 12.5894170758, 12.5896511465, 12.5898851793, 12.5901191741, 12.590353131, 12.5905870499, 12.5908209309, 12.591054774, 12.5912885792, 12.5915223466, 12.591756076, 12.5919897676, 12.5922234214, 12.5924570373, 12.5926906154, 12.5929241556, 12.5931576581, 12.5933911228, 12.5936245497, 12.5938579389, 12.5940912903, 12.5943246039, 12.5945578799, 12.5947911181, 12.5950243186, 12.5952574814, 12.5954906066, 12.5957236941, 12.5959567439, 12.5961897561, 12.5964227307, 12.5966556677, 12.596888567, 12.5971214288, 12.597354253, 12.5975870396, 12.5978197886, 12.5980525002, 12.5982851741, 12.5985178106, 12.5987504096, 12.598982971, 12.599215495, 12.5994479815, 12.5996804306, 12.5999128422, 12.6001452164, 12.6003775531, 12.6006098524, 12.6008421144, 12.6010743389, 12.6013065261, 12.6015386759, 12.6017707884, 12.6020028635, 12.6022349013, 12.6024669018, 12.602698865, 12.6029307909, 12.6031626795, 12.6033945309, 12.603626345, 12.6038581218, 12.6040898615, 12.6043215639, 12.6045532291, 12.6047848571, 12.6050164479, 12.6052480016, 12.6054795181, 12.6057109974, 12.6059424396, 12.6061738447, 12.6064052127, 12.6066365436, 12.6068678374, 12.6070990941, 12.6073303137, 12.6075614964, 12.6077926419, 12.6080237505, 12.608254822, 12.6084858565, 12.608716854, 12.6089478146, 12.6091787381, 12.6094096248, 12.6096404744, 12.6098712872, 12.610102063, 12.6103328019, 12.6105635039, 12.6107941691, 12.6110247973, 12.6112553887, 12.6114859432, 12.6117164609, 12.6119469418, 12.6121773859, 12.6124077931, 12.6126381636, 12.6128684973, 12.6130987942, 12.6133290544, 12.6135592778, 12.6137894645, 12.6140196144, 12.6142497277, 12.6144798042, 12.6147098441, 12.6149398473, 12.6151698138, 12.6153997437, 12.615629637, 12.6158594936, 12.6160893136, 12.616319097, 12.6165488438, 12.616778554, 12.6170082277, 12.6172378647, 12.6174674653, 12.6176970293, 12.6179265568, 12.6181560478, 12.6183855023, 12.6186149203, 12.6188443018, 12.6190736468, 12.6193029554, 12.6195322276, 12.6197614633, 12.6199906626, 12.6202198255, 12.620448952, 12.6206780421, 12.6209070959, 12.6211361133, 12.6213650943, 12.621594039, 12.6218229474, 12.6220518195, 12.6222806552, 12.6225094547, 12.6227382179, 12.6229669448, 12.6231956355, 12.6234242899, 12.6236529081, 12.62388149, 12.6241100358, 12.6243385453, 12.6245670187, 12.6247954559, 12.6250238569, 12.6252522217, 12.6254805505, 12.6257088431, 12.6259370995, 12.6261653199, 12.6263935042, 12.6266216524, 12.6268497645, 12.6270778405, 12.6273058805, 12.6275338845, 12.6277618524, 12.6279897843, 12.6282176802, 12.6284455401, 12.6286733641, 12.628901152, 12.629128904, 12.6293566201, 12.6295843002, 12.6298119444, 12.6300395527, 12.630267125, 12.6304946615, 12.6307221621, 12.6309496268, 12.6311770557, 12.6314044487, 12.6316318059, 12.6318591273, 12.6320864128, 12.6323136626, 12.6325408765, 12.6327680547, 12.6329951971, 12.6332223038, 12.6334493747, 12.6336764099, 12.6339034093, 12.6341303731, 12.6343573011, 12.6345841935, 12.6348110502, 12.6350378712, 12.6352646565, 12.6354914063, 12.6357181203, 12.6359447988, 12.6361714416, 12.6363980489, 12.6366246205, 12.6368511566, 12.6370776571, 12.6373041221, 12.6375305515, 12.6377569454, 12.6379833038, 12.6382096266, 12.638435914, 12.6386621659, 12.6388883823, 12.6391145632, 12.6393407087, 12.6395668187, 12.6397928933, 12.6400189325, 12.6402449362, 12.6404709046, 12.6406968376, 12.6409227352, 12.6411485974, 12.6413744243, 12.6416002158, 12.641825972, 12.6420516929, 12.6422773785, 12.6425030288, 12.6427286438, 12.6429542235, 12.6431797679, 12.6434052771, 12.6436307511, 12.6438561898, 12.6440815933, 12.6443069615, 12.6445322946, 12.6447575925, 12.6449828552, 12.6452080828, 12.6454332752, 12.6456584324, 12.6458835545, 12.6461086415, 12.6463336934, 12.6465587102, 12.6467836918, 12.6470086384, 12.64723355, 12.6474584265, 12.6476832679, 12.6479080743, 12.6481328457, 12.648357582, 12.6485822834, 12.6488069497, 12.6490315811, 12.6492561775, 12.649480739, 12.6497052655, 12.649929757, 12.6501542137, 12.6503786354, 12.6506030222, 12.6508273741, 12.6510516912, 12.6512759733, 12.6515002207, 12.6517244331, 12.6519486107, 12.6521727535, 12.6523968615, 12.6526209346, 12.652844973, 12.6530689766, 12.6532929454, 12.6535168794, 12.6537407787, 12.6539646432, 12.6541884731, 12.6544122681, 12.6546360285, 12.6548597542, 12.6550834452, 12.6553071015, 12.6555307232, 12.6557543101, 12.6559778625, 12.6562013802, 12.6564248633, 12.6566483117, 12.6568717256, 12.6570951049, 12.6573184496, 12.6575417597, 12.6577650353, 12.6579882763, 12.6582114828, 12.6584346547, 12.6586577921, 12.658880895, 12.6591039635, 12.6593269974, 12.6595499969, 12.6597729619, 12.6599958924, 12.6602187885, 12.6604416502, 12.6606644775, 12.6608872703, 12.6611100287, 12.6613327528, 12.6615554425, 12.6617780978, 12.6620007187, 12.6622233053, 12.6624458576, 12.6626683755, 12.6628908591, 12.6631133085, 12.6633357235, 12.6635581042, 12.6637804507, 12.6640027629, 12.6642250408, 12.6644472845, 12.664669494, 12.6648916693, 12.6651138103, 12.6653359172, 12.6655579898, 12.6657800283, 12.6660020326, 12.6662240028, 12.6664459388, 12.6666678407, 12.6668897084, 12.6671115421, 12.6673333416, 12.667555107, 12.6677768384, 12.6679985357, 12.6682201989, 12.6684418281, 12.6686634232, 12.6688849843, 12.6691065113, 12.6693280044, 12.6695494635, 12.6697708885, 12.6699922796, 12.6702136367, 12.6704349599, 12.6706562491, 12.6708775044, 12.6710987257, 12.6713199132, 12.6715410667, 12.6717621863, 12.6719832721, 12.672204324, 12.672425342, 12.6726463261, 12.6728672764, 12.6730881929, 12.6733090756, 12.6735299244, 12.6737507394, 12.6739715207, 12.6741922681, 12.6744129818, 12.6746336618, 12.6748543079, 12.6750749204, 12.6752954991, 12.6755160441, 12.6757365554, 12.6759570329, 12.6761774768, 12.676397887, 12.6766182636, 12.6768386065, 12.6770589157, 12.6772791913, 12.6774994333, 12.6777196416, 12.6779398164, 12.6781599575, 12.6783800651, 12.6786001391, 12.6788201795, 12.6790401864, 12.6792601597, 12.6794800995, 12.6797000058, 12.6799198785, 12.6801397178, 12.6803595235, 12.6805792958, 12.6807990346, 12.6810187399, 12.6812384118, 12.6814580502, 12.6816776552, 12.6818972268, 12.682116765, 12.6823362697, 12.6825557411, 12.6827751791, 12.6829945837, 12.6832139549, 12.6834332928, 12.6836525974, 12.6838718686, 12.6840911065, 12.6843103111, 12.6845294824, 12.6847486204, 12.6849677251, 12.6851867966, 12.6854058348, 12.6856248397, 12.6858438114, 12.6860627499, 12.6862816551, 12.6865005272, 12.686719366, 12.6869381717, 12.6871569441, 12.6873756834, 12.6875943896, 12.6878130626, 12.6880317024, 12.6882503091, 12.6884688827, 12.6886874232, 12.6889059306, 12.6891244049, 12.6893428461, 12.6895612543, 12.6897796294, 12.6899979714, 12.6902162804, 12.6904345564, 12.6906527993, 12.6908710093, 12.6910891862, 12.6913073302, 12.6915254412, 12.6917435192, 12.6919615642, 12.6921795763, 12.6923975555, 12.6926155017, 12.692833415, 12.6930512954, 12.6932691429, 12.6934869575, 12.6937047392, 12.6939224881, 12.6941402041, 12.6943578872, 12.6945755375, 12.694793155, 12.6950107397, 12.6952282915, 12.6954458105, 12.6956632968, 12.6958807503, 12.696098171, 12.6963155589, 12.6965329141, 12.6967502365, 12.6969675262, 12.6971847832, 12.6974020075, 12.6976191991, 12.697836358, 12.6980534842, 12.6982705777, 12.6984876386, 12.6987046668, 12.6989216623, 12.6991386253, 12.6993555556, 12.6995724533, 12.6997893184, 12.7000061509, 12.7002229508, 12.7004397181, 12.7006564529, 12.7008731551, 12.7010898248, 12.701306462, 12.7015230666, 12.7017396387, 12.7019561783, 12.7021726854, 12.70238916, 12.7026056021, 12.7028220118, 12.703038389, 12.7032547337, 12.7034710461, 12.703687326, 12.7039035734, 12.7041197885, 12.7043359712, 12.7045521215, 12.7047682394, 12.7049843249, 12.7052003781, 12.7054163989, 12.7056323874, 12.7058483435, 12.7060642673, 12.7062801588, 12.7064960181, 12.706711845, 12.7069276396, 12.707143402, 12.7073591321, 12.7075748299, 12.7077904955, 12.7080061289, 12.70822173, 12.708437299, 12.7086528357, 12.7088683402, 12.7090838126, 12.7092992527, 12.7095146607, 12.7097300365, 12.7099453802, 12.7101606918, 12.7103759712, 12.7105912185, 12.7108064337, 12.7110216168, 12.7112367678, 12.7114518867, 12.7116669736, 12.7118820284, 12.7120970511, 12.7123120418, 12.7125270004, 12.7127419271, 12.7129568217, 12.7131716843, 12.7133865149, 12.7136013136, 12.7138160802, 12.7140308149, 12.7142455177, 12.7144601885, 12.7146748273, 12.7148894342, 12.7151040092, 12.7153185523, 12.7155330635, 12.7157475428, 12.7159619903, 12.7161764058, 12.7163907895, 12.7166051413, 12.7168194613, 12.7170337495, 12.7172480058, 12.7174622303, 12.7176764231, 12.717890584, 12.7181047131, 12.7183188105, 12.7185328761, 12.7187469099, 12.718960912, 12.7191748823, 12.7193888209, 12.7196027278, 12.719816603, 12.7200304465, 12.7202442583, 12.7204580384, 12.7206717868, 12.7208855036, 12.7210991887, 12.7213128422, 12.721526464, 12.7217400542, 12.7219536128, 12.7221671398, 12.7223806352, 12.722594099, 12.7228075312, 12.7230209318, 12.7232343009, 12.7234476384, 12.7236609444, 12.7238742189, 12.7240874618, 12.7243006732, 12.7245138531, 12.7247270015, 12.7249401185, 12.7251532039, 12.7253662579, 12.7255792804, 12.7257922715, 12.7260052311, 12.7262181593, 12.7264310561, 12.7266439215, 12.7268567555, 12.727069558, 12.7272823292, 12.727495069, 12.7277077775, 12.7279204546, 12.7281331003, 12.7283457147, 12.7285582978, 12.7287708495, 12.72898337, 12.7291958591, 12.729408317, 12.7296207436, 12.7298331388, 12.7300455029, 12.7302578357, 12.7304701372, 12.7306824075, 12.7308946465, 12.7311068544, 12.731319031, 12.7315311765, 12.7317432907, 12.7319553738, 12.7321674257, 12.7323794464, 12.732591436, 12.7328033944, 12.7330153217, 12.7332272179, 12.7334390829, 12.7336509168, 12.7338627197, 12.7340744914, 12.7342862321, 12.7344979417, 12.7347096202, 12.7349212677, 12.7351328841, 12.7353444695, 12.7355560239, 12.7357675473, 12.7359790396, 12.736190501, 12.7364019313, 12.7366133307, 12.7368246991, 12.7370360365, 12.737247343, 12.7374586186, 12.7376698632, 12.7378810769, 12.7380922596, 12.7383034115, 12.7385145324, 12.7387256225, 12.7389366817, 12.73914771, 12.7393587074, 12.739569674, 12.7397806098, 12.7399915147, 12.7402023888, 12.740413232, 12.7406240445, 12.7408348261, 12.741045577, 12.7412562971, 12.7414669864, 12.7416776449, 12.7418882727, 12.7420988698, 12.7423094361, 12.7425199717, 12.7427304765, 12.7429409507, 12.7431513941, 12.7433618069, 12.7435721889, 12.7437825403, 12.7439928611, 12.7442031511, 12.7444134106, 12.7446236393, 12.7448338375, 12.745044005, 12.745254142, 12.7454642483, 12.745674324, 12.7458843691, 12.7460943837, 12.7463043677, 12.7465143211, 12.746724244, 12.7469341364, 12.7471439982, 12.7473538295, 12.7475636303, 12.7477734005, 12.7479831403, 12.7481928496, 12.7484025284, 12.7486121767, 12.7488217946, 12.749031382, 12.749240939, 12.7494504656, 12.7496599617, 12.7498694274, 12.7500788627, 12.7502882676, 12.7504976421, 12.7507069862, 12.7509163, 12.7511255834, 12.7513348364, 12.7515440591, 12.7517532514, 12.7519624135, 12.7521715452, 12.7523806466, 12.7525897176, 12.7527987584, 12.7530077689, 12.7532167492, 12.7534256991, 12.7536346189, 12.7538435083, 12.7540523675, 12.7542611965, 12.7544699953, 12.7546787638, 12.7548875022, 12.7550962103, 12.7553048883, 12.755513536, 12.7557221536, 12.7559307411, 12.7561392984, 12.7563478255, 12.7565563225, 12.7567647894, 12.7569732262, 12.7571816328, 12.7573900094, 12.7575983558, 12.7578066722, 12.7580149585, 12.7582232147, 12.7584314409, 12.758639637, 12.7588478031, 12.7590559392, 12.7592640452, 12.7594721212, 12.7596801672, 12.7598881832, 12.7600961692, 12.7603041253, 12.7605120514, 12.7607199475, 12.7609278136, 12.7611356498, 12.7613434561, 12.7615512324, 12.7617589789, 12.7619666954, 12.762174382, 12.7623820387, 12.7625896655, 12.7627972625, 12.7630048296, 12.7632123668, 12.7634198742, 12.7636273517, 12.7638347994, 12.7640422173, 12.7642496054, 12.7644569636, 12.7646642921, 12.7648715907, 12.7650788596, 12.7652860987, 12.7654933081, 12.7657004877, 12.7659076375, 12.7661147576, 12.766321848, 12.7665289086, 12.7667359395, 12.7669429408, 12.7671499123, 12.7673568541, 12.7675637663, 12.7677706488, 12.7679775016, 12.7681843248, 12.7683911183, 12.7685978822, 12.7688046165, 12.7690113211, 12.7692179961, 12.7694246416, 12.7696312574, 12.7698378436, 12.7700444003, 12.7702509274, 12.7704574249, 12.7706638929, 12.7708703314, 12.7710767403, 12.7712831196, 12.7714894695, 12.7716957899, 12.7719020807, 12.7721083421, 12.7723145739, 12.7725207763, 12.7727269492, 12.7729330927, 12.7731392067, 12.7733452913, 12.7735513464, 12.7737573721, 12.7739633684, 12.7741693353, 12.7743752728, 12.7745811809, 12.7747870596, 12.7749929089, 12.7751987289, 12.7754045195, 12.7756102808, 12.7758160127, 12.7760217153, 12.7762273885, 12.7764330324, 12.7766386471, 12.7768442324, 12.7770497884, 12.7772553152, 12.7774608127, 12.7776662809, 12.7778717198, 12.7780771295, 12.77828251, 12.7784878612, 12.7786931832, 12.778898476, 12.7791037396, 12.779308974, 12.7795141791, 12.7797193551, 12.779924502, 12.7801296196, 12.7803347081, 12.7805397675, 12.7807447977, 12.7809497987, 12.7811547707, 12.7813597135, 12.7815646272, 12.7817695119, 12.7819743674, 12.7821791938, 12.7823839912, 12.7825887595, 12.7827934987, 12.7829982089, 12.7832028901, 12.7834075422, 12.7836121653, 12.7838167593, 12.7840213244, 12.7842258604, 12.7844303675, 12.7846348456, 12.7848392947, 12.7850437148, 12.7852481059, 12.7854524682, 12.7856568014, 12.7858611058, 12.7860653812, 12.7862696276, 12.7864738452, 12.7866780339, 12.7868821937, 12.7870863246, 12.7872904266, 12.7874944997, 12.787698544, 12.7879025594, 12.788106546, 12.7883105037, 12.7885144326, 12.7887183327, 12.788922204, 12.7891260464, 12.7893298601, 12.789533645, 12.7897374011, 12.7899411284, 12.7901448269, 12.7903484968, 12.7905521378, 12.7907557501, 12.7909593337, 12.7911628886, 12.7913664147, 12.7915699121, 12.7917733809, 12.7919768209, 12.7921802323, 12.7923836149, 12.7925869689, 12.7927902943, 12.792993591, 12.7931968591, 12.7934000985, 12.7936033093, 12.7938064915, 12.794009645, 12.79421277, 12.7944158664, 12.7946189341, 12.7948219733, 12.795024984, 12.795227966, 12.7954309195, 12.7956338445, 12.7958367409, 12.7960396088, 12.7962424482, 12.7964452591, 12.7966480414, 12.7968507953, 12.7970535206, 12.7972562175, 12.7974588859, 12.7976615259, 12.7978641373, 12.7980667204, 12.7982692749, 12.7984718011, 12.7986742988, 12.7988767681, 12.799079209, 12.7992816215, 12.7994840056, 12.7996863613, 12.7998886887, 12.8000909876, 12.8002932582, 12.8004955005, 12.8006977144, 12.8008998999, 12.8011020571, 12.801304186, 12.8015062866, 12.8017083589, 12.8019104029, 12.8021124186, 12.802314406, 12.8025163651, 12.802718296, 12.8029201986, 12.8031220729, 12.803323919, 12.8035257369, 12.8037275266, 12.803929288, 12.8041310212, 12.8043327262, 12.804534403, 12.8047360516, 12.8049376721, 12.8051392643, 12.8053408284, 12.8055423644, 12.8057438722, 12.8059453518, 12.8061468033, 12.8063482267, 12.806549622, 12.8067509891, 12.8069523282, 12.8071536392, 12.8073549221, 12.8075561769, 12.8077574036, 12.8079586023, 12.8081597729, 12.8083609154, 12.80856203, 12.8087631165, 12.8089641749, 12.8091652054, 12.8093662078, 12.8095671823, 12.8097681287, 12.8099690472, 12.8101699377, 12.8103708002, 12.8105716347, 12.8107724413, 12.81097322, 12.8111739707, 12.8113746935, 12.8115753884, 12.8117760553, 12.8119766944, 12.8121773055, 12.8123778888, 12.8125784441, 12.8127789716, 12.8129794713, 12.813179943, 12.8133803869, 12.813580803, 12.8137811912, 12.8139815516, 12.8141818842, 12.814382189, 12.8145824659, 12.8147827151, 12.8149829364, 12.81518313, 12.8153832958, 12.8155834339, 12.8157835441, 12.8159836267, 12.8161836814, 12.8163837085, 12.8165837078, 12.8167836794, 12.8169836233, 12.8171835394, 12.8173834279, 12.8175832887, 12.8177831218, 12.8179829272, 12.8181827049, 12.818382455, 12.8185821775, 12.8187818723, 12.8189815394, 12.819181179, 12.8193807909, 12.8195803752, 12.8197799318, 12.8199794609, 12.8201789624, 12.8203784363, 12.8205778827, 12.8207773014, 12.8209766926, 12.8211760563, 12.8213753924, 12.8215747009, 12.821773982, 12.8219732355, 12.8221724615, 12.82237166, 12.822570831, 12.8227699744, 12.8229690905, 12.823168179, 12.82336724, 12.8235662736, 12.8237652798, 12.8239642585, 12.8241632097, 12.8243621336, 12.82456103, 12.824759899, 12.8249587405, 12.8251575547, 12.8253563415, 12.8255551009, 12.8257538329, 12.8259525375, 12.8261512148, 12.8263498647, 12.8265484873, 12.8267470825, 12.8269456504, 12.827144191, 12.8273427042, 12.8275411902, 12.8277396488, 12.8279380801, 12.8281364842, 12.828334861, 12.8285332105, 12.8287315327, 12.8289298277, 12.8291280954, 12.8293263358, 12.8295245491, 12.8297227351, 12.8299208939, 12.8301190254, 12.8303171298, 12.830515207, 12.830713257, 12.8309112797, 12.8311092754, 12.8313072438, 12.8315051851, 12.8317030992, 12.8319009862, 12.832098846, 12.8322966787, 12.8324944843, 12.8326922628, 12.8328900142, 12.8330877384, 12.8332854356, 12.8334831057, 12.8336807487, 12.8338783646, 12.8340759534, 12.8342735152, 12.83447105, 12.8346685577, 12.8348660384, 12.835063492, 12.8352609186, 12.8354583182, 12.8356556908, 12.8358530364, 12.8360503551, 12.8362476467, 12.8364449113, 12.836642149, 12.8368393597, 12.8370365435, 12.8372337003, 12.8374308302, 12.8376279332, 12.8378250092, 12.8380220583, 12.8382190805, 12.8384160758, 12.8386130442, 12.8388099857, 12.8390069003, 12.8392037881, 12.839400649, 12.839597483, 12.8397942902, 12.8399910705, 12.840187824, 12.8403845507, 12.8405812506, 12.8407779236, 12.8409745698, 12.8411711892, 12.8413677819, 12.8415643477, 12.8417608868, 12.8419573991, 12.8421538846, 12.8423503434, 12.8425467754, 12.8427431807, 12.8429395593, 12.8431359111, 12.8433322362, 12.8435285346, 12.8437248063, 12.8439210513, 12.8441172696, 12.8443134612, 12.8445096261, 12.8447057644, 12.844901876, 12.845097961, 12.8452940193, 12.8454900509, 12.845686056, 12.8458820344, 12.8460779862, 12.8462739113, 12.8464698099, 12.8466656819, 12.8468615273, 12.8470573461, 12.8472531383, 12.847448904, 12.8476446431, 12.8478403556, 12.8480360416, 12.8482317011, 12.848427334, 12.8486229404, 12.8488185203, 12.8490140737, 12.8492096006, 12.8494051009, 12.8496005748, 12.8497960222, 12.8499914432, 12.8501868376, 12.8503822057, 12.8505775472, 12.8507728623, 12.850968151, 12.8511634132, 12.851358649, 12.8515538584, 12.8517490414, 12.851944198, 12.8521393282, 12.852334432, 12.8525295094, 12.8527245604, 12.8529195851, 12.8531145834, 12.8533095554, 12.853504501, 12.8536994203, 12.8538943132, 12.8540891799, 12.8542840202, 12.8544788342, 12.8546736219, 12.8548683833, 12.8550631184, 12.8552578272, 12.8554525097, 12.855647166, 12.855841796, 12.8560363998, 12.8562309773, 12.8564255286, 12.8566200537, 12.8568145525, 12.8570090251, 12.8572034715, 12.8573978917, 12.8575922857, 12.8577866535, 12.8579809951, 12.8581753106, 12.8583695999, 12.858563863, 12.8587580999, 12.8589523108, 12.8591464954, 12.859340654, 12.8595347864, 12.8597288927, 12.8599229729, 12.8601170269, 12.8603110549, 12.8605050568, 12.8606990326, 12.8608929823, 12.861086906, 12.8612808036, 12.8614746751, 12.8616685206, 12.8618623401, 12.8620561335, 12.8622499009, 12.8624436422, 12.8626373576, 12.8628310469, 12.8630247102, 12.8632183476, 12.8634119589, 12.8636055443, 12.8637991037, 12.8639926372, 12.8641861447, 12.8643796262, 12.8645730818, 12.8647665114, 12.8649599151, 12.8651532929, 12.8653466448, 12.8655399708, 12.8657332709, 12.865926545, 12.8661197933, 12.8663130157, 12.8665062122, 12.8666993829, 12.8668925277, 12.8670856466, 12.8672787397, 12.867471807, 12.8676648484, 12.867857864, 12.8680508537, 12.8682438177, 12.8684367559, 12.8686296682, 12.8688225548, 12.8690154156, 12.8692082506, 12.8694010598, 12.8695938432, 12.8697866009, 12.8699793329, 12.8701720391, 12.8703647196, 12.8705573743, 12.8707500033, 12.8709426066, 12.8711351842, 12.8713277361, 12.8715202623, 12.8717127628, 12.8719052377, 12.8720976868, 12.8722901103, 12.8724825081, 12.8726748803, 12.8728672268, 12.8730595477, 12.8732518429, 12.8734441125, 12.8736363565, 12.8738285749, 12.8740207677, 12.8742129348, 12.8744050764, 12.8745971924, 12.8747892828, 12.8749813477, 12.8751733869, 12.8753654006, 12.8755573888, 12.8757493514, 12.8759412885, 12.8761332, 12.8763250861, 12.8765169466, 12.8767087816, 12.876900591, 12.877092375, 12.8772841335, 12.8774758665, 12.8776675741, 12.8778592561, 12.8780509127, 12.8782425439, 12.8784341496, 12.8786257298, 12.8788172846, 12.879008814, 12.8792003179, 12.8793917965, 12.8795832496, 12.8797746773, 12.8799660797, 12.8801574566, 12.8803488082, 12.8805401343, 12.8807314351, 12.8809227106, 12.8811139607, 12.8813051854, 12.8814963848, 12.8816875589, 12.8818787076, 12.882069831, 12.8822609291, 12.8824520019, 12.8826430494, 12.8828340715, 12.8830250684, 12.8832160401, 12.8834069864, 12.8835979075, 12.8837888033, 12.8839796738, 12.8841705191, 12.8843613392, 12.884552134, 12.8847429036, 12.8849336479, 12.8851243671, 12.885315061, 12.8855057298, 12.8856963733, 12.8858869917, 12.8860775849, 12.8862681529, 12.8864586957, 12.8866492134, 12.8868397059, 12.8870301732, 12.8872206155, 12.8874110326, 12.8876014245, 12.8877917913, 12.8879821331, 12.8881724497, 12.8883627412, 12.8885530076, 12.8887432489, 12.8889334651, 12.8891236563, 12.8893138224, 12.8895039634, 12.8896940794, 12.8898841703, 12.8900742362, 12.890264277, 12.8904542928, 12.8906442836, 12.8908342494, 12.8910241901, 12.8912141059, 12.8914039967, 12.8915938624, 12.8917837032, 12.891973519, 12.8921633099, 12.8923530757, 12.8925428166, 12.8927325326, 12.8929222236, 12.8931118897, 12.8933015309, 12.8934911471, 12.8936807384, 12.8938703048, 12.8940598463, 12.8942493629, 12.8944388546, 12.8946283214, 12.8948177633, 12.8950071804, 12.8951965726, 12.8953859399, 12.8955752824, 12.8957646, 12.8959538928, 12.8961431608, 12.8963324039, 12.8965216222, 12.8967108157, 12.8968999844, 12.8970891283, 12.8972782474, 12.8974673417, 12.8976564113, 12.897845456, 12.898034476, 12.8982234712, 12.8984124417, 12.8986013874, 12.8987903084, 12.8989792046, 12.8991680761, 12.8993569229, 12.899545745, 12.8997345424, 12.899923315, 12.900112063, 12.9003007862, 12.9004894848, 12.9006781587, 12.900866808, 12.9010554326, 12.9012440325, 12.9014326077, 12.9016211583, 12.9018096843, 12.9019981857, 12.9021866624, 12.9023751145, 12.902563542, 12.9027519449, 12.9029403231, 12.9031286768, 12.9033170059, 12.9035053104, 12.9036935904, 12.9038818457, 12.9040700765, 12.9042582828, 12.9044464645, 12.9046346217, 12.9048227543, 12.9050108624, 12.905198946, 12.905387005, 12.9055750396, 12.9057630496, 12.9059510351, 12.9061389962, 12.9063269328, 12.9065148448, 12.9067027325, 12.9068905956, 12.9070784343, 12.9072662485, 12.9074540383, 12.9076418037, 12.9078295446, 12.9080172611, 12.9082049531, 12.9083926208, 12.908580264, 12.9087678828, 12.9089554773, 12.9091430473, 12.909330593, 12.9095181143, 12.9097056112, 12.9098930838, 12.910080532, 12.9102679558, 12.9104553553, 12.9106427305, 12.9108300813, 12.9110174078, 12.91120471, 12.9113919878, 12.9115792414, 12.9117664707, 12.9119536756, 12.9121408563, 12.9123280127, 12.9125151448, 12.9127022526, 12.9128893362, 12.9130763956, 12.9132634306, 12.9134504415, 12.913637428, 12.9138243904, 12.9140113285, 12.9141982425, 12.9143851322, 12.9145719976, 12.9147588389, 12.914945656, 12.915132449, 12.9153192177, 12.9155059622, 12.9156926826, 12.9158793788, 12.9160660509, 12.9162526988, 12.9164393226, 12.9166259222, 12.9168124977, 12.9169990491, 12.9171855763, 12.9173720795, 12.9175585585, 12.9177450134, 12.9179314443, 12.918117851, 12.9183042337, 12.9184905923, 12.9186769268, 12.9188632373, 12.9190495237, 12.919235786, 12.9194220243, 12.9196082386, 12.9197944288, 12.919980595, 12.9201667372, 12.9203528554, 12.9205389496, 12.9207250198, 12.9209110659, 12.9210970881, 12.9212830863, 12.9214690605, 12.9216550108, 12.9218409371, 12.9220268394, 12.9222127178, 12.9223985722, 12.9225844027, 12.9227702093, 12.9229559919, 12.9231417506, 12.9233274854, 12.9235131963, 12.9236988833, 12.9238845464, 12.9240701856, 12.9242558009, 12.9244413923, 12.9246269599, 12.9248125036, 12.9249980234, 12.9251835194, 12.9253689916, 12.9255544399, 12.9257398643, 12.925925265, 12.9261106418, 12.9262959948, 12.926481324, 12.9266666293, 12.9268519109, 12.9270371687, 12.9272224027, 12.9274076129, 12.9275927994, 12.9277779621, 12.927963101, 12.9281482162, 12.9283333076, 12.9285183753, 12.9287034192, 12.9288884394, 12.9290734359, 12.9292584086, 12.9294433577, 12.929628283, 12.9298131847, 12.9299980626, 12.9301829169, 12.9303677474, 12.9305525543, 12.9307373376, 12.9309220971, 12.931106833, 12.9312915453, 12.9314762339, 12.9316608989, 12.9318455402, 12.9320301579, 12.932214752, 12.9323993224, 12.9325838693, 12.9327683925, 12.9329528922, 12.9331373683, 12.9333218207, 12.9335062496, 12.933690655, 12.9338750367, 12.9340593949, 12.9342437295, 12.9344280406, 12.9346123282, 12.9347965922, 12.9349808327, 12.9351650496, 12.935349243, 12.935533413, 12.9357175594, 12.9359016823, 12.9360857817, 12.9362698576, 12.93645391, 12.936637939, 12.9368219445, 12.9370059265, 12.9371898851, 12.9373738202, 12.9375577319, 12.9377416201, 12.9379254849, 12.9381093262, 12.9382931442, 12.9384769387, 12.9386607098, 12.9388444575, 12.9390281818, 12.9392118827, 12.9393955602, 12.9395792143, 12.9397628451, 12.9399464525, 12.9401300365, 12.9403135971, 12.9404971345, 12.9406806484, 12.940864139, 12.9410476063, 12.9412310503, 12.9414144709, 12.9415978683, 12.9417812423, 12.941964593, 12.9421479204, 12.9423312245, 12.9425145053, 12.9426977629, 12.9428809972, 12.9430642082, 12.9432473959, 12.9434305604, 12.9436137016, 12.9437968196, 12.9439799143, 12.9441629859, 12.9443460341, 12.9445290592, 12.944712061, 12.9448950397, 12.9450779951, 12.9452609273, 12.9454438364, 12.9456267222, 12.9458095849, 12.9459924244, 12.9461752407, 12.9463580339, 12.9465408039, 12.9467235507, 12.9469062745, 12.947088975, 12.9472716525, 12.9474543068, 12.947636938, 12.947819546, 12.948002131, 12.9481846928, 12.9483672316, 12.9485497472, 12.9487322398, 12.9489147093, 12.9490971557, 12.9492795791, 12.9494619794, 12.9496443566, 12.9498267108, 12.9500090419, 12.95019135, 12.950373635, 12.950555897, 12.950738136, 12.950920352, 12.951102545, 12.951284715, 12.9514668619, 12.9516489859, 12.9518310869, 12.9520131649, 12.9521952199, 12.952377252, 12.9525592611, 12.9527412472, 12.9529232104, 12.9531051506, 12.9532870679, 12.9534689622, 12.9536508336, 12.9538326821, 12.9540145077, 12.9541963104, 12.9543780901, 12.954559847, 12.954741581, 12.954923292, 12.9551049802, 12.9552866455, 12.955468288, 12.9556499075, 12.9558315042, 12.9560130781, 12.9561946291, 12.9563761572, 12.9565576626, 12.9567391451, 12.9569206047, 12.9571020416, 12.9572834556, 12.9574648468, 12.9576462152, 12.9578275608, 12.9580088837, 12.9581901837, 12.9583714609, 12.9585527154, 12.9587339471, 12.9589151561, 12.9590963423, 12.9592775057, 12.9594586464, 12.9596397644, 12.9598208596, 12.9600019321, 12.9601829818, 12.9603640089, 12.9605450132, 12.9607259948, 12.9609069538, 12.96108789, 12.9612688035, 12.9614496944, 12.9616305626, 12.9618114081, 12.9619922309, 12.9621730311, 12.9623538086, 12.9625345635, 12.9627152957, 12.9628960053, 12.9630766923, 12.9632573566, 12.9634379983, 12.9636186174, 12.9637992139, 12.9639797878, 12.9641603391, 12.9643408678, 12.9645213739, 12.9647018574, 12.9648823184, 12.9650627567, 12.9652431726, 12.9654235658, 12.9656039365, 12.9657842847, 12.9659646103, 12.9661449133, 12.9663251939, 12.9665054519, 12.9666856874, 12.9668659004, 12.9670460909, 12.9672262588, 12.9674064043, 12.9675865273, 12.9677666278, 12.9679467058, 12.9681267614, 12.9683067944, 12.968486805, 12.9686667932, 12.9688467589, 12.9690267022, 12.969206623, 12.9693865213, 12.9695663973, 12.9697462508, 12.9699260819, 12.9701058906, 12.9702856769, 12.9704654408, 12.9706451823, 12.9708249014, 12.9710045981, 12.9711842724, 12.9713639244, 12.971543554, 12.9717231612, 12.971902746, 12.9720823086, 12.9722618487, 12.9724413666, 12.9726208621, 12.9728003352, 12.9729797861, 12.9731592146, 12.9733386208, 12.9735180047, 12.9736973663, 12.9738767056, 12.9740560226, 12.9742353174, 12.9744145898, 12.97459384, 12.9747730679, 12.9749522735, 12.9751314569, 12.9753106181, 12.9754897569, 12.9756688736, 12.975847968, 12.9760270402, 12.9762060901, 12.9763851179, 12.9765641234, 12.9767431067, 12.9769220679, 12.9771010068, 12.9772799235, 12.977458818, 12.9776376904, 12.9778165406, 12.9779953686, 12.9781741745, 12.9783529582, 12.9785317197, 12.9787104591, 12.9788891764, 12.9790678715, 12.9792465445, 12.9794251953, 12.9796038241, 12.9797824307, 12.9799610152, 12.9801395776, 12.980318118, 12.9804966362, 12.9806751323, 12.9808536064, 12.9810320584, 12.9812104883, 12.9813888961, 12.9815672819, 12.9817456456, 12.9819239873, 12.982102307, 12.9822806046, 12.9824588801, 12.9826371337, 12.9828153652, 12.9829935747, 12.9831717622, 12.9833499277, 12.9835280712, 12.9837061927, 12.9838842922, 12.9840623697, 12.9842404252, 12.9844184588, 12.9845964704, 12.98477446, 12.9849524277, 12.9851303735, 12.9853082973, 12.9854861991, 12.985664079, 12.985841937, 12.9860197731, 12.9861975872, 12.9863753794, 12.9865531498, 12.9867308982, 12.9869086247, 12.9870863293, 12.9872640121, 12.9874416729, 12.9876193119, 12.987796929, 12.9879745243, 12.9881520977, 12.9883296492, 12.9885071789, 12.9886846868, 12.9888621728, 12.989039637, 12.9892170793, 12.9893944998, 12.9895718986, 12.9897492755, 12.9899266306, 12.9901039639, 12.9902812754, 12.9904585651, 12.990635833, 12.9908130792, 12.9909903035, 12.9911675061, 12.991344687, 12.9915218461, 12.9916989834, 12.991876099, 12.9920531929, 12.992230265, 12.9924073153, 12.992584344, 12.9927613509, 12.9929383362, 12.9931152997, 12.9932922415, 12.9934691616, 12.99364606, 12.9938229367, 12.9939997918, 12.9941766252, 12.9943534369, 12.9945302269, 12.9947069953, 12.994883742, 12.995060467, 12.9952371704, 12.9954138522, 12.9955905124, 12.9957671509, 12.9959437678, 12.996120363, 12.9962969367, 12.9964734887, 12.9966500192, 12.996826528, 12.9970030153, 12.9971794809, 12.997355925, 12.9975323475, 12.9977087485, 12.9978851278, 12.9980614856, 12.9982378219, 12.9984141366, 12.9985904297, 12.9987667014, 12.9989429514, 12.99911918, 12.999295387, 12.9994715725, 12.9996477365, 12.999823879, 13.0, 13.0001760995, 13.0003521775, 13.000528234, 13.000704269, 13.0008802826, 13.0010562746, 13.0012322452, 13.0014081944, 13.0015841221, 13.0017600283, 13.0019359131, 13.0021117765, 13.0022876184, 13.0024634389, 13.002639238, 13.0028150156, 13.0029907718, 13.0031665067, 13.0033422201, 13.0035179121, 13.0036935827, 13.003869232, 13.0040448598, 13.0042204663, 13.0043960514, 13.0045716152, 13.0047471575, 13.0049226786, 13.0050981782, 13.0052736566, 13.0054491135, 13.0056245492, 13.0057999635, 13.0059753565, 13.0061507282, 13.0063260785, 13.0065014076, 13.0066767153, 13.0068520017, 13.0070272669, 13.0072025107, 13.0073777333, 13.0075529346, 13.0077281146, 13.0079032734, 13.0080784109, 13.0082535271, 13.0084286221, 13.0086036958, 13.0087787483, 13.0089537795, 13.0091287895, 13.0093037783, 13.0094787459, 13.0096536922, 13.0098286174, 13.0100035213, 13.010178404, 13.0103532655, 13.0105281059, 13.010702925, 13.010877723, 13.0110524998, 13.0112272554, 13.0114019899, 13.0115767032, 13.0117513953, 13.0119260663, 13.0121007162, 13.0122753449, 13.0124499524, 13.0126245389, 13.0127991042, 13.0129736484, 13.0131481715, 13.0133226734, 13.0134971543, 13.0136716141, 13.0138460527, 13.0140204703, 13.0141948668, 13.0143692422, 13.0145435966, 13.0147179299, 13.0148922421, 13.0150665332, 13.0152408033, 13.0154150524, 13.0155892804, 13.0157634874, 13.0159376733, 13.0161118382, 13.0162859821, 13.016460105, 13.0166342068, 13.0168082877, 13.0169823475, 13.0171563864, 13.0173304042, 13.0175044011, 13.017678377, 13.0178523319, 13.0180262658, 13.0182001788, 13.0183740708, 13.0185479419, 13.018721792, 13.0188956211, 13.0190694293, 13.0192432166, 13.0194169829, 13.0195907284, 13.0197644528, 13.0199381564, 13.0201118391, 13.0202855008, 13.0204591417, 13.0206327617, 13.0208063607, 13.0209799389, 13.0211534962, 13.0213270326, 13.0215005482, 13.0216740429, 13.0218475167, 13.0220209696, 13.0221944018, 13.022367813, 13.0225412035, 13.022714573, 13.0228879218, 13.0230612497, 13.0232345568, 13.0234078431, 13.0235811086, 13.0237543533, 13.0239275772, 13.0241007803, 13.0242739625, 13.024447124, 13.0246202648, 13.0247933847, 13.0249664839, 13.0251395623, 13.0253126199, 13.0254856568, 13.0256586729, 13.0258316683, 13.026004643, 13.0261775969, 13.0263505301, 13.0265234425, 13.0266963342, 13.0268692053, 13.0270420556, 13.0272148852, 13.0273876941, 13.0275604822, 13.0277332498, 13.0279059966, 13.0280787227, 13.0282514282, 13.0284241129, 13.0285967771, 13.0287694205, 13.0289420433, 13.0291146455, 13.029287227, 13.0294597878, 13.029632328, 13.0298048476, 13.0299773466, 13.0301498249, 13.0303222826, 13.0304947197, 13.0306671362, 13.0308395321, 13.0310119074, 13.0311842621, 13.0313565963, 13.0315289098, 13.0317012027, 13.0318734751, 13.0320457269, 13.0322179582, 13.0323901689, 13.032562359, 13.0327345286, 13.0329066776, 13.0330788061, 13.0332509141, 13.0334230015, 13.0335950685, 13.0337671148, 13.0339391407, 13.0341111461, 13.034283131, 13.0344550953, 13.0346270392, 13.0347989626, 13.0349708655, 13.0351427479, 13.0353146098, 13.0354864513, 13.0356582723, 13.0358300728, 13.0360018529, 13.0361736126, 13.0363453517, 13.0365170705, 13.0366887688, 13.0368604467, 13.0370321041, 13.0372037412, 13.0373753578, 13.037546954, 13.0377185298, 13.0378900851, 13.0380616201, 13.0382331347, 13.0384046289, 13.0385761028, 13.0387475562, 13.0389189893, 13.039090402, 13.0392617943, 13.0394331663, 13.039604518, 13.0397758492, 13.0399471602, 13.0401184508, 13.040289721, 13.040460971, 13.0406322006, 13.0408034098, 13.0409745988, 13.0411457675, 13.0413169158, 13.0414880439, 13.0416591516, 13.0418302391, 13.0420013063, 13.0421723532, 13.0423433798, 13.0425143861, 13.0426853722, 13.042856338, 13.0430272836, 13.0431982089, 13.043369114, 13.0435399988, 13.0437108633, 13.0438817077, 13.0440525318, 13.0442233357, 13.0443941194, 13.0445648828, 13.0447356261, 13.0449063491, 13.0450770519, 13.0452477346, 13.045418397, 13.0455890393, 13.0457596614, 13.0459302633, 13.046100845, 13.0462714066, 13.046441948, 13.0466124693, 13.0467829704, 13.0469534513, 13.0471239121, 13.0472943528, 13.0474647733, 13.0476351737, 13.047805554, 13.0479759142, 13.0481462542, 13.0483165742, 13.048486874, 13.0486571537, 13.0488274134, 13.0489976529, 13.0491678724, 13.0493380718, 13.0495082511, 13.0496784103, 13.0498485495, 13.0500186686, 13.0501887676, 13.0503588466, 13.0505289055, 13.0506989444, 13.0508689633, 13.0510389621, 13.0512089409, 13.0513788997, 13.0515488384, 13.0517187572, 13.0518886559, 13.0520585346, 13.0522283933, 13.0523982321, 13.0525680508, 13.0527378495, 13.0529076283, 13.0530773871, 13.0532471259, 13.0534168448, 13.0535865436, 13.0537562226, 13.0539258815, 13.0540955206, 13.0542651396, 13.0544347388, 13.054604318, 13.0547738772, 13.0549434166, 13.055112936, 13.0552824355, 13.0554519151, 13.0556213748, 13.0557908146, 13.0559602345, 13.0561296344, 13.0562990146, 13.0564683748, 13.0566377151, 13.0568070356, 13.0569763362, 13.0571456169, 13.0573148778, 13.0574841188, 13.05765334, 13.0578225413, 13.0579917228, 13.0581608844, 13.0583300262, 13.0584991482, 13.0586682503, 13.0588373327, 13.0590063952, 13.0591754379, 13.0593444608, 13.0595134639, 13.0596824472, 13.0598514108, 13.0600203545, 13.0601892785, 13.0603581826, 13.060527067, 13.0606959317, 13.0608647766, 13.0610336017, 13.061202407, 13.0613711927, 13.0615399585, 13.0617087047, 13.0618774311, 13.0620461377, 13.0622148247, 13.0623834919, 13.0625521394, 13.0627207672, 13.0628893752, 13.0630579636, 13.0632265323, 13.0633950813, 13.0635636106, 13.0637321202, 13.0639006101, 13.0640690804, 13.064237531, 13.0644059619, 13.0645743731, 13.0647427648, 13.0649111367, 13.065079489, 13.0652478217, 13.0654161347, 13.0655844281, 13.0657527018, 13.0659209559, 13.0660891905, 13.0662574054, 13.0664256006, 13.0665937763, 13.0667619324, 13.0669300689, 13.0670981857, 13.067266283, 13.0674343608, 13.0676024189, 13.0677704574, 13.0679384764, 13.0681064759, 13.0682744557, 13.068442416, 13.0686103568, 13.068778278, 13.0689461796, 13.0691140618, 13.0692819244, 13.0694497674, 13.069617591, 13.069785395, 13.0699531795, 13.0701209445, 13.07028869, 13.0704564159, 13.0706241224, 13.0707918094, 13.0709594769, 13.0711271249, 13.0712947535, 13.0714623626, 13.0716299522, 13.0717975223, 13.071965073, 13.0721326042, 13.0723001159, 13.0724676082, 13.0726350811, 13.0728025345, 13.0729699685, 13.0731373831, 13.0733047783, 13.073472154, 13.0736395103, 13.0738068472, 13.0739741647, 13.0741414628, 13.0743087414, 13.0744760007, 13.0746432406, 13.0748104612, 13.0749776623, 13.0751448441, 13.0753120065, 13.0754791495, 13.0756462732, 13.0758133775, 13.0759804624, 13.076147528, 13.0763145743, 13.0764816012, 13.0766486088, 13.0768155971, 13.076982566, 13.0771495156, 13.0773164459, 13.0774833569, 13.0776502485, 13.0778171209, 13.077983974, 13.0781508077, 13.0783176222, 13.0784844174, 13.0786511933, 13.07881795, 13.0789846873, 13.0791514054, 13.0793181043, 13.0794847838, 13.0796514441, 13.0798180852, 13.079984707, 13.0801513096, 13.080317893, 13.0804844571, 13.0806510019, 13.0808175276, 13.080984034, 13.0811505213, 13.0813169893, 13.0814834381, 13.0816498677, 13.0818162781, 13.0819826693, 13.0821490414, 13.0823153942, 13.0824817279, 13.0826480424, 13.0828143377, 13.0829806138, 13.0831468708, 13.0833131087, 13.0834793273, 13.0836455269, 13.0838117073, 13.0839778685, 13.0841440106, 13.0843101336, 13.0844762375, 13.0846423222, 13.0848083878, 13.0849744343, 13.0851404617, 13.08530647, 13.0854724592, 13.0856384293, 13.0858043803, 13.0859703122, 13.086136225, 13.0863021188, 13.0864679935, 13.0866338491, 13.0867996856, 13.0869655031, 13.0871313015, 13.0872970809, 13.0874628413, 13.0876285825, 13.0877943048, 13.087960008, 13.0881256922, 13.0882913573, 13.0884570035, 13.0886226306, 13.0887882387, 13.0889538278, 13.0891193979, 13.089284949, 13.0894504811, 13.0896159942, 13.0897814884, 13.0899469635, 13.0901124197, 13.0902778569, 13.0904432751, 13.0906086743, 13.0907740546, 13.090939416, 13.0911047584, 13.0912700818, 13.0914353863, 13.0916006719, 13.0917659385, 13.0919311862, 13.092096415, 13.0922616248, 13.0924268158, 13.0925919878, 13.0927571409, 13.0929222751, 13.0930873904, 13.0932524869, 13.0934175644, 13.093582623, 13.0937476628, 13.0939126837, 13.0940776857, 13.0942426688, 13.0944076331, 13.0945725785, 13.094737505, 13.0949024128, 13.0950673016, 13.0952321716, 13.0953970228, 13.0955618551, 13.0957266686, 13.0958914633, 13.0960562392, 13.0962209962, 13.0963857345, 13.0965504539, 13.0967151545, 13.0968798363, 13.0970444993, 13.0972091436, 13.097373769, 13.0975383756, 13.0977029635, 13.0978675326, 13.098032083, 13.0981966145, 13.0983611273, 13.0985256214, 13.0986900967, 13.0988545532, 13.099018991, 13.0991834101, 13.0993478104, 13.099512192, 13.0996765549, 13.099840899, 13.1000052244, 13.1001695311, 13.1003338191, 13.1004980884, 13.100662339, 13.1008265709, 13.1009907841, 13.1011549786, 13.1013191544, 13.1014833116, 13.10164745, 13.1018115698, 13.1019756709, 13.1021397534, 13.1023038172, 13.1024678624, 13.1026318889, 13.1027958967, 13.1029598859, 13.1031238565, 13.1032878084, 13.1034517417, 13.1036156564, 13.1037795525, 13.1039434299, 13.1041072887, 13.1042711289, 13.1044349506, 13.1045987536, 13.104762538, 13.1049263038, 13.105090051, 13.1052537797, 13.1054174898, 13.1055811813, 13.1057448542, 13.1059085086, 13.1060721444, 13.1062357616, 13.1063993603, 13.1065629404, 13.106726502, 13.1068900451, 13.1070535696, 13.1072170756, 13.107380563, 13.107544032, 13.1077074824, 13.1078709143, 13.1080343277, 13.1081977225, 13.1083610989, 13.1085244568, 13.1086877962, 13.108851117, 13.1090144194, 13.1091777034, 13.1093409688, 13.1095042158, 13.1096674443, 13.1098306543, 13.1099938458, 13.110157019, 13.1103201736, 13.1104833098, 13.1106464276, 13.1108095269, 13.1109726078, 13.1111356702, 13.1112987143, 13.1114617399, 13.111624747, 13.1117877358, 13.1119507062, 13.1121136581, 13.1122765916, 13.1124395068, 13.1126024035, 13.1127652819, 13.1129281419, 13.1130909834, 13.1132538067, 13.1134166115, 13.113579398, 13.113742166, 13.1139049158, 13.1140676472, 13.1142303602, 13.1143930549, 13.1145557312, 13.1147183892, 13.1148810288, 13.1150436502, 13.1152062532, 13.1153688378, 13.1155314042, 13.1156939522, 13.1158564819, 13.1160189933, 13.1161814864, 13.1163439612, 13.1165064177, 13.116668856, 13.1168312759, 13.1169936775, 13.1171560609, 13.117318426, 13.1174807728, 13.1176431014, 13.1178054117, 13.1179677037, 13.1181299775, 13.118292233, 13.1184544703, 13.1186166894, 13.1187788902, 13.1189410727, 13.1191032371, 13.1192653832, 13.1194275111, 13.1195896207, 13.1197517122, 13.1199137855, 13.1200758405, 13.1202378773, 13.120399896, 13.1205618964, 13.1207238787, 13.1208858428, 13.1210477887, 13.1212097164, 13.121371626, 13.1215335173, 13.1216953906, 13.1218572456, 13.1220190825, 13.1221809013, 13.1223427019, 13.1225044843, 13.1226662486, 13.1228279948, 13.1229897229, 13.1231514328, 13.1233131246, 13.1234747982, 13.1236364538, 13.1237980913, 13.1239597106, 13.1241213118, 13.124282895, 13.12444446, 13.124606007, 13.1247675358, 13.1249290466, 13.1250905393, 13.1252520139, 13.1254134705, 13.125574909, 13.1257363294, 13.1258977318, 13.1260591161, 13.1262204823, 13.1263818305, 13.1265431607, 13.1267044728, 13.1268657669, 13.127027043, 13.127188301, 13.1273495411, 13.1275107631, 13.127671967, 13.127833153, 13.127994321, 13.1281554709, 13.1283166029, 13.1284777169, 13.1286388129, 13.1287998908, 13.1289609509, 13.1291219929, 13.1292830169, 13.129444023, 13.1296050112, 13.1297659813, 13.1299269335, 13.1300878678, 13.1302487841, 13.1304096824, 13.1305705628, 13.1307314253, 13.1308922698, 13.1310530964, 13.1312139051, 13.1313746958, 13.1315354687, 13.1316962236, 13.1318569606, 13.1320176797, 13.1321783809, 13.1323390642, 13.1324997296, 13.1326603771, 13.1328210068, 13.1329816185, 13.1331422124, 13.1333027884, 13.1334633465, 13.1336238868, 13.1337844092, 13.1339449137, 13.1341054004, 13.1342658692, 13.1344263202, 13.1345867534, 13.1347471687, 13.1349075661, 13.1350679458, 13.1352283076, 13.1353886516, 13.1355489777, 13.1357092861, 13.1358695766, 13.1360298494, 13.1361901043, 13.1363503415, 13.1365105608, 13.1366707623, 13.1368309461, 13.1369911121, 13.1371512603, 13.1373113907, 13.1374715034, 13.1376315982, 13.1377916754, 13.1379517347, 13.1381117763, 13.1382718002, 13.1384318063, 13.1385917946, 13.1387517653, 13.1389117181, 13.1390716533, 13.1392315707, 13.1393914704, 13.1395513524, 13.1397112167, 13.1398710632, 13.1400308921, 13.1401907032, 13.1403504966, 13.1405102724, 13.1406700304, 13.1408297708, 13.1409894934, 13.1411491984, 13.1413088858, 13.1414685554, 13.1416282074, 13.1417878417, 13.1419474583, 13.1421070573, 13.1422666386, 13.1424262023, 13.1425857484, 13.1427452768, 13.1429047875, 13.1430642806, 13.1432237561, 13.143383214, 13.1435426542, 13.1437020769, 13.1438614819, 13.1440208693, 13.1441802391, 13.1443395912, 13.1444989258, 13.1446582428, 13.1448175422, 13.1449768241, 13.1451360883, 13.1452953349, 13.145454564, 13.1456137755, 13.1457729694, 13.1459321458, 13.1460913046, 13.1462504459, 13.1464095696, 13.1465686757, 13.1467277643, 13.1468868354, 13.1470458889, 13.1472049249, 13.1473639434, 13.1475229444, 13.1476819278, 13.1478408937, 13.1479998421, 13.1481587729, 13.1483176863, 13.1484765822, 13.1486354605, 13.1487943214, 13.1489531648, 13.1491119907, 13.1492707991, 13.1494295901, 13.1495883635, 13.1497471195, 13.149905858, 13.1500645791, 13.1502232827, 13.1503819688, 13.1505406375, 13.1506992887, 13.1508579225, 13.1510165389, 13.1511751378, 13.1513337193, 13.1514922833, 13.15165083, 13.1518093592, 13.151967871, 13.1521263653, 13.1522848423, 13.1524433019, 13.152601744, 13.1527601688, 13.1529185761, 13.1530769661, 13.1532353387, 13.1533936939, 13.1535520317, 13.1537103522, 13.1538686552, 13.1540269409, 13.1541852093, 13.1543434602, 13.1545016939, 13.1546599101, 13.1548181091, 13.1549762906, 13.1551344549, 13.1552926018, 13.1554507313, 13.1556088435, 13.1557669384, 13.155925016, 13.1560830763, 13.1562411192, 13.1563991449, 13.1565571532, 13.1567151442, 13.1568731179, 13.1570310744, 13.1571890135, 13.1573469354, 13.1575048399, 13.1576627272, 13.1578205972, 13.1579784499, 13.1581362854, 13.1582941036, 13.1584519045, 13.1586096882, 13.1587674546, 13.1589252038, 13.1590829357, 13.1592406504, 13.1593983479, 13.1595560281, 13.159713691, 13.1598713368, 13.1600289653, 13.1601865766, 13.1603441707, 13.1605017476, 13.1606593072, 13.1608168497, 13.1609743749, 13.161131883, 13.1612893738, 13.1614468475, 13.161604304, 13.1617617433, 13.1619191654, 13.1620765704, 13.1622339581, 13.1623913288, 13.1625486822, 13.1627060185, 13.1628633376, 13.1630206396, 13.1631779244, 13.1633351921, 13.1634924426, 13.163649676, 13.1638068923, 13.1639640914, 13.1641212734, 13.1642784383, 13.1644355861, 13.1645927167, 13.1647498302, 13.1649069267, 13.165064006, 13.1652210682, 13.1653781133, 13.1655351414, 13.1656921523, 13.1658491462, 13.166006123, 13.1661630826, 13.1663200253, 13.1664769508, 13.1666338593, 13.1667907507, 13.1669476251, 13.1671044824, 13.1672613226, 13.1674181458, 13.167574952, 13.1677317411, 13.1678885132, 13.1680452682, 13.1682020062, 13.1683587272, 13.1685154312, 13.1686721181, 13.1688287881, 13.168985441, 13.1691420769, 13.1692986958, 13.1694552977, 13.1696118826, 13.1697684505, 13.1699250014, 13.1700815354, 13.1702380523, 13.1703945523, 13.1705510353, 13.1707075013, 13.1708639504, 13.1710203825, 13.1711767977, 13.1713331958, 13.1714895771, 13.1716459413, 13.1718022887, 13.1719586191, 13.1721149325, 13.1722712291, 13.1724275086, 13.1725837713, 13.172740017, 13.1728962459, 13.1730524578, 13.1732086528, 13.1733648308, 13.173520992, 13.1736771363, 13.1738332637, 13.1739893742, 13.1741454678, 13.1743015445, 13.1744576043, 13.1746136472, 13.1747696733, 13.1749256825, 13.1750816748, 13.1752376503, 13.1753936089, 13.1755495506, 13.1757054755, 13.1758613836, 13.1760172748, 13.1761731491, 13.1763290066, 13.1764848473, 13.1766406711, 13.1767964781, 13.1769522683, 13.1771080417, 13.1772637983, 13.177419538, 13.1775752609, 13.177730967, 13.1778866563, 13.1780423289, 13.1781979846, 13.1783536235, 13.1785092457, 13.178664851, 13.1788204396, 13.1789760114, 13.1791315664, 13.1792871046, 13.1794426261, 13.1795981308, 13.1797536188, 13.17990909, 13.1800645445, 13.1802199822, 13.1803754031, 13.1805308073, 13.1806861948, 13.1808415656, 13.1809969196, 13.1811522569, 13.1813075774, 13.1814628813, 13.1816181684, 13.1817734388, 13.1819286925, 13.1820839295, 13.1822391498, 13.1823943534, 13.1825495403, 13.1827047105, 13.182859864, 13.1830150009, 13.183170121, 13.1833252245, 13.1834803113, 13.1836353815, 13.1837904349, 13.1839454718, 13.1841004919, 13.1842554954, 13.1844104822, 13.1845654524, 13.184720406, 13.1848753429, 13.1850302632, 13.1851851668, 13.1853400538, 13.1854949242, 13.185649778, 13.1858046151, 13.1859594356, 13.1861142395, 13.1862690268, 13.1864237975, 13.1865785516, 13.1867332891, 13.18688801, 13.1870427143, 13.1871974021, 13.1873520732, 13.1875067278, 13.1876613657, 13.1878159871, 13.187970592, 13.1881251803, 13.188279752, 13.1884343071, 13.1885888457, 13.1887433677, 13.1888978732, 13.1890523622, 13.1892068346, 13.1893612905, 13.1895157298, 13.1896701526, 13.1898245589, 13.1899789486, 13.1901333219, 13.1902876786, 13.1904420188, 13.1905963425, 13.1907506497, 13.1909049403, 13.1910592145, 13.1912134722, 13.1913677134, 13.1915219381, 13.1916761464, 13.1918303381, 13.1919845134, 13.1921386722, 13.1922928145, 13.1924469403, 13.1926010497, 13.1927551426, 13.1929092191, 13.1930632791, 13.1932173227, 13.1933713498, 13.1935253605, 13.1936793547, 13.1938333325, 13.1939872939, 13.1941412389, 13.1942951674, 13.1944490795, 13.1946029752, 13.1947568544, 13.1949107173, 13.1950645637, 13.1952183938, 13.1953722074, 13.1955260046, 13.1956797855, 13.19583355, 13.195987298, 13.1961410297, 13.196294745, 13.196448444, 13.1966021265, 13.1967557927, 13.1969094425, 13.197063076, 13.1972166931, 13.1973702939, 13.1975238783, 13.1976774463, 13.197830998, 13.1979845334, 13.1981380524, 13.1982915551, 13.1984450415, 13.1985985115, 13.1987519652, 13.1989054026, 13.1990588237, 13.1992122284, 13.1993656169, 13.199518989, 13.1996723448, 13.1998256844, 13.1999790076, 13.2001323146, 13.2002856052, 13.2004388796, 13.2005921377, 13.2007453795, 13.200898605, 13.2010518143, 13.2012050073, 13.201358184, 13.2015113445, 13.2016644887, 13.2018176167, 13.2019707284, 13.2021238238, 13.202276903, 13.202429966, 13.2025830127, 13.2027360433, 13.2028890575, 13.2030420556, 13.2031950374, 13.203348003, 13.2035009524, 13.2036538855, 13.2038068025, 13.2039597032, 13.2041125878, 13.2042654561, 13.2044183083, 13.2045711442, 13.204723964, 13.2048767676, 13.205029555, 13.2051823262, 13.2053350813, 13.2054878202, 13.2056405429, 13.2057932494, 13.2059459398, 13.206098614, 13.2062512721, 13.206403914, 13.2065565397, 13.2067091494, 13.2068617428, 13.2070143202, 13.2071668814, 13.2073194265, 13.2074719554, 13.2076244682, 13.2077769649, 13.2079294455, 13.20808191, 13.2082343583, 13.2083867906, 13.2085392067, 13.2086916068, 13.2088439907, 13.2089963586, 13.2091487104, 13.209301046, 13.2094533656, 13.2096056691, 13.2097579566, 13.2099102279, 13.2100624832, 13.2102147225, 13.2103669456, 13.2105191527, 13.2106713438, 13.2108235188, 13.2109756777, 13.2111278206, 13.2112799475, 13.2114320583, 13.2115841531, 13.2117362318, 13.2118882945, 13.2120403412, 13.2121923719, 13.2123443866, 13.2124963852, 13.2126483678, 13.2128003344, 13.212952285, 13.2131042196, 13.2132561382, 13.2134080409, 13.2135599275, 13.2137117981, 13.2138636527, 13.2140154914, 13.2141673141, 13.2143191208, 13.2144709115, 13.2146226863, 13.2147744451, 13.2149261879, 13.2150779148, 13.2152296257, 13.2153813207, 13.2155329997, 13.2156846628, 13.21583631, 13.2159879412, 13.2161395564, 13.2162911558, 13.2164427392, 13.2165943066, 13.2167458582, 13.2168973938, 13.2170489136, 13.2172004174, 13.2173519053, 13.2175033773, 13.2176548334, 13.2178062736, 13.2179576979, 13.2181091063, 13.2182604988, 13.2184118754, 13.2185632362, 13.2187145811, 13.2188659101, 13.2190172232, 13.2191685205, 13.2193198019, 13.2194710674, 13.2196223171, 13.2197735509, 13.2199247689, 13.220075971, 13.2202271573, 13.2203783277, 13.2205294823, 13.2206806211, 13.220831744, 13.2209828511, 13.2211339424, 13.2212850178, 13.2214360774, 13.2215871213, 13.2217381493, 13.2218891615, 13.2220401579, 13.2221911385, 13.2223421032, 13.2224930522, 13.2226439855, 13.2227949029, 13.2229458045, 13.2230966903, 13.2232475604, 13.2233984147, 13.2235492532, 13.223700076, 13.223850883, 13.2240016742, 13.2241524497, 13.2243032094, 13.2244539533, 13.2246046815, 13.224755394, 13.2249060907, 13.2250567717, 13.2252074369, 13.2253580865, 13.2255087202, 13.2256593383, 13.2258099406, 13.2259605272, 13.2261110981, 13.2262616533, 13.2264121928, 13.2265627166, 13.2267132246, 13.226863717, 13.2270141936, 13.2271646546, 13.2273150999, 13.2274655295, 13.2276159434, 13.2277663416, 13.2279167242, 13.2280670911, 13.2282174423, 13.2283677778, 13.2285180977, 13.2286684019, 13.2288186905, 13.2289689634, 13.2291192207, 13.2292694623, 13.2294196882, 13.2295698986, 13.2297200932, 13.2298702723, 13.2300204357, 13.2301705835, 13.2303207157, 13.2304708322, 13.2306209331, 13.2307710184, 13.2309210881, 13.2310711422, 13.2312211807, 13.2313712036, 13.2315212109, 13.2316712026, 13.2318211787, 13.2319711392, 13.2321210841, 13.2322710134, 13.2324209272, 13.2325708254, 13.232720708, 13.232870575, 13.2330204265, 13.2331702624, 13.2333200827, 13.2334698875, 13.2336196768, 13.2337694504, 13.2339192086, 13.2340689512, 13.2342186782, 13.2343683898, 13.2345180857, 13.2346677662, 13.2348174311, 13.2349670805, 13.2351167144, 13.2352663328, 13.2354159356, 13.2355655229, 13.2357150948, 13.2358646511, 13.2360141919, 13.2361637172, 13.236313227, 13.2364627214, 13.2366122002, 13.2367616636, 13.2369111114, 13.2370605438, 13.2372099608, 13.2373593622, 13.2375087482, 13.2376581187, 13.2378074737, 13.2379568133, 13.2381061374, 13.2382554461, 13.2384047393, 13.2385540171, 13.2387032794, 13.2388525263, 13.2390017578, 13.2391509738, 13.2393001744, 13.2394493595, 13.2395985292, 13.2397476836, 13.2398968224, 13.2400459459, 13.240195054, 13.2403441466, 13.2404932239, 13.2406422857, 13.2407913322, 13.2409403632, 13.2410893789, 13.2412383791, 13.241387364, 13.2415363335, 13.2416852876, 13.2418342263, 13.2419831497, 13.2421320577, 13.2422809503, 13.2424298276, 13.2425786895, 13.242727536, 13.2428763672, 13.243025183, 13.2431739835, 13.2433227686, 13.2434715384, 13.2436202928, 13.243769032, 13.2439177557, 13.2440664642, 13.2442151573, 13.2443638351, 13.2445124976, 13.2446611448, 13.2448097766, 13.2449583932, 13.2451069944, 13.2452555803, 13.2454041509, 13.2455527063, 13.2457012463, 13.245849771, 13.2459982805, 13.2461467746, 13.2462952535, 13.2464437171, 13.2465921654, 13.2467405985, 13.2468890163, 13.2470374188, 13.247185806, 13.247334178, 13.2474825348, 13.2476308762, 13.2477792025, 13.2479275134, 13.2480758092, 13.2482240897, 13.2483723549, 13.2485206049, 13.2486688397, 13.2488170593, 13.2489652636, 13.2491134527, 13.2492616266, 13.2494097853, 13.2495579287, 13.249706057, 13.24985417, 13.2500022678, 13.2501503505, 13.2502984179, 13.2504464701, 13.2505945072, 13.2507425291, 13.2508905357, 13.2510385272, 13.2511865035, 13.2513344647, 13.2514824106, 13.2516303414, 13.251778257, 13.2519261575, 13.2520740428, 13.2522219129, 13.2523697679, 13.2525176078, 13.2526654325, 13.252813242, 13.2529610364, 13.2531088157, 13.2532565798, 13.2534043288, 13.2535520626, 13.2536997814, 13.253847485, 13.2539951735, 13.2541428469, 13.2542905051, 13.2544381483, 13.2545857763, 13.2547333892, 13.2548809871, 13.2550285698, 13.2551761375, 13.25532369, 13.2554712275, 13.2556187498, 13.2557662571, 13.2559137493, 13.2560612265, 13.2562086885, 13.2563561355, 13.2565035674, 13.2566509843, 13.2567983861, 13.2569457728, 13.2570931445, 13.2572405011, 13.2573878427, 13.2575351692, 13.2576824807, 13.2578297772, 13.2579770586, 13.2581243249, 13.2582715763, 13.2584188126, 13.2585660339, 13.2587132402, 13.2588604314, 13.2590076076, 13.2591547689, 13.2593019151, 13.2594490463, 13.2595961625, 13.2597432637, 13.2598903499, 13.2600374211, 13.2601844773, 13.2603315186, 13.2604785448, 13.2606255561, 13.2607725524, 13.2609195337, 13.2610665, 13.2612134514, 13.2613603878, 13.2615073092, 13.2616542157, 13.2618011072, 13.2619479838, 13.2620948454, 13.262241692, 13.2623885238, 13.2625353405, 13.2626821424, 13.2628289293, 13.2629757012, 13.2631224583, 13.2632692004, 13.2634159276, 13.2635626398, 13.2637093372, 13.2638560196, 13.2640026871, 13.2641493397, 13.2642959774, 13.2644426002, 13.2645892081, 13.2647358011, 13.2648823792, 13.2650289425, 13.2651754908, 13.2653220242, 13.2654685428, 13.2656150465, 13.2657615353, 13.2659080092, 13.2660544683, 13.2662009125, 13.2663473418, 13.2664937563, 13.2666401559, 13.2667865407, 13.2669329106, 13.2670792657, 13.2672256059, 13.2673719313, 13.2675182418, 13.2676645375, 13.2678108184, 13.2679570844, 13.2681033356, 13.268249572, 13.2683957936, 13.2685420003, 13.2686881922, 13.2688343693, 13.2689805316, 13.2691266791, 13.2692728118, 13.2694189297, 13.2695650328, 13.2697111211, 13.2698571947, 13.2700032534, 13.2701492973, 13.2702953265, 13.2704413408, 13.2705873404, 13.2707333253, 13.2708792953, 13.2710252506, 13.2711711911, 13.2713171169, 13.2714630279, 13.2716089242, 13.2717548056, 13.2719006724, 13.2720465244, 13.2721923616, 13.2723381842, 13.2724839919, 13.272629785, 13.2727755633, 13.2729213269, 13.2730670757, 13.2732128099, 13.2733585293, 13.273504234, 13.2736499239, 13.2737955992, 13.2739412598, 13.2740869056, 13.2742325368, 13.2743781532, 13.274523755, 13.2746693421, 13.2748149145, 13.2749604721, 13.2751060151, 13.2752515435, 13.2753970571, 13.2755425561, 13.2756880404, 13.27583351, 13.275978965, 13.2761244053, 13.2762698309, 13.2764152419, 13.2765606382, 13.2767060199, 13.2768513869, 13.2769967393, 13.277142077, 13.2772874001, 13.2774327086, 13.2775780024, 13.2777232816, 13.2778685462, 13.2780137961, 13.2781590314, 13.2783042521, 13.2784494582, 13.2785946497, 13.2787398266, 13.2788849888, 13.2790301364, 13.2791752695, 13.2793203879, 13.2794654918, 13.2796105811, 13.2797556557, 13.2799007158, 13.2800457613, 13.2801907922, 13.2803358086, 13.2804808103, 13.2806257975, 13.2807707701, 13.2809157282, 13.2810606717, 13.2812056006, 13.281350515, 13.2814954148, 13.2816403001, 13.2817851708, 13.281930027, 13.2820748686, 13.2822196957, 13.2823645082, 13.2825093062, 13.2826540897, 13.2827988587, 13.2829436131, 13.283088353, 13.2832330784, 13.2833777893, 13.2835224856, 13.2836671675, 13.2838118348, 13.2839564877, 13.284101126, 13.2842457498, 13.2843903592, 13.284534954, 13.2846795344, 13.2848241002, 13.2849686516, 13.2851131885, 13.2852577109, 13.2854022189, 13.2855467123, 13.2856911913, 13.2858356559, 13.2859801059, 13.2861245415, 13.2862689627, 13.2864133694, 13.2865577616, 13.2867021394, 13.2868465027, 13.2869908516, 13.2871351861, 13.2872795061, 13.2874238117, 13.2875681028, 13.2877123795, 13.2878566418, 13.2880008897, 13.2881451232, 13.2882893422, 13.2884335468, 13.288577737, 13.2887219128, 13.2888660742, 13.2890102211, 13.2891543537, 13.2892984719, 13.2894425757, 13.2895866651, 13.2897307401, 13.2898748007, 13.2900188469, 13.2901628788, 13.2903068963, 13.2904508994, 13.2905948881, 13.2907388624, 13.2908828224, 13.2910267681, 13.2911706993, 13.2913146162, 13.2914585188, 13.291602407, 13.2917462808, 13.2918901403, 13.2920339855, 13.2921778163, 13.2923216328, 13.2924654349, 13.2926092228, 13.2927529962, 13.2928967554, 13.2930405002, 13.2931842308, 13.293327947, 13.2934716488, 13.2936153364, 13.2937590097, 13.2939026686, 13.2940463133, 13.2941899436, 13.2943335597, 13.2944771614, 13.2946207489, 13.2947643221, 13.294907881, 13.2950514256, 13.2951949559, 13.2953384719, 13.2954819737, 13.2956254612, 13.2957689344, 13.2959123934, 13.2960558381, 13.2961992685, 13.2963426847, 13.2964860866, 13.2966294743, 13.2967728477, 13.2969162069, 13.2970595518, 13.2972028825, 13.2973461989, 13.2974895012, 13.2976327891, 13.2977760629, 13.2979193224, 13.2980625677, 13.2982057988, 13.2983490157, 13.2984922183, 13.2986354067, 13.298778581, 13.298921741, 13.2990648868, 13.2992080184, 13.2993511358, 13.299494239, 13.299637328, 13.2997804029, 13.2999234635, 13.30006651, 13.3002095422, 13.3003525603, 13.3004955642, 13.300638554, 13.3007815296, 13.300924491, 13.3010674382, 13.3012103713, 13.3013532902, 13.301496195, 13.3016390856, 13.3017819621, 13.3019248244, 13.3020676725, 13.3022105065, 13.3023533264, 13.3024961322, 13.3026389238, 13.3027817013, 13.3029244646, 13.3030672138, 13.3032099489, 13.3033526699, 13.3034953768, 13.3036380695, 13.3037807482, 13.3039234127, 13.3040660631, 13.3042086994, 13.3043513217, 13.3044939298, 13.3046365238, 13.3047791037, 13.3049216696, 13.3050642213, 13.305206759, 13.3053492826, 13.3054917921, 13.3056342875, 13.3057767689, 13.3059192362, 13.3060616894, 13.3062041286, 13.3063465537, 13.3064889647, 13.3066313617, 13.3067737446, 13.3069161135, 13.3070584684, 13.3072008091, 13.3073431359, 13.3074854486, 13.3076277473, 13.3077700319, 13.3079123025, 13.3080545591, 13.3081968016, 13.3083390301, 13.3084812446, 13.3086234451, 13.3087656316, 13.3089078041, 13.3090499625, 13.309192107, 13.3093342374, 13.3094763538, 13.3096184563, 13.3097605447, 13.3099026192, 13.3100446796, 13.3101867261, 13.3103287586, 13.3104707771, 13.3106127817, 13.3107547722, 13.3108967488, 13.3110387114, 13.3111806601, 13.3113225947, 13.3114645154, 13.3116064222, 13.311748315, 13.3118901939, 13.3120320587, 13.3121739097, 13.3123157467, 13.3124575697, 13.3125993789, 13.312741174, 13.3128829553, 13.3130247226, 13.313166476, 13.3133082154, 13.313449941, 13.3135916526, 13.3137333503, 13.313875034, 13.3140167039, 13.3141583599, 13.3143000019, 13.31444163, 13.3145832443, 13.3147248446, 13.3148664311, 13.3150080036, 13.3151495623, 13.315291107, 13.3154326379, 13.3155741549, 13.315715658, 13.3158571473, 13.3159986226, 13.3161400841, 13.3162815317, 13.3164229655, 13.3165643854, 13.3167057914, 13.3168471836, 13.3169885619, 13.3171299264, 13.317271277, 13.3174126138, 13.3175539367, 13.3176952458, 13.317836541, 13.3179778224, 13.31811909, 13.3182603437, 13.3184015836, 13.3185428097, 13.318684022, 13.3188252204, 13.318966405, 13.3191075758, 13.3192487328, 13.319389876, 13.3195310054, 13.3196721209, 13.3198132227, 13.3199543107, 13.3200953849, 13.3202364452, 13.3203774918, 13.3205185246, 13.3206595436, 13.3208005489, 13.3209415403, 13.321082518, 13.3212234819, 13.321364432, 13.3215053684, 13.321646291, 13.3217871998, 13.3219280949, 13.3220689762, 13.3222098437, 13.3223506975, 13.3224915376, 13.3226323639, 13.3227731765, 13.3229139753, 13.3230547603, 13.3231955317, 13.3233362893, 13.3234770332, 13.3236177633, 13.3237584797, 13.3238991824, 13.3240398714, 13.3241805466, 13.3243212082, 13.324461856, 13.3246024901, 13.3247431105, 13.3248837172, 13.3250243102, 13.3251648895, 13.3253054551, 13.325446007, 13.3255865452, 13.3257270697, 13.3258675806, 13.3260080777, 13.3261485612, 13.326289031, 13.3264294871, 13.3265699296, 13.3267103583, 13.3268507735, 13.3269911749, 13.3271315627, 13.3272719368, 13.3274122973, 13.3275526441, 13.3276929772, 13.3278332968, 13.3279736026, 13.3281138948, 13.3282541734, 13.3283944384, 13.3285346897, 13.3286749273, 13.3288151514, 13.3289553618, 13.3290955586, 13.3292357417, 13.3293759113, 13.3295160672, 13.3296562095, 13.3297963382, 13.3299364533, 13.3300765548, 13.3302166427, 13.330356717, 13.3304967776, 13.3306368247, 13.3307768582, 13.3309168781, 13.3310568844, 13.3311968772, 13.3313368563, 13.3314768219, 13.3316167738, 13.3317567123, 13.3318966371, 13.3320365484, 13.3321764461, 13.3323163302, 13.3324562008, 13.3325960578, 13.3327359012, 13.3328757312, 13.3330155475, 13.3331553503, 13.3332951396, 13.3334349153, 13.3335746775, 13.3337144261, 13.3338541612, 13.3339938828, 13.3341335908, 13.3342732853, 13.3344129663, 13.3345526338, 13.3346922877, 13.3348319281, 13.334971555, 13.3351111684, 13.3352507683, 13.3353903547, 13.3355299276, 13.3356694869, 13.3358090328, 13.3359485652, 13.3360880841, 13.3362275895, 13.3363670814, 13.3365065598, 13.3366460247, 13.3367854762, 13.3369249142, 13.3370643387, 13.3372037497, 13.3373431473, 13.3374825314, 13.337621902, 13.3377612592, 13.3379006029, 13.3380399331, 13.3381792499, 13.3383185532, 13.3384578431, 13.3385971196, 13.3387363826, 13.3388756321, 13.3390148683, 13.3391540909, 13.3392933002, 13.339432496, 13.3395716784, 13.3397108473, 13.3398500029, 13.339989145, 13.3401282737, 13.340267389, 13.3404064909, 13.3405455793, 13.3406846544, 13.340823716, 13.3409627643, 13.3411017991, 13.3412408205, 13.3413798286, 13.3415188232, 13.3416578045, 13.3417967724, 13.3419357269, 13.342074668, 13.3422135957, 13.3423525101, 13.3424914111, 13.3426302987, 13.3427691729, 13.3429080338, 13.3430468813, 13.3431857154, 13.3433245362, 13.3434633437, 13.3436021377, 13.3437409185, 13.3438796858, 13.3440184399, 13.3441571806, 13.3442959079, 13.3444346219, 13.3445733226, 13.3447120099, 13.3448506839, 13.3449893446, 13.345127992, 13.345266626, 13.3454052467, 13.3455438541, 13.3456824482, 13.345821029, 13.3459595964, 13.3460981505, 13.3462366914, 13.3463752189, 13.3465137332, 13.3466522341, 13.3467907218, 13.3469291961, 13.3470676572, 13.3472061049, 13.3473445394, 13.3474829606, 13.3476213686, 13.3477597632, 13.3478981446, 13.3480365127, 13.3481748675, 13.3483132091, 13.3484515374, 13.3485898524, 13.3487281542, 13.3488664428, 13.349004718, 13.34914298, 13.3492812288, 13.3494194643, 13.3495576866, 13.3496958957, 13.3498340915, 13.349972274, 13.3501104433, 13.3502485994, 13.3503867423, 13.350524872, 13.3506629884, 13.3508010916, 13.3509391815, 13.3510772583, 13.3512153219, 13.3513533722, 13.3514914093, 13.3516294332, 13.351767444, 13.3519054415, 13.3520434258, 13.3521813969, 13.3523193548, 13.3524572996, 13.3525952311, 13.3527331495, 13.3528710547, 13.3530089467, 13.3531468255, 13.3532846911, 13.3534225436, 13.3535603829, 13.353698209, 13.353836022, 13.3539738218, 13.3541116085, 13.3542493819, 13.3543871423, 13.3545248894, 13.3546626235, 13.3548003444, 13.3549380521, 13.3550757467, 13.3552134281, 13.3553510964, 13.3554887516, 13.3556263936, 13.3557640225, 13.3559016383, 13.356039241, 13.3561768305, 13.3563144069, 13.3564519702, 13.3565895204, 13.3567270575, 13.3568645814, 13.3570020923, 13.35713959, 13.3572770746, 13.3574145462, 13.3575520046, 13.35768945, 13.3578268822, 13.3579643014, 13.3581017074, 13.3582391004, 13.3583764803, 13.3585138471, 13.3586512009, 13.3587885416, 13.3589258692, 13.3590631837, 13.3592004851, 13.3593377735, 13.3594750488, 13.3596123111, 13.3597495603, 13.3598867965, 13.3600240196, 13.3601612296, 13.3602984266, 13.3604356106, 13.3605727815, 13.3607099393, 13.3608470842, 13.360984216, 13.3611213347, 13.3612584405, 13.3613955332, 13.3615326128, 13.3616696795, 13.3618067331, 13.3619437737, 13.3620808013, 13.3622178159, 13.3623548175, 13.362491806, 13.3626287816, 13.3627657442, 13.3629026937, 13.3630396303, 13.3631765538, 13.3633134644, 13.3634503619, 13.3635872465, 13.3637241181, 13.3638609767, 13.3639978224, 13.364134655, 13.3642714747, 13.3644082814, 13.3645450751, 13.3646818559, 13.3648186237, 13.3649553785, 13.3650921203, 13.3652288493, 13.3653655652, 13.3655022682, 13.3656389582, 13.3657756353, 13.3659122995, 13.3660489507, 13.3661855889, 13.3663222142, 13.3664588266, 13.3665954261, 13.3667320126, 13.3668685862, 13.3670051468, 13.3671416946, 13.3672782294, 13.3674147512, 13.3675512602, 13.3676877563, 13.3678242394, 13.3679607096, 13.368097167, 13.3682336114, 13.3683700429, 13.3685064615, 13.3686428672, 13.36877926, 13.36891564, 13.369052007, 13.3691883611, 13.3693247024, 13.3694610308, 13.3695973463, 13.3697336489, 13.3698699386, 13.3700062155, 13.3701424795, 13.3702787306, 13.3704149689, 13.3705511943, 13.3706874068, 13.3708236065, 13.3709597933, 13.3710959673, 13.3712321284, 13.3713682766, 13.371504412, 13.3716405346, 13.3717766443, 13.3719127412, 13.3720488253, 13.3721848965, 13.3723209549, 13.3724570004, 13.3725930331, 13.372729053, 13.3728650601, 13.3730010544, 13.3731370358, 13.3732730044, 13.3734089602, 13.3735449032, 13.3736808334, 13.3738167508, 13.3739526554, 13.3740885471, 13.3742244261, 13.3743602923, 13.3744961457, 13.3746319863, 13.3747678141, 13.3749036291, 13.3750394313, 13.3751752208, 13.3753109975, 13.3754467614, 13.3755825125, 13.3757182508, 13.3758539764, 13.3759896892, 13.3761253893, 13.3762610766, 13.3763967511, 13.3765324128, 13.3766680619, 13.3768036981, 13.3769393216, 13.3770749324, 13.3772105304, 13.3773461157, 13.3774816882, 13.377617248, 13.377752795, 13.3778883293, 13.3780238509, 13.3781593598, 13.3782948559, 13.3784303393, 13.37856581, 13.378701268, 13.3788367132, 13.3789721457, 13.3791075656, 13.3792429727, 13.3793783671, 13.3795137488, 13.3796491178, 13.3797844741, 13.3799198176, 13.3800551485, 13.3801904667, 13.3803257723, 13.3804610651, 13.3805963452, 13.3807316127, 13.3808668675, 13.3810021096, 13.381137339, 13.3812725557, 13.3814077598, 13.3815429512, 13.3816781299, 13.381813296, 13.3819484494, 13.3820835901, 13.3822187182, 13.3823538337, 13.3824889364, 13.3826240266, 13.3827591041, 13.3828941689, 13.3830292211, 13.3831642606, 13.3832992875, 13.3834343018, 13.3835693035, 13.3837042925, 13.3838392689, 13.3839742326, 13.3841091837, 13.3842441222, 13.3843790481, 13.3845139614, 13.3846488621, 13.3847837501, 13.3849186255, 13.3850534883, 13.3851883386, 13.3853231762, 13.3854580012, 13.3855928136, 13.3857276134, 13.3858624006, 13.3859971753, 13.3861319373, 13.3862666868, 13.3864014236, 13.3865361479, 13.3866708596, 13.3868055588, 13.3869402453, 13.3870749193, 13.3872095807, 13.3873442296, 13.3874788658, 13.3876134896, 13.3877481007, 13.3878826993, 13.3880172853, 13.3881518588, 13.3882864198, 13.3884209681, 13.388555504, 13.3886900273, 13.388824538, 13.3889590362, 13.3890935219, 13.389227995, 13.3893624556, 13.3894969037, 13.3896313393, 13.3897657623, 13.3899001728, 13.3900345707, 13.3901689562, 13.3903033291, 13.3904376896, 13.3905720375, 13.3907063729, 13.3908406958, 13.3909750062, 13.391109304, 13.3912435894, 13.3913778623, 13.3915121227, 13.3916463706, 13.391780606, 13.3919148289, 13.3920490394, 13.3921832373, 13.3923174228, 13.3924515958, 13.3925857563, 13.3927199043, 13.3928540399, 13.392988163, 13.3931222736, 13.3932563717, 13.3933904574, 13.3935245307, 13.3936585915, 13.3937926398, 13.3939266756, 13.3940606991, 13.39419471, 13.3943287085, 13.3944626946, 13.3945966682, 13.3947306294, 13.3948645782, 13.3949985145, 13.3951324384, 13.3952663498, 13.3954002489, 13.3955341355, 13.3956680096, 13.3958018714, 13.3959357207, 13.3960695576, 13.3962033821, 13.3963371942, 13.3964709939, 13.3966047812, 13.396738556, 13.3968723185, 13.3970060686, 13.3971398062, 13.3972735315, 13.3974072444, 13.3975409449, 13.3976746329, 13.3978083087, 13.397941972, 13.3980756229, 13.3982092615, 13.3983428876, 13.3984765014, 13.3986101029, 13.3987436919, 13.3988772686, 13.399010833, 13.3991443849, 13.3992779245, 13.3994114517, 13.3995449666, 13.3996784692, 13.3998119593, 13.3999454371, 13.4000789026, 13.4002123558, 13.4003457965, 13.400479225, 13.4006126411, 13.4007460448, 13.4008794363, 13.4010128154, 13.4011461822, 13.4012795366, 13.4014128787, 13.4015462085, 13.401679526, 13.4018128311, 13.401946124, 13.4020794045, 13.4022126727, 13.4023459286, 13.4024791722, 13.4026124035, 13.4027456225, 13.4028788292, 13.4030120236, 13.4031452057, 13.4032783755, 13.403411533, 13.4035446782, 13.4036778111, 13.4038109318, 13.4039440402, 13.4040771362, 13.4042102201, 13.4043432916, 13.4044763508, 13.4046093978, 13.4047424326, 13.404875455, 13.4050084652, 13.4051414631, 13.4052744488, 13.4054074222, 13.4055403834, 13.4056733323, 13.4058062689, 13.4059391933, 13.4060721055, 13.4062050054, 13.4063378931, 13.4064707685, 13.4066036317, 13.4067364827, 13.4068693214, 13.4070021479, 13.4071349622, 13.4072677642, 13.4074005541, 13.4075333317, 13.4076660971, 13.4077988502, 13.4079315912, 13.4080643199, 13.4081970364, 13.4083297408, 13.4084624329, 13.4085951128, 13.4087277805, 13.408860436, 13.4089930793, 13.4091257105, 13.4092583294, 13.4093909361, 13.4095235307, 13.4096561131, 13.4097886832, 13.4099212412, 13.4100537871, 13.4101863207, 13.4103188422, 13.4104513515, 13.4105838486, 13.4107163336, 13.4108488064, 13.410981267, 13.4111137155, 13.4112461518, 13.411378576, 13.411510988, 13.4116433879, 13.4117757756, 13.4119081511, 13.4120405146, 13.4121728658, 13.412305205, 13.4124375319, 13.4125698468, 13.4127021495, 13.4128344401, 13.4129667186, 13.4130989849, 13.4132312391, 13.4133634812, 13.4134957112, 13.413627929, 13.4137601348, 13.4138923284, 13.4140245099, 13.4141566793, 13.4142888366, 13.4144209817, 13.4145531148, 13.4146852358, 13.4148173447, 13.4149494415, 13.4150815262, 13.4152135988, 13.4153456593, 13.4154777077, 13.415609744, 13.4157417683, 13.4158737805, 13.4160057806, 13.4161377686, 13.4162697445, 13.4164017084, 13.4165336602, 13.4166655999, 13.4167975276, 13.4169294432, 13.4170613468, 13.4171932382, 13.4173251177, 13.4174569851, 13.4175888404, 13.4177206837, 13.4178525149, 13.4179843341, 13.4181161412, 13.4182479363, 13.4183797194, 13.4185114904, 13.4186432494, 13.4187749963, 13.4189067313, 13.4190384542, 13.419170165, 13.4193018639, 13.4194335507, 13.4195652255, 13.4196968883, 13.4198285391, 13.4199601778, 13.4200918046, 13.4202234193, 13.4203550221, 13.4204866128, 13.4206181916, 13.4207497583, 13.420881313, 13.4210128558, 13.4211443865, 13.4212759053, 13.4214074121, 13.4215389068, 13.4216703897, 13.4218018605, 13.4219333193, 13.4220647662, 13.4221962011, 13.422327624, 13.4224590349, 13.4225904339, 13.4227218209, 13.4228531959, 13.422984559, 13.4231159101, 13.4232472493, 13.4233785765, 13.4235098918, 13.4236411951, 13.4237724864, 13.4239037658, 13.4240350333, 13.4241662888, 13.4242975324, 13.424428764, 13.4245599837, 13.4246911915, 13.4248223874, 13.4249535713, 13.4250847432, 13.4252159033, 13.4253470514, 13.4254781876, 13.4256093119, 13.4257404243, 13.4258715248, 13.4260026133, 13.42613369, 13.4262647547, 13.4263958075, 13.4265268485, 13.4266578775, 13.4267888946, 13.4269198998, 13.4270508932, 13.4271818746, 13.4273128441, 13.4274438018, 13.4275747476, 13.4277056815, 13.4278366035, 13.4279675136, 13.4280984118, 13.4282292982, 13.4283601727, 13.4284910353, 13.4286218861, 13.428752725, 13.428883552, 13.4290143672, 13.4291451705, 13.4292759619, 13.4294067415, 13.4295375092, 13.4296682651, 13.4297990092, 13.4299297414, 13.4300604617, 13.4301911702, 13.4303218668, 13.4304525517, 13.4305832246, 13.4307138858, 13.4308445351, 13.4309751726, 13.4311057982, 13.4312364121, 13.4313670141, 13.4314976043, 13.4316281826, 13.4317587492, 13.4318893039, 13.4320198468, 13.4321503779, 13.4322808972, 13.4324114047, 13.4325419004, 13.4326723843, 13.4328028564, 13.4329333166, 13.4330637651, 13.4331942018, 13.4333246267, 13.4334550398, 13.4335854412, 13.4337158307, 13.4338462084, 13.4339765744, 13.4341069286, 13.434237271, 13.4343676017, 13.4344979205, 13.4346282276, 13.434758523, 13.4348888065, 13.4350190783, 13.4351493384, 13.4352795866, 13.4354098232, 13.4355400479, 13.4356702609, 13.4358004622, 13.4359306517, 13.4360608295, 13.4361909955, 13.4363211498, 13.4364512923, 13.4365814231, 13.4367115421, 13.4368416495, 13.436971745, 13.4371018289, 13.437231901, 13.4373619614, 13.4374920101, 13.4376220471, 13.4377520723, 13.4378820858, 13.4380120877, 13.4381420777, 13.4382720561, 13.4384020228, 13.4385319778, 13.438661921, 13.4387918526, 13.4389217724, 13.4390516806, 13.4391815771, 13.4393114618, 13.4394413349, 13.4395711963, 13.439701046, 13.439830884, 13.4399607103, 13.440090525, 13.4402203279, 13.4403501192, 13.4404798988, 13.4406096667, 13.440739423, 13.4408691676, 13.4409989005, 13.4411286218, 13.4412583314, 13.4413880293, 13.4415177156, 13.4416473903, 13.4417770532, 13.4419067045, 13.4420363442, 13.4421659722, 13.4422955886, 13.4424251933, 13.4425547864, 13.4426843679, 13.4428139377, 13.4429434958, 13.4430730424, 13.4432025773, 13.4433321006, 13.4434616122, 13.4435911123, 13.4437206007, 13.4438500774, 13.4439795426, 13.4441089961, 13.4442384381, 13.4443678684, 13.4444972871, 13.4446266942, 13.4447560897, 13.4448854736, 13.4450148459, 13.4451442066, 13.4452735556, 13.4454028931, 13.445532219, 13.4456615333, 13.445790836, 13.4459201272, 13.4460494067, 13.4461786747, 13.4463079311, 13.4464371758, 13.4465664091, 13.4466956307, 13.4468248408, 13.4469540393, 13.4470832262, 13.4472124016, 13.4473415654, 13.4474707176, 13.4475998583, 13.4477289874, 13.447858105, 13.447987211, 13.4481163054, 13.4482453883, 13.4483744597, 13.4485035195, 13.4486325677, 13.4487616045, 13.4488906296, 13.4490196433, 13.4491486454, 13.4492776359, 13.449406615, 13.4495355825, 13.4496645385, 13.4497934829, 13.4499224159, 13.4500513373, 13.4501802472, 13.4503091455, 13.4504380324, 13.4505669077, 13.4506957716, 13.4508246239, 13.4509534647, 13.451082294, 13.4512111118, 13.4513399181, 13.4514687129, 13.4515974963, 13.4517262681, 13.4518550284, 13.4519837772, 13.4521125146, 13.4522412404, 13.4523699548, 13.4524986577, 13.4526273491, 13.452756029, 13.4528846975, 13.4530133545, 13.453142, 13.453270634, 13.4533992566, 13.4535278677, 13.4536564673, 13.4537850555, 13.4539136322, 13.4540421975, 13.4541707513, 13.4542992936, 13.4544278245, 13.454556344, 13.454684852, 13.4548133485, 13.4549418336, 13.4550703073, 13.4551987695, 13.4553272203, 13.4554556597, 13.4555840876, 13.4557125041, 13.4558409091, 13.4559693028, 13.456097685, 13.4562260557, 13.4563544151, 13.4564827631, 13.4566110996, 13.4567394247, 13.4568677384, 13.4569960407, 13.4571243315, 13.457252611, 13.4573808791, 13.4575091357, 13.457637381, 13.4577656149, 13.4578938373, 13.4580220484, 13.4581502481, 13.4582784363, 13.4584066132, 13.4585347787, 13.4586629329, 13.4587910756, 13.458919207, 13.4590473269, 13.4591754356, 13.4593035328, 13.4594316186, 13.4595596931, 13.4596877562, 13.459815808, 13.4599438484, 13.4600718774, 13.4601998951, 13.4603279014, 13.4604558963, 13.4605838799, 13.4607118521, 13.460839813, 13.4609677626, 13.4610957008, 13.4612236276, 13.4613515431, 13.4614794473, 13.4616073401, 13.4617352216, 13.4618630918, 13.4619909506, 13.4621187981, 13.4622466342, 13.4623744591, 13.4625022726, 13.4626300748, 13.4627578657, 13.4628856452, 13.4630134134, 13.4631411704, 13.463268916, 13.4633966503, 13.4635243733, 13.463652085, 13.4637797853, 13.4639074744, 13.4640351522, 13.4641628187, 13.4642904739, 13.4644181177, 13.4645457503, 13.4646733716, 13.4648009817, 13.4649285804, 13.4650561678, 13.465183744, 13.4653113089, 13.4654388625, 13.4655664048, 13.4656939359, 13.4658214556, 13.4659489642, 13.4660764614, 13.4662039474, 13.4663314221, 13.4664588855, 13.4665863377, 13.4667137786, 13.4668412083, 13.4669686267, 13.4670960339, 13.4672234298, 13.4673508145, 13.4674781879, 13.4676055501, 13.467732901, 13.4678602407, 13.4679875692, 13.4681148864, 13.4682421924, 13.4683694871, 13.4684967706, 13.4686240429, 13.468751304, 13.4688785538, 13.4690057924, 13.4691330198, 13.469260236, 13.469387441, 13.4695146347, 13.4696418172, 13.4697689886, 13.4698961487, 13.4700232976, 13.4701504353, 13.4702775618, 13.4704046771, 13.4705317812, 13.4706588741, 13.4707859558, 13.4709130263, 13.4710400856, 13.4711671337, 13.4712941707, 13.4714211964, 13.471548211, 13.4716752144, 13.4718022066, 13.4719291876, 13.4720561575, 13.4721831162, 13.4723100637, 13.4724370001, 13.4725639252, 13.4726908392, 13.4728177421, 13.4729446338, 13.4730715143, 13.4731983837, 13.4733252419, 13.473452089, 13.4735789249, 13.4737057496, 13.4738325632, 13.4739593657, 13.474086157, 13.4742129372, 13.4743397062, 13.4744664641, 13.4745932109, 13.4747199465, 13.474846671, 13.4749733844, 13.4751000866, 13.4752267777, 13.4753534577, 13.4754801266, 13.4756067843, 13.475733431, 13.4758600665, 13.4759866909, 13.4761133042, 13.4762399063, 13.4763664974, 13.4764930773, 13.4766196462, 13.4767462039, 13.4768727506, 13.4769992861, 13.4771258106, 13.4772523239, 13.4773788262, 13.4775053174, 13.4776317975, 13.4777582664, 13.4778847244, 13.4780111712, 13.4781376069, 13.4782640316, 13.4783904452, 13.4785168477, 13.4786432391, 13.4787696195, 13.4788959888, 13.479022347, 13.4791486942, 13.4792750303, 13.4794013553, 13.4795276693, 13.4796539722, 13.479780264, 13.4799065448, 13.4800328146, 13.4801590733, 13.4802853209, 13.4804115575, 13.4805377831, 13.4806639976, 13.4807902011, 13.4809163935, 13.4810425749, 13.4811687453, 13.4812949046, 13.4814210529, 13.4815471902, 13.4816733164, 13.4817994317, 13.4819255359, 13.482051629, 13.4821777112, 13.4823037823, 13.4824298424, 13.4825558915, 13.4826819296, 13.4828079567, 13.4829339728, 13.4830599779, 13.4831859719, 13.483311955, 13.4834379271, 13.4835638881, 13.4836898382, 13.4838157773, 13.4839417053, 13.4840676224, 13.4841935285, 13.4843194236, 13.4844453078, 13.4845711809, 13.4846970431, 13.4848228943, 13.4849487345, 13.4850745637, 13.485200382, 13.4853261892, 13.4854519856, 13.4855777709, 13.4857035453, 13.4858293087, 13.4859550612, 13.4860808027, 13.4862065332, 13.4863322528, 13.4864579614, 13.4865836591, 13.4867093458, 13.4868350216, 13.4869606864, 13.4870863403, 13.4872119832, 13.4873376152, 13.4874632363, 13.4875888464, 13.4877144456, 13.4878400338, 13.4879656111, 13.4880911775, 13.488216733, 13.4883422775, 13.4884678111, 13.4885933338, 13.4887188456, 13.4888443465, 13.4889698364, 13.4890953154, 13.4892207835, 13.4893462407, 13.489471687, 13.4895971224, 13.4897225469, 13.4898479604, 13.4899733631, 13.4900987549, 13.4902241358, 13.4903495057, 13.4904748648, 13.490600213, 13.4907255503, 13.4908508767, 13.4909761923, 13.4911014969, 13.4912267907, 13.4913520736, 13.4914773456, 13.4916026067, 13.4917278569, 13.4918530963, 13.4919783248, 13.4921035425, 13.4922287493, 13.4923539452, 13.4924791302, 13.4926043044, 13.4927294677, 13.4928546202, 13.4929797618, 13.4931048925, 13.4932300124, 13.4933551215, 13.4934802197, 13.4936053071, 13.4937303836, 13.4938554492, 13.4939805041, 13.4941055481, 13.4942305812, 13.4943556035, 13.494480615, 13.4946056157, 13.4947306055, 13.4948555845, 13.4949805527, 13.49510551, 13.4952304565, 13.4953553922, 13.4954803171, 13.4956052312, 13.4957301344, 13.4958550269, 13.4959799085, 13.4961047793, 13.4962296394, 13.4963544886, 13.496479327, 13.4966041546, 13.4967289714, 13.4968537774, 13.4969785726, 13.497103357, 13.4972281306, 13.4973528935, 13.4974776455, 13.4976023868, 13.4977271173, 13.497851837, 13.4979765459, 13.498101244, 13.4982259313, 13.4983506079, 13.4984752737, 13.4985999288, 13.498724573, 13.4988492065, 13.4989738293, 13.4990984412, 13.4992230424, 13.4993476329, 13.4994722126, 13.4995967815, 13.4997213397, 13.4998458871, 13.4999704238, 13.5000949497, 13.5002194648, 13.5003439693, 13.500468463, 13.5005929459, 13.5007174181, 13.5008418796, 13.5009663303, 13.5010907703, 13.5012151995, 13.5013396181, 13.5014640259, 13.5015884229, 13.5017128093, 13.5018371849, 13.5019615498, 13.502085904, 13.5022102474, 13.5023345802, 13.5024589022, 13.5025832136, 13.5027075142, 13.5028318041, 13.5029560833, 13.5030803518, 13.5032046095, 13.5033288566, 13.503453093, 13.5035773187, 13.5037015337, 13.503825738, 13.5039499316, 13.5040741145, 13.5041982867, 13.5043224483, 13.5044465991, 13.5045707393, 13.5046948688, 13.5048189876, 13.5049430958, 13.5050671932, 13.50519128, 13.5053153561, 13.5054394216, 13.5055634764, 13.5056875205, 13.5058115539, 13.5059355767, 13.5060595888, 13.5061835903, 13.5063075811, 13.5064315613, 13.5065555308, 13.5066794896, 13.5068034378, 13.5069273753, 13.5070513022, 13.5071752185, 13.5072991241, 13.5074230191, 13.5075469034, 13.5076707771, 13.5077946402, 13.5079184926, 13.5080423344, 13.5081661656, 13.5082899861, 13.5084137961, 13.5085375953, 13.508661384, 13.5087851621, 13.5089089295, 13.5090326863, 13.5091564325, 13.5092801681, 13.5094038931, 13.5095276074, 13.5096513112, 13.5097750043, 13.5098986869, 13.5100223588, 13.5101460202, 13.5102696709, 13.510393311, 13.5105169406, 13.5106405596, 13.5107641679, 13.5108877657, 13.5110113529, 13.5111349295, 13.5112584955, 13.5113820509, 13.5115055958, 13.5116291301, 13.5117526538, 13.5118761669, 13.5119996694, 13.5121231614, 13.5122466428, 13.5123701137, 13.5124935739, 13.5126170237, 13.5127404628, 13.5128638914, 13.5129873094, 13.5131107169, 13.5132341138, 13.5133575002, 13.513480876, 13.5136042412, 13.513727596, 13.5138509401, 13.5139742737, 13.5140975968, 13.5142209094, 13.5143442114, 13.5144675028, 13.5145907837, 13.5147140541, 13.514837314, 13.5149605633, 13.5150838021, 13.5152070304, 13.5153302482, 13.5154534554, 13.5155766521, 13.5156998383, 13.515823014, 13.5159461791, 13.5160693338, 13.5161924779, 13.5163156115, 13.5164387346, 13.5165618472, 13.5166849493, 13.5168080409, 13.516931122, 13.5170541926, 13.5171772527, 13.5173003023, 13.5174233414, 13.51754637, 13.5176693881, 13.5177923958, 13.5179153929, 13.5180383796, 13.5181613558, 13.5182843215, 13.5184072767, 13.5185302214, 13.5186531557, 13.5187760795, 13.5188989928, 13.5190218956, 13.519144788, 13.5192676699, 13.5193905413, 13.5195134023, 13.5196362528, 13.5197590929, 13.5198819225, 13.5200047416, 13.5201275503, 13.5202503486, 13.5203731363, 13.5204959137, 13.5206186806, 13.520741437, 13.520864183, 13.5209869185, 13.5211096437, 13.5212323583, 13.5213550626, 13.5214777564, 13.5216004397, 13.5217231127, 13.5218457752, 13.5219684272, 13.5220910689, 13.5222137001, 13.5223363209, 13.5224589313, 13.5225815313, 13.5227041208, 13.5228266999, 13.5229492686, 13.5230718269, 13.5231943748, 13.5233169123, 13.5234394394, 13.5235619561, 13.5236844623, 13.5238069582, 13.5239294437, 13.5240519187, 13.5241743834, 13.5242968377, 13.5244192815, 13.524541715, 13.5246641381, 13.5247865509, 13.5249089532, 13.5250313451, 13.5251537267, 13.5252760979, 13.5253984587, 13.5255208091, 13.5256431491, 13.5257654788, 13.5258877981, 13.5260101071, 13.5261324056, 13.5262546938, 13.5263769717, 13.5264992391, 13.5266214962, 13.526743743, 13.5268659794, 13.5269882054, 13.5271104211, 13.5272326264, 13.5273548214, 13.5274770061, 13.5275991803, 13.5277213443, 13.5278434979, 13.5279656411, 13.528087774, 13.5282098966, 13.5283320089, 13.5284541108, 13.5285762023, 13.5286982836, 13.5288203545, 13.5289424151, 13.5290644653, 13.5291865053, 13.5293085349, 13.5294305541, 13.5295525631, 13.5296745618, 13.5297965501, 13.5299185281, 13.5300404958, 13.5301624532, 13.5302844003, 13.5304063371, 13.5305282636, 13.5306501798, 13.5307720856, 13.5308939812, 13.5310158665, 13.5311377414, 13.5312596061, 13.5313814605, 13.5315033046, 13.5316251384, 13.5317469619, 13.5318687752, 13.5319905781, 13.5321123708, 13.5322341532, 13.5323559253, 13.5324776871, 13.5325994387, 13.53272118, 13.532842911, 13.5329646317, 13.5330863422, 13.5332080424, 13.5333297323, 13.533451412, 13.5335730814, 13.5336947405, 13.5338163894, 13.5339380281, 13.5340596565, 13.5341812746, 13.5343028825, 13.5344244801, 13.5345460675, 13.5346676446, 13.5347892115, 13.5349107681, 13.5350323145, 13.5351538507, 13.5352753766, 13.5353968923, 13.5355183978, 13.535639893, 13.535761378, 13.5358828528, 13.5360043173, 13.5361257716, 13.5362472157, 13.5363686496, 13.5364900732, 13.5366114866, 13.5367328898, 13.5368542828, 13.5369756656, 13.5370970382, 13.5372184005, 13.5373397527, 13.5374610946, 13.5375824264, 13.5377037479, 13.5378250592, 13.5379463604, 13.5380676513, 13.5381889321, 13.5383102026, 13.538431463, 13.5385527131, 13.5386739531, 13.5387951829, 13.5389164025, 13.5390376119, 13.5391588111, 13.5392800002, 13.539401179, 13.5395223477, 13.5396435062, 13.5397646546, 13.5398857928, 13.5400069208, 13.5401280386, 13.5402491462, 13.5403702437, 13.5404913311, 13.5406124082, 13.5407334753, 13.5408545321, 13.5409755788, 13.5410966153, 13.5412176417, 13.541338658, 13.5414596641, 13.54158066, 13.5417016458, 13.5418226214, 13.5419435869, 13.5420645423, 13.5421854875, 13.5423064226, 13.5424273475, 13.5425482623, 13.542669167, 13.5427900616, 13.542910946, 13.5430318203, 13.5431526844, 13.5432735384, 13.5433943824, 13.5435152162, 13.5436360398, 13.5437568534, 13.5438776568, 13.5439984501, 13.5441192333, 13.5442400064, 13.5443607694, 13.5444815223, 13.5446022651, 13.5447229978, 13.5448437203, 13.5449644328, 13.5450851352, 13.5452058274, 13.5453265096, 13.5454471817, 13.5455678437, 13.5456884956, 13.5458091374, 13.5459297691, 13.5460503907, 13.5461710023, 13.5462916037, 13.5464121951, 13.5465327764, 13.5466533477, 13.5467739088, 13.5468944599, 13.5470150009, 13.5471355318, 13.5472560527, 13.5473765635, 13.5474970642, 13.5476175549, 13.5477380355, 13.5478585061, 13.5479789665, 13.548099417, 13.5482198574, 13.5483402877, 13.5484607079, 13.5485811182, 13.5487015183, 13.5488219085, 13.5489422885, 13.5490626586, 13.5491830186, 13.5493033685, 13.5494237084, 13.5495440383, 13.5496643581, 13.5497846679, 13.5499049677, 13.5500252575, 13.5501455372, 13.5502658069, 13.5503860665, 13.5505063162, 13.5506265558, 13.5507467854, 13.550867005, 13.5509872145, 13.5511074141, 13.5512276036, 13.5513477831, 13.5514679526, 13.5515881121, 13.5517082616, 13.5518284011, 13.5519485306, 13.5520686501, 13.5521887596, 13.552308859, 13.5524289485, 13.552549028, 13.5526690975, 13.552789157, 13.5529092065, 13.5530292461, 13.5531492756, 13.5532692952, 13.5533893047, 13.5535093043, 13.5536292939, 13.5537492735, 13.5538692432, 13.5539892029, 13.5541091526, 13.5542290923, 13.5543490221, 13.5544689419, 13.5545888517, 13.5547087515, 13.5548286414, 13.5549485214, 13.5550683913, 13.5551882513, 13.5553081014, 13.5554279415, 13.5555477716, 13.5556675918, 13.5557874021, 13.5559072024, 13.5560269927, 13.5561467731, 13.5562665436, 13.5563863041, 13.5565060547, 13.5566257953, 13.556745526, 13.5568652468, 13.5569849576, 13.5571046585, 13.5572243495, 13.5573440305, 13.5574637016, 13.5575833628, 13.557703014, 13.5578226554, 13.5579422868, 13.5580619083, 13.5581815199, 13.5583011215, 13.5584207133, 13.5585402951, 13.558659867, 13.558779429, 13.5588989811, 13.5590185233, 13.5591380556, 13.559257578, 13.5593770905, 13.5594965931, 13.5596160858, 13.5597355686, 13.5598550415, 13.5599745045, 13.5600939576, 13.5602134009, 13.5603328342, 13.5604522577, 13.5605716712, 13.5606910749, 13.5608104687, 13.5609298527, 13.5610492267, 13.5611685909, 13.5612879452, 13.5614072896, 13.5615266241, 13.5616459488, 13.5617652636, 13.5618845686, 13.5620038637, 13.5621231489, 13.5622424242, 13.5623616897, 13.5624809453, 13.5626001911, 13.562719427, 13.5628386531, 13.5629578693, 13.5630770757, 13.5631962722, 13.5633154589, 13.5634346357, 13.5635538027, 13.5636729598, 13.5637921071, 13.5639112446, 13.5640303722, 13.56414949, 13.5642685979, 13.5643876961, 13.5645067843, 13.5646258628, 13.5647449314, 13.5648639902, 13.5649830392, 13.5651020784, 13.5652211077, 13.5653401272, 13.5654591369, 13.5655781368, 13.5656971268, 13.5658161071, 13.5659350775, 13.5660540382, 13.566172989, 13.56629193, 13.5664108612, 13.5665297826, 13.5666486942, 13.566767596, 13.566886488, 13.5670053702, 13.5671242427, 13.5672431053, 13.5673619581, 13.5674808011, 13.5675996344, 13.5677184579, 13.5678372715, 13.5679560754, 13.5680748695, 13.5681936539, 13.5683124284, 13.5684311932, 13.5685499482, 13.5686686934, 13.5687874288, 13.5689061545, 13.5690248704, 13.5691435765, 13.5692622729, 13.5693809595, 13.5694996364, 13.5696183034, 13.5697369608, 13.5698556083, 13.5699742461, 13.5700928742, 13.5702114925, 13.570330101, 13.5704486998, 13.5705672889, 13.5706858682, 13.5708044377, 13.5709229975, 13.5710415476, 13.5711600879, 13.5712786185, 13.5713971394, 13.5715156505, 13.5716341519, 13.5717526435, 13.5718711254, 13.5719895976, 13.5721080601, 13.5722265128, 13.5723449558, 13.5724633891, 13.5725818126, 13.5727002265, 13.5728186306, 13.572937025, 13.5730554097, 13.5731737847, 13.57329215, 13.5734105055, 13.5735288514, 13.5736471875, 13.5737655139, 13.5738838307, 13.5740021377, 13.574120435, 13.5742387226, 13.5743570006, 13.5744752688, 13.5745935273, 13.5747117762, 13.5748300153, 13.5749482448, 13.5750664646, 13.5751846747, 13.5753028751, 13.5754210658, 13.5755392468, 13.5756574182, 13.5757755799, 13.5758937319, 13.5760118742, 13.5761300069, 13.5762481298, 13.5763662432, 13.5764843468, 13.5766024408, 13.5767205251, 13.5768385997, 13.5769566647, 13.57707472, 13.5771927657, 13.5773108017, 13.577428828, 13.5775468447, 13.5776648518, 13.5777828492, 13.5779008369, 13.578018815, 13.5781367834, 13.5782547422, 13.5783726914, 13.5784906309, 13.5786085607, 13.578726481, 13.5788443916, 13.5789622925, 13.5790801838, 13.5791980655, 13.5793159376, 13.5794338, 13.5795516528, 13.579669496, 13.5797873295, 13.5799051535, 13.5800229678, 13.5801407724, 13.5802585675, 13.5803763529, 13.5804941288, 13.580611895, 13.5807296516, 13.5808473986, 13.580965136, 13.5810828638, 13.5812005819, 13.5813182905, 13.5814359895, 13.5815536788, 13.5816713586, 13.5817890287, 13.5819066893, 13.5820243403, 13.5821419817, 13.5822596134, 13.5823772356, 13.5824948482, 13.5826124513, 13.5827300447, 13.5828476286, 13.5829652028, 13.5830827675, 13.5832003226, 13.5833178681, 13.5834354041, 13.5835529305, 13.5836704473, 13.5837879545, 13.5839054522, 13.5840229403, 13.5841404188, 13.5842578877, 13.5843753471, 13.584492797, 13.5846102372, 13.584727668, 13.5848450891, 13.5849625007, 13.5850799028, 13.5851972953, 13.5853146782, 13.5854320516, 13.5855494154, 13.5856667697, 13.5857841145, 13.5859014497, 13.5860187754, 13.5861360915, 13.5862533981, 13.5863706951, 13.5864879826, 13.5866052606, 13.586722529, 13.586839788, 13.5869570373, 13.5870742772, 13.5871915075, 13.5873087283, 13.5874259396, 13.5875431414, 13.5876603336, 13.5877775163, 13.5878946895, 13.5880118532, 13.5881290074, 13.588246152, 13.5883632872, 13.5884804128, 13.588597529, 13.5887146356, 13.5888317327, 13.5889488203, 13.5890658984, 13.589182967, 13.5893000262, 13.5894170758, 13.5895341159, 13.5896511465, 13.5897681676, 13.5898851793, 13.5900021814, 13.5901191741, 13.5902361573, 13.590353131, 13.5904700952, 13.5905870499, 13.5907039952, 13.5908209309, 13.5909378572, 13.591054774, 13.5911716814, 13.5912885792, 13.5914054676, 13.5915223466, 13.591639216, 13.591756076, 13.5918729266, 13.5919897676, 13.5921065992, 13.5922234214, 13.592340234, 13.5924570373, 13.592573831, 13.5926906154, 13.5928073902, 13.5929241556, 13.5930409116, 13.5931576581, 13.5932743952, 13.5933911228, 13.593507841, 13.5936245497, 13.593741249, 13.5938579389, 13.5939746193, 13.5940912903, 13.5942079518, 13.5943246039, 13.5944412466, 13.5945578799, 13.5946745037, 13.5947911181, 13.5949077231, 13.5950243186, 13.5951409047, 13.5952574814, 13.5953740487, 13.5954906066, 13.5956071551, 13.5957236941, 13.5958402237, 13.5959567439, 13.5960732547, 13.5961897561, 13.5963062481, 13.5964227307, 13.5965392039, 13.5966556677, 13.5967721221, 13.596888567, 13.5970050026, 13.5971214288, 13.5972378456, 13.597354253, 13.597470651, 13.5975870396, 13.5977034188, 13.5978197886, 13.5979361491, 13.5980525002, 13.5981688418, 13.5982851741, 13.5984014971, 13.5985178106, 13.5986341148, 13.5987504096, 13.598866695, 13.598982971, 13.5990992377, 13.599215495, 13.599331743, 13.5994479815, 13.5995642107, 13.5996804306, 13.5997966411, 13.5999128422, 13.600029034, 13.6001452164, 13.6002613894, 13.6003775531, 13.6004937075, 13.6006098524, 13.6007259881, 13.6008421144, 13.6009582313, 13.6010743389, 13.6011904372, 13.6013065261, 13.6014226057, 13.6015386759, 13.6016547368, 13.6017707884, 13.6018868306, 13.6020028635, 13.6021188871, 13.6022349013, 13.6023509062, 13.6024669018, 13.6025828881, 13.602698865, 13.6028148326, 13.6029307909, 13.6030467399, 13.6031626795, 13.6032786099, 13.6033945309, 13.6035104426, 13.603626345, 13.6037422381, 13.6038581218, 13.6039739963, 13.6040898615, 13.6042057173, 13.6043215639, 13.6044374011, 13.6045532291, 13.6046690477, 13.6047848571, 13.6049006571, 13.6050164479, 13.6051322294, 13.6052480016, 13.6053637645, 13.6054795181, 13.6055952624, 13.6057109974, 13.6058267232, 13.6059424396, 13.6060581468, 13.6061738447, 13.6062895333, 13.6064052127, 13.6065208828, 13.6066365436, 13.6067521951, 13.6068678374, 13.6069834704, 13.6070990941, 13.6072147086, 13.6073303137, 13.6074459097, 13.6075614964, 13.6076770738, 13.6077926419, 13.6079082008, 13.6080237505, 13.6081392908, 13.608254822, 13.6083703439, 13.6084858565, 13.6086013599, 13.608716854, 13.6088323389, 13.6089478146, 13.609063281, 13.6091787381, 13.6092941861, 13.6094096248, 13.6095250542, 13.6096404744, 13.6097558854, 13.6098712872, 13.6099866797, 13.610102063, 13.6102174371, 13.6103328019, 13.6104481575, 13.6105635039, 13.6106788411, 13.6107941691, 13.6109094878, 13.6110247973, 13.6111400976, 13.6112553887, 13.6113706706, 13.6114859432, 13.6116012067, 13.6117164609, 13.611831706, 13.6119469418, 13.6120621685, 13.6121773859, 13.6122925941, 13.6124077931, 13.612522983, 13.6126381636, 13.612753335, 13.6128684973, 13.6129836503, 13.6130987942, 13.6132139289, 13.6133290544, 13.6134441707, 13.6135592778, 13.6136743757, 13.6137894645, 13.613904544, 13.6140196144, 13.6141346757, 13.6142497277, 13.6143647706, 13.6144798042, 13.6145948288, 13.6147098441, 13.6148248503, 13.6149398473, 13.6150548352, 13.6151698138, 13.6152847834, 13.6153997437, 13.6155146949, 13.615629637, 13.6157445699, 13.6158594936, 13.6159744082, 13.6160893136, 13.6162042099, 13.616319097, 13.616433975, 13.6165488438, 13.6166637035, 13.616778554, 13.6168933954, 13.6170082277, 13.6171230508, 13.6172378647, 13.6173526696, 13.6174674653, 13.6175822519, 13.6176970293, 13.6178117976, 13.6179265568, 13.6180413069, 13.6181560478, 13.6182707796, 13.6183855023, 13.6185002158, 13.6186149203, 13.6187296156, 13.6188443018, 13.6189589788, 13.6190736468, 13.6191883057, 13.6193029554, 13.619417596, 13.6195322276, 13.61964685, 13.6197614633, 13.6198760675, 13.6199906626, 13.6201052486, 13.6202198255, 13.6203343933, 13.620448952, 13.6205635016, 13.6206780421, 13.6207925736, 13.6209070959, 13.6210216091, 13.6211361133, 13.6212506083, 13.6213650943, 13.6214795712, 13.621594039, 13.6217084977, 13.6218229474, 13.621937388, 13.6220518195, 13.6221662419, 13.6222806552, 13.6223950595, 13.6225094547, 13.6226238408, 13.6227382179, 13.6228525859, 13.6229669448, 13.6230812947, 13.6231956355, 13.6233099672, 13.6234242899, 13.6235386035, 13.6236529081, 13.6237672036, 13.62388149, 13.6239957674, 13.6241100358, 13.6242242951, 13.6243385453, 13.6244527865, 13.6245670187, 13.6246812418, 13.6247954559, 13.6249096609, 13.6250238569, 13.6251380438, 13.6252522217, 13.6253663906, 13.6254805505, 13.6255947013, 13.6257088431, 13.6258229758, 13.6259370995, 13.6260512142, 13.6261653199, 13.6262794166, 13.6263935042, 13.6265075828, 13.6266216524, 13.6267357129, 13.6268497645, 13.626963807, 13.6270778405, 13.627191865, 13.6273058805, 13.627419887, 13.6275338845, 13.6276478729, 13.6277618524, 13.6278758229, 13.6279897843, 13.6281037368, 13.6282176802, 13.6283316147, 13.6284455401, 13.6285594566, 13.6286733641, 13.6287872625, 13.628901152, 13.6290150325, 13.629128904, 13.6292427665, 13.6293566201, 13.6294704646, 13.6295843002, 13.6296981268, 13.6298119444, 13.629925753, 13.6300395527, 13.6301533433, 13.630267125, 13.6303808978, 13.6304946615, 13.6306084163, 13.6307221621, 13.630835899, 13.6309496268, 13.6310633457, 13.6311770557, 13.6312907567, 13.6314044487, 13.6315181318, 13.6316318059, 13.6317454711, 13.6318591273, 13.6319727745, 13.6320864128, 13.6322000422, 13.6323136626, 13.632427274, 13.6325408765, 13.6326544701, 13.6327680547, 13.6328816304, 13.6329951971, 13.6331087549, 13.6332223038, 13.6333358437, 13.6334493747, 13.6335628968, 13.6336764099, 13.6337899141, 13.6339034093, 13.6340168957, 13.6341303731, 13.6342438416, 13.6343573011, 13.6344707518, 13.6345841935, 13.6346976263, 13.6348110502, 13.6349244651, 13.6350378712, 13.6351512683, 13.6352646565, 13.6353780359, 13.6354914063, 13.6356047677, 13.6357181203, 13.635831464, 13.6359447988, 13.6360581247, 13.6361714416, 13.6362847497, 13.6363980489, 13.6365113392, 13.6366246205, 13.636737893, 13.6368511566, 13.6369644113, 13.6370776571, 13.6371908941, 13.6373041221, 13.6374173413, 13.6375305515, 13.6376437529, 13.6377569454, 13.637870129, 13.6379833038, 13.6380964696, 13.6382096266, 13.6383227747, 13.638435914, 13.6385490444, 13.6386621659, 13.6387752785, 13.6388883823, 13.6390014771, 13.6391145632, 13.6392276403, 13.6393407087, 13.6394537681, 13.6395668187, 13.6396798604, 13.6397928933, 13.6399059173, 13.6400189325, 13.6401319388, 13.6402449362, 13.6403579248, 13.6404709046, 13.6405838755, 13.6406968376, 13.6408097908, 13.6409227352, 13.6410356707, 13.6411485974, 13.6412615153, 13.6413744243, 13.6414873245, 13.6416002158, 13.6417130984, 13.641825972, 13.6419388369, 13.6420516929, 13.6421645401, 13.6422773785, 13.6423902081, 13.6425030288, 13.6426158407, 13.6427286438, 13.642841438, 13.6429542235, 13.6430670001, 13.6431797679, 13.6432925269, 13.6434052771, 13.6435180185, 13.6436307511, 13.6437434748, 13.6438561898, 13.6439688959, 13.6440815933, 13.6441942818, 13.6443069615, 13.6444196325, 13.6445322946, 13.644644948, 13.6447575925, 13.6448702283, 13.6449828552, 13.6450954734, 13.6452080828, 13.6453206834, 13.6454332752, 13.6455458582, 13.6456584324, 13.6457709979, 13.6458835545, 13.6459961024, 13.6461086415, 13.6462211718, 13.6463336934, 13.6464462062, 13.6465587102, 13.6466712054, 13.6467836918, 13.6468961695, 13.6470086384, 13.6471210986, 13.64723355, 13.6473459926, 13.6474584265, 13.6475708516, 13.6476832679, 13.6477956755, 13.6479080743, 13.6480204643, 13.6481328457, 13.6482452182, 13.648357582, 13.6484699371, 13.6485822834, 13.6486946209, 13.6488069497, 13.6489192698, 13.6490315811, 13.6491438837, 13.6492561775, 13.6493684626, 13.649480739, 13.6495930066, 13.6497052655, 13.6498175156, 13.649929757, 13.6500419897, 13.6501542137, 13.6502664289, 13.6503786354, 13.6504908332, 13.6506030222, 13.6507152025, 13.6508273741, 13.650939537, 13.6510516912, 13.6511638366, 13.6512759733, 13.6513881014, 13.6515002207, 13.6516123312, 13.6517244331, 13.6518365263, 13.6519486107, 13.6520606865, 13.6521727535, 13.6522848118, 13.6523968615, 13.6525089024, 13.6526209346, 13.6527329582, 13.652844973, 13.6529569791, 13.6530689766, 13.6531809653, 13.6532929454, 13.6534049167, 13.6535168794, 13.6536288334, 13.6537407787, 13.6538527153, 13.6539646432, 13.6540765625, 13.6541884731, 13.6543003749, 13.6544122681, 13.6545241527, 13.6546360285, 13.6547478957, 13.6548597542, 13.654971604, 13.6550834452, 13.6551952777, 13.6553071015, 13.6554189167, 13.6555307232, 13.655642521, 13.6557543101, 13.6558660906, 13.6559778625, 13.6560896257, 13.6562013802, 13.6563131261, 13.6564248633, 13.6565365918, 13.6566483117, 13.656760023, 13.6568717256, 13.6569834196, 13.6570951049, 13.6572067816, 13.6573184496, 13.657430109, 13.6575417597, 13.6576534018, 13.6577650353, 13.6578766601, 13.6579882763, 13.6580998838, 13.6582114828, 13.658323073, 13.6584346547, 13.6585462277, 13.6586577921, 13.6587693479, 13.658880895, 13.6589924336, 13.6591039635, 13.6592154848, 13.6593269974, 13.6594385015, 13.6595499969, 13.6596614837, 13.6597729619, 13.6598844315, 13.6599958924, 13.6601073448, 13.6602187885, 13.6603302237, 13.6604416502, 13.6605530681, 13.6606644775, 13.6607758782, 13.6608872703, 13.6609986538, 13.6611100287, 13.6612213951, 13.6613327528, 13.6614441019, 13.6615554425, 13.6616667744, 13.6617780978, 13.6618894125, 13.6620007187, 13.6621120163, 13.6622233053, 13.6623345857, 13.6624458576, 13.6625571208, 13.6626683755, 13.6627796216, 13.6628908591, 13.6630020881, 13.6631133085, 13.6632245203, 13.6633357235, 13.6634469181, 13.6635581042, 13.6636692817, 13.6637804507, 13.6638916111, 13.6640027629, 13.6641139061, 13.6642250408, 13.664336167, 13.6644472845, 13.6645583936, 13.664669494, 13.6647805859, 13.6648916693, 13.6650027441, 13.6651138103, 13.665224868, 13.6653359172, 13.6654469578, 13.6655579898, 13.6656690134, 13.6657800283, 13.6658910348, 13.6660020326, 13.666113022, 13.6662240028, 13.6663349751, 13.6664459388, 13.666556894, 13.6666678407, 13.6667787788, 13.6668897084, 13.6670006295, 13.6671115421, 13.6672224461, 13.6673333416, 13.6674442286, 13.667555107, 13.667665977, 13.6677768384, 13.6678876913, 13.6679985357, 13.6681093715, 13.6682201989, 13.6683310177, 13.6684418281, 13.6685526299, 13.6686634232, 13.668774208, 13.6688849843, 13.6689957521, 13.6691065113, 13.6692172621, 13.6693280044, 13.6694387382, 13.6695494635, 13.6696601802, 13.6697708885, 13.6698815883, 13.6699922796, 13.6701029624, 13.6702136367, 13.6703243026, 13.6704349599, 13.6705456088, 13.6706562491, 13.670766881, 13.6708775044, 13.6709881193, 13.6710987257, 13.6712093237, 13.6713199132, 13.6714304942, 13.6715410667, 13.6716516308, 13.6717621863, 13.6718727335, 13.6719832721, 13.6720938023, 13.672204324, 13.6723148372, 13.672425342, 13.6725358383, 13.6726463261, 13.6727568055, 13.6728672764, 13.6729777389, 13.6730881929, 13.6731986385, 13.6733090756, 13.6734195042, 13.6735299244, 13.6736403361, 13.6737507394, 13.6738611343, 13.6739715207, 13.6740818986, 13.6741922681, 13.6743026292, 13.6744129818, 13.674523326, 13.6746336618, 13.6747439891, 13.6748543079, 13.6749646184, 13.6750749204, 13.675185214, 13.6752954991, 13.6754057758, 13.6755160441, 13.6756263039, 13.6757365554, 13.6758467984, 13.6759570329, 13.6760672591, 13.6761774768, 13.6762876861, 13.676397887, 13.6765080795, 13.6766182636, 13.6767284392, 13.6768386065, 13.6769487653, 13.6770589157, 13.6771690577, 13.6772791913, 13.6773893165, 13.6774994333, 13.6776095417, 13.6777196416, 13.6778297332, 13.6779398164, 13.6780498912, 13.6781599575, 13.6782700155, 13.6783800651, 13.6784901063, 13.6786001391, 13.6787101635, 13.6788201795, 13.6789301872, 13.6790401864, 13.6791501772, 13.6792601597, 13.6793701338, 13.6794800995, 13.6795900568, 13.6797000058, 13.6798099463, 13.6799198785, 13.6800298023, 13.6801397178, 13.6802496248, 13.6803595235, 13.6804694138, 13.6805792958, 13.6806891694, 13.6807990346, 13.6809088914, 13.6810187399, 13.68112858, 13.6812384118, 13.6813482352, 13.6814580502, 13.6815678569, 13.6816776552, 13.6817874452, 13.6818972268, 13.682007, 13.682116765, 13.6822265215, 13.6823362697, 13.6824460096, 13.6825557411, 13.6826654642, 13.6827751791, 13.6828848855, 13.6829945837, 13.6831042735, 13.6832139549, 13.6833236281, 13.6834332928, 13.6835429493, 13.6836525974, 13.6837622372, 13.6838718686, 13.6839814917, 13.6840911065, 13.684200713, 13.6843103111, 13.6844199009, 13.6845294824, 13.6846390556, 13.6847486204, 13.6848581769, 13.6849677251, 13.685077265, 13.6851867966, 13.6852963198, 13.6854058348, 13.6855153414, 13.6856248397, 13.6857343297, 13.6858438114, 13.6859532848, 13.6860627499, 13.6861722067, 13.6862816551, 13.6863910953, 13.6865005272, 13.6866099508, 13.686719366, 13.686828773, 13.6869381717, 13.6870475621, 13.6871569441, 13.6872663179, 13.6873756834, 13.6874850407, 13.6875943896, 13.6877037302, 13.6878130626, 13.6879223866, 13.6880317024, 13.6881410099, 13.6882503091, 13.6883596001, 13.6884688827, 13.6885781571, 13.6886874232, 13.6887966811, 13.6889059306, 13.6890151719, 13.6891244049, 13.6892336297, 13.6893428461, 13.6894520543, 13.6895612543, 13.689670446, 13.6897796294, 13.6898888045, 13.6899979714, 13.6901071301, 13.6902162804, 13.6903254225, 13.6904345564, 13.690543682, 13.6906527993, 13.6907619084, 13.6908710093, 13.6909801019, 13.6910891862, 13.6911982623, 13.6913073302, 13.6914163898, 13.6915254412, 13.6916344843, 13.6917435192, 13.6918525458, 13.6919615642, 13.6920705744, 13.6921795763, 13.69228857, 13.6923975555, 13.6925065327, 13.6926155017, 13.6927244625, 13.692833415, 13.6929423593, 13.6930512954, 13.6931602233, 13.6932691429, 13.6933780543, 13.6934869575, 13.6935958525, 13.6937047392, 13.6938136178, 13.6939224881, 13.6940313502, 13.6941402041, 13.6942490498, 13.6943578872, 13.6944667165, 13.6945755375, 13.6946843504, 13.694793155, 13.6949019514, 13.6950107397, 13.6951195197, 13.6952282915, 13.6953370551, 13.6954458105, 13.6955545578, 13.6956632968, 13.6957720276, 13.6958807503, 13.6959894647, 13.696098171, 13.696206869, 13.6963155589, 13.6964242406, 13.6965329141, 13.6966415794, 13.6967502365, 13.6968588855, 13.6969675262, 13.6970761588, 13.6971847832, 13.6972933995, 13.6974020075, 13.6975106074, 13.6976191991, 13.6977277826, 13.697836358, 13.6979449251, 13.6980534842, 13.698162035, 13.6982705777, 13.6983791122, 13.6984876386, 13.6985961567, 13.6987046668, 13.6988131686, 13.6989216623, 13.6990301479, 13.6991386253, 13.6992470945, 13.6993555556, 13.6994640085, 13.6995724533, 13.6996808899, 13.6997893184, 13.6998977387, 13.7000061509, 13.7001145549, 13.7002229508, 13.7003313385, 13.7004397181, 13.7005480896, 13.7006564529, 13.7007648081, 13.7008731551, 13.700981494, 13.7010898248, 13.7011981475, 13.701306462, 13.7014147683, 13.7015230666, 13.7016313567, 13.7017396387, 13.7018479125, 13.7019561783, 13.7020644359, 13.7021726854, 13.7022809267, 13.70238916, 13.7024973851, 13.7026056021, 13.702713811, 13.7028220118, 13.7029302044, 13.703038389, 13.7031465654, 13.7032547337, 13.703362894, 13.7034710461, 13.7035791901, 13.703687326, 13.7037954538, 13.7039035734, 13.704011685, 13.7041197885, 13.7042278839, 13.7043359712, 13.7044440504, 13.7045521215, 13.7046601845, 13.7047682394, 13.7048762862, 13.7049843249, 13.7050923555, 13.7052003781, 13.7053083925, 13.7054163989, 13.7055243972, 13.7056323874, 13.7057403695, 13.7058483435, 13.7059563095, 13.7060642673, 13.7061722171, 13.7062801588, 13.7063880925, 13.7064960181, 13.7066039356, 13.706711845, 13.7068197463, 13.7069276396, 13.7070355248, 13.707143402, 13.7072512711, 13.7073591321, 13.707466985, 13.7075748299, 13.7076826668, 13.7077904955, 13.7078983162, 13.7080061289, 13.7081139335, 13.70822173, 13.7083295185, 13.708437299, 13.7085450714, 13.7086528357, 13.708760592, 13.7088683402, 13.7089760804, 13.7090838126, 13.7091915367, 13.7092992527, 13.7094069607, 13.7095146607, 13.7096223526, 13.7097300365, 13.7098377124, 13.7099453802, 13.71005304, 13.7101606918, 13.7102683355, 13.7103759712, 13.7104835989, 13.7105912185, 13.7106988301, 13.7108064337, 13.7109140293, 13.7110216168, 13.7111291963, 13.7112367678, 13.7113443313, 13.7114518867, 13.7115594341, 13.7116669736, 13.711774505, 13.7118820284, 13.7119895437, 13.7120970511, 13.7122045504, 13.7123120418, 13.7124195251, 13.7125270004, 13.7126344678, 13.7127419271, 13.7128493784, 13.7129568217, 13.713064257, 13.7131716843, 13.7132791036, 13.7133865149, 13.7134939183, 13.7136013136, 13.7137087009, 13.7138160802, 13.7139234516, 13.7140308149, 13.7141381703, 13.7142455177, 13.7143528571, 13.7144601885, 13.7145675119, 13.7146748273, 13.7147821348, 13.7148894342, 13.7149967257, 13.7151040092, 13.7152112848, 13.7153185523, 13.7154258119, 13.7155330635, 13.7156403072, 13.7157475428, 13.7158547705, 13.7159619903, 13.716069202, 13.7161764058, 13.7162836016, 13.7163907895, 13.7164979694, 13.7166051413, 13.7167123053, 13.7168194613, 13.7169266094, 13.7170337495, 13.7171408816, 13.7172480058, 13.7173551221, 13.7174622303, 13.7175693307, 13.7176764231, 13.7177835075, 13.717890584, 13.7179976525, 13.7181047131, 13.7182117658, 13.7183188105, 13.7184258472, 13.7185328761, 13.718639897, 13.7187469099, 13.7188539149, 13.718960912, 13.7190679011, 13.7191748823, 13.7192818556, 13.7193888209, 13.7194957784, 13.7196027278, 13.7197096694, 13.719816603, 13.7199235287, 13.7200304465, 13.7201373564, 13.7202442583, 13.7203511523, 13.7204580384, 13.7205649166, 13.7206717868, 13.7207786492, 13.7208855036, 13.7209923501, 13.7210991887, 13.7212060194, 13.7213128422, 13.721419657, 13.721526464, 13.7216332631, 13.7217400542, 13.7218468375, 13.7219536128, 13.7220603802, 13.7221671398, 13.7222738914, 13.7223806352, 13.722487371, 13.722594099, 13.722700819, 13.7228075312, 13.7229142354, 13.7230209318, 13.7231276203, 13.7232343009, 13.7233409736, 13.7234476384, 13.7235542954, 13.7236609444, 13.7237675856, 13.7238742189, 13.7239808443, 13.7240874618, 13.7241940714, 13.7243006732, 13.7244072671, 13.7245138531, 13.7246204313, 13.7247270015, 13.7248335639, 13.7249401185, 13.7250466651, 13.7251532039, 13.7252597348, 13.7253662579, 13.7254727731, 13.7255792804, 13.7256857799, 13.7257922715, 13.7258987552, 13.7260052311, 13.7261116992, 13.7262181593, 13.7263246117, 13.7264310561, 13.7265374927, 13.7266439215, 13.7267503424, 13.7268567555, 13.7269631607, 13.727069558, 13.7271759475, 13.7272823292, 13.727388703, 13.727495069, 13.7276014272, 13.7277077775, 13.7278141199, 13.7279204546, 13.7280267814, 13.7281331003, 13.7282394114, 13.7283457147, 13.7284520102, 13.7285582978, 13.7286645776, 13.7287708495, 13.7288771137, 13.72898337, 13.7290896185, 13.7291958591, 13.729302092, 13.729408317, 13.7295145342, 13.7296207436, 13.7297269451, 13.7298331388, 13.7299393248, 13.7300455029, 13.7301516732, 13.7302578357, 13.7303639903, 13.7304701372, 13.7305762762, 13.7306824075, 13.7307885309, 13.7308946465, 13.7310007544, 13.7311068544, 13.7312129466, 13.731319031, 13.7314251076, 13.7315311765, 13.7316372375, 13.7317432907, 13.7318493361, 13.7319553738, 13.7320614036, 13.7321674257, 13.7322734399, 13.7323794464, 13.7324854451, 13.732591436, 13.7326974191, 13.7328033944, 13.7329093619, 13.7330153217, 13.7331212737, 13.7332272179, 13.7333331543, 13.7334390829, 13.7335450038, 13.7336509168, 13.7337568221, 13.7338627197, 13.7339686094, 13.7340744914, 13.7341803656, 13.7342862321, 13.7343920908, 13.7344979417, 13.7346037848, 13.7347096202, 13.7348154478, 13.7349212677, 13.7350270798, 13.7351328841, 13.7352386807, 13.7353444695, 13.7354502506, 13.7355560239, 13.7356617895, 13.7357675473, 13.7358732973, 13.7359790396, 13.7360847742, 13.736190501, 13.73629622, 13.7364019313, 13.7365076349, 13.7366133307, 13.7367190188, 13.7368246991, 13.7369303717, 13.7370360365, 13.7371416937, 13.737247343, 13.7373529847, 13.7374586186, 13.7375642447, 13.7376698632, 13.7377754739, 13.7378810769, 13.7379866721, 13.7380922596, 13.7381978394, 13.7383034115, 13.7384089758, 13.7385145324, 13.7386200813, 13.7387256225, 13.7388311559, 13.7389366817, 13.7390421997, 13.73914771, 13.7392532126, 13.7393587074, 13.7394641946, 13.739569674, 13.7396751458, 13.7397806098, 13.7398860661, 13.7399915147, 13.7400969556, 13.7402023888, 13.7403078143, 13.740413232, 13.7405186421, 13.7406240445, 13.7407294392, 13.7408348261, 13.7409402054, 13.741045577, 13.7411509409, 13.7412562971, 13.7413616456, 13.7414669864, 13.7415723195, 13.7416776449, 13.7417829627, 13.7418882727, 13.7419935751, 13.7420988698, 13.7422041568, 13.7423094361, 13.7424147077, 13.7425199717, 13.7426252279, 13.7427304765, 13.7428357174, 13.7429409507, 13.7430461762, 13.7431513941, 13.7432566043, 13.7433618069, 13.7434670017, 13.7435721889, 13.7436773685, 13.7437825403, 13.7438877045, 13.7439928611, 13.7440980099, 13.7442031511, 13.7443082847, 13.7444134106, 13.7445185288, 13.7446236393, 13.7447287422, 13.7448338375, 13.7449389251, 13.745044005, 13.7451490773, 13.745254142, 13.7453591989, 13.7454642483, 13.74556929, 13.745674324, 13.7457793504, 13.7458843691, 13.7459893802, 13.7460943837, 13.7461993795, 13.7463043677, 13.7464093482, 13.7465143211, 13.7466192864, 13.746724244, 13.746829194, 13.7469341364, 13.7470390711, 13.7471439982, 13.7472489176, 13.7473538295, 13.7474587337, 13.7475636303, 13.7476685192, 13.7477734005, 13.7478782742, 13.7479831403, 13.7480879988, 13.7481928496, 13.7482976928, 13.7484025284, 13.7485073564, 13.7486121767, 13.7487169895, 13.7488217946, 13.7489265921, 13.749031382, 13.7491361643, 13.749240939, 13.7493457061, 13.7494504656, 13.7495552174, 13.7496599617, 13.7497646983, 13.7498694274, 13.7499741488, 13.7500788627, 13.7501835689, 13.7502882676, 13.7503929586, 13.7504976421, 13.750602318, 13.7507069862, 13.7508116469, 13.7509163, 13.7510209455, 13.7511255834, 13.7512302137, 13.7513348364, 13.7514394515, 13.7515440591, 13.7516486591, 13.7517532514, 13.7518578362, 13.7519624135, 13.7520669831, 13.7521715452, 13.7522760996, 13.7523806466, 13.7524851859, 13.7525897176, 13.7526942418, 13.7527987584, 13.7529032675, 13.7530077689, 13.7531122628, 13.7532167492, 13.7533212279, 13.7534256991, 13.7535301628, 13.7536346189, 13.7537390674, 13.7538435083, 13.7539479417, 13.7540523675, 13.7541567858, 13.7542611965, 13.7543655997, 13.7544699953, 13.7545743833, 13.7546787638, 13.7547831368, 13.7548875022, 13.75499186, 13.7550962103, 13.7552005531, 13.7553048883, 13.7554092159, 13.755513536, 13.7556178486, 13.7557221536, 13.7558264511, 13.7559307411, 13.7560350235, 13.7561392984, 13.7562435657, 13.7563478255, 13.7564520778, 13.7565563225, 13.7566605597, 13.7567647894, 13.7568690115, 13.7569732262, 13.7570774333, 13.7571816328, 13.7572858249, 13.7573900094, 13.7574941864, 13.7575983558, 13.7577025178, 13.7578066722, 13.7579108191, 13.7580149585, 13.7581190904, 13.7582232147, 13.7583273316, 13.7584314409, 13.7585355427, 13.758639637, 13.7587437238, 13.7588478031, 13.7589518749, 13.7590559392, 13.7591599959, 13.7592640452, 13.7593680869, 13.7594721212, 13.759576148, 13.7596801672, 13.759784179, 13.7598881832, 13.75999218, 13.7600961692, 13.760200151, 13.7603041253, 13.7604080921, 13.7605120514, 13.7606160032, 13.7607199475, 13.7608238843, 13.7609278136, 13.7610317355, 13.7611356498, 13.7612395567, 13.7613434561, 13.761447348, 13.7615512324, 13.7616551094, 13.7617589789, 13.7618628409, 13.7619666954, 13.7620705424, 13.762174382, 13.7622782141, 13.7623820387, 13.7624858559, 13.7625896655, 13.7626934678, 13.7627972625, 13.7629010498, 13.7630048296, 13.7631086019, 13.7632123668, 13.7633161242, 13.7634198742, 13.7635236167, 13.7636273517, 13.7637310793, 13.7638347994, 13.7639385121, 13.7640422173, 13.7641459151, 13.7642496054, 13.7643532882, 13.7644569636, 13.7645606316, 13.7646642921, 13.7647679451, 13.7648715907, 13.7649752289, 13.7650788596, 13.7651824829, 13.7652860987, 13.7653897071, 13.7654933081, 13.7655969016, 13.7657004877, 13.7658040663, 13.7659076375, 13.7660112013, 13.7661147576, 13.7662183065, 13.766321848, 13.766425382, 13.7665289086, 13.7666324278, 13.7667359395, 13.7668394439, 13.7669429408, 13.7670464302, 13.7671499123, 13.7672533869, 13.7673568541, 13.7674603139, 13.7675637663, 13.7676672112, 13.7677706488, 13.7678740789, 13.7679775016, 13.7680809169, 13.7681843248, 13.7682877252, 13.7683911183, 13.768494504, 13.7685978822, 13.768701253, 13.7688046165, 13.7689079725, 13.7690113211, 13.7691146623, 13.7692179961, 13.7693213225, 13.7694246416, 13.7695279532, 13.7696312574, 13.7697345542, 13.7698378436, 13.7699411257, 13.7700444003, 13.7701476675, 13.7702509274, 13.7703541799, 13.7704574249, 13.7705606626, 13.7706638929, 13.7707671158, 13.7708703314, 13.7709735395, 13.7710767403, 13.7711799336, 13.7712831196, 13.7713862983, 13.7714894695, 13.7715926334, 13.7716957899, 13.771798939, 13.7719020807, 13.7720052151, 13.7721083421, 13.7722114617, 13.7723145739, 13.7724176788, 13.7725207763, 13.7726238665, 13.7727269492, 13.7728300247, 13.7729330927, 13.7730361534, 13.7731392067, 13.7732422527, 13.7733452913, 13.7734483225, 13.7735513464, 13.773654363, 13.7737573721, 13.773860374, 13.7739633684, 13.7740663556, 13.7741693353, 13.7742723077, 13.7743752728, 13.7744782305, 13.7745811809, 13.7746841239, 13.7747870596, 13.7748899879, 13.7749929089, 13.7750958226, 13.7751987289, 13.7753016279, 13.7754045195, 13.7755074038, 13.7756102808, 13.7757131504, 13.7758160127, 13.7759188676, 13.7760217153, 13.7761245555, 13.7762273885, 13.7763302141, 13.7764330324, 13.7765358434, 13.7766386471, 13.7767414434, 13.7768442324, 13.7769470141, 13.7770497884, 13.7771525555, 13.7772553152, 13.7773580676, 13.7774608127, 13.7775635504, 13.7776662809, 13.777769004, 13.7778717198, 13.7779744283, 13.7780771295, 13.7781798234, 13.77828251, 13.7783851893, 13.7784878612, 13.7785905259, 13.7786931832, 13.7787958333, 13.778898476, 13.7790011114, 13.7791037396, 13.7792063604, 13.779308974, 13.7794115802, 13.7795141791, 13.7796167708, 13.7797193551, 13.7798219322, 13.779924502, 13.7800270644, 13.7801296196, 13.7802321675, 13.7803347081, 13.7804372414, 13.7805397675, 13.7806422862, 13.7807447977, 13.7808473019, 13.7809497987, 13.7810522884, 13.7811547707, 13.7812572457, 13.7813597135, 13.781462174, 13.7815646272, 13.7816670732, 13.7817695119, 13.7818719433, 13.7819743674, 13.7820767842, 13.7821791938, 13.7822815961, 13.7823839912, 13.782486379, 13.7825887595, 13.7826911327, 13.7827934987, 13.7828958575, 13.7829982089, 13.7831005531, 13.7832028901, 13.7833052197, 13.7834075422, 13.7835098573, 13.7836121653, 13.7837144659, 13.7838167593, 13.7839190455, 13.7840213244, 13.784123596, 13.7842258604, 13.7843281176, 13.7844303675, 13.7845326101, 13.7846348456, 13.7847370737, 13.7848392947, 13.7849415083, 13.7850437148, 13.785145914, 13.7852481059, 13.7853502907, 13.7854524682, 13.7855546384, 13.7856568014, 13.7857589572, 13.7858611058, 13.7859632471, 13.7860653812, 13.786167508, 13.7862696276, 13.78637174, 13.7864738452, 13.7865759432, 13.7866780339, 13.7867801174, 13.7868821937, 13.7869842627, 13.7870863246, 13.7871883792, 13.7872904266, 13.7873924667, 13.7874944997, 13.7875965254, 13.787698544, 13.7878005553, 13.7879025594, 13.7880045563, 13.788106546, 13.7882085284, 13.7883105037, 13.7884124718, 13.7885144326, 13.7886163863, 13.7887183327, 13.7888202719, 13.788922204, 13.7890241288, 13.7891260464, 13.7892279569, 13.7893298601, 13.7894317561, 13.789533645, 13.7896355266, 13.7897374011, 13.7898392683, 13.7899411284, 13.7900429813, 13.7901448269, 13.7902466654, 13.7903484968, 13.7904503209, 13.7905521378, 13.7906539476, 13.7907557501, 13.7908575455, 13.7909593337, 13.7910611147, 13.7911628886, 13.7912646552, 13.7913664147, 13.791468167, 13.7915699121, 13.7916716501, 13.7917733809, 13.7918751045, 13.7919768209, 13.7920785302, 13.7921802323, 13.7922819272, 13.7923836149, 13.7924852955, 13.7925869689, 13.7926886352, 13.7927902943, 13.7928919462, 13.792993591, 13.7930952286, 13.7931968591, 13.7932984824, 13.7934000985, 13.7935017075, 13.7936033093, 13.7937049039, 13.7938064915, 13.7939080718, 13.794009645, 13.7941112111, 13.79421277, 13.7943143217, 13.7944158664, 13.7945174038, 13.7946189341, 13.7947204573, 13.7948219733, 13.7949234822, 13.795024984, 13.7951264786, 13.795227966, 13.7953294464, 13.7954309195, 13.7955323856, 13.7956338445, 13.7957352963, 13.7958367409, 13.7959381784, 13.7960396088, 13.7961410321, 13.7962424482, 13.7963438572, 13.7964452591, 13.7965466538, 13.7966480414, 13.7967494219, 13.7968507953, 13.7969521615, 13.7970535206, 13.7971548726, 13.7972562175, 13.7973575553, 13.7974588859, 13.7975602094, 13.7976615259, 13.7977628352, 13.7978641373, 13.7979654324, 13.7980667204, 13.7981680012, 13.7982692749, 13.7983705416, 13.7984718011, 13.7985730535, 13.7986742988, 13.798775537, 13.7988767681, 13.7989779921, 13.799079209, 13.7991804188, 13.7992816215, 13.7993828171, 13.7994840056, 13.799585187, 13.7996863613, 13.7997875285, 13.7998886887, 13.7999898417, 13.8000909876, 13.8001921265, 13.8002932582, 13.8003943829, 13.8004955005, 13.800596611, 13.8006977144, 13.8007988107, 13.8008998999, 13.8010009821, 13.8011020571, 13.8012031251, 13.801304186, 13.8014052399, 13.8015062866, 13.8016073263, 13.8017083589, 13.8018093844, 13.8019104029, 13.8020114143, 13.8021124186, 13.8022134158, 13.802314406, 13.8024153891, 13.8025163651, 13.8026173341, 13.802718296, 13.8028192508, 13.8029201986, 13.8030211393, 13.8031220729, 13.8032229995, 13.803323919, 13.8034248315, 13.8035257369, 13.8036266353, 13.8037275266, 13.8038284108, 13.803929288, 13.8040301581, 13.8041310212, 13.8042318772, 13.8043327262, 13.8044335681, 13.804534403, 13.8046352308, 13.8047360516, 13.8048368654, 13.8049376721, 13.8050384717, 13.8051392643, 13.8052400499, 13.8053408284, 13.8054415999, 13.8055423644, 13.8056431218, 13.8057438722, 13.8058446155, 13.8059453518, 13.8060460811, 13.8061468033, 13.8062475185, 13.8063482267, 13.8064489279, 13.806549622, 13.8066503091, 13.8067509891, 13.8068516622, 13.8069523282, 13.8070529872, 13.8071536392, 13.8072542841, 13.8073549221, 13.807455553, 13.8075561769, 13.8076567937, 13.8077574036, 13.8078580064, 13.8079586023, 13.8080591911, 13.8081597729, 13.8082603477, 13.8083609154, 13.8084614762, 13.80856203, 13.8086625767, 13.8087631165, 13.8088636492, 13.8089641749, 13.8090646936, 13.8091652054, 13.8092657101, 13.8093662078, 13.8094666985, 13.8095671823, 13.809667659, 13.8097681287, 13.8098685914, 13.8099690472, 13.8100694959, 13.8101699377, 13.8102703724, 13.8103708002, 13.810471221, 13.8105716347, 13.8106720415, 13.8107724413, 13.8108728342, 13.81097322, 13.8110735989, 13.8111739707, 13.8112743356, 13.8113746935, 13.8114750444, 13.8115753884, 13.8116757253, 13.8117760553, 13.8118763783, 13.8119766944, 13.8120770034, 13.8121773055, 13.8122776006, 13.8123778888, 13.8124781699, 13.8125784441, 13.8126787114, 13.8127789716, 13.8128792249, 13.8129794713, 13.8130797106, 13.813179943, 13.8132801685, 13.8133803869, 13.8134805984, 13.813580803, 13.8136810006, 13.8137811912, 13.8138813749, 13.8139815516, 13.8140817214, 13.8141818842, 13.81428204, 13.814382189, 13.8144823309, 13.8145824659, 13.814682594, 13.8147827151, 13.8148828292, 13.8149829364, 13.8150830367, 13.81518313, 13.8152832164, 13.8153832958, 13.8154833683, 13.8155834339, 13.8156834925, 13.8157835441, 13.8158835889, 13.8159836267, 13.8160836575, 13.8161836814, 13.8162836984, 13.8163837085, 13.8164837116, 13.8165837078, 13.816683697, 13.8167836794, 13.8168836548, 13.8169836233, 13.8170835848, 13.8171835394, 13.8172834871, 13.8173834279, 13.8174833617, 13.8175832887, 13.8176832087, 13.8177831218, 13.8178830279, 13.8179829272, 13.8180828195, 13.8181827049, 13.8182825835, 13.818382455, 13.8184823197, 13.8185821775, 13.8186820283, 13.8187818723, 13.8188817093, 13.8189815394, 13.8190813626, 13.819181179, 13.8192809884, 13.8193807909, 13.8194805865, 13.8195803752, 13.8196801569, 13.8197799318, 13.8198796998, 13.8199794609, 13.8200792151, 13.8201789624, 13.8202787028, 13.8203784363, 13.8204781629, 13.8205778827, 13.8206775955, 13.8207773014, 13.8208770005, 13.8209766926, 13.8210763779, 13.8211760563, 13.8212757278, 13.8213753924, 13.8214750501, 13.8215747009, 13.8216743449, 13.821773982, 13.8218736122, 13.8219732355, 13.8220728519, 13.8221724615, 13.8222720642, 13.82237166, 13.8224712489, 13.822570831, 13.8226704061, 13.8227699744, 13.8228695359, 13.8229690905, 13.8230686382, 13.823168179, 13.8232677129, 13.82336724, 13.8234667603, 13.8235662736, 13.8236657801, 13.8237652798, 13.8238647726, 13.8239642585, 13.8240637375, 13.8241632097, 13.8242626751, 13.8243621336, 13.8244615852, 13.82456103, 13.8246604679, 13.824759899, 13.8248593232, 13.8249587405, 13.825058151, 13.8251575547, 13.8252569515, 13.8253563415, 13.8254557246, 13.8255551009, 13.8256544703, 13.8257538329, 13.8258531886, 13.8259525375, 13.8260518796, 13.8261512148, 13.8262505432, 13.8263498647, 13.8264491794, 13.8265484873, 13.8266477883, 13.8267470825, 13.8268463699, 13.8269456504, 13.8270449241, 13.827144191, 13.827243451, 13.8273427042, 13.8274419506, 13.8275411902, 13.8276404229, 13.8277396488, 13.8278388679, 13.8279380801, 13.8280372856, 13.8281364842, 13.828235676, 13.828334861, 13.8284340391, 13.8285332105, 13.828632375, 13.8287315327, 13.8288306836, 13.8289298277, 13.8290289649, 13.8291280954, 13.829227219, 13.8293263358, 13.8294254459, 13.8295245491, 13.8296236455, 13.8297227351, 13.8298218179, 13.8299208939, 13.8300199631, 13.8301190254, 13.830218081, 13.8303171298, 13.8304161718, 13.830515207, 13.8306142354, 13.830713257, 13.8308122717, 13.8309112797, 13.8310102809, 13.8311092754, 13.831208263, 13.8313072438, 13.8314062178, 13.8315051851, 13.8316041455, 13.8317030992, 13.8318020461, 13.8319009862, 13.8319999195, 13.832098846, 13.8321977658, 13.8322966787, 13.8323955849, 13.8324944843, 13.832593377, 13.8326922628, 13.8327911419, 13.8328900142, 13.8329888797, 13.8330877384, 13.8331865904, 13.8332854356, 13.833384274, 13.8334831057, 13.8335819305, 13.8336807487, 13.83377956, 13.8338783646, 13.8339771624, 13.8340759534, 13.8341747377, 13.8342735152, 13.834372286, 13.83447105, 13.8345698072, 13.8346685577, 13.8347673014, 13.8348660384, 13.8349647686, 13.835063492, 13.8351622087, 13.8352609186, 13.8353596218, 13.8354583182, 13.8355570079, 13.8356556908, 13.835754367, 13.8358530364, 13.8359516991, 13.8360503551, 13.8361490042, 13.8362476467, 13.8363462824, 13.8364449113, 13.8365435336, 13.836642149, 13.8367407578, 13.8368393597, 13.836937955, 13.8370365435, 13.8371351253, 13.8372337003, 13.8373322686, 13.8374308302, 13.8375293851, 13.8376279332, 13.8377264745, 13.8378250092, 13.8379235371, 13.8380220583, 13.8381205728, 13.8382190805, 13.8383175815, 13.8384160758, 13.8385145634, 13.8386130442, 13.8387115183, 13.8388099857, 13.8389084464, 13.8390069003, 13.8391053476, 13.8392037881, 13.8393022219, 13.839400649, 13.8394990694, 13.839597483, 13.83969589, 13.8397942902, 13.8398926837, 13.8399910705, 13.8400894506, 13.840187824, 13.8402861907, 13.8403845507, 13.840482904, 13.8405812506, 13.8406795904, 13.8407779236, 13.8408762501, 13.8409745698, 13.8410728829, 13.8411711892, 13.8412694889, 13.8413677819, 13.8414660682, 13.8415643477, 13.8416626206, 13.8417608868, 13.8418591463, 13.8419573991, 13.8420556452, 13.8421538846, 13.8422521174, 13.8423503434, 13.8424485628, 13.8425467754, 13.8426449814, 13.8427431807, 13.8428413733, 13.8429395593, 13.8430377385, 13.8431359111, 13.843234077, 13.8433322362, 13.8434303888, 13.8435285346, 13.8436266738, 13.8437248063, 13.8438229321, 13.8439210513, 13.8440191638, 13.8441172696, 13.8442153687, 13.8443134612, 13.844411547, 13.8445096261, 13.8446076986, 13.8447057644, 13.8448038235, 13.844901876, 13.8449999218, 13.845097961, 13.8451959935, 13.8452940193, 13.8453920384, 13.8454900509, 13.8455880568, 13.845686056, 13.8457840485, 13.8458820344, 13.8459800136, 13.8460779862, 13.8461759521, 13.8462739113, 13.846371864, 13.8464698099, 13.8465677492, 13.8466656819, 13.8467636079, 13.8468615273, 13.84695944, 13.8470573461, 13.8471552455, 13.8472531383, 13.8473510245, 13.847448904, 13.8475467769, 13.8476446431, 13.8477425027, 13.8478403556, 13.8479382019, 13.8480360416, 13.8481338747, 13.8482317011, 13.8483295209, 13.848427334, 13.8485251405, 13.8486229404, 13.8487207337, 13.8488185203, 13.8489163003, 13.8490140737, 13.8491118404, 13.8492096006, 13.8493073541, 13.8494051009, 13.8495028412, 13.8496005748, 13.8496983019, 13.8497960222, 13.849893736, 13.8499914432, 13.8500891437, 13.8501868376, 13.850284525, 13.8503822057, 13.8504798797, 13.8505775472, 13.8506752081, 13.8507728623, 13.85087051, 13.850968151, 13.8510657854, 13.8511634132, 13.8512610344, 13.851358649, 13.851456257, 13.8515538584, 13.8516514532, 13.8517490414, 13.851846623, 13.851944198, 13.8520417664, 13.8521393282, 13.8522368834, 13.852334432, 13.852431974, 13.8525295094, 13.8526270382, 13.8527245604, 13.8528220761, 13.8529195851, 13.8530170876, 13.8531145834, 13.8532120727, 13.8533095554, 13.8534070315, 13.853504501, 13.853601964, 13.8536994203, 13.8537968701, 13.8538943132, 13.8539917498, 13.8540891799, 13.8541866033, 13.8542840202, 13.8543814305, 13.8544788342, 13.8545762313, 13.8546736219, 13.8547710058, 13.8548683833, 13.8549657541, 13.8550631184, 13.8551604761, 13.8552578272, 13.8553551718, 13.8554525097, 13.8555498412, 13.855647166, 13.8557444843, 13.855841796, 13.8559391012, 13.8560363998, 13.8561336919, 13.8562309773, 13.8563282563, 13.8564255286, 13.8565227944, 13.8566200537, 13.8567173064, 13.8568145525, 13.8569117921, 13.8570090251, 13.8571062516, 13.8572034715, 13.8573006849, 13.8573978917, 13.857495092, 13.8575922857, 13.8576894729, 13.8577866535, 13.8578838276, 13.8579809951, 13.8580781561, 13.8581753106, 13.8582724585, 13.8583695999, 13.8584667347, 13.858563863, 13.8586609847, 13.8587580999, 13.8588552086, 13.8589523108, 13.8590494064, 13.8591464954, 13.859243578, 13.859340654, 13.8594377234, 13.8595347864, 13.8596318428, 13.8597288927, 13.859825936, 13.8599229729, 13.8600200032, 13.8601170269, 13.8602140442, 13.8603110549, 13.8604080591, 13.8605050568, 13.860602048, 13.8606990326, 13.8607960107, 13.8608929823, 13.8609899474, 13.861086906, 13.861183858, 13.8612808036, 13.8613777426, 13.8614746751, 13.8615716011, 13.8616685206, 13.8617654336, 13.8618623401, 13.86195924, 13.8620561335, 13.8621530204, 13.8622499009, 13.8623467748, 13.8624436422, 13.8625405031, 13.8626373576, 13.8627342055, 13.8628310469, 13.8629278818, 13.8630247102, 13.8631215322, 13.8632183476, 13.8633151565, 13.8634119589, 13.8635087549, 13.8636055443, 13.8637023273, 13.8637991037, 13.8638958737, 13.8639926372, 13.8640893942, 13.8641861447, 13.8642828887, 13.8643796262, 13.8644763572, 13.8645730818, 13.8646697998, 13.8647665114, 13.8648632165, 13.8649599151, 13.8650566073, 13.8651532929, 13.8652499721, 13.8653466448, 13.865443311, 13.8655399708, 13.8656366241, 13.8657332709, 13.8658299112, 13.865926545, 13.8660231724, 13.8661197933, 13.8662164077, 13.8663130157, 13.8664096172, 13.8665062122, 13.8666028008, 13.8666993829, 13.8667959585, 13.8668925277, 13.8669890904, 13.8670856466, 13.8671821964, 13.8672787397, 13.8673752766, 13.867471807, 13.8675683309, 13.8676648484, 13.8677613594, 13.867857864, 13.8679543621, 13.8680508537, 13.868147339, 13.8682438177, 13.86834029, 13.8684367559, 13.8685332153, 13.8686296682, 13.8687261147, 13.8688225548, 13.8689189884, 13.8690154156, 13.8691118363, 13.8692082506, 13.8693046584, 13.8694010598, 13.8694974547, 13.8695938432, 13.8696902253, 13.8697866009, 13.8698829701, 13.8699793329, 13.8700756892, 13.8701720391, 13.8702683826, 13.8703647196, 13.8704610502, 13.8705573743, 13.8706536921, 13.8707500033, 13.8708463082, 13.8709426066, 13.8710388987, 13.8711351842, 13.8712314634, 13.8713277361, 13.8714240024, 13.8715202623, 13.8716165158, 13.8717127628, 13.8718090035, 13.8719052377, 13.8720014654, 13.8720976868, 13.8721939018, 13.8722901103, 13.8723863124, 13.8724825081, 13.8725786974, 13.8726748803, 13.8727710567, 13.8728672268, 13.8729633904, 13.8730595477, 13.8731556985, 13.8732518429, 13.8733479809, 13.8734441125, 13.8735402377, 13.8736363565, 13.8737324689, 13.8738285749, 13.8739246745, 13.8740207677, 13.8741168544, 13.8742129348, 13.8743090088, 13.8744050764, 13.8745011376, 13.8745971924, 13.8746932408, 13.8747892828, 13.8748853184, 13.8749813477, 13.8750773705, 13.8751733869, 13.875269397, 13.8753654006, 13.8754613979, 13.8755573888, 13.8756533733, 13.8757493514, 13.8758453232, 13.8759412885, 13.8760372475, 13.8761332, 13.8762291462, 13.8763250861, 13.8764210195, 13.8765169466, 13.8766128672, 13.8767087816, 13.8768046895, 13.876900591, 13.8769964862, 13.877092375, 13.8771882575, 13.8772841335, 13.8773800032, 13.8774758665, 13.8775717235, 13.8776675741, 13.8777634183, 13.8778592561, 13.8779550876, 13.8780509127, 13.8781467315, 13.8782425439, 13.8783383499, 13.8784341496, 13.8785299429, 13.8786257298, 13.8787215104, 13.8788172846, 13.8789130525, 13.879008814, 13.8791045691, 13.8792003179, 13.8792960604, 13.8793917965, 13.8794875262, 13.8795832496, 13.8796789666, 13.8797746773, 13.8798703817, 13.8799660797, 13.8800617713, 13.8801574566, 13.8802531356, 13.8803488082, 13.8804444744, 13.8805401343, 13.8806357879, 13.8807314351, 13.880827076, 13.8809227106, 13.8810183388, 13.8811139607, 13.8812095762, 13.8813051854, 13.8814007883, 13.8814963848, 13.881591975, 13.8816875589, 13.8817831364, 13.8818787076, 13.8819742725, 13.882069831, 13.8821653832, 13.8822609291, 13.8823564687, 13.8824520019, 13.8825475288, 13.8826430494, 13.8827385636, 13.8828340715, 13.8829295732, 13.8830250684, 13.8831205574, 13.8832160401, 13.8833115164, 13.8834069864, 13.8835024501, 13.8835979075, 13.8836933585, 13.8837888033, 13.8838842417, 13.8839796738, 13.8840750996, 13.8841705191, 13.8842659323, 13.8843613392, 13.8844567397, 13.884552134, 13.8846475219, 13.8847429036, 13.8848382789, 13.8849336479, 13.8850290107, 13.8851243671, 13.8852197172, 13.885315061, 13.8854103986, 13.8855057298, 13.8856010547, 13.8856963733, 13.8857916857, 13.8858869917, 13.8859822914, 13.8860775849, 13.886172872, 13.8862681529, 13.8863634274, 13.8864586957, 13.8865539577, 13.8866492134, 13.8867444628, 13.8868397059, 13.8869349427, 13.8870301732, 13.8871253975, 13.8872206155, 13.8873158272, 13.8874110326, 13.8875062317, 13.8876014245, 13.8876966111, 13.8877917913, 13.8878869653, 13.8879821331, 13.8880772945, 13.8881724497, 13.8882675986, 13.8883627412, 13.8884578775, 13.8885530076, 13.8886481314, 13.8887432489, 13.8888383602, 13.8889334651, 13.8890285638, 13.8891236563, 13.8892187425, 13.8893138224, 13.889408896, 13.8895039634, 13.8895990245, 13.8896940794, 13.889789128, 13.8898841703, 13.8899792064, 13.8900742362, 13.8901692597, 13.890264277, 13.8903592881, 13.8904542928, 13.8905492914, 13.8906442836, 13.8907392696, 13.8908342494, 13.8909292229, 13.8910241901, 13.8911191512, 13.8912141059, 13.8913090544, 13.8914039967, 13.8914989327, 13.8915938624, 13.8916887859, 13.8917837032, 13.8918786142, 13.891973519, 13.8920684176, 13.8921633099, 13.8922581959, 13.8923530757, 13.8924479493, 13.8925428166, 13.8926376777, 13.8927325326, 13.8928273812, 13.8929222236, 13.8930170598, 13.8931118897, 13.8932067134, 13.8933015309, 13.8933963421, 13.8934911471, 13.8935859459, 13.8936807384, 13.8937755247, 13.8938703048, 13.8939650786, 13.8940598463, 13.8941546077, 13.8942493629, 13.8943441118, 13.8944388546, 13.8945335911, 13.8946283214, 13.8947230455, 13.8948177633, 13.8949124749, 13.8950071804, 13.8951018796, 13.8951965726, 13.8952912593, 13.8953859399, 13.8954806142, 13.8955752824, 13.8956699443, 13.8957646, 13.8958592495, 13.8959538928, 13.8960485299, 13.8961431608, 13.8962377854, 13.8963324039, 13.8964270162, 13.8965216222, 13.8966162221, 13.8967108157, 13.8968054032, 13.8968999844, 13.8969945595, 13.8970891283, 13.897183691, 13.8972782474, 13.8973727977, 13.8974673417, 13.8975618796, 13.8976564113, 13.8977509367, 13.897845456, 13.8979399691, 13.898034476, 13.8981289767, 13.8982234712, 13.8983179595, 13.8984124417, 13.8985069176, 13.8986013874, 13.898695851, 13.8987903084, 13.8988847596, 13.8989792046, 13.8990736435, 13.8991680761, 13.8992625026, 13.8993569229, 13.899451337, 13.899545745, 13.8996401468, 13.8997345424, 13.8998289318, 13.899923315, 13.9000176921, 13.900112063, 13.9002064277, 13.9003007862, 13.9003951386, 13.9004894848, 13.9005838249, 13.9006781587, 13.9007724864, 13.900866808, 13.9009611233, 13.9010554326, 13.9011497356, 13.9012440325, 13.9013383232, 13.9014326077, 13.9015268861, 13.9016211583, 13.9017154244, 13.9018096843, 13.9019039381, 13.9019981857, 13.9020924271, 13.9021866624, 13.9022808915, 13.9023751145, 13.9024693313, 13.902563542, 13.9026577465, 13.9027519449, 13.9028461371, 13.9029403231, 13.903034503, 13.9031286768, 13.9032228444, 13.9033170059, 13.9034111612, 13.9035053104, 13.9035994535, 13.9036935904, 13.9037877211, 13.9038818457, 13.9039759642, 13.9040700765, 13.9041641827, 13.9042582828, 13.9043523767, 13.9044464645, 13.9045405462, 13.9046346217, 13.904728691, 13.9048227543, 13.9049168114, 13.9050108624, 13.9051049072, 13.905198946, 13.9052929786, 13.905387005, 13.9054810254, 13.9055750396, 13.9056690476, 13.9057630496, 13.9058570454, 13.9059510351, 13.9060450187, 13.9061389962, 13.9062329675, 13.9063269328, 13.9064208919, 13.9065148448, 13.9066087917, 13.9067027325, 13.9067966671, 13.9068905956, 13.906984518, 13.9070784343, 13.9071723445, 13.9072662485, 13.9073601465, 13.9074540383, 13.907547924, 13.9076418037, 13.9077356772, 13.9078295446, 13.9079234059, 13.9080172611, 13.9081111101, 13.9082049531, 13.90829879, 13.9083926208, 13.9084864454, 13.908580264, 13.9086740765, 13.9087678828, 13.9088616831, 13.9089554773, 13.9090492654, 13.9091430473, 13.9092368232, 13.909330593, 13.9094243567, 13.9095181143, 13.9096118658, 13.9097056112, 13.9097993505, 13.9098930838, 13.9099868109, 13.910080532, 13.9101742469, 13.9102679558, 13.9103616586, 13.9104553553, 13.9105490459, 13.9106427305, 13.9107364089, 13.9108300813, 13.9109237476, 13.9110174078, 13.9111110619, 13.91120471, 13.9112983519, 13.9113919878, 13.9114856177, 13.9115792414, 13.9116728591, 13.9117664707, 13.9118600762, 13.9119536756, 13.912047269, 13.9121408563, 13.9122344375, 13.9123280127, 13.9124215818, 13.9125151448, 13.9126087018, 13.9127022526, 13.9127957975, 13.9128893362, 13.9129828689, 13.9130763956, 13.9131699161, 13.9132634306, 13.9133569391, 13.9134504415, 13.9135439378, 13.913637428, 13.9137309123, 13.9138243904, 13.9139178625, 13.9140113285, 13.9141047885, 13.9141982425, 13.9142916903, 13.9143851322, 13.9144785679, 13.9145719976, 13.9146654213, 13.9147588389, 13.9148522505, 13.914945656, 13.9150390555, 13.915132449, 13.9152258363, 13.9153192177, 13.915412593, 13.9155059622, 13.9155993254, 13.9156926826, 13.9157860337, 13.9158793788, 13.9159727179, 13.9160660509, 13.9161593779, 13.9162526988, 13.9163460137, 13.9164393226, 13.9165326254, 13.9166259222, 13.916719213, 13.9168124977, 13.9169057764, 13.9169990491, 13.9170923157, 13.9171855763, 13.9172788309, 13.9173720795, 13.917465322, 13.9175585585, 13.917651789, 13.9177450134, 13.9178382319, 13.9179314443, 13.9180246507, 13.918117851, 13.9182110454, 13.9183042337, 13.918397416, 13.9184905923, 13.9185837626, 13.9186769268, 13.9187700851, 13.9188632373, 13.9189563835, 13.9190495237, 13.9191426579, 13.919235786, 13.9193289082, 13.9194220243, 13.9195151345, 13.9196082386, 13.9197013367, 13.9197944288, 13.9198875149, 13.919980595, 13.9200736691, 13.9201667372, 13.9202597993, 13.9203528554, 13.9204459055, 13.9205389496, 13.9206319877, 13.9207250198, 13.9208180458, 13.9209110659, 13.92100408, 13.9210970881, 13.9211900902, 13.9212830863, 13.9213760764, 13.9214690605, 13.9215620387, 13.9216550108, 13.9217479769, 13.9218409371, 13.9219338912, 13.9220268394, 13.9221197816, 13.9222127178, 13.922305648, 13.9223985722, 13.9224914905, 13.9225844027, 13.922677309, 13.9227702093, 13.9228631036, 13.9229559919, 13.9230488743, 13.9231417506, 13.923234621, 13.9233274854, 13.9234203439, 13.9235131963, 13.9236060428, 13.9236988833, 13.9237917178, 13.9238845464, 13.923977369, 13.9240701856, 13.9241629962, 13.9242558009, 13.9243485996, 13.9244413923, 13.9245341791, 13.9246269599, 13.9247197347, 13.9248125036, 13.9249052665, 13.9249980234, 13.9250907744, 13.9251835194, 13.9252762585, 13.9253689916, 13.9254617187, 13.9255544399, 13.9256471551, 13.9257398643, 13.9258325676, 13.925925265, 13.9260179564, 13.9261106418, 13.9262033213, 13.9262959948, 13.9263886623, 13.926481324, 13.9265739796, 13.9266666293, 13.9267592731, 13.9268519109, 13.9269445428, 13.9270371687, 13.9271297887, 13.9272224027, 13.9273150108, 13.9274076129, 13.9275002091, 13.9275927994, 13.9276853837, 13.9277779621, 13.9278705345, 13.927963101, 13.9280556616, 13.9281482162, 13.9282407648, 13.9283333076, 13.9284258444, 13.9285183753, 13.9286109002, 13.9287034192, 13.9287959323, 13.9288884394, 13.9289809406, 13.9290734359, 13.9291659252, 13.9292584086, 13.9293508861, 13.9294433577, 13.9295358233, 13.929628283, 13.9297207368, 13.9298131847, 13.9299056266, 13.9299980626, 13.9300904927, 13.9301829169, 13.9302753351, 13.9303677474, 13.9304601538, 13.9305525543, 13.9306449489, 13.9307373376, 13.9308297203, 13.9309220971, 13.931014468, 13.931106833, 13.9311991921, 13.9312915453, 13.9313838925, 13.9314762339, 13.9315685693, 13.9316608989, 13.9317532225, 13.9318455402, 13.931937852, 13.9320301579, 13.9321224579, 13.932214752, 13.9323070402, 13.9323993224, 13.9324915988, 13.9325838693, 13.9326761339, 13.9327683925, 13.9328606453, 13.9329528922, 13.9330451332, 13.9331373683, 13.9332295974, 13.9333218207, 13.9334140381, 13.9335062496, 13.9335984552, 13.933690655, 13.9337828488, 13.9338750367, 13.9339672187, 13.9340593949, 13.9341515652, 13.9342437295, 13.934335888, 13.9344280406, 13.9345201873, 13.9346123282, 13.9347044631, 13.9347965922, 13.9348887154, 13.9349808327, 13.9350729441, 13.9351650496, 13.9352571493, 13.935349243, 13.9354413309, 13.935533413, 13.9356254891, 13.9357175594, 13.9358096238, 13.9359016823, 13.9359937349, 13.9360857817, 13.9361778226, 13.9362698576, 13.9363618868, 13.93645391, 13.9365459275, 13.936637939, 13.9367299447, 13.9368219445, 13.9369139384, 13.9370059265, 13.9370979087, 13.9371898851, 13.9372818556, 13.9373738202, 13.937465779, 13.9375577319, 13.9376496789, 13.9377416201, 13.9378335554, 13.9379254849, 13.9380174085, 13.9381093262, 13.9382012381, 13.9382931442, 13.9383850443, 13.9384769387, 13.9385688271, 13.9386607098, 13.9387525865, 13.9388444575, 13.9389363225, 13.9390281818, 13.9391200351, 13.9392118827, 13.9393037243, 13.9393955602, 13.9394873902, 13.9395792143, 13.9396710326, 13.9397628451, 13.9398546517, 13.9399464525, 13.9400382474, 13.9401300365, 13.9402218197, 13.9403135971, 13.9404053687, 13.9404971345, 13.9405888944, 13.9406806484, 13.9407723967, 13.940864139, 13.9409558756, 13.9410476063, 13.9411393312, 13.9412310503, 13.9413227635, 13.9414144709, 13.9415061725, 13.9415978683, 13.9416895582, 13.9417812423, 13.9418729205, 13.941964593, 13.9420562596, 13.9421479204, 13.9422395754, 13.9423312245, 13.9424228678, 13.9425145053, 13.942606137, 13.9426977629, 13.9427893829, 13.9428809972, 13.9429726056, 13.9430642082, 13.9431558049, 13.9432473959, 13.943338981, 13.9434305604, 13.9435221339, 13.9436137016, 13.9437052635, 13.9437968196, 13.9438883699, 13.9439799143, 13.944071453, 13.9441629859, 13.9442545129, 13.9443460341, 13.9444375496, 13.9445290592, 13.944620563, 13.944712061, 13.9448035533, 13.9448950397, 13.9449865203, 13.9450779951, 13.9451694641, 13.9452609273, 13.9453523848, 13.9454438364, 13.9455352822, 13.9456267222, 13.9457181565, 13.9458095849, 13.9459010075, 13.9459924244, 13.9460838355, 13.9461752407, 13.9462666402, 13.9463580339, 13.9464494218, 13.9465408039, 13.9466321802, 13.9467235507, 13.9468149155, 13.9469062745, 13.9469976276, 13.947088975, 13.9471803166, 13.9472716525, 13.9473629825, 13.9474543068, 13.9475456252, 13.947636938, 13.9477282449, 13.947819546, 13.9479108414, 13.948002131, 13.9480934148, 13.9481846928, 13.9482759651, 13.9483672316, 13.9484584923, 13.9485497472, 13.9486409964, 13.9487322398, 13.9488234775, 13.9489147093, 13.9490059354, 13.9490971557, 13.9491883703, 13.9492795791, 13.9493707821, 13.9494619794, 13.9495531709, 13.9496443566, 13.9497355366, 13.9498267108, 13.9499178792, 13.9500090419, 13.9501001988, 13.95019135, 13.9502824954, 13.950373635, 13.9504647689, 13.950555897, 13.9506470194, 13.950738136, 13.9508292469, 13.950920352, 13.9510114514, 13.951102545, 13.9511936329, 13.951284715, 13.9513757913, 13.9514668619, 13.9515579268, 13.9516489859, 13.9517400393, 13.9518310869, 13.9519221288, 13.9520131649, 13.9521041953, 13.9521952199, 13.9522862388, 13.952377252, 13.9524682594, 13.9525592611, 13.952650257, 13.9527412472, 13.9528322316, 13.9529232104, 13.9530141833, 13.9531051506, 13.9531961121, 13.9532870679, 13.9533780179, 13.9534689622, 13.9535599008, 13.9536508336, 13.9537417608, 13.9538326821, 13.9539235978, 13.9540145077, 13.9541054119, 13.9541963104, 13.9542872031, 13.9543780901, 13.9544689714, 13.954559847, 13.9546507168, 13.954741581, 13.9548324394, 13.954923292, 13.955014139, 13.9551049802, 13.9551958157, 13.9552866455, 13.9553774696, 13.955468288, 13.9555591006, 13.9556499075, 13.9557407087, 13.9558315042, 13.955922294, 13.9560130781, 13.9561038564, 13.9561946291, 13.956285396, 13.9563761572, 13.9564669128, 13.9565576626, 13.9566484067, 13.9567391451, 13.9568298777, 13.9569206047, 13.957011326, 13.9571020416, 13.9571927514, 13.9572834556, 13.957374154, 13.9574648468, 13.9575555339, 13.9576462152, 13.9577368909, 13.9578275608, 13.9579182251, 13.9580088837, 13.9580995365, 13.9581901837, 13.9582808252, 13.9583714609, 13.958462091, 13.9585527154, 13.9586433341, 13.9587339471, 13.9588245545, 13.9589151561, 13.959005752, 13.9590963423, 13.9591869268, 13.9592775057, 13.9593680789, 13.9594586464, 13.9595492082, 13.9596397644, 13.9597303148, 13.9598208596, 13.9599113987, 13.9600019321, 13.9600924598, 13.9601829818, 13.9602734982, 13.9603640089, 13.9604545139, 13.9605450132, 13.9606355069, 13.9607259948, 13.9608164771, 13.9609069538, 13.9609974247, 13.96108789, 13.9611783496, 13.9612688035, 13.9613592518, 13.9614496944, 13.9615401313, 13.9616305626, 13.9617209882, 13.9618114081, 13.9619018223, 13.9619922309, 13.9620826339, 13.9621730311, 13.9622634227, 13.9623538086, 13.9624441889, 13.9625345635, 13.9626249325, 13.9627152957, 13.9628056534, 13.9628960053, 13.9629863516, 13.9630766923, 13.9631670273, 13.9632573566, 13.9633476803, 13.9634379983, 13.9635283107, 13.9636186174, 13.9637089185, 13.9637992139, 13.9638895037, 13.9639797878, 13.9640700663, 13.9641603391, 13.9642506063, 13.9643408678, 13.9644311237, 13.9645213739, 13.9646116185, 13.9647018574, 13.9647920907, 13.9648823184, 13.9649725404, 13.9650627567, 13.9651529675, 13.9652431726, 13.965333372, 13.9654235658, 13.965513754, 13.9656039365, 13.9656941134, 13.9657842847, 13.9658744503, 13.9659646103, 13.9660547646, 13.9661449133, 13.9662350564, 13.9663251939, 13.9664153257, 13.9665054519, 13.9665955725, 13.9666856874, 13.9667757967, 13.9668659004, 13.9669559984, 13.9670460909, 13.9671361777, 13.9672262588, 13.9673163344, 13.9674064043, 13.9674964686, 13.9675865273, 13.9676765804, 13.9677666278, 13.9678566696, 13.9679467058, 13.9680367364, 13.9681267614, 13.9682167807, 13.9683067944, 13.9683968025, 13.968486805, 13.9685768019, 13.9686667932, 13.9687567789, 13.9688467589, 13.9689367333, 13.9690267022, 13.9691166654, 13.969206623, 13.969296575, 13.9693865213, 13.9694764621, 13.9695663973, 13.9696563269, 13.9697462508, 13.9698361692, 13.9699260819, 13.9700159891, 13.9701058906, 13.9701957866, 13.9702856769, 13.9703755616, 13.9704654408, 13.9705553143, 13.9706451823, 13.9707350446, 13.9708249014, 13.9709147525, 13.9710045981, 13.971094438, 13.9711842724, 13.9712741012, 13.9713639244, 13.971453742, 13.971543554, 13.9716333604, 13.9717231612, 13.9718129564, 13.971902746, 13.9719925301, 13.9720823086, 13.9721720814, 13.9722618487, 13.9723516104, 13.9724413666, 13.9725311171, 13.9726208621, 13.9727106014, 13.9728003352, 13.9728900634, 13.9729797861, 13.9730695031, 13.9731592146, 13.9732489205, 13.9733386208, 13.9734283155, 13.9735180047, 13.9736076883, 13.9736973663, 13.9737870387, 13.9738767056, 13.9739663669, 13.9740560226, 13.9741456728, 13.9742353174, 13.9743249564, 13.9744145898, 13.9745042177, 13.97459384, 13.9746834567, 13.9747730679, 13.9748626735, 13.9749522735, 13.975041868, 13.9751314569, 13.9752210403, 13.9753106181, 13.9754001903, 13.9754897569, 13.975579318, 13.9756688736, 13.9757584236, 13.975847968, 13.9759375069, 13.9760270402, 13.9761165679, 13.9762060901, 13.9762956068, 13.9763851179, 13.9764746234, 13.9765641234, 13.9766536179, 13.9767431067, 13.9768325901, 13.9769220679, 13.9770115401, 13.9771010068, 13.9771904679, 13.9772799235, 13.9773693735, 13.977458818, 13.977548257, 13.9776376904, 13.9777271183, 13.9778165406, 13.9779059574, 13.9779953686, 13.9780847743, 13.9781741745, 13.9782635691, 13.9783529582, 13.9784423417, 13.9785317197, 13.9786210922, 13.9787104591, 13.9787998205, 13.9788891764, 13.9789785267, 13.9790678715, 13.9791572107, 13.9792465445, 13.9793358727, 13.9794251953, 13.9795145125, 13.9796038241, 13.9796931302, 13.9797824307, 13.9798717257, 13.9799610152, 13.9800502992, 13.9801395776, 13.9802288506, 13.980318118, 13.9804073798, 13.9804966362, 13.980585887, 13.9806751323, 13.9807643721, 13.9808536064, 13.9809428351, 13.9810320584, 13.9811212761, 13.9812104883, 13.981299695, 13.9813888961, 13.9814780918, 13.9815672819, 13.9816564665, 13.9817456456, 13.9818348192, 13.9819239873, 13.9820131499, 13.982102307, 13.9821914585, 13.9822806046, 13.9823697451, 13.9824588801, 13.9825480097, 13.9826371337, 13.9827262522, 13.9828153652, 13.9829044727, 13.9829935747, 13.9830826712, 13.9831717622, 13.9832608477, 13.9833499277, 13.9834390022, 13.9835280712, 13.9836171347, 13.9837061927, 13.9837952452, 13.9838842922, 13.9839733337, 13.9840623697, 13.9841514002, 13.9842404252, 13.9843294448, 13.9844184588, 13.9845074673, 13.9845964704, 13.984685468, 13.98477446, 13.9848634466, 13.9849524277, 13.9850414033, 13.9851303735, 13.9852193381, 13.9853082973, 13.9853972509, 13.9854861991, 13.9855751418, 13.985664079, 13.9857530108, 13.985841937, 13.9859308578, 13.9860197731, 13.9861086829, 13.9861975872, 13.9862864861, 13.9863753794, 13.9864642673, 13.9865531498, 13.9866420267, 13.9867308982, 13.9868197642, 13.9869086247, 13.9869974797, 13.9870863293, 13.9871751734, 13.9872640121, 13.9873528452, 13.9874416729, 13.9875304952, 13.9876193119, 13.9877081232, 13.987796929, 13.9878857294, 13.9879745243, 13.9880633137, 13.9881520977, 13.9882408762, 13.9883296492, 13.9884184168, 13.9885071789, 13.9885959356, 13.9886846868, 13.9887734325, 13.9888621728, 13.9889509076, 13.989039637, 13.9891283609, 13.9892170793, 13.9893057923, 13.9893944998, 13.9894832019, 13.9895718986, 13.9896605897, 13.9897492755, 13.9898379557, 13.9899266306, 13.9900152999, 13.9901039639, 13.9901926223, 13.9902812754, 13.9903699229, 13.9904585651, 13.9905472018, 13.990635833, 13.9907244588, 13.9908130792, 13.9909016941, 13.9909903035, 13.9910789076, 13.9911675061, 13.9912560993, 13.991344687, 13.9914332693, 13.9915218461, 13.9916104175, 13.9916989834, 13.9917875439, 13.991876099, 13.9919646486, 13.9920531929, 13.9921417316, 13.992230265, 13.9923187929, 13.9924073153, 13.9924958324, 13.992584344, 13.9926728502, 13.9927613509, 13.9928498463, 13.9929383362, 13.9930268206, 13.9931152997, 13.9932037733, 13.9932922415, 13.9933807043, 13.9934691616, 13.9935576135, 13.99364606, 13.9937345011, 13.9938229367, 13.993911367, 13.9939997918, 13.9940882112, 13.9941766252, 13.9942650337, 13.9943534369, 13.9944418346, 13.9945302269, 13.9946186138, 13.9947069953, 13.9947953713, 13.994883742, 13.9949721072, 13.995060467, 13.9951488214, 13.9952371704, 13.995325514, 13.9954138522, 13.995502185, 13.9955905124, 13.9956788343, 13.9957671509, 13.995855462, 13.9959437678, 13.9960320681, 13.996120363, 13.9962086526, 13.9962969367, 13.9963852154, 13.9964734887, 13.9965617567, 13.9966500192, 13.9967382763, 13.996826528, 13.9969147743, 13.9970030153, 13.9970912508, 13.9971794809, 13.9972677057, 13.997355925, 13.997444139, 13.9975323475, 13.9976205507, 13.9977087485, 13.9977969408, 13.9978851278, 13.9979733094, 13.9980614856, 13.9981496565, 13.9982378219, 13.9983259819, 13.9984141366, 13.9985022859, 13.9985904297, 13.9986785682, 13.9987667014, 13.9988548291, 13.9989429514, 13.9990310684, 13.99911918, 13.9992072862, 13.999295387, 13.9993834825, 13.9994715725, 13.9995596572, 13.9996477365, 13.9997358105, 13.999823879, 13.9999119422, 14.0, 14.0000880524, 14.0001760995, 14.0002641412, 14.0003521775, 14.0004402084, 14.000528234, 14.0006162542, 14.000704269, 14.0007922785, 14.0008802826, 14.0009682813, 14.0010562746, 14.0011442626, 14.0012322452, 14.0013202225, 14.0014081944, 14.0014961609, 14.0015841221, 14.0016720779, 14.0017600283, 14.0018479734, 14.0019359131, 14.0020238475, 14.0021117765, 14.0021997001, 14.0022876184, 14.0023755313, 14.0024634389, 14.0025513411, 14.002639238, 14.0027271295, 14.0028150156, 14.0029028964, 14.0029907718, 14.0030786419, 14.0031665067, 14.0032543661, 14.0033422201, 14.0034300688, 14.0035179121, 14.0036057501, 14.0036935827, 14.00378141, 14.003869232, 14.0039570486, 14.0040448598, 14.0041326657, 14.0042204663, 14.0043082615, 14.0043960514, 14.004483836, 14.0045716152, 14.004659389, 14.0047471575, 14.0048349207, 14.0049226786, 14.0050104311, 14.0050981782, 14.0051859201, 14.0052736566, 14.0053613877, 14.0054491135, 14.005536834, 14.0056245492, 14.005712259, 14.0057999635, 14.0058876627, 14.0059753565, 14.006063045, 14.0061507282, 14.006238406, 14.0063260785, 14.0064137457, 14.0065014076, 14.0065890641, 14.0066767153, 14.0067643612, 14.0068520017, 14.006939637, 14.0070272669, 14.0071148915, 14.0072025107, 14.0072901247, 14.0073777333, 14.0074653366, 14.0075529346, 14.0076405273, 14.0077281146, 14.0078156967, 14.0079032734, 14.0079908448, 14.0080784109, 14.0081659716, 14.0082535271, 14.0083410772, 14.0084286221, 14.0085161616, 14.0086036958, 14.0086912247, 14.0087787483, 14.0088662666, 14.0089537795, 14.0090412872, 14.0091287895, 14.0092162866, 14.0093037783, 14.0093912648, 14.0094787459, 14.0095662217, 14.0096536922, 14.0097411575, 14.0098286174, 14.009916072, 14.0100035213, 14.0100909653, 14.010178404, 14.0102658374, 14.0103532655, 14.0104406884, 14.0105281059, 14.0106155181, 14.010702925, 14.0107903267, 14.010877723, 14.0109651141, 14.0110524998, 14.0111398803, 14.0112272554, 14.0113146253, 14.0114019899, 14.0114893492, 14.0115767032, 14.0116640519, 14.0117513953, 14.0118387335, 14.0119260663, 14.0120133939, 14.0121007162, 14.0121880331, 14.0122753449, 14.0123626513, 14.0124499524, 14.0125372483, 14.0126245389, 14.0127118242, 14.0127991042, 14.0128863789, 14.0129736484, 14.0130609126, 14.0131481715, 14.0132354251, 14.0133226734, 14.0134099165, 14.0134971543, 14.0135843868, 14.0136716141, 14.013758836, 14.0138460527, 14.0139332642, 14.0140204703, 14.0141076712, 14.0141948668, 14.0142820572, 14.0143692422, 14.014456422, 14.0145435966, 14.0146307659, 14.0147179299, 14.0148050886, 14.0148922421, 14.0149793903, 14.0150665332, 14.0151536709, 14.0152408033, 14.0153279305, 14.0154150524, 14.015502169, 14.0155892804, 14.0156763865, 14.0157634874, 14.015850583, 14.0159376733, 14.0160247584, 14.0161118382, 14.0161989128, 14.0162859821, 14.0163730462, 14.016460105, 14.0165471585, 14.0166342068, 14.0167212499, 14.0168082877, 14.0168953202, 14.0169823475, 14.0170693696, 14.0171563864, 14.0172433979, 14.0173304042, 14.0174174053, 14.0175044011, 14.0175913917, 14.017678377, 14.0177653571, 14.0178523319, 14.0179393015, 14.0180262658, 14.0181132249, 14.0182001788, 14.0182871274, 14.0183740708, 14.018461009, 14.0185479419, 14.0186348695, 14.018721792, 14.0188087092, 14.0188956211, 14.0189825278, 14.0190694293, 14.0191563256, 14.0192432166, 14.0193301024, 14.0194169829, 14.0195038583, 14.0195907284, 14.0196775932, 14.0197644528, 14.0198513073, 14.0199381564, 14.0200250004, 14.0201118391, 14.0201986726, 14.0202855008, 14.0203723239, 14.0204591417, 14.0205459543, 14.0206327617, 14.0207195638, 14.0208063607, 14.0208931524, 14.0209799389, 14.0210667202, 14.0211534962, 14.021240267, 14.0213270326, 14.021413793, 14.0215005482, 14.0215872981, 14.0216740429, 14.0217607824, 14.0218475167, 14.0219342458, 14.0220209696, 14.0221076883, 14.0221944018, 14.02228111, 14.022367813, 14.0224545108, 14.0225412035, 14.0226278909, 14.022714573, 14.02280125, 14.0228879218, 14.0229745884, 14.0230612497, 14.0231479059, 14.0232345568, 14.0233212026, 14.0234078431, 14.0234944785, 14.0235811086, 14.0236677336, 14.0237543533, 14.0238409678, 14.0239275772, 14.0240141813, 14.0241007803, 14.024187374, 14.0242739625, 14.0243605459, 14.024447124, 14.024533697, 14.0246202648, 14.0247068273, 14.0247933847, 14.0248799369, 14.0249664839, 14.0250530257, 14.0251395623, 14.0252260937, 14.0253126199, 14.025399141, 14.0254856568, 14.0255721675, 14.0256586729, 14.0257451732, 14.0258316683, 14.0259181582, 14.026004643, 14.0260911225, 14.0261775969, 14.0262640661, 14.0263505301, 14.0264369889, 14.0265234425, 14.026609891, 14.0266963342, 14.0267827723, 14.0268692053, 14.026955633, 14.0270420556, 14.027128473, 14.0272148852, 14.0273012922, 14.0273876941, 14.0274740907, 14.0275604822, 14.0276468686, 14.0277332498, 14.0278196257, 14.0279059966, 14.0279923622, 14.0280787227, 14.028165078, 14.0282514282, 14.0283377731, 14.0284241129, 14.0285104476, 14.0285967771, 14.0286831014, 14.0287694205, 14.0288557345, 14.0289420433, 14.029028347, 14.0291146455, 14.0292009388, 14.029287227, 14.02937351, 14.0294597878, 14.0295460605, 14.029632328, 14.0297185904, 14.0298048476, 14.0298910997, 14.0299773466, 14.0300635883, 14.0301498249, 14.0302360564, 14.0303222826, 14.0304085038, 14.0304947197, 14.0305809306, 14.0306671362, 14.0307533368, 14.0308395321, 14.0309257224, 14.0310119074, 14.0310980874, 14.0311842621, 14.0312704318, 14.0313565963, 14.0314427556, 14.0315289098, 14.0316150588, 14.0317012027, 14.0317873415, 14.0318734751, 14.0319596036, 14.0320457269, 14.0321318451, 14.0322179582, 14.0323040661, 14.0323901689, 14.0324762665, 14.032562359, 14.0326484464, 14.0327345286, 14.0328206057, 14.0329066776, 14.0329927444, 14.0330788061, 14.0331648627, 14.0332509141, 14.0333369604, 14.0334230015, 14.0335090376, 14.0335950685, 14.0336810942, 14.0337671148, 14.0338531304, 14.0339391407, 14.034025146, 14.0341111461, 14.0341971411, 14.034283131, 14.0343691157, 14.0344550953, 14.0345410698, 14.0346270392, 14.0347130034, 14.0347989626, 14.0348849166, 14.0349708655, 14.0350568092, 14.0351427479, 14.0352286814, 14.0353146098, 14.0354005331, 14.0354864513, 14.0355723644, 14.0356582723, 14.0357441751, 14.0358300728, 14.0359159654, 14.0360018529, 14.0360877353, 14.0361736126, 14.0362594847, 14.0363453517, 14.0364312137, 14.0365170705, 14.0366029222, 14.0366887688, 14.0367746103, 14.0368604467, 14.036946278, 14.0370321041, 14.0371179252, 14.0372037412, 14.037289552, 14.0373753578, 14.0374611584, 14.037546954, 14.0376327444, 14.0377185298, 14.03780431, 14.0378900851, 14.0379758552, 14.0380616201, 14.03814738, 14.0382331347, 14.0383188844, 14.0384046289, 14.0384903684, 14.0385761028, 14.038661832, 14.0387475562, 14.0388332753, 14.0389189893, 14.0390046982, 14.039090402, 14.0391761007, 14.0392617943, 14.0393474829, 14.0394331663, 14.0395188447, 14.039604518, 14.0396901861, 14.0397758492, 14.0398615072, 14.0399471602, 14.040032808, 14.0401184508, 14.0402040884, 14.040289721, 14.0403753485, 14.040460971, 14.0405465883, 14.0406322006, 14.0407178077, 14.0408034098, 14.0408890069, 14.0409745988, 14.0410601857, 14.0411457675, 14.0412313442, 14.0413169158, 14.0414024824, 14.0414880439, 14.0415736003, 14.0416591516, 14.0417446979, 14.0418302391, 14.0419157752, 14.0420013063, 14.0420868323, 14.0421723532, 14.042257869, 14.0423433798, 14.0424288855, 14.0425143861, 14.0425998817, 14.0426853722, 14.0427708577, 14.042856338, 14.0429418133, 14.0430272836, 14.0431127488, 14.0431982089, 14.043283664, 14.043369114, 14.0434545589, 14.0435399988, 14.0436254336, 14.0437108633, 14.043796288, 14.0438817077, 14.0439671223, 14.0440525318, 14.0441379363, 14.0442233357, 14.0443087301, 14.0443941194, 14.0444795036, 14.0445648828, 14.044650257, 14.0447356261, 14.0448209901, 14.0449063491, 14.044991703, 14.0450770519, 14.0451623958, 14.0452477346, 14.0453330683, 14.045418397, 14.0455037207, 14.0455890393, 14.0456743529, 14.0457596614, 14.0458449649, 14.0459302633, 14.0460155567, 14.046100845, 14.0461861283, 14.0462714066, 14.0463566798, 14.046441948, 14.0465272112, 14.0466124693, 14.0466977223, 14.0467829704, 14.0468682133, 14.0469534513, 14.0470386842, 14.0471239121, 14.047209135, 14.0472943528, 14.0473795656, 14.0474647733, 14.047549976, 14.0476351737, 14.0477203664, 14.047805554, 14.0478907366, 14.0479759142, 14.0480610867, 14.0481462542, 14.0482314167, 14.0483165742, 14.0484017266, 14.048486874, 14.0485720164, 14.0486571537, 14.0487422861, 14.0488274134, 14.0489125356, 14.0489976529, 14.0490827652, 14.0491678724, 14.0492529746, 14.0493380718, 14.0494231639, 14.0495082511, 14.0495933332, 14.0496784103, 14.0497634824, 14.0498485495, 14.0499336115, 14.0500186686, 14.0501037206, 14.0501887676, 14.0502738096, 14.0503588466, 14.0504438786, 14.0505289055, 14.0506139275, 14.0506989444, 14.0507839564, 14.0508689633, 14.0509539652, 14.0510389621, 14.051123954, 14.0512089409, 14.0512939228, 14.0513788997, 14.0514638716, 14.0515488384, 14.0516338003, 14.0517187572, 14.051803709, 14.0518886559, 14.0519735978, 14.0520585346, 14.0521434665, 14.0522283933, 14.0523133152, 14.0523982321, 14.0524831439, 14.0525680508, 14.0526529527, 14.0527378495, 14.0528227414, 14.0529076283, 14.0529925102, 14.0530773871, 14.053162259, 14.0532471259, 14.0533319878, 14.0534168448, 14.0535016967, 14.0535865436, 14.0536713856, 14.0537562226, 14.0538410545, 14.0539258815, 14.0540107035, 14.0540955206, 14.0541803326, 14.0542651396, 14.0543499417, 14.0544347388, 14.0545195309, 14.054604318, 14.0546891001, 14.0547738772, 14.0548586494, 14.0549434166, 14.0550281788, 14.055112936, 14.0551976882, 14.0552824355, 14.0553671778, 14.0554519151, 14.0555366474, 14.0556213748, 14.0557060972, 14.0557908146, 14.055875527, 14.0559602345, 14.0560449369, 14.0561296344, 14.056214327, 14.0562990146, 14.0563836971, 14.0564683748, 14.0565530474, 14.0566377151, 14.0567223778, 14.0568070356, 14.0568916884, 14.0569763362, 14.057060979, 14.0571456169, 14.0572302498, 14.0573148778, 14.0573995008, 14.0574841188, 14.0575687319, 14.05765334, 14.0577379431, 14.0578225413, 14.0579071345, 14.0579917228, 14.0580763061, 14.0581608844, 14.0582454578, 14.0583300262, 14.0584145897, 14.0584991482, 14.0585837017, 14.0586682503, 14.058752794, 14.0588373327, 14.0589218664, 14.0590063952, 14.059090919, 14.0591754379, 14.0592599518, 14.0593444608, 14.0594289649, 14.0595134639, 14.0595979581, 14.0596824472, 14.0597669315, 14.0598514108, 14.0599358851, 14.0600203545, 14.060104819, 14.0601892785, 14.060273733, 14.0603581826, 14.0604426273, 14.060527067, 14.0606115018, 14.0606959317, 14.0607803566, 14.0608647766, 14.0609491916, 14.0610336017, 14.0611180068, 14.061202407, 14.0612868023, 14.0613711927, 14.0614555781, 14.0615399585, 14.0616243341, 14.0617087047, 14.0617930703, 14.0618774311, 14.0619617869, 14.0620461377, 14.0621304837, 14.0622148247, 14.0622991607, 14.0623834919, 14.0624678181, 14.0625521394, 14.0626364557, 14.0627207672, 14.0628050737, 14.0628893752, 14.0629736719, 14.0630579636, 14.0631422504, 14.0632265323, 14.0633108093, 14.0633950813, 14.0634793484, 14.0635636106, 14.0636478679, 14.0637321202, 14.0638163676, 14.0639006101, 14.0639848477, 14.0640690804, 14.0641533081, 14.064237531, 14.0643217489, 14.0644059619, 14.06449017, 14.0645743731, 14.0646585714, 14.0647427648, 14.0648269532, 14.0649111367, 14.0649953153, 14.065079489, 14.0651636578, 14.0652478217, 14.0653319806, 14.0654161347, 14.0655002838, 14.0655844281, 14.0656685674, 14.0657527018, 14.0658368313, 14.0659209559, 14.0660050757, 14.0660891905, 14.0661733004, 14.0662574054, 14.0663415054, 14.0664256006, 14.0665096909, 14.0665937763, 14.0666778568, 14.0667619324, 14.0668460031, 14.0669300689, 14.0670141298, 14.0670981857, 14.0671822368, 14.067266283, 14.0673503243, 14.0674343608, 14.0675183923, 14.0676024189, 14.0676864406, 14.0677704574, 14.0678544694, 14.0679384764, 14.0680224786, 14.0681064759, 14.0681904682, 14.0682744557, 14.0683584383, 14.068442416, 14.0685263888, 14.0686103568, 14.0686943198, 14.068778278, 14.0688622313, 14.0689461796, 14.0690301232, 14.0691140618, 14.0691979955, 14.0692819244, 14.0693658483, 14.0694497674, 14.0695336816, 14.069617591, 14.0697014954, 14.069785395, 14.0698692897, 14.0699531795, 14.0700370644, 14.0701209445, 14.0702048197, 14.07028869, 14.0703725554, 14.0704564159, 14.0705402716, 14.0706241224, 14.0707079684, 14.0707918094, 14.0708756456, 14.0709594769, 14.0710433034, 14.0711271249, 14.0712109417, 14.0712947535, 14.0713785605, 14.0714623626, 14.0715461598, 14.0716299522, 14.0717137397, 14.0717975223, 14.0718813001, 14.071965073, 14.072048841, 14.0721326042, 14.0722163625, 14.0723001159, 14.0723838645, 14.0724676082, 14.0725513471, 14.0726350811, 14.0727188103, 14.0728025345, 14.072886254, 14.0729699685, 14.0730536783, 14.0731373831, 14.0732210831, 14.0733047783, 14.0733884685, 14.073472154, 14.0735558346, 14.0736395103, 14.0737231812, 14.0738068472, 14.0738905083, 14.0739741647, 14.0740578161, 14.0741414628, 14.0742251045, 14.0743087414, 14.0743923735, 14.0744760007, 14.0745596231, 14.0746432406, 14.0747268533, 14.0748104612, 14.0748940642, 14.0749776623, 14.0750612556, 14.0751448441, 14.0752284277, 14.0753120065, 14.0753955804, 14.0754791495, 14.0755627137, 14.0756462732, 14.0757298277, 14.0758133775, 14.0758969224, 14.0759804624, 14.0760639976, 14.076147528, 14.0762310536, 14.0763145743, 14.0763980902, 14.0764816012, 14.0765651074, 14.0766486088, 14.0767321053, 14.0768155971, 14.0768990839, 14.076982566, 14.0770660432, 14.0771495156, 14.0772329831, 14.0773164459, 14.0773999038, 14.0774833569, 14.0775668051, 14.0776502485, 14.0777336871, 14.0778171209, 14.0779005498, 14.077983974, 14.0780673933, 14.0781508077, 14.0782342174, 14.0783176222, 14.0784010222, 14.0784844174, 14.0785678078, 14.0786511933, 14.0787345741, 14.07881795, 14.0789013211, 14.0789846873, 14.0790680488, 14.0791514054, 14.0792347572, 14.0793181043, 14.0794014464, 14.0794847838, 14.0795681164, 14.0796514441, 14.0797347671, 14.0798180852, 14.0799013985, 14.079984707, 14.0800680107, 14.0801513096, 14.0802346037, 14.080317893, 14.0804011774, 14.0804844571, 14.0805677319, 14.0806510019, 14.0807342672, 14.0808175276, 14.0809007832, 14.080984034, 14.0810672801, 14.0811505213, 14.0812337577, 14.0813169893, 14.0814002161, 14.0814834381, 14.0815666553, 14.0816498677, 14.0817330753, 14.0818162781, 14.0818994761, 14.0819826693, 14.0820658577, 14.0821490414, 14.0822322202, 14.0823153942, 14.0823985634, 14.0824817279, 14.0825648875, 14.0826480424, 14.0827311924, 14.0828143377, 14.0828974781, 14.0829806138, 14.0830637447, 14.0831468708, 14.0832299921, 14.0833131087, 14.0833962204, 14.0834793273, 14.0835624295, 14.0836455269, 14.0837286195, 14.0838117073, 14.0838947903, 14.0839778685, 14.084060942, 14.0841440106, 14.0842270745, 14.0843101336, 14.0843931879, 14.0844762375, 14.0845592822, 14.0846423222, 14.0847253574, 14.0848083878, 14.0848914134, 14.0849744343, 14.0850574504, 14.0851404617, 14.0852234682, 14.08530647, 14.085389467, 14.0854724592, 14.0855554466, 14.0856384293, 14.0857214072, 14.0858043803, 14.0858873486, 14.0859703122, 14.086053271, 14.086136225, 14.0862191743, 14.0863021188, 14.0863850585, 14.0864679935, 14.0865509237, 14.0866338491, 14.0867167697, 14.0867996856, 14.0868825967, 14.0869655031, 14.0870484047, 14.0871313015, 14.0872141936, 14.0872970809, 14.0873799635, 14.0874628413, 14.0875457143, 14.0876285825, 14.087711446, 14.0877943048, 14.0878771588, 14.087960008, 14.0880428525, 14.0881256922, 14.0882085271, 14.0882913573, 14.0883741828, 14.0884570035, 14.0885398194, 14.0886226306, 14.088705437, 14.0887882387, 14.0888710356, 14.0889538278, 14.0890366152, 14.0891193979, 14.0892021758, 14.089284949, 14.0893677174, 14.0894504811, 14.08953324, 14.0896159942, 14.0896987437, 14.0897814884, 14.0898642283, 14.0899469635, 14.090029694, 14.0901124197, 14.0901951406, 14.0902778569, 14.0903605683, 14.0904432751, 14.0905259771, 14.0906086743, 14.0906913669, 14.0907740546, 14.0908567377, 14.090939416, 14.0910220895, 14.0911047584, 14.0911874225, 14.0912700818, 14.0913527364, 14.0914353863, 14.0915180315, 14.0916006719, 14.0916833076, 14.0917659385, 14.0918485647, 14.0919311862, 14.092013803, 14.092096415, 14.0921790223, 14.0922616248, 14.0923442227, 14.0924268158, 14.0925094042, 14.0925919878, 14.0926745667, 14.0927571409, 14.0928397104, 14.0929222751, 14.0930048352, 14.0930873904, 14.093169941, 14.0932524869, 14.093335028, 14.0934175644, 14.0935000961, 14.093582623, 14.0936651453, 14.0937476628, 14.0938301756, 14.0939126837, 14.093995187, 14.0940776857, 14.0941601796, 14.0942426688, 14.0943251533, 14.0944076331, 14.0944901081, 14.0945725785, 14.0946550441, 14.094737505, 14.0948199613, 14.0949024128, 14.0949848595, 14.0950673016, 14.095149739, 14.0952321716, 14.0953145996, 14.0953970228, 14.0954794413, 14.0955618551, 14.0956442642, 14.0957266686, 14.0958090683, 14.0958914633, 14.0959738536, 14.0960562392, 14.0961386201, 14.0962209962, 14.0963033677, 14.0963857345, 14.0964680965, 14.0965504539, 14.0966328065, 14.0967151545, 14.0967974977, 14.0968798363, 14.0969621702, 14.0970444993, 14.0971268238, 14.0972091436, 14.0972914586, 14.097373769, 14.0974560747, 14.0975383756, 14.0976206719, 14.0977029635, 14.0977852504, 14.0978675326, 14.0979498101, 14.098032083, 14.0981143511, 14.0981966145, 14.0982788733, 14.0983611273, 14.0984433767, 14.0985256214, 14.0986078614, 14.0986900967, 14.0987723273, 14.0988545532, 14.0989367745, 14.099018991, 14.0991012029, 14.0991834101, 14.0992656126, 14.0993478104, 14.0994300035, 14.099512192, 14.0995943758, 14.0996765549, 14.0997587293, 14.099840899, 14.0999230641, 14.1000052244, 14.1000873801, 14.1001695311, 14.1002516775, 14.1003338191, 14.1004159561, 14.1004980884, 14.100580216, 14.100662339, 14.1007444573, 14.1008265709, 14.1009086798, 14.1009907841, 14.1010728837, 14.1011549786, 14.1012370688, 14.1013191544, 14.1014012353, 14.1014833116, 14.1015653831, 14.10164745, 14.1017295123, 14.1018115698, 14.1018936227, 14.1019756709, 14.1020577145, 14.1021397534, 14.1022217876, 14.1023038172, 14.1023858421, 14.1024678624, 14.1025498779, 14.1026318889, 14.1027138951, 14.1027958967, 14.1028778936, 14.1029598859, 14.1030418735, 14.1031238565, 14.1032058348, 14.1032878084, 14.1033697774, 14.1034517417, 14.1035337014, 14.1036156564, 14.1036976068, 14.1037795525, 14.1038614935, 14.1039434299, 14.1040253616, 14.1041072887, 14.1041892112, 14.1042711289, 14.1043530421, 14.1044349506, 14.1045168544, 14.1045987536, 14.1046806481, 14.104762538, 14.1048444232, 14.1049263038, 14.1050081798, 14.105090051, 14.1051719177, 14.1052537797, 14.1053356371, 14.1054174898, 14.1054993378, 14.1055811813, 14.1056630201, 14.1057448542, 14.1058266837, 14.1059085086, 14.1059903288, 14.1060721444, 14.1061539553, 14.1062357616, 14.1063175633, 14.1063993603, 14.1064811527, 14.1065629404, 14.1066447236, 14.106726502, 14.1068082759, 14.1068900451, 14.1069718097, 14.1070535696, 14.1071353249, 14.1072170756, 14.1072988216, 14.107380563, 14.1074622998, 14.107544032, 14.1076257595, 14.1077074824, 14.1077892006, 14.1078709143, 14.1079526233, 14.1080343277, 14.1081160274, 14.1081977225, 14.108279413, 14.1083610989, 14.1084427802, 14.1085244568, 14.1086061288, 14.1086877962, 14.1087694589, 14.108851117, 14.1089327706, 14.1090144194, 14.1090960637, 14.1091777034, 14.1092593384, 14.1093409688, 14.1094225946, 14.1095042158, 14.1095858323, 14.1096674443, 14.1097490516, 14.1098306543, 14.1099122524, 14.1099938458, 14.1100754347, 14.110157019, 14.1102385986, 14.1103201736, 14.110401744, 14.1104833098, 14.110564871, 14.1106464276, 14.1107279795, 14.1108095269, 14.1108910696, 14.1109726078, 14.1110541413, 14.1111356702, 14.1112171945, 14.1112987143, 14.1113802294, 14.1114617399, 14.1115432457, 14.111624747, 14.1117062437, 14.1117877358, 14.1118692233, 14.1119507062, 14.1120321844, 14.1121136581, 14.1121951272, 14.1122765916, 14.1123580515, 14.1124395068, 14.1125209575, 14.1126024035, 14.112683845, 14.1127652819, 14.1128467142, 14.1129281419, 14.1130095649, 14.1130909834, 14.1131723973, 14.1132538067, 14.1133352114, 14.1134166115, 14.113498007, 14.113579398, 14.1136607843, 14.113742166, 14.1138235432, 14.1139049158, 14.1139862838, 14.1140676472, 14.114149006, 14.1142303602, 14.1143117098, 14.1143930549, 14.1144743953, 14.1145557312, 14.1146370625, 14.1147183892, 14.1147997113, 14.1148810288, 14.1149623418, 14.1150436502, 14.1151249539, 14.1152062532, 14.1152875478, 14.1153688378, 14.1154501233, 14.1155314042, 14.1156126805, 14.1156939522, 14.1157752193, 14.1158564819, 14.1159377399, 14.1160189933, 14.1161002422, 14.1161814864, 14.1162627261, 14.1163439612, 14.1164251918, 14.1165064177, 14.1165876391, 14.116668856, 14.1167500682, 14.1168312759, 14.116912479, 14.1169936775, 14.1170748715, 14.1171560609, 14.1172372457, 14.117318426, 14.1173996017, 14.1174807728, 14.1175619394, 14.1176431014, 14.1177242588, 14.1178054117, 14.11788656, 14.1179677037, 14.1180488429, 14.1181299775, 14.1182111075, 14.118292233, 14.1183733539, 14.1184544703, 14.1185355821, 14.1186166894, 14.118697792, 14.1187788902, 14.1188599837, 14.1189410727, 14.1190221572, 14.1191032371, 14.1191843124, 14.1192653832, 14.1193464494, 14.1194275111, 14.1195085682, 14.1195896207, 14.1196706687, 14.1197517122, 14.1198327511, 14.1199137855, 14.1199948153, 14.1200758405, 14.1201568612, 14.1202378773, 14.1203188889, 14.120399896, 14.1204808985, 14.1205618964, 14.1206428898, 14.1207238787, 14.120804863, 14.1208858428, 14.120966818, 14.1210477887, 14.1211287548, 14.1212097164, 14.1212906735, 14.121371626, 14.1214525739, 14.1215335173, 14.1216144562, 14.1216953906, 14.1217763204, 14.1218572456, 14.1219381663, 14.1220190825, 14.1220999942, 14.1221809013, 14.1222618038, 14.1223427019, 14.1224235954, 14.1225044843, 14.1225853687, 14.1226662486, 14.122747124, 14.1228279948, 14.1229088611, 14.1229897229, 14.1230705801, 14.1231514328, 14.1232322809, 14.1233131246, 14.1233939637, 14.1234747982, 14.1235556283, 14.1236364538, 14.1237172748, 14.1237980913, 14.1238789032, 14.1239597106, 14.1240405135, 14.1241213118, 14.1242021057, 14.124282895, 14.1243636797, 14.12444446, 14.1245252357, 14.124606007, 14.1246867737, 14.1247675358, 14.1248482935, 14.1249290466, 14.1250097952, 14.1250905393, 14.1251712789, 14.1252520139, 14.1253327445, 14.1254134705, 14.125494192, 14.125574909, 14.1256556214, 14.1257363294, 14.1258170328, 14.1258977318, 14.1259784262, 14.1260591161, 14.1261398015, 14.1262204823, 14.1263011587, 14.1263818305, 14.1264624979, 14.1265431607, 14.126623819, 14.1267044728, 14.1267851221, 14.1268657669, 14.1269464072, 14.127027043, 14.1271076743, 14.127188301, 14.1272689233, 14.1273495411, 14.1274301543, 14.1275107631, 14.1275913673, 14.127671967, 14.1277525623, 14.127833153, 14.1279137392, 14.127994321, 14.1280748982, 14.1281554709, 14.1282360392, 14.1283166029, 14.1283971621, 14.1284777169, 14.1285582671, 14.1286388129, 14.1287193541, 14.1287998908, 14.1288804231, 14.1289609509, 14.1290414741, 14.1291219929, 14.1292025072, 14.1292830169, 14.1293635222, 14.129444023, 14.1295245193, 14.1296050112, 14.1296854985, 14.1297659813, 14.1298464597, 14.1299269335, 14.1300074029, 14.1300878678, 14.1301683281, 14.1302487841, 14.1303292355, 14.1304096824, 14.1304901248, 14.1305705628, 14.1306509963, 14.1307314253, 14.1308118498, 14.1308922698, 14.1309726853, 14.1310530964, 14.131133503, 14.1312139051, 14.1312943027, 14.1313746958, 14.1314550845, 14.1315354687, 14.1316158484, 14.1316962236, 14.1317765943, 14.1318569606, 14.1319373224, 14.1320176797, 14.1320980326, 14.1321783809, 14.1322587248, 14.1323390642, 14.1324193992, 14.1324997296, 14.1325800556, 14.1326603771, 14.1327406942, 14.1328210068, 14.1329013149, 14.1329816185, 14.1330619177, 14.1331422124, 14.1332225026, 14.1333027884, 14.1333830697, 14.1334633465, 14.1335436189, 14.1336238868, 14.1337041502, 14.1337844092, 14.1338646637, 14.1339449137, 14.1340251593, 14.1341054004, 14.134185637, 14.1342658692, 14.134346097, 14.1344263202, 14.134506539, 14.1345867534, 14.1346669632, 14.1347471687, 14.1348273696, 14.1349075661, 14.1349877582, 14.1350679458, 14.1351481289, 14.1352283076, 14.1353084818, 14.1353886516, 14.1354688169, 14.1355489777, 14.1356291342, 14.1357092861, 14.1357894336, 14.1358695766, 14.1359497152, 14.1360298494, 14.1361099791, 14.1361901043, 14.1362702251, 14.1363503415, 14.1364304533, 14.1365105608, 14.1365906638, 14.1366707623, 14.1367508564, 14.1368309461, 14.1369110313, 14.1369911121, 14.1370711884, 14.1371512603, 14.1372313277, 14.1373113907, 14.1373914492, 14.1374715034, 14.137551553, 14.1376315982, 14.137711639, 14.1377916754, 14.1378717073, 14.1379517347, 14.1380317577, 14.1381117763, 14.1381917905, 14.1382718002, 14.1383518054, 14.1384318063, 14.1385118027, 14.1385917946, 14.1386717822, 14.1387517653, 14.1388317439, 14.1389117181, 14.1389916879, 14.1390716533, 14.1391516142, 14.1392315707, 14.1393115228, 14.1393914704, 14.1394714136, 14.1395513524, 14.1396312867, 14.1397112167, 14.1397911422, 14.1398710632, 14.1399509798, 14.1400308921, 14.1401107998, 14.1401907032, 14.1402706021, 14.1403504966, 14.1404303867, 14.1405102724, 14.1405901536, 14.1406700304, 14.1407499028, 14.1408297708, 14.1409096343, 14.1409894934, 14.1410693482, 14.1411491984, 14.1412290443, 14.1413088858, 14.1413887228, 14.1414685554, 14.1415483836, 14.1416282074, 14.1417080267, 14.1417878417, 14.1418676522, 14.1419474583, 14.14202726, 14.1421070573, 14.1421868502, 14.1422666386, 14.1423464227, 14.1424262023, 14.1425059775, 14.1425857484, 14.1426655148, 14.1427452768, 14.1428250343, 14.1429047875, 14.1429845363, 14.1430642806, 14.1431440206, 14.1432237561, 14.1433034873, 14.143383214, 14.1434629363, 14.1435426542, 14.1436223677, 14.1437020769, 14.1437817816, 14.1438614819, 14.1439411778, 14.1440208693, 14.1441005564, 14.1441802391, 14.1442599174, 14.1443395912, 14.1444192607, 14.1444989258, 14.1445785865, 14.1446582428, 14.1447378947, 14.1448175422, 14.1448971853, 14.1449768241, 14.1450564584, 14.1451360883, 14.1452157138, 14.1452953349, 14.1453749517, 14.145454564, 14.145534172, 14.1456137755, 14.1456933747, 14.1457729694, 14.1458525598, 14.1459321458, 14.1460117274, 14.1460913046, 14.1461708775, 14.1462504459, 14.1463300099, 14.1464095696, 14.1464891249, 14.1465686757, 14.1466482222, 14.1467277643, 14.1468073021, 14.1468868354, 14.1469663644, 14.1470458889, 14.1471254091, 14.1472049249, 14.1472844364, 14.1473639434, 14.1474434461, 14.1475229444, 14.1476024383, 14.1476819278, 14.1477614129, 14.1478408937, 14.1479203701, 14.1479998421, 14.1480793097, 14.1481587729, 14.1482382318, 14.1483176863, 14.1483971364, 14.1484765822, 14.1485560236, 14.1486354605, 14.1487148932, 14.1487943214, 14.1488737453, 14.1489531648, 14.1490325799, 14.1491119907, 14.1491913971, 14.1492707991, 14.1493501968, 14.1494295901, 14.149508979, 14.1495883635, 14.1496677437, 14.1497471195, 14.1498264909, 14.149905858, 14.1499852207, 14.1500645791, 14.1501439331, 14.1502232827, 14.1503026279, 14.1503819688, 14.1504613053, 14.1505406375, 14.1506199653, 14.1506992887, 14.1507786078, 14.1508579225, 14.1509372329, 14.1510165389, 14.1510958405, 14.1511751378, 14.1512544307, 14.1513337193, 14.1514130035, 14.1514922833, 14.1515715588, 14.15165083, 14.1517300968, 14.1518093592, 14.1518886173, 14.151967871, 14.1520471203, 14.1521263653, 14.152205606, 14.1522848423, 14.1523640743, 14.1524433019, 14.1525225251, 14.152601744, 14.1526809586, 14.1527601688, 14.1528393746, 14.1529185761, 14.1529977733, 14.1530769661, 14.1531561546, 14.1532353387, 14.1533145185, 14.1533936939, 14.153472865, 14.1535520317, 14.1536311941, 14.1537103522, 14.1537895059, 14.1538686552, 14.1539478002, 14.1540269409, 14.1541060773, 14.1541852093, 14.1542643369, 14.1543434602, 14.1544225792, 14.1545016939, 14.1545808042, 14.1546599101, 14.1547390118, 14.1548181091, 14.154897202, 14.1549762906, 14.1550553749, 14.1551344549, 14.1552135305, 14.1552926018, 14.1553716687, 14.1554507313, 14.1555297896, 14.1556088435, 14.1556878932, 14.1557669384, 14.1558459794, 14.155925016, 14.1560040483, 14.1560830763, 14.1561620999, 14.1562411192, 14.1563201342, 14.1563991449, 14.1564781512, 14.1565571532, 14.1566361509, 14.1567151442, 14.1567941332, 14.1568731179, 14.1569520983, 14.1570310744, 14.1571100461, 14.1571890135, 14.1572679766, 14.1573469354, 14.1574258898, 14.1575048399, 14.1575837857, 14.1576627272, 14.1577416644, 14.1578205972, 14.1578995257, 14.1579784499, 14.1580573698, 14.1581362854, 14.1582151967, 14.1582941036, 14.1583730062, 14.1584519045, 14.1585307985, 14.1586096882, 14.1586885736, 14.1587674546, 14.1588463314, 14.1589252038, 14.1590040719, 14.1590829357, 14.1591617952, 14.1592406504, 14.1593195013, 14.1593983479, 14.1594771901, 14.1595560281, 14.1596348617, 14.159713691, 14.1597925161, 14.1598713368, 14.1599501532, 14.1600289653, 14.1601077731, 14.1601865766, 14.1602653758, 14.1603441707, 14.1604229613, 14.1605017476, 14.1605805295, 14.1606593072, 14.1607380806, 14.1608168497, 14.1608956145, 14.1609743749, 14.1610531311, 14.161131883, 14.1612106306, 14.1612893738, 14.1613681128, 14.1614468475, 14.1615255779, 14.161604304, 14.1616830258, 14.1617617433, 14.1618404565, 14.1619191654, 14.16199787, 14.1620765704, 14.1621552664, 14.1622339581, 14.1623126456, 14.1623913288, 14.1624700076, 14.1625486822, 14.1626273525, 14.1627060185, 14.1627846802, 14.1628633376, 14.1629419907, 14.1630206396, 14.1630992841, 14.1631779244, 14.1632565604, 14.1633351921, 14.1634138195, 14.1634924426, 14.1635710615, 14.163649676, 14.1637282863, 14.1638068923, 14.163885494, 14.1639640914, 14.1640426846, 14.1641212734, 14.164199858, 14.1642784383, 14.1643570143, 14.1644355861, 14.1645141535, 14.1645927167, 14.1646712756, 14.1647498302, 14.1648283806, 14.1649069267, 14.1649854685, 14.165064006, 14.1651425392, 14.1652210682, 14.1652995929, 14.1653781133, 14.1654566295, 14.1655351414, 14.165613649, 14.1656921523, 14.1657706514, 14.1658491462, 14.1659276367, 14.166006123, 14.1660846049, 14.1661630826, 14.1662415561, 14.1663200253, 14.1663984902, 14.1664769508, 14.1665554072, 14.1666338593, 14.1667123071, 14.1667907507, 14.16686919, 14.1669476251, 14.1670260559, 14.1671044824, 14.1671829046, 14.1672613226, 14.1673397364, 14.1674181458, 14.167496551, 14.167574952, 14.1676533487, 14.1677317411, 14.1678101293, 14.1678885132, 14.1679668928, 14.1680452682, 14.1681236394, 14.1682020062, 14.1682803689, 14.1683587272, 14.1684370813, 14.1685154312, 14.1685937768, 14.1686721181, 14.1687504552, 14.1688287881, 14.1689071166, 14.168985441, 14.1690637611, 14.1691420769, 14.1692203885, 14.1692986958, 14.1693769989, 14.1694552977, 14.1695335923, 14.1696118826, 14.1696901687, 14.1697684505, 14.1698467281, 14.1699250014, 14.1700032705, 14.1700815354, 14.170159796, 14.1702380523, 14.1703163044, 14.1703945523, 14.1704727959, 14.1705510353, 14.1706292705, 14.1707075013, 14.170785728, 14.1708639504, 14.1709421686, 14.1710203825, 14.1710985922, 14.1711767977, 14.1712549989, 14.1713331958, 14.1714113886, 14.1714895771, 14.1715677613, 14.1716459413, 14.1717241171, 14.1718022887, 14.171880456, 14.1719586191, 14.1720367779, 14.1721149325, 14.1721930829, 14.1722712291, 14.172349371, 14.1724275086, 14.1725056421, 14.1725837713, 14.1726618963, 14.172740017, 14.1728181336, 14.1728962459, 14.1729743539, 14.1730524578, 14.1731305574, 14.1732086528, 14.1732867439, 14.1733648308, 14.1734429136, 14.173520992, 14.1735990663, 14.1736771363, 14.1737552021, 14.1738332637, 14.173911321, 14.1739893742, 14.1740674231, 14.1741454678, 14.1742235082, 14.1743015445, 14.1743795765, 14.1744576043, 14.1745356279, 14.1746136472, 14.1746916624, 14.1747696733, 14.17484768, 14.1749256825, 14.1750036808, 14.1750816748, 14.1751596647, 14.1752376503, 14.1753156317, 14.1753936089, 14.1754715819, 14.1755495506, 14.1756275152, 14.1757054755, 14.1757834317, 14.1758613836, 14.1759393313, 14.1760172748, 14.176095214, 14.1761731491, 14.17625108, 14.1763290066, 14.1764069291, 14.1764848473, 14.1765627613, 14.1766406711, 14.1767185767, 14.1767964781, 14.1768743753, 14.1769522683, 14.1770301571, 14.1771080417, 14.1771859221, 14.1772637983, 14.1773416702, 14.177419538, 14.1774974016, 14.1775752609, 14.1776531161, 14.177730967, 14.1778088138, 14.1778866563, 14.1779644947, 14.1780423289, 14.1781201588, 14.1781979846, 14.1782758061, 14.1783536235, 14.1784314367, 14.1785092457, 14.1785870504, 14.178664851, 14.1787426474, 14.1788204396, 14.1788982276, 14.1789760114, 14.179053791, 14.1791315664, 14.1792093376, 14.1792871046, 14.1793648675, 14.1794426261, 14.1795203806, 14.1795981308, 14.1796758769, 14.1797536188, 14.1798313565, 14.17990909, 14.1799868193, 14.1800645445, 14.1801422654, 14.1802199822, 14.1802976947, 14.1803754031, 14.1804531073, 14.1805308073, 14.1806085032, 14.1806861948, 14.1807638823, 14.1808415656, 14.1809192447, 14.1809969196, 14.1810745903, 14.1811522569, 14.1812299192, 14.1813075774, 14.1813852314, 14.1814628813, 14.1815405269, 14.1816181684, 14.1816958057, 14.1817734388, 14.1818510677, 14.1819286925, 14.1820063131, 14.1820839295, 14.1821615417, 14.1822391498, 14.1823167537, 14.1823943534, 14.1824719489, 14.1825495403, 14.1826271275, 14.1827047105, 14.1827822894, 14.182859864, 14.1829374345, 14.1830150009, 14.183092563, 14.183170121, 14.1832476749, 14.1833252245, 14.18340277, 14.1834803113, 14.1835578485, 14.1836353815, 14.1837129103, 14.1837904349, 14.1838679554, 14.1839454718, 14.1840229839, 14.1841004919, 14.1841779957, 14.1842554954, 14.1843329909, 14.1844104822, 14.1844879694, 14.1845654524, 14.1846429313, 14.184720406, 14.1847978765, 14.1848753429, 14.1849528051, 14.1850302632, 14.1851077171, 14.1851851668, 14.1852626124, 14.1853400538, 14.1854174911, 14.1854949242, 14.1855723532, 14.185649778, 14.1857271986, 14.1858046151, 14.1858820274, 14.1859594356, 14.1860368397, 14.1861142395, 14.1861916353, 14.1862690268, 14.1863464143, 14.1864237975, 14.1865011767, 14.1865785516, 14.1866559225, 14.1867332891, 14.1868106517, 14.18688801, 14.1869653643, 14.1870427143, 14.1871200603, 14.1871974021, 14.1872747397, 14.1873520732, 14.1874294026, 14.1875067278, 14.1875840488, 14.1876613657, 14.1877386785, 14.1878159871, 14.1878932916, 14.187970592, 14.1880478882, 14.1881251803, 14.1882024682, 14.188279752, 14.1883570316, 14.1884343071, 14.1885115785, 14.1885888457, 14.1886661088, 14.1887433677, 14.1888206226, 14.1888978732, 14.1889751198, 14.1890523622, 14.1891296005, 14.1892068346, 14.1892840646, 14.1893612905, 14.1894385122, 14.1895157298, 14.1895929433, 14.1896701526, 14.1897473578, 14.1898245589, 14.1899017558, 14.1899789486, 14.1900561373, 14.1901333219, 14.1902105023, 14.1902876786, 14.1903648507, 14.1904420188, 14.1905191827, 14.1905963425, 14.1906734981, 14.1907506497, 14.1908277971, 14.1909049403, 14.1909820795, 14.1910592145, 14.1911363454, 14.1912134722, 14.1912905949, 14.1913677134, 14.1914448278, 14.1915219381, 14.1915990443, 14.1916761464, 14.1917532443, 14.1918303381, 14.1919074278, 14.1919845134, 14.1920615948, 14.1921386722, 14.1922157454, 14.1922928145, 14.1923698795, 14.1924469403, 14.1925239971, 14.1926010497, 14.1926780982, 14.1927551426, 14.1928321829, 14.1929092191, 14.1929862512, 14.1930632791, 14.193140303, 14.1932173227, 14.1932943383, 14.1933713498, 14.1934483572, 14.1935253605, 14.1936023597, 14.1936793547, 14.1937563457, 14.1938333325, 14.1939103153, 14.1939872939, 14.1940642684, 14.1941412389, 14.1942182052, 14.1942951674, 14.1943721255, 14.1944490795, 14.1945260294, 14.1946029752, 14.1946799168, 14.1947568544, 14.1948337879, 14.1949107173, 14.1949876425, 14.1950645637, 14.1951414808, 14.1952183938, 14.1952953026, 14.1953722074, 14.1954491081, 14.1955260046, 14.1956028971, 14.1956797855, 14.1957566698, 14.19583355, 14.195910426, 14.195987298, 14.1960641659, 14.1961410297, 14.1962178894, 14.196294745, 14.1963715965, 14.196448444, 14.1965252873, 14.1966021265, 14.1966789617, 14.1967557927, 14.1968326197, 14.1969094425, 14.1969862613, 14.197063076, 14.1971398866, 14.1972166931, 14.1972934955, 14.1973702939, 14.1974470881, 14.1975238783, 14.1976006643, 14.1976774463, 14.1977542242, 14.197830998, 14.1979077677, 14.1979845334, 14.1980612949, 14.1981380524, 14.1982148058, 14.1982915551, 14.1983683003, 14.1984450415, 14.1985217785, 14.1985985115, 14.1986752404, 14.1987519652, 14.1988286859, 14.1989054026, 14.1989821152, 14.1990588237, 14.1991355281, 14.1992122284, 14.1992889247, 14.1993656169, 14.199442305, 14.199518989, 14.199595669, 14.1996723448, 14.1997490166, 14.1998256844, 14.199902348, 14.1999790076, 14.2000556631, 14.2001323146, 14.2002089619, 14.2002856052, 14.2003622444, 14.2004388796, 14.2005155107, 14.2005921377, 14.2006687606, 14.2007453795, 14.2008219943, 14.200898605, 14.2009752117, 14.2010518143, 14.2011284128, 14.2012050073, 14.2012815977, 14.201358184, 14.2014347663, 14.2015113445, 14.2015879186, 14.2016644887, 14.2017410547, 14.2018176167, 14.2018941746, 14.2019707284, 14.2020472781, 14.2021238238, 14.2022003655, 14.202276903, 14.2023534366, 14.202429966, 14.2025064914, 14.2025830127, 14.20265953, 14.2027360433, 14.2028125524, 14.2028890575, 14.2029655586, 14.2030420556, 14.2031185485, 14.2031950374, 14.2032715222, 14.203348003, 14.2034244797, 14.2035009524, 14.203577421, 14.2036538855, 14.203730346, 14.2038068025, 14.2038832549, 14.2039597032, 14.2040361475, 14.2041125878, 14.204189024, 14.2042654561, 14.2043418842, 14.2044183083, 14.2044947283, 14.2045711442, 14.2046475562, 14.204723964, 14.2048003678, 14.2048767676, 14.2049531633, 14.205029555, 14.2051059426, 14.2051823262, 14.2052587058, 14.2053350813, 14.2054114527, 14.2054878202, 14.2055641835, 14.2056405429, 14.2057168981, 14.2057932494, 14.2058695966, 14.2059459398, 14.2060222789, 14.206098614, 14.206174945, 14.2062512721, 14.206327595, 14.206403914, 14.2064802289, 14.2065565397, 14.2066328466, 14.2067091494, 14.2067854481, 14.2068617428, 14.2069380335, 14.2070143202, 14.2070906028, 14.2071668814, 14.2072431559, 14.2073194265, 14.2073956929, 14.2074719554, 14.2075482138, 14.2076244682, 14.2077007186, 14.2077769649, 14.2078532072, 14.2079294455, 14.2080056798, 14.20808191, 14.2081581362, 14.2082343583, 14.2083105765, 14.2083867906, 14.2084630007, 14.2085392067, 14.2086154088, 14.2086916068, 14.2087678008, 14.2088439907, 14.2089201767, 14.2089963586, 14.2090725365, 14.2091487104, 14.2092248802, 14.209301046, 14.2093772078, 14.2094533656, 14.2095295194, 14.2096056691, 14.2096818149, 14.2097579566, 14.2098340943, 14.2099102279, 14.2099863576, 14.2100624832, 14.2101386049, 14.2102147225, 14.2102908361, 14.2103669456, 14.2104430512, 14.2105191527, 14.2105952503, 14.2106713438, 14.2107474333, 14.2108235188, 14.2108996003, 14.2109756777, 14.2110517512, 14.2111278206, 14.2112038861, 14.2112799475, 14.2113560049, 14.2114320583, 14.2115081077, 14.2115841531, 14.2116601945, 14.2117362318, 14.2118122652, 14.2118882945, 14.2119643199, 14.2120403412, 14.2121163586, 14.2121923719, 14.2122683812, 14.2123443866, 14.2124203879, 14.2124963852, 14.2125723785, 14.2126483678, 14.2127243531, 14.2128003344, 14.2128763117, 14.212952285, 14.2130282543, 14.2131042196, 14.2131801809, 14.2132561382, 14.2133320916, 14.2134080409, 14.2134839862, 14.2135599275, 14.2136358648, 14.2137117981, 14.2137877274, 14.2138636527, 14.2139395741, 14.2140154914, 14.2140914047, 14.2141673141, 14.2142432194, 14.2143191208, 14.2143950182, 14.2144709115, 14.2145468009, 14.2146226863, 14.2146985677, 14.2147744451, 14.2148503185, 14.2149261879, 14.2150020534, 14.2150779148, 14.2151537723, 14.2152296257, 14.2153054752, 14.2153813207, 14.2154571622, 14.2155329997, 14.2156088333, 14.2156846628, 14.2157604884, 14.21583631, 14.2159121276, 14.2159879412, 14.2160637508, 14.2161395564, 14.2162153581, 14.2162911558, 14.2163669494, 14.2164427392, 14.2165185249, 14.2165943066, 14.2166700844, 14.2167458582, 14.216821628, 14.2168973938, 14.2169731557, 14.2170489136, 14.2171246675, 14.2172004174, 14.2172761633, 14.2173519053, 14.2174276433, 14.2175033773, 14.2175791073, 14.2176548334, 14.2177305554, 14.2178062736, 14.2178819877, 14.2179576979, 14.2180334041, 14.2181091063, 14.2181848045, 14.2182604988, 14.2183361891, 14.2184118754, 14.2184875578, 14.2185632362, 14.2186389106, 14.2187145811, 14.2187902476, 14.2188659101, 14.2189415686, 14.2190172232, 14.2190928738, 14.2191685205, 14.2192441631, 14.2193198019, 14.2193954366, 14.2194710674, 14.2195466942, 14.2196223171, 14.219697936, 14.2197735509, 14.2198491619, 14.2199247689, 14.2200003719, 14.220075971, 14.2201515661, 14.2202271573, 14.2203027445, 14.2203783277, 14.220453907, 14.2205294823, 14.2206050537, 14.2206806211, 14.2207561845, 14.220831744, 14.2209072995, 14.2209828511, 14.2210583987, 14.2211339424, 14.2212094821, 14.2212850178, 14.2213605496, 14.2214360774, 14.2215116013, 14.2215871213, 14.2216626372, 14.2217381493, 14.2218136573, 14.2218891615, 14.2219646616, 14.2220401579, 14.2221156501, 14.2221911385, 14.2222666228, 14.2223421032, 14.2224175797, 14.2224930522, 14.2225685208, 14.2226439855, 14.2227194461, 14.2227949029, 14.2228703557, 14.2229458045, 14.2230212494, 14.2230966903, 14.2231721274, 14.2232475604, 14.2233229895, 14.2233984147, 14.2234738359, 14.2235492532, 14.2236246666, 14.223700076, 14.2237754815, 14.223850883, 14.2239262806, 14.2240016742, 14.2240770639, 14.2241524497, 14.2242278315, 14.2243032094, 14.2243785833, 14.2244539533, 14.2245293194, 14.2246046815, 14.2246800397, 14.224755394, 14.2248307443, 14.2249060907, 14.2249814332, 14.2250567717, 14.2251321063, 14.2252074369, 14.2252827637, 14.2253580865, 14.2254334053, 14.2255087202, 14.2255840312, 14.2256593383, 14.2257346414, 14.2258099406, 14.2258852359, 14.2259605272, 14.2260358146, 14.2261110981, 14.2261863777, 14.2262616533, 14.226336925, 14.2264121928, 14.2264874566, 14.2265627166, 14.2266379725, 14.2267132246, 14.2267884728, 14.226863717, 14.2269389573, 14.2270141936, 14.2270894261, 14.2271646546, 14.2272398792, 14.2273150999, 14.2273903167, 14.2274655295, 14.2275407384, 14.2276159434, 14.2276911445, 14.2277663416, 14.2278415349, 14.2279167242, 14.2279919096, 14.2280670911, 14.2281422686, 14.2282174423, 14.228292612, 14.2283677778, 14.2284429397, 14.2285180977, 14.2285932518, 14.2286684019, 14.2287435482, 14.2288186905, 14.2288938289, 14.2289689634, 14.229044094, 14.2291192207, 14.2291943434, 14.2292694623, 14.2293445772, 14.2294196882, 14.2294947953, 14.2295698986, 14.2296449978, 14.2297200932, 14.2297951847, 14.2298702723, 14.229945356, 14.2300204357, 14.2300955116, 14.2301705835, 14.2302456515, 14.2303207157, 14.2303957759, 14.2304708322, 14.2305458846, 14.2306209331, 14.2306959777, 14.2307710184, 14.2308460552, 14.2309210881, 14.2309961171, 14.2310711422, 14.2311461634, 14.2312211807, 14.2312961941, 14.2313712036, 14.2314462092, 14.2315212109, 14.2315962087, 14.2316712026, 14.2317461926, 14.2318211787, 14.2318961609, 14.2319711392, 14.2320461136, 14.2321210841, 14.2321960507, 14.2322710134, 14.2323459722, 14.2324209272, 14.2324958782, 14.2325708254, 14.2326457686, 14.232720708, 14.2327956434, 14.232870575, 14.2329455027, 14.2330204265, 14.2330953464, 14.2331702624, 14.2332451745, 14.2333200827, 14.2333949871, 14.2334698875, 14.2335447841, 14.2336196768, 14.2336945655, 14.2337694504, 14.2338443315, 14.2339192086, 14.2339940818, 14.2340689512, 14.2341438167, 14.2342186782, 14.2342935359, 14.2343683898, 14.2344432397, 14.2345180857, 14.2345929279, 14.2346677662, 14.2347426006, 14.2348174311, 14.2348922578, 14.2349670805, 14.2350418994, 14.2351167144, 14.2351915255, 14.2352663328, 14.2353411361, 14.2354159356, 14.2354907312, 14.2355655229, 14.2356403108, 14.2357150948, 14.2357898749, 14.2358646511, 14.2359394234, 14.2360141919, 14.2360889565, 14.2361637172, 14.2362384741, 14.236313227, 14.2363879761, 14.2364627214, 14.2365374627, 14.2366122002, 14.2366869338, 14.2367616636, 14.2368363894, 14.2369111114, 14.2369858296, 14.2370605438, 14.2371352542, 14.2372099608, 14.2372846634, 14.2373593622, 14.2374340571, 14.2375087482, 14.2375834354, 14.2376581187, 14.2377327981, 14.2378074737, 14.2378821454, 14.2379568133, 14.2380314773, 14.2381061374, 14.2381807937, 14.2382554461, 14.2383300946, 14.2384047393, 14.2384793801, 14.2385540171, 14.2386286502, 14.2387032794, 14.2387779048, 14.2388525263, 14.238927144, 14.2390017578, 14.2390763677, 14.2391509738, 14.239225576, 14.2393001744, 14.2393747689, 14.2394493595, 14.2395239463, 14.2395985292, 14.2396731083, 14.2397476836, 14.2398222549, 14.2398968224, 14.2399713861, 14.2400459459, 14.2401205019, 14.240195054, 14.2402696022, 14.2403441466, 14.2404186872, 14.2404932239, 14.2405677567, 14.2406422857, 14.2407168109, 14.2407913322, 14.2408658496, 14.2409403632, 14.241014873, 14.2410893789, 14.2411638809, 14.2412383791, 14.2413128735, 14.241387364, 14.2414618507, 14.2415363335, 14.2416108125, 14.2416852876, 14.2417597589, 14.2418342263, 14.2419086899, 14.2419831497, 14.2420576056, 14.2421320577, 14.2422065059, 14.2422809503, 14.2423553909, 14.2424298276, 14.2425042604, 14.2425786895, 14.2426531146, 14.242727536, 14.2428019535, 14.2428763672, 14.242950777, 14.243025183, 14.2430995852, 14.2431739835, 14.243248378, 14.2433227686, 14.2433971554, 14.2434715384, 14.2435459175, 14.2436202928, 14.2436946643, 14.243769032, 14.2438433958, 14.2439177557, 14.2439921119, 14.2440664642, 14.2441408127, 14.2442151573, 14.2442894981, 14.2443638351, 14.2444381683, 14.2445124976, 14.2445868231, 14.2446611448, 14.2447354626, 14.2448097766, 14.2448840868, 14.2449583932, 14.2450326957, 14.2451069944, 14.2451812893, 14.2452555803, 14.2453298675, 14.2454041509, 14.2454784305, 14.2455527063, 14.2456269782, 14.2457012463, 14.2457755106, 14.245849771, 14.2459240277, 14.2459982805, 14.2460725295, 14.2461467746, 14.246221016, 14.2462952535, 14.2463694872, 14.2464437171, 14.2465179432, 14.2465921654, 14.2466663839, 14.2467405985, 14.2468148093, 14.2468890163, 14.2469632194, 14.2470374188, 14.2471116143, 14.247185806, 14.2472599939, 14.247334178, 14.2474083583, 14.2474825348, 14.2475567074, 14.2476308762, 14.2477050413, 14.2477792025, 14.2478533599, 14.2479275134, 14.2480016632, 14.2480758092, 14.2481499513, 14.2482240897, 14.2482982242, 14.2483723549, 14.2484464818, 14.2485206049, 14.2485947242, 14.2486688397, 14.2487429514, 14.2488170593, 14.2488911633, 14.2489652636, 14.2490393601, 14.2491134527, 14.2491875416, 14.2492616266, 14.2493357078, 14.2494097853, 14.2494838589, 14.2495579287, 14.2496319947, 14.249706057, 14.2497801154, 14.24985417, 14.2499282208, 14.2500022678, 14.2500763111, 14.2501503505, 14.2502243861, 14.2502984179, 14.2503724459, 14.2504464701, 14.2505204906, 14.2505945072, 14.25066852, 14.2507425291, 14.2508165343, 14.2508905357, 14.2509645334, 14.2510385272, 14.2511125173, 14.2511865035, 14.251260486, 14.2513344647, 14.2514084395, 14.2514824106, 14.2515563779, 14.2516303414, 14.2517043011, 14.251778257, 14.2518522092, 14.2519261575, 14.252000102, 14.2520740428, 14.2521479798, 14.2522219129, 14.2522958423, 14.2523697679, 14.2524436897, 14.2525176078, 14.252591522, 14.2526654325, 14.2527393391, 14.252813242, 14.2528871411, 14.2529610364, 14.2530349279, 14.2531088157, 14.2531826996, 14.2532565798, 14.2533304562, 14.2534043288, 14.2534781976, 14.2535520626, 14.2536259239, 14.2536997814, 14.2537736351, 14.253847485, 14.2539213311, 14.2539951735, 14.2540690121, 14.2541428469, 14.2542166779, 14.2542905051, 14.2543643286, 14.2544381483, 14.2545119642, 14.2545857763, 14.2546595847, 14.2547333892, 14.2548071901, 14.2548809871, 14.2549547803, 14.2550285698, 14.2551023555, 14.2551761375, 14.2552499156, 14.25532369, 14.2553974606, 14.2554712275, 14.2555449905, 14.2556187498, 14.2556925054, 14.2557662571, 14.2558400051, 14.2559137493, 14.2559874898, 14.2560612265, 14.2561349594, 14.2562086885, 14.2562824139, 14.2563561355, 14.2564298534, 14.2565035674, 14.2565772777, 14.2566509843, 14.2567246871, 14.2567983861, 14.2568720813, 14.2569457728, 14.2570194605, 14.2570931445, 14.2571668247, 14.2572405011, 14.2573141738, 14.2573878427, 14.2574615078, 14.2575351692, 14.2576088268, 14.2576824807, 14.2577561308, 14.2578297772, 14.2579034197, 14.2579770586, 14.2580506936, 14.2581243249, 14.2581979525, 14.2582715763, 14.2583451963, 14.2584188126, 14.2584924251, 14.2585660339, 14.2586396389, 14.2587132402, 14.2587868377, 14.2588604314, 14.2589340214, 14.2590076076, 14.2590811901, 14.2591547689, 14.2592283438, 14.2593019151, 14.2593754826, 14.2594490463, 14.2595226063, 14.2595961625, 14.259669715, 14.2597432637, 14.2598168087, 14.2598903499, 14.2599638874, 14.2600374211, 14.2601109511, 14.2601844773, 14.2602579998, 14.2603315186, 14.2604050336, 14.2604785448, 14.2605520523, 14.2606255561, 14.2606990561, 14.2607725524, 14.2608460449, 14.2609195337, 14.2609930187, 14.2610665, 14.2611399776, 14.2612134514, 14.2612869214, 14.2613603878, 14.2614338504, 14.2615073092, 14.2615807643, 14.2616542157, 14.2617276633, 14.2618011072, 14.2618745473, 14.2619479838, 14.2620214164, 14.2620948454, 14.2621682706, 14.262241692, 14.2623151098, 14.2623885238, 14.262461934, 14.2625353405, 14.2626087433, 14.2626821424, 14.2627555377, 14.2628289293, 14.2629023171, 14.2629757012, 14.2630490816, 14.2631224583, 14.2631958312, 14.2632692004, 14.2633425658, 14.2634159276, 14.2634892856, 14.2635626398, 14.2636359904, 14.2637093372, 14.2637826802, 14.2638560196, 14.2639293552, 14.2640026871, 14.2640760153, 14.2641493397, 14.2642226604, 14.2642959774, 14.2643692907, 14.2644426002, 14.264515906, 14.2645892081, 14.2646625065, 14.2647358011, 14.264809092, 14.2648823792, 14.2649556627, 14.2650289425, 14.2651022185, 14.2651754908, 14.2652487594, 14.2653220242, 14.2653952854, 14.2654685428, 14.2655417965, 14.2656150465, 14.2656882927, 14.2657615353, 14.2658347741, 14.2659080092, 14.2659812406, 14.2660544683, 14.2661276923, 14.2662009125, 14.266274129, 14.2663473418, 14.2664205509, 14.2664937563, 14.266566958, 14.2666401559, 14.2667133502, 14.2667865407, 14.2668597275, 14.2669329106, 14.26700609, 14.2670792657, 14.2671524376, 14.2672256059, 14.2672987704, 14.2673719313, 14.2674450884, 14.2675182418, 14.2675913915, 14.2676645375, 14.2677376798, 14.2678108184, 14.2678839532, 14.2679570844, 14.2680302119, 14.2681033356, 14.2681764557, 14.268249572, 14.2683226846, 14.2683957936, 14.2684688988, 14.2685420003, 14.2686150981, 14.2686881922, 14.2687612826, 14.2688343693, 14.2689074523, 14.2689805316, 14.2690536073, 14.2691266791, 14.2691997473, 14.2692728118, 14.2693458726, 14.2694189297, 14.2694919831, 14.2695650328, 14.2696380788, 14.2697111211, 14.2697841597, 14.2698571947, 14.2699302259, 14.2700032534, 14.2700762772, 14.2701492973, 14.2702223137, 14.2702953265, 14.2703683355, 14.2704413408, 14.2705143425, 14.2705873404, 14.2706603347, 14.2707333253, 14.2708063121, 14.2708792953, 14.2709522748, 14.2710252506, 14.2710982227, 14.2711711911, 14.2712441559, 14.2713171169, 14.2713900742, 14.2714630279, 14.2715359779, 14.2716089242, 14.2716818667, 14.2717548056, 14.2718277409, 14.2719006724, 14.2719736002, 14.2720465244, 14.2721194449, 14.2721923616, 14.2722652747, 14.2723381842, 14.2724110899, 14.2724839919, 14.2725568903, 14.272629785, 14.272702676, 14.2727755633, 14.2728484469, 14.2729213269, 14.2729942031, 14.2730670757, 14.2731399446, 14.2732128099, 14.2732856714, 14.2733585293, 14.2734313835, 14.273504234, 14.2735770808, 14.2736499239, 14.2737227634, 14.2737955992, 14.2738684313, 14.2739412598, 14.2740140845, 14.2740869056, 14.274159723, 14.2742325368, 14.2743053469, 14.2743781532, 14.274450956, 14.274523755, 14.2745965504, 14.2746693421, 14.2747421301, 14.2748149145, 14.2748876951, 14.2749604721, 14.2750332455, 14.2751060151, 14.2751787811, 14.2752515435, 14.2753243021, 14.2753970571, 14.2754698084, 14.2755425561, 14.2756153001, 14.2756880404, 14.275760777, 14.27583351, 14.2759062393, 14.275978965, 14.276051687, 14.2761244053, 14.2761971199, 14.2762698309, 14.2763425382, 14.2764152419, 14.2764879419, 14.2765606382, 14.2766333309, 14.2767060199, 14.2767787052, 14.2768513869, 14.2769240649, 14.2769967393, 14.27706941, 14.277142077, 14.2772147404, 14.2772874001, 14.2773600562, 14.2774327086, 14.2775053573, 14.2775780024, 14.2776506438, 14.2777232816, 14.2777959157, 14.2778685462, 14.277941173, 14.2780137961, 14.2780864156, 14.2781590314, 14.2782316436, 14.2783042521, 14.278376857, 14.2784494582, 14.2785220558, 14.2785946497, 14.2786672399, 14.2787398266, 14.2788124095, 14.2788849888, 14.2789575645, 14.2790301364, 14.2791027048, 14.2791752695, 14.2792478305, 14.2793203879, 14.2793929417, 14.2794654918, 14.2795380382, 14.2796105811, 14.2796831202, 14.2797556557, 14.2798281876, 14.2799007158, 14.2799732404, 14.2800457613, 14.2801182786, 14.2801907922, 14.2802633022, 14.2803358086, 14.2804083113, 14.2804808103, 14.2805533057, 14.2806257975, 14.2806982856, 14.2807707701, 14.280843251, 14.2809157282, 14.2809882018, 14.2810606717, 14.281133138, 14.2812056006, 14.2812780596, 14.281350515, 14.2814229667, 14.2814954148, 14.2815678593, 14.2816403001, 14.2817127372, 14.2817851708, 14.2818576007, 14.281930027, 14.2820024496, 14.2820748686, 14.2821472839, 14.2822196957, 14.2822921038, 14.2823645082, 14.282436909, 14.2825093062, 14.2825816998, 14.2826540897, 14.282726476, 14.2827988587, 14.2828712377, 14.2829436131, 14.2830159849, 14.283088353, 14.2831607175, 14.2832330784, 14.2833054357, 14.2833777893, 14.2834501393, 14.2835224856, 14.2835948284, 14.2836671675, 14.283739503, 14.2838118348, 14.2838841631, 14.2839564877, 14.2840288086, 14.284101126, 14.2841734397, 14.2842457498, 14.2843180563, 14.2843903592, 14.2844626584, 14.284534954, 14.284607246, 14.2846795344, 14.2847518191, 14.2848241002, 14.2848963777, 14.2849686516, 14.2850409219, 14.2851131885, 14.2851854515, 14.2852577109, 14.2853299667, 14.2854022189, 14.2854744674, 14.2855467123, 14.2856189536, 14.2856911913, 14.2857634254, 14.2858356559, 14.2859078827, 14.2859801059, 14.2860523255, 14.2861245415, 14.2861967539, 14.2862689627, 14.2863411678, 14.2864133694, 14.2864855673, 14.2865577616, 14.2866299523, 14.2867021394, 14.2867743229, 14.2868465027, 14.286918679, 14.2869908516, 14.2870630207, 14.2871351861, 14.2872073479, 14.2872795061, 14.2873516607, 14.2874238117, 14.2874959591, 14.2875681028, 14.287640243, 14.2877123795, 14.2877845125, 14.2878566418, 14.2879287676, 14.2880008897, 14.2880730082, 14.2881451232, 14.2882172345, 14.2882893422, 14.2883614463, 14.2884335468, 14.2885056437, 14.288577737, 14.2886498267, 14.2887219128, 14.2887939953, 14.2888660742, 14.2889381495, 14.2890102211, 14.2890822892, 14.2891543537, 14.2892264146, 14.2892984719, 14.2893705256, 14.2894425757, 14.2895146222, 14.2895866651, 14.2896587044, 14.2897307401, 14.2898027722, 14.2898748007, 14.2899468256, 14.2900188469, 14.2900908647, 14.2901628788, 14.2902348893, 14.2903068963, 14.2903788996, 14.2904508994, 14.2905228955, 14.2905948881, 14.2906668771, 14.2907388624, 14.2908108442, 14.2908828224, 14.290954797, 14.2910267681, 14.2910987355, 14.2911706993, 14.2912426596, 14.2913146162, 14.2913865693, 14.2914585188, 14.2915304647, 14.291602407, 14.2916743457, 14.2917462808, 14.2918182124, 14.2918901403, 14.2919620647, 14.2920339855, 14.2921059027, 14.2921778163, 14.2922497264, 14.2923216328, 14.2923935357, 14.2924654349, 14.2925373306, 14.2926092228, 14.2926811113, 14.2927529962, 14.2928248776, 14.2928967554, 14.2929686296, 14.2930405002, 14.2931123673, 14.2931842308, 14.2932560906, 14.293327947, 14.2933997997, 14.2934716488, 14.2935434944, 14.2936153364, 14.2936871748, 14.2937590097, 14.2938308409, 14.2939026686, 14.2939744927, 14.2940463133, 14.2941181302, 14.2941899436, 14.2942617534, 14.2943335597, 14.2944053623, 14.2944771614, 14.2945489569, 14.2946207489, 14.2946925373, 14.2947643221, 14.2948361033, 14.294907881, 14.294979655, 14.2950514256, 14.2951231925, 14.2951949559, 14.2952667157, 14.2953384719, 14.2954102246, 14.2954819737, 14.2955537192, 14.2956254612, 14.2956971996, 14.2957689344, 14.2958406657, 14.2959123934, 14.2959841175, 14.2960558381, 14.2961275551, 14.2961992685, 14.2962709784, 14.2963426847, 14.2964143874, 14.2964860866, 14.2965577822, 14.2966294743, 14.2967011628, 14.2967728477, 14.2968445291, 14.2969162069, 14.2969878811, 14.2970595518, 14.2971312189, 14.2972028825, 14.2972745425, 14.2973461989, 14.2974178518, 14.2974895012, 14.2975611469, 14.2976327891, 14.2977044278, 14.2977760629, 14.2978476944, 14.2979193224, 14.2979909468, 14.2980625677, 14.298134185, 14.2982057988, 14.298277409, 14.2983490157, 14.2984206188, 14.2984922183, 14.2985638143, 14.2986354067, 14.2987069956, 14.298778581, 14.2988501627, 14.298921741, 14.2989933156, 14.2990648868, 14.2991364544, 14.2992080184, 14.2992795789, 14.2993511358, 14.2994226892, 14.299494239, 14.2995657853, 14.299637328, 14.2997088672, 14.2997804029, 14.299851935, 14.2999234635, 14.2999949885, 14.30006651, 14.3001380279, 14.3002095422, 14.3002810531, 14.3003525603, 14.3004240641, 14.3004955642, 14.3005670609, 14.300638554, 14.3007100436, 14.3007815296, 14.300853012, 14.300924491, 14.3009959664, 14.3010674382, 14.3011389065, 14.3012103713, 14.3012818325, 14.3013532902, 14.3014247444, 14.301496195, 14.3015676421, 14.3016390856, 14.3017105256, 14.3017819621, 14.301853395, 14.3019248244, 14.3019962502, 14.3020676725, 14.3021390913, 14.3022105065, 14.3022819183, 14.3023533264, 14.3024247311, 14.3024961322, 14.3025675297, 14.3026389238, 14.3027103143, 14.3027817013, 14.3028530847, 14.3029244646, 14.302995841, 14.3030672138, 14.3031385832, 14.3032099489, 14.3032813112, 14.3033526699, 14.3034240251, 14.3034953768, 14.3035667249, 14.3036380695, 14.3037094106, 14.3037807482, 14.3038520822, 14.3039234127, 14.3039947397, 14.3040660631, 14.304137383, 14.3042086994, 14.3042800123, 14.3043513217, 14.3044226275, 14.3044939298, 14.3045652286, 14.3046365238, 14.3047078155, 14.3047791037, 14.3048503884, 14.3049216696, 14.3049929472, 14.3050642213, 14.3051354919, 14.305206759, 14.3052780226, 14.3053492826, 14.3054205391, 14.3054917921, 14.3055630416, 14.3056342875, 14.30570553, 14.3057767689, 14.3058480043, 14.3059192362, 14.3059904646, 14.3060616894, 14.3061329108, 14.3062041286, 14.3062753429, 14.3063465537, 14.306417761, 14.3064889647, 14.306560165, 14.3066313617, 14.3067025549, 14.3067737446, 14.3068449308, 14.3069161135, 14.3069872927, 14.3070584684, 14.3071296405, 14.3072008091, 14.3072719743, 14.3073431359, 14.307414294, 14.3074854486, 14.3075565997, 14.3076277473, 14.3076988913, 14.3077700319, 14.3078411689, 14.3079123025, 14.3079834325, 14.3080545591, 14.3081256821, 14.3081968016, 14.3082679176, 14.3083390301, 14.3084101391, 14.3084812446, 14.3085523466, 14.3086234451, 14.3086945401, 14.3087656316, 14.3088367196, 14.3089078041, 14.308978885, 14.3090499625, 14.3091210365, 14.309192107, 14.3092631739, 14.3093342374, 14.3094052974, 14.3094763538, 14.3095474068, 14.3096184563, 14.3096895023, 14.3097605447, 14.3098315837, 14.3099026192, 14.3099736512, 14.3100446796, 14.3101157046, 14.3101867261, 14.3102577441, 14.3103287586, 14.3103997696, 14.3104707771, 14.3105417811, 14.3106127817, 14.3106837787, 14.3107547722, 14.3108257623, 14.3108967488, 14.3109677318, 14.3110387114, 14.3111096875, 14.3111806601, 14.3112516291, 14.3113225947, 14.3113935568, 14.3114645154, 14.3115354706, 14.3116064222, 14.3116773703, 14.311748315, 14.3118192562, 14.3118901939, 14.311961128, 14.3120320587, 14.312102986, 14.3121739097, 14.3122448299, 14.3123157467, 14.31238666, 14.3124575697, 14.312528476, 14.3125993789, 14.3126702782, 14.312741174, 14.3128120664, 14.3128829553, 14.3129538407, 14.3130247226, 14.313095601, 14.313166476, 14.3132373474, 14.3133082154, 14.3133790799, 14.313449941, 14.3135207985, 14.3135916526, 14.3136625032, 14.3137333503, 14.3138041939, 14.313875034, 14.3139458707, 14.3140167039, 14.3140875336, 14.3141583599, 14.3142291826, 14.3143000019, 14.3143708177, 14.31444163, 14.3145124389, 14.3145832443, 14.3146540462, 14.3147248446, 14.3147956396, 14.3148664311, 14.3149372191, 14.3150080036, 14.3150787847, 14.3151495623, 14.3152203364, 14.315291107, 14.3153618742, 14.3154326379, 14.3155033981, 14.3155741549, 14.3156449082, 14.315715658, 14.3157864044, 14.3158571473, 14.3159278867, 14.3159986226, 14.3160693551, 14.3161400841, 14.3162108097, 14.3162815317, 14.3163522504, 14.3164229655, 14.3164936772, 14.3165643854, 14.3166350901, 14.3167057914, 14.3167764892, 14.3168471836, 14.3169178745, 14.3169885619, 14.3170592459, 14.3171299264, 14.3172006034, 14.317271277, 14.3173419471, 14.3174126138, 14.317483277, 14.3175539367, 14.317624593, 14.3176952458, 14.3177658951, 14.317836541, 14.3179071834, 14.3179778224, 14.3180484579, 14.31811909, 14.3181897186, 14.3182603437, 14.3183309654, 14.3184015836, 14.3184721984, 14.3185428097, 14.3186134176, 14.318684022, 14.3187546229, 14.3188252204, 14.3188958144, 14.318966405, 14.3190369921, 14.3191075758, 14.319178156, 14.3192487328, 14.3193193061, 14.319389876, 14.3194604424, 14.3195310054, 14.3196015649, 14.3196721209, 14.3197426736, 14.3198132227, 14.3198837684, 14.3199543107, 14.3200248495, 14.3200953849, 14.3201659168, 14.3202364452, 14.3203069703, 14.3203774918, 14.32044801, 14.3205185246, 14.3205890359, 14.3206595436, 14.320730048, 14.3208005489, 14.3208710463, 14.3209415403, 14.3210120309, 14.321082518, 14.3211530017, 14.3212234819, 14.3212939587, 14.321364432, 14.3214349019, 14.3215053684, 14.3215758314, 14.321646291, 14.3217167471, 14.3217871998, 14.3218576491, 14.3219280949, 14.3219985373, 14.3220689762, 14.3221394117, 14.3222098437, 14.3222802724, 14.3223506975, 14.3224211193, 14.3224915376, 14.3225619525, 14.3226323639, 14.3227027719, 14.3227731765, 14.3228435776, 14.3229139753, 14.3229843695, 14.3230547603, 14.3231251477, 14.3231955317, 14.3232659122, 14.3233362893, 14.3234066629, 14.3234770332, 14.3235473999, 14.3236177633, 14.3236881232, 14.3237584797, 14.3238288328, 14.3238991824, 14.3239695286, 14.3240398714, 14.3241102107, 14.3241805466, 14.3242508791, 14.3243212082, 14.3243915338, 14.324461856, 14.3245321747, 14.3246024901, 14.324672802, 14.3247431105, 14.3248134156, 14.3248837172, 14.3249540154, 14.3250243102, 14.3250946016, 14.3251648895, 14.325235174, 14.3253054551, 14.3253757328, 14.325446007, 14.3255162778, 14.3255865452, 14.3256568092, 14.3257270697, 14.3257973269, 14.3258675806, 14.3259378309, 14.3260080777, 14.3260783212, 14.3261485612, 14.3262187978, 14.326289031, 14.3263592608, 14.3264294871, 14.3264997101, 14.3265699296, 14.3266401457, 14.3267103583, 14.3267805676, 14.3268507735, 14.3269209759, 14.3269911749, 14.3270613705, 14.3271315627, 14.3272017515, 14.3272719368, 14.3273421187, 14.3274122973, 14.3274824724, 14.3275526441, 14.3276228124, 14.3276929772, 14.3277631387, 14.3278332968, 14.3279034514, 14.3279736026, 14.3280437504, 14.3281138948, 14.3281840358, 14.3282541734, 14.3283243076, 14.3283944384, 14.3284645657, 14.3285346897, 14.3286048102, 14.3286749273, 14.3287450411, 14.3288151514, 14.3288852583, 14.3289553618, 14.3290254619, 14.3290955586, 14.3291656519, 14.3292357417, 14.3293058282, 14.3293759113, 14.3294459909, 14.3295160672, 14.3295861401, 14.3296562095, 14.3297262756, 14.3297963382, 14.3298663975, 14.3299364533, 14.3300065058, 14.3300765548, 14.3301466004, 14.3302166427, 14.3302866815, 14.330356717, 14.330426749, 14.3304967776, 14.3305668029, 14.3306368247, 14.3307068432, 14.3307768582, 14.3308468699, 14.3309168781, 14.330986883, 14.3310568844, 14.3311268825, 14.3311968772, 14.3312668684, 14.3313368563, 14.3314068408, 14.3314768219, 14.3315467995, 14.3316167738, 14.3316867447, 14.3317567123, 14.3318266764, 14.3318966371, 14.3319665944, 14.3320365484, 14.3321064989, 14.3321764461, 14.3322463898, 14.3323163302, 14.3323862672, 14.3324562008, 14.332526131, 14.3325960578, 14.3326659812, 14.3327359012, 14.3328058179, 14.3328757312, 14.332945641, 14.3330155475, 14.3330854506, 14.3331553503, 14.3332252466, 14.3332951396, 14.3333650291, 14.3334349153, 14.3335047981, 14.3335746775, 14.3336445535, 14.3337144261, 14.3337842953, 14.3338541612, 14.3339240237, 14.3339938828, 14.3340637385, 14.3341335908, 14.3342034397, 14.3342732853, 14.3343431275, 14.3344129663, 14.3344828017, 14.3345526338, 14.3346224624, 14.3346922877, 14.3347621096, 14.3348319281, 14.3349017433, 14.334971555, 14.3350413634, 14.3351111684, 14.3351809701, 14.3352507683, 14.3353205632, 14.3353903547, 14.3354601428, 14.3355299276, 14.3355997089, 14.3356694869, 14.3357392616, 14.3358090328, 14.3358788007, 14.3359485652, 14.3360183263, 14.3360880841, 14.3361578385, 14.3362275895, 14.3362973371, 14.3363670814, 14.3364368223, 14.3365065598, 14.336576294, 14.3366460247, 14.3367157522, 14.3367854762, 14.3368551969, 14.3369249142, 14.3369946281, 14.3370643387, 14.3371340459, 14.3372037497, 14.3372734502, 14.3373431473, 14.337412841, 14.3374825314, 14.3375522184, 14.337621902, 14.3376915823, 14.3377612592, 14.3378309327, 14.3379006029, 14.3379702697, 14.3380399331, 14.3381095932, 14.3381792499, 14.3382489033, 14.3383185532, 14.3383881999, 14.3384578431, 14.338527483, 14.3385971196, 14.3386667528, 14.3387363826, 14.338806009, 14.3388756321, 14.3389452519, 14.3390148683, 14.3390844813, 14.3391540909, 14.3392236972, 14.3392933002, 14.3393628998, 14.339432496, 14.3395020889, 14.3395716784, 14.3396412645, 14.3397108473, 14.3397804268, 14.3398500029, 14.3399195756, 14.339989145, 14.340058711, 14.3401282737, 14.340197833, 14.340267389, 14.3403369416, 14.3404064909, 14.3404760368, 14.3405455793, 14.3406151185, 14.3406846544, 14.3407541869, 14.340823716, 14.3408932418, 14.3409627643, 14.3410322833, 14.3411017991, 14.3411713115, 14.3412408205, 14.3413103262, 14.3413798286, 14.3414493276, 14.3415188232, 14.3415883156, 14.3416578045, 14.3417272901, 14.3417967724, 14.3418662513, 14.3419357269, 14.3420051991, 14.342074668, 14.3421441335, 14.3422135957, 14.3422830546, 14.3423525101, 14.3424219623, 14.3424914111, 14.3425608565, 14.3426302987, 14.3426997375, 14.3427691729, 14.342838605, 14.3429080338, 14.3429774592, 14.3430468813, 14.3431163, 14.3431857154, 14.3432551275, 14.3433245362, 14.3433939416, 14.3434633437, 14.3435327424, 14.3436021377, 14.3436715298, 14.3437409185, 14.3438103038, 14.3438796858, 14.3439490645, 14.3440184399, 14.3440878119, 14.3441571806, 14.3442265459, 14.3442959079, 14.3443652666, 14.3444346219, 14.3445039739, 14.3445733226, 14.3446426679, 14.3447120099, 14.3447813486, 14.3448506839, 14.3449200159, 14.3449893446, 14.34505867, 14.345127992, 14.3451973107, 14.345266626, 14.345335938, 14.3454052467, 14.3454745521, 14.3455438541, 14.3456131528, 14.3456824482, 14.3457517402, 14.345821029, 14.3458903143, 14.3459595964, 14.3460288751, 14.3460981505, 14.3461674226, 14.3462366914, 14.3463059568, 14.3463752189, 14.3464444777, 14.3465137332, 14.3465829853, 14.3466522341, 14.3467214796, 14.3467907218, 14.3468599606, 14.3469291961, 14.3469984283, 14.3470676572, 14.3471368827, 14.3472061049, 14.3472753238, 14.3473445394, 14.3474137517, 14.3474829606, 14.3475521663, 14.3476213686, 14.3476905676, 14.3477597632, 14.3478289556, 14.3478981446, 14.3479673303, 14.3480365127, 14.3481056918, 14.3481748675, 14.34824404, 14.3483132091, 14.3483823749, 14.3484515374, 14.3485206966, 14.3485898524, 14.348659005, 14.3487281542, 14.3487973002, 14.3488664428, 14.348935582, 14.349004718, 14.3490738507, 14.34914298, 14.3492121061, 14.3492812288, 14.3493503482, 14.3494194643, 14.3494885771, 14.3495576866, 14.3496267928, 14.3496958957, 14.3497649952, 14.3498340915, 14.3499031844, 14.349972274, 14.3500413603, 14.3501104433, 14.3501795231, 14.3502485994, 14.3503176725, 14.3503867423, 14.3504558088, 14.350524872, 14.3505939318, 14.3506629884, 14.3507320416, 14.3508010916, 14.3508701382, 14.3509391815, 14.3510082216, 14.3510772583, 14.3511462917, 14.3512153219, 14.3512843487, 14.3513533722, 14.3514223924, 14.3514914093, 14.3515604229, 14.3516294332, 14.3516984403, 14.351767444, 14.3518364444, 14.3519054415, 14.3519744353, 14.3520434258, 14.352112413, 14.3521813969, 14.3522503775, 14.3523193548, 14.3523883289, 14.3524572996, 14.352526267, 14.3525952311, 14.352664192, 14.3527331495, 14.3528021037, 14.3528710547, 14.3529400023, 14.3530089467, 14.3530778877, 14.3531468255, 14.35321576, 14.3532846911, 14.353353619, 14.3534225436, 14.3534914649, 14.3535603829, 14.3536292976, 14.353698209, 14.3537671172, 14.353836022, 14.3539049236, 14.3539738218, 14.3540427168, 14.3541116085, 14.3541804968, 14.3542493819, 14.3543182638, 14.3543871423, 14.3544560175, 14.3545248894, 14.3545937581, 14.3546626235, 14.3547314856, 14.3548003444, 14.3548691999, 14.3549380521, 14.355006901, 14.3550757467, 14.355144589, 14.3552134281, 14.3552822639, 14.3553510964, 14.3554199257, 14.3554887516, 14.3555575743, 14.3556263936, 14.3556952097, 14.3557640225, 14.3558328321, 14.3559016383, 14.3559704413, 14.356039241, 14.3561080374, 14.3561768305, 14.3562456204, 14.3563144069, 14.3563831902, 14.3564519702, 14.356520747, 14.3565895204, 14.3566582906, 14.3567270575, 14.3567958211, 14.3568645814, 14.3569333385, 14.3570020923, 14.3570708428, 14.35713959, 14.357208334, 14.3572770746, 14.357345812, 14.3574145462, 14.357483277, 14.3575520046, 14.3576207289, 14.35768945, 14.3577581677, 14.3578268822, 14.3578955934, 14.3579643014, 14.358033006, 14.3581017074, 14.3581704056, 14.3582391004, 14.358307792, 14.3583764803, 14.3584451654, 14.3585138471, 14.3585825257, 14.3586512009, 14.3587198729, 14.3587885416, 14.358857207, 14.3589258692, 14.3589945281, 14.3590631837, 14.359131836, 14.3592004851, 14.359269131, 14.3593377735, 14.3594064128, 14.3594750488, 14.3595436816, 14.3596123111, 14.3596809374, 14.3597495603, 14.35981818, 14.3598867965, 14.3599554097, 14.3600240196, 14.3600926262, 14.3601612296, 14.3602298297, 14.3602984266, 14.3603670202, 14.3604356106, 14.3605041977, 14.3605727815, 14.360641362, 14.3607099393, 14.3607785134, 14.3608470842, 14.3609156517, 14.360984216, 14.361052777, 14.3611213347, 14.3611898892, 14.3612584405, 14.3613269884, 14.3613955332, 14.3614640746, 14.3615326128, 14.3616011478, 14.3616696795, 14.3617382079, 14.3618067331, 14.3618752551, 14.3619437737, 14.3620122892, 14.3620808013, 14.3621493102, 14.3622178159, 14.3622863183, 14.3623548175, 14.3624233134, 14.362491806, 14.3625602954, 14.3626287816, 14.3626972645, 14.3627657442, 14.3628342206, 14.3629026937, 14.3629711636, 14.3630396303, 14.3631080937, 14.3631765538, 14.3632450107, 14.3633134644, 14.3633819148, 14.3634503619, 14.3635188059, 14.3635872465, 14.3636556839, 14.3637241181, 14.363792549, 14.3638609767, 14.3639294012, 14.3639978224, 14.3640662403, 14.364134655, 14.3642030665, 14.3642714747, 14.3643398797, 14.3644082814, 14.3644766799, 14.3645450751, 14.3646134671, 14.3646818559, 14.3647502414, 14.3648186237, 14.3648870027, 14.3649553785, 14.365023751, 14.3650921203, 14.3651604864, 14.3652288493, 14.3652972088, 14.3653655652, 14.3654339183, 14.3655022682, 14.3655706148, 14.3656389582, 14.3657072984, 14.3657756353, 14.365843969, 14.3659122995, 14.3659806267, 14.3660489507, 14.3661172714, 14.3661855889, 14.3662539032, 14.3663222142, 14.3663905221, 14.3664588266, 14.366527128, 14.3665954261, 14.3666637209, 14.3667320126, 14.366800301, 14.3668685862, 14.3669368681, 14.3670051468, 14.3670734223, 14.3671416946, 14.3672099636, 14.3672782294, 14.3673464919, 14.3674147512, 14.3674830073, 14.3675512602, 14.3676195099, 14.3676877563, 14.3677559995, 14.3678242394, 14.3678924761, 14.3679607096, 14.3680289399, 14.368097167, 14.3681653908, 14.3682336114, 14.3683018288, 14.3683700429, 14.3684382538, 14.3685064615, 14.368574666, 14.3686428672, 14.3687110652, 14.36877926, 14.3688474516, 14.36891564, 14.3689838251, 14.369052007, 14.3691201857, 14.3691883611, 14.3692565334, 14.3693247024, 14.3693928682, 14.3694610308, 14.3695291901, 14.3695973463, 14.3696654992, 14.3697336489, 14.3698017954, 14.3698699386, 14.3699380787, 14.3700062155, 14.3700743491, 14.3701424795, 14.3702106067, 14.3702787306, 14.3703468514, 14.3704149689, 14.3704830832, 14.3705511943, 14.3706193021, 14.3706874068, 14.3707555083, 14.3708236065, 14.3708917015, 14.3709597933, 14.3710278819, 14.3710959673, 14.3711640494, 14.3712321284, 14.3713002041, 14.3713682766, 14.3714363459, 14.371504412, 14.3715724749, 14.3716405346, 14.3717085911, 14.3717766443, 14.3718446944, 14.3719127412, 14.3719807849, 14.3720488253, 14.3721168625, 14.3721848965, 14.3722529273, 14.3723209549, 14.3723889792, 14.3724570004, 14.3725250184, 14.3725930331, 14.3726610447, 14.372729053, 14.3727970582, 14.3728650601, 14.3729330588, 14.3730010544, 14.3730690467, 14.3731370358, 14.3732050217, 14.3732730044, 14.3733409839, 14.3734089602, 14.3734769333, 14.3735449032, 14.3736128699, 14.3736808334, 14.3737487937, 14.3738167508, 14.3738847047, 14.3739526554, 14.3740206029, 14.3740885471, 14.3741564882, 14.3742244261, 14.3742923608, 14.3743602923, 14.3744282206, 14.3744961457, 14.3745640676, 14.3746319863, 14.3746999018, 14.3747678141, 14.3748357232, 14.3749036291, 14.3749715318, 14.3750394313, 14.3751073277, 14.3751752208, 14.3752431107, 14.3753109975, 14.375378881, 14.3754467614, 14.3755146385, 14.3755825125, 14.3756503833, 14.3757182508, 14.3757861152, 14.3758539764, 14.3759218344, 14.3759896892, 14.3760575408, 14.3761253893, 14.3761932345, 14.3762610766, 14.3763289154, 14.3763967511, 14.3764645836, 14.3765324128, 14.3766002389, 14.3766680619, 14.3767358816, 14.3768036981, 14.3768715115, 14.3769393216, 14.3770071286, 14.3770749324, 14.377142733, 14.3772105304, 14.3772783246, 14.3773461157, 14.3774139035, 14.3774816882, 14.3775494697, 14.377617248, 14.3776850231, 14.377752795, 14.3778205638, 14.3778883293, 14.3779560917, 14.3780238509, 14.3780916069, 14.3781593598, 14.3782271094, 14.3782948559, 14.3783625992, 14.3784303393, 14.3784980762, 14.37856581, 14.3786335406, 14.378701268, 14.3787689922, 14.3788367132, 14.3789044311, 14.3789721457, 14.3790398572, 14.3791075656, 14.3791752707, 14.3792429727, 14.3793106715, 14.3793783671, 14.3794460595, 14.3795137488, 14.3795814349, 14.3796491178, 14.3797167975, 14.3797844741, 14.3798521474, 14.3799198176, 14.3799874847, 14.3800551485, 14.3801228092, 14.3801904667, 14.3802581211, 14.3803257723, 14.3803934203, 14.3804610651, 14.3805287067, 14.3805963452, 14.3806639805, 14.3807316127, 14.3807992417, 14.3808668675, 14.3809344901, 14.3810021096, 14.3810697258, 14.381137339, 14.3812049489, 14.3812725557, 14.3813401593, 14.3814077598, 14.3814753571, 14.3815429512, 14.3816105421, 14.3816781299, 14.3817457145, 14.381813296, 14.3818808743, 14.3819484494, 14.3820160214, 14.3820835901, 14.3821511558, 14.3822187182, 14.3822862775, 14.3823538337, 14.3824213866, 14.3824889364, 14.3825564831, 14.3826240266, 14.3826915669, 14.3827591041, 14.3828266381, 14.3828941689, 14.3829616966, 14.3830292211, 14.3830967424, 14.3831642606, 14.3832317757, 14.3832992875, 14.3833667963, 14.3834343018, 14.3835018042, 14.3835693035, 14.3836367995, 14.3837042925, 14.3837717822, 14.3838392689, 14.3839067523, 14.3839742326, 14.3840417098, 14.3841091837, 14.3841766546, 14.3842441222, 14.3843115868, 14.3843790481, 14.3844465063, 14.3845139614, 14.3845814133, 14.3846488621, 14.3847163076, 14.3847837501, 14.3848511894, 14.3849186255, 14.3849860585, 14.3850534883, 14.385120915, 14.3851883386, 14.3852557589, 14.3853231762, 14.3853905903, 14.3854580012, 14.385525409, 14.3855928136, 14.3856602151, 14.3857276134, 14.3857950086, 14.3858624006, 14.3859297895, 14.3859971753, 14.3860645579, 14.3861319373, 14.3861993136, 14.3862666868, 14.3863340568, 14.3864014236, 14.3864687874, 14.3865361479, 14.3866035054, 14.3866708596, 14.3867382108, 14.3868055588, 14.3868729036, 14.3869402453, 14.3870075839, 14.3870749193, 14.3871422516, 14.3872095807, 14.3872769067, 14.3873442296, 14.3874115493, 14.3874788658, 14.3875461793, 14.3876134896, 14.3876807967, 14.3877481007, 14.3878154016, 14.3878826993, 14.3879499939, 14.3880172853, 14.3880845737, 14.3881518588, 14.3882191409, 14.3882864198, 14.3883536955, 14.3884209681, 14.3884882376, 14.388555504, 14.3886227672, 14.3886900273, 14.3887572842, 14.388824538, 14.3888917887, 14.3889590362, 14.3890262806, 14.3890935219, 14.38916076, 14.389227995, 14.3892952269, 14.3893624556, 14.3894296812, 14.3894969037, 14.3895641231, 14.3896313393, 14.3896985523, 14.3897657623, 14.3898329691, 14.3899001728, 14.3899673733, 14.3900345707, 14.390101765, 14.3901689562, 14.3902361442, 14.3903033291, 14.3903705109, 14.3904376896, 14.3905048651, 14.3905720375, 14.3906392067, 14.3907063729, 14.3907735359, 14.3908406958, 14.3909078525, 14.3909750062, 14.3910421567, 14.391109304, 14.3911764483, 14.3912435894, 14.3913107274, 14.3913778623, 14.3914449941, 14.3915121227, 14.3915792482, 14.3916463706, 14.3917134899, 14.391780606, 14.391847719, 14.3919148289, 14.3919819357, 14.3920490394, 14.3921161399, 14.3921832373, 14.3922503316, 14.3923174228, 14.3923845108, 14.3924515958, 14.3925186776, 14.3925857563, 14.3926528319, 14.3927199043, 14.3927869737, 14.3928540399, 14.392921103, 14.392988163, 14.3930552198, 14.3931222736, 14.3931893242, 14.3932563717, 14.3933234162, 14.3933904574, 14.3934574956, 14.3935245307, 14.3935915626, 14.3936585915, 14.3937256172, 14.3937926398, 14.3938596593, 14.3939266756, 14.3939936889, 14.3940606991, 14.3941277061, 14.39419471, 14.3942617108, 14.3943287085, 14.3943957031, 14.3944626946, 14.394529683, 14.3945966682, 14.3946636504, 14.3947306294, 14.3947976054, 14.3948645782, 14.3949315479, 14.3949985145, 14.395065478, 14.3951324384, 14.3951993957, 14.3952663498, 14.3953333009, 14.3954002489, 14.3954671937, 14.3955341355, 14.3956010741, 14.3956680096, 14.3957349421, 14.3958018714, 14.3958687976, 14.3959357207, 14.3960026407, 14.3960695576, 14.3961364714, 14.3962033821, 14.3962702897, 14.3963371942, 14.3964040956, 14.3964709939, 14.3965378891, 14.3966047812, 14.3966716702, 14.396738556, 14.3968054388, 14.3968723185, 14.3969391951, 14.3970060686, 14.397072939, 14.3971398062, 14.3972066704, 14.3972735315, 14.3973403895, 14.3974072444, 14.3974740962, 14.3975409449, 14.3976077905, 14.3976746329, 14.3977414723, 14.3978083087, 14.3978751419, 14.397941972, 14.398008799, 14.3980756229, 14.3981424437, 14.3982092615, 14.3982760761, 14.3983428876, 14.3984096961, 14.3984765014, 14.3985433037, 14.3986101029, 14.398676899, 14.3987436919, 14.3988104818, 14.3988772686, 14.3989440523, 14.399010833, 14.3990776105, 14.3991443849, 14.3992111563, 14.3992779245, 14.3993446897, 14.3994114517, 14.3994782107, 14.3995449666, 14.3996117194, 14.3996784692, 14.3997452158, 14.3998119593, 14.3998786998, 14.3999454371, 14.4000121714, 14.4000789026, 14.4001456307, 14.4002123558, 14.4002790777, 14.4003457965, 14.4004125123, 14.400479225, 14.4005459346, 14.4006126411, 14.4006793445, 14.4007460448, 14.4008127421, 14.4008794363, 14.4009461274, 14.4010128154, 14.4010795003, 14.4011461822, 14.4012128609, 14.4012795366, 14.4013462092, 14.4014128787, 14.4014795452, 14.4015462085, 14.4016128688, 14.401679526, 14.4017461801, 14.4018128311, 14.4018794791, 14.401946124, 14.4020127658, 14.4020794045, 14.4021460401, 14.4022126727, 14.4022793022, 14.4023459286, 14.402412552, 14.4024791722, 14.4025457894, 14.4026124035, 14.4026790145, 14.4027456225, 14.4028122274, 14.4028788292, 14.4029454279, 14.4030120236, 14.4030786162, 14.4031452057, 14.4032117921, 14.4032783755, 14.4033449558, 14.403411533, 14.4034781071, 14.4035446782, 14.4036112462, 14.4036778111, 14.403744373, 14.4038109318, 14.4038774875, 14.4039440402, 14.4040105897, 14.4040771362, 14.4041436797, 14.4042102201, 14.4042767574, 14.4043432916, 14.4044098228, 14.4044763508, 14.4045428759, 14.4046093978, 14.4046759167, 14.4047424326, 14.4048089453, 14.404875455, 14.4049419616, 14.4050084652, 14.4050749657, 14.4051414631, 14.4052079575, 14.4052744488, 14.405340937, 14.4054074222, 14.4054739043, 14.4055403834, 14.4056068594, 14.4056733323, 14.4057398021, 14.4058062689, 14.4058727327, 14.4059391933, 14.406005651, 14.4060721055, 14.406138557, 14.4062050054, 14.4062714508, 14.4063378931, 14.4064043323, 14.4064707685, 14.4065372017, 14.4066036317, 14.4066700587, 14.4067364827, 14.4068029036, 14.4068693214, 14.4069357362, 14.4070021479, 14.4070685566, 14.4071349622, 14.4072013647, 14.4072677642, 14.4073341607, 14.4074005541, 14.4074669444, 14.4075333317, 14.4075997159, 14.4076660971, 14.4077324752, 14.4077988502, 14.4078652222, 14.4079315912, 14.4079979571, 14.4080643199, 14.4081306797, 14.4081970364, 14.4082633901, 14.4083297408, 14.4083960884, 14.4084624329, 14.4085287744, 14.4085951128, 14.4086614482, 14.4087277805, 14.4087941098, 14.408860436, 14.4089267592, 14.4089930793, 14.4090593964, 14.4091257105, 14.4091920215, 14.4092583294, 14.4093246343, 14.4093909361, 14.4094572349, 14.4095235307, 14.4095898234, 14.4096561131, 14.4097223997, 14.4097886832, 14.4098549638, 14.4099212412, 14.4099875157, 14.4100537871, 14.4101200554, 14.4101863207, 14.410252583, 14.4103188422, 14.4103850984, 14.4104513515, 14.4105176016, 14.4105838486, 14.4106500926, 14.4107163336, 14.4107825715, 14.4108488064, 14.4109150382, 14.410981267, 14.4110474928, 14.4111137155, 14.4111799352, 14.4112461518, 14.4113123654, 14.411378576, 14.4114447835, 14.411510988, 14.4115771895, 14.4116433879, 14.4117095832, 14.4117757756, 14.4118419649, 14.4119081511, 14.4119743344, 14.4120405146, 14.4121066917, 14.4121728658, 14.4122390369, 14.412305205, 14.41237137, 14.4124375319, 14.4125036909, 14.4125698468, 14.4126359997, 14.4127021495, 14.4127682963, 14.4128344401, 14.4129005809, 14.4129667186, 14.4130328533, 14.4130989849, 14.4131651135, 14.4132312391, 14.4132973617, 14.4133634812, 14.4134295977, 14.4134957112, 14.4135618216, 14.413627929, 14.4136940334, 14.4137601348, 14.4138262331, 14.4138923284, 14.4139584206, 14.4140245099, 14.4140905961, 14.4141566793, 14.4142227594, 14.4142888366, 14.4143549107, 14.4144209817, 14.4144870498, 14.4145531148, 14.4146191768, 14.4146852358, 14.4147512918, 14.4148173447, 14.4148833946, 14.4149494415, 14.4150154853, 14.4150815262, 14.415147564, 14.4152135988, 14.4152796305, 14.4153456593, 14.415411685, 14.4154777077, 14.4155437274, 14.415609744, 14.4156757577, 14.4157417683, 14.4158077759, 14.4158737805, 14.415939782, 14.4160057806, 14.4160717761, 14.4161377686, 14.4162037581, 14.4162697445, 14.416335728, 14.4164017084, 14.4164676858, 14.4165336602, 14.4165996316, 14.4166655999, 14.4167315653, 14.4167975276, 14.4168634869, 14.4169294432, 14.4169953965, 14.4170613468, 14.417127294, 14.4171932382, 14.4172591795, 14.4173251177, 14.4173910529, 14.4174569851, 14.4175229142, 14.4175888404, 14.4176547635, 14.4177206837, 14.4177866008, 14.4178525149, 14.417918426, 14.4179843341, 14.4180502391, 14.4181161412, 14.4181820403, 14.4182479363, 14.4183138293, 14.4183797194, 14.4184456064, 14.4185114904, 14.4185773714, 14.4186432494, 14.4187091244, 14.4187749963, 14.4188408653, 14.4189067313, 14.4189725942, 14.4190384542, 14.4191043111, 14.419170165, 14.419236016, 14.4193018639, 14.4193677088, 14.4194335507, 14.4194993896, 14.4195652255, 14.4196310584, 14.4196968883, 14.4197627152, 14.4198285391, 14.41989436, 14.4199601778, 14.4200259927, 14.4200918046, 14.4201576135, 14.4202234193, 14.4202892222, 14.4203550221, 14.420420819, 14.4204866128, 14.4205524037, 14.4206181916, 14.4206839764, 14.4207497583, 14.4208155372, 14.420881313, 14.4209470859, 14.4210128558, 14.4210786227, 14.4211443865, 14.4212101474, 14.4212759053, 14.4213416602, 14.4214074121, 14.421473161, 14.4215389068, 14.4216046497, 14.4216703897, 14.4217361266, 14.4218018605, 14.4218675914, 14.4219333193, 14.4219990442, 14.4220647662, 14.4221304851, 14.4221962011, 14.422261914, 14.422327624, 14.4223933309, 14.4224590349, 14.4225247359, 14.4225904339, 14.4226561289, 14.4227218209, 14.4227875099, 14.4228531959, 14.422918879, 14.422984559, 14.4230502361, 14.4231159101, 14.4231815812, 14.4232472493, 14.4233129144, 14.4233785765, 14.4234442356, 14.4235098918, 14.4235755449, 14.4236411951, 14.4237068422, 14.4237724864, 14.4238381276, 14.4239037658, 14.4239694011, 14.4240350333, 14.4241006626, 14.4241662888, 14.4242319121, 14.4242975324, 14.4243631497, 14.424428764, 14.4244943754, 14.4245599837, 14.4246255891, 14.4246911915, 14.4247567909, 14.4248223874, 14.4248879808, 14.4249535713, 14.4250191587, 14.4250847432, 14.4251503248, 14.4252159033, 14.4252814789, 14.4253470514, 14.425412621, 14.4254781876, 14.4255437513, 14.4256093119, 14.4256748696, 14.4257404243, 14.425805976, 14.4258715248, 14.4259370705, 14.4260026133, 14.4260681531, 14.42613369, 14.4261992238, 14.4262647547, 14.4263302826, 14.4263958075, 14.4264613295, 14.4265268485, 14.4265923645, 14.4266578775, 14.4267233875, 14.4267888946, 14.4268543987, 14.4269198998, 14.426985398, 14.4270508932, 14.4271163854, 14.4271818746, 14.4272473608, 14.4273128441, 14.4273783245, 14.4274438018, 14.4275092762, 14.4275747476, 14.427640216, 14.4277056815, 14.4277711439, 14.4278366035, 14.42790206, 14.4279675136, 14.4280329642, 14.4280984118, 14.4281638565, 14.4282292982, 14.4282947369, 14.4283601727, 14.4284256055, 14.4284910353, 14.4285564622, 14.4286218861, 14.428687307, 14.428752725, 14.42881814, 14.428883552, 14.4289489611, 14.4290143672, 14.4290797703, 14.4291451705, 14.4292105677, 14.4292759619, 14.4293413532, 14.4294067415, 14.4294721269, 14.4295375092, 14.4296028887, 14.4296682651, 14.4297336386, 14.4297990092, 14.4298643767, 14.4299297414, 14.429995103, 14.4300604617, 14.4301258174, 14.4301911702, 14.43025652, 14.4303218668, 14.4303872107, 14.4304525517, 14.4305178896, 14.4305832246, 14.4306485567, 14.4307138858, 14.4307792119, 14.4308445351, 14.4309098553, 14.4309751726, 14.4310404869, 14.4311057982, 14.4311711066, 14.4312364121, 14.4313017146, 14.4313670141, 14.4314323106, 14.4314976043, 14.4315628949, 14.4316281826, 14.4316934674, 14.4317587492, 14.431824028, 14.4318893039, 14.4319545768, 14.4320198468, 14.4320851138, 14.4321503779, 14.432215639, 14.4322808972, 14.4323461524, 14.4324114047, 14.432476654, 14.4325419004, 14.4326071438, 14.4326723843, 14.4327376218, 14.4328028564, 14.432868088, 14.4329333166, 14.4329985424, 14.4330637651, 14.4331289849, 14.4331942018, 14.4332594157, 14.4333246267, 14.4333898347, 14.4334550398, 14.433520242, 14.4335854412, 14.4336506374, 14.4337158307, 14.433781021, 14.4338462084, 14.4339113929, 14.4339765744, 14.434041753, 14.4341069286, 14.4341721013, 14.434237271, 14.4343024378, 14.4343676017, 14.4344327626, 14.4344979205, 14.4345630756, 14.4346282276, 14.4346933768, 14.434758523, 14.4348236662, 14.4348888065, 14.4349539439, 14.4350190783, 14.4350842098, 14.4351493384, 14.435214464, 14.4352795866, 14.4353447064, 14.4354098232, 14.435474937, 14.4355400479, 14.4356051559, 14.4356702609, 14.435735363, 14.4358004622, 14.4358655584, 14.4359306517, 14.4359957421, 14.4360608295, 14.4361259139, 14.4361909955, 14.4362560741, 14.4363211498, 14.4363862225, 14.4364512923, 14.4365163592, 14.4365814231, 14.4366464841, 14.4367115421, 14.4367765973, 14.4368416495, 14.4369066987, 14.436971745, 14.4370367884, 14.4371018289, 14.4371668664, 14.437231901, 14.4372969327, 14.4373619614, 14.4374269873, 14.4374920101, 14.4375570301, 14.4376220471, 14.4376870612, 14.4377520723, 14.4378170805, 14.4378820858, 14.4379470882, 14.4380120877, 14.4380770842, 14.4381420777, 14.4382070684, 14.4382720561, 14.4383370409, 14.4384020228, 14.4384670017, 14.4385319778, 14.4385969509, 14.438661921, 14.4387268883, 14.4387918526, 14.438856814, 14.4389217724, 14.438986728, 14.4390516806, 14.4391166303, 14.4391815771, 14.4392465209, 14.4393114618, 14.4393763998, 14.4394413349, 14.439506267, 14.4395711963, 14.4396361226, 14.439701046, 14.4397659664, 14.439830884, 14.4398957986, 14.4399607103, 14.4400256191, 14.440090525, 14.4401554279, 14.4402203279, 14.440285225, 14.4403501192, 14.4404150105, 14.4404798988, 14.4405447842, 14.4406096667, 14.4406745463, 14.440739423, 14.4408042968, 14.4408691676, 14.4409340355, 14.4409989005, 14.4410637626, 14.4411286218, 14.4411934781, 14.4412583314, 14.4413231818, 14.4413880293, 14.4414528739, 14.4415177156, 14.4415825544, 14.4416473903, 14.4417122232, 14.4417770532, 14.4418418803, 14.4419067045, 14.4419715258, 14.4420363442, 14.4421011597, 14.4421659722, 14.4422307819, 14.4422955886, 14.4423603924, 14.4424251933, 14.4424899913, 14.4425547864, 14.4426195786, 14.4426843679, 14.4427491542, 14.4428139377, 14.4428787182, 14.4429434958, 14.4430082706, 14.4430730424, 14.4431378113, 14.4432025773, 14.4432673404, 14.4433321006, 14.4433968579, 14.4434616122, 14.4435263637, 14.4435911123, 14.4436558579, 14.4437206007, 14.4437853405, 14.4438500774, 14.4439148115, 14.4439795426, 14.4440442708, 14.4441089961, 14.4441737186, 14.4442384381, 14.4443031547, 14.4443678684, 14.4444325792, 14.4444972871, 14.4445619921, 14.4446266942, 14.4446913934, 14.4447560897, 14.4448207831, 14.4448854736, 14.4449501612, 14.4450148459, 14.4450795277, 14.4451442066, 14.4452088825, 14.4452735556, 14.4453382258, 14.4454028931, 14.4454675575, 14.445532219, 14.4455968776, 14.4456615333, 14.4457261861, 14.445790836, 14.4458554831, 14.4459201272, 14.4459847684, 14.4460494067, 14.4461140421, 14.4461786747, 14.4462433043, 14.4463079311, 14.4463725549, 14.4464371758, 14.4465017939, 14.4465664091, 14.4466310213, 14.4466956307, 14.4467602372, 14.4468248408, 14.4468894415, 14.4469540393, 14.4470186342, 14.4470832262, 14.4471478153, 14.4472124016, 14.4472769849, 14.4473415654, 14.4474061429, 14.4474707176, 14.4475352894, 14.4475998583, 14.4476644243, 14.4477289874, 14.4477935476, 14.447858105, 14.4479226594, 14.447987211, 14.4480517596, 14.4481163054, 14.4481808483, 14.4482453883, 14.4483099254, 14.4483744597, 14.448438991, 14.4485035195, 14.448568045, 14.4486325677, 14.4486970875, 14.4487616045, 14.4488261185, 14.4488906296, 14.4489551379, 14.4490196433, 14.4490841458, 14.4491486454, 14.4492131421, 14.4492776359, 14.4493421269, 14.449406615, 14.4494711002, 14.4495355825, 14.4496000619, 14.4496645385, 14.4497290121, 14.4497934829, 14.4498579508, 14.4499224159, 14.449986878, 14.4500513373, 14.4501157937, 14.4501802472, 14.4502446978, 14.4503091455, 14.4503735904, 14.4504380324, 14.4505024715, 14.4505669077, 14.4506313411, 14.4506957716, 14.4507601992, 14.4508246239, 14.4508890457, 14.4509534647, 14.4510178808, 14.451082294, 14.4511467044, 14.4512111118, 14.4512755164, 14.4513399181, 14.451404317, 14.4514687129, 14.451533106, 14.4515974963, 14.4516618836, 14.4517262681, 14.4517906497, 14.4518550284, 14.4519194043, 14.4519837772, 14.4520481473, 14.4521125146, 14.4521768789, 14.4522412404, 14.4523055991, 14.4523699548, 14.4524343077, 14.4524986577, 14.4525630048, 14.4526273491, 14.4526916905, 14.452756029, 14.4528203647, 14.4528846975, 14.4529490274, 14.4530133545, 14.4530776787, 14.453142, 14.4532063184, 14.453270634, 14.4533349467, 14.4533992566, 14.4534635636, 14.4535278677, 14.4535921689, 14.4536564673, 14.4537207628, 14.4537850555, 14.4538493453, 14.4539136322, 14.4539779163, 14.4540421975, 14.4541064758, 14.4541707513, 14.4542350239, 14.4542992936, 14.4543635605, 14.4544278245, 14.4544920857, 14.454556344, 14.4546205994, 14.454684852, 14.4547491017, 14.4548133485, 14.4548775925, 14.4549418336, 14.4550060719, 14.4550703073, 14.4551345398, 14.4551987695, 14.4552629963, 14.4553272203, 14.4553914414, 14.4554556597, 14.455519875, 14.4555840876, 14.4556482973, 14.4557125041, 14.455776708, 14.4558409091, 14.4559051074, 14.4559693028, 14.4560334953, 14.456097685, 14.4561618718, 14.4562260557, 14.4562902369, 14.4563544151, 14.4564185905, 14.4564827631, 14.4565469327, 14.4566110996, 14.4566752636, 14.4567394247, 14.456803583, 14.4568677384, 14.4569318909, 14.4569960407, 14.4570601875, 14.4571243315, 14.4571884727, 14.457252611, 14.4573167465, 14.4573808791, 14.4574450088, 14.4575091357, 14.4575732598, 14.457637381, 14.4577014993, 14.4577656149, 14.4578297275, 14.4578938373, 14.4579579443, 14.4580220484, 14.4580861496, 14.4581502481, 14.4582143436, 14.4582784363, 14.4583425262, 14.4584066132, 14.4584706974, 14.4585347787, 14.4585988572, 14.4586629329, 14.4587270057, 14.4587910756, 14.4588551427, 14.458919207, 14.4589832684, 14.4590473269, 14.4591113827, 14.4591754356, 14.4592394856, 14.4593035328, 14.4593675771, 14.4594316186, 14.4594956573, 14.4595596931, 14.4596237261, 14.4596877562, 14.4597517835, 14.459815808, 14.4598798296, 14.4599438484, 14.4600078643, 14.4600718774, 14.4601358876, 14.4601998951, 14.4602638996, 14.4603279014, 14.4603919003, 14.4604558963, 14.4605198895, 14.4605838799, 14.4606478674, 14.4607118521, 14.460775834, 14.460839813, 14.4609037892, 14.4609677626, 14.4610317331, 14.4610957008, 14.4611596656, 14.4612236276, 14.4612875868, 14.4613515431, 14.4614154966, 14.4614794473, 14.4615433951, 14.4616073401, 14.4616712823, 14.4617352216, 14.4617991581, 14.4618630918, 14.4619270226, 14.4619909506, 14.4620548757, 14.4621187981, 14.4621827176, 14.4622466342, 14.4623105481, 14.4623744591, 14.4624383673, 14.4625022726, 14.4625661751, 14.4626300748, 14.4626939716, 14.4627578657, 14.4628217569, 14.4628856452, 14.4629495307, 14.4630134134, 14.4630772933, 14.4631411704, 14.4632050446, 14.463268916, 14.4633327845, 14.4633966503, 14.4634605132, 14.4635243733, 14.4635882305, 14.463652085, 14.4637159366, 14.4637797853, 14.4638436313, 14.4639074744, 14.4639713147, 14.4640351522, 14.4640989868, 14.4641628187, 14.4642266477, 14.4642904739, 14.4643542972, 14.4644181177, 14.4644819354, 14.4645457503, 14.4646095624, 14.4646733716, 14.4647371781, 14.4648009817, 14.4648647824, 14.4649285804, 14.4649923755, 14.4650561678, 14.4651199573, 14.465183744, 14.4652475278, 14.4653113089, 14.4653750871, 14.4654388625, 14.4655026351, 14.4655664048, 14.4656301717, 14.4656939359, 14.4657576972, 14.4658214556, 14.4658852113, 14.4659489642, 14.4660127142, 14.4660764614, 14.4661402058, 14.4662039474, 14.4662676861, 14.4663314221, 14.4663951552, 14.4664588855, 14.466522613, 14.4665863377, 14.4666500596, 14.4667137786, 14.4667774949, 14.4668412083, 14.4669049189, 14.4669686267, 14.4670323317, 14.4670960339, 14.4671597333, 14.4672234298, 14.4672871236, 14.4673508145, 14.4674145026, 14.4674781879, 14.4675418704, 14.4676055501, 14.467669227, 14.467732901, 14.4677965723, 14.4678602407, 14.4679239063, 14.4679875692, 14.4680512292, 14.4681148864, 14.4681785408, 14.4682421924, 14.4683058411, 14.4683694871, 14.4684331303, 14.4684967706, 14.4685604082, 14.4686240429, 14.4686876749, 14.468751304, 14.4688149303, 14.4688785538, 14.4689421745, 14.4690057924, 14.4690694075, 14.4691330198, 14.4691966293, 14.469260236, 14.4693238399, 14.469387441, 14.4694510392, 14.4695146347, 14.4695782274, 14.4696418172, 14.4697054043, 14.4697689886, 14.46983257, 14.4698961487, 14.4699597245, 14.4700232976, 14.4700868678, 14.4701504353, 14.4702139999, 14.4702775618, 14.4703411208, 14.4704046771, 14.4704682305, 14.4705317812, 14.470595329, 14.4706588741, 14.4707224163, 14.4707859558, 14.4708494924, 14.4709130263, 14.4709765573, 14.4710400856, 14.4711036111, 14.4711671337, 14.4712306536, 14.4712941707, 14.4713576849, 14.4714211964, 14.4714847051, 14.471548211, 14.4716117141, 14.4716752144, 14.4717387119, 14.4718022066, 14.4718656985, 14.4719291876, 14.471992674, 14.4720561575, 14.4721196382, 14.4721831162, 14.4722465913, 14.4723100637, 14.4723735333, 14.4724370001, 14.472500464, 14.4725639252, 14.4726273836, 14.4726908392, 14.4727542921, 14.4728177421, 14.4728811893, 14.4729446338, 14.4730080754, 14.4730715143, 14.4731349504, 14.4731983837, 14.4732618142, 14.4733252419, 14.4733886668, 14.473452089, 14.4735155083, 14.4735789249, 14.4736423386, 14.4737057496, 14.4737691578, 14.4738325632, 14.4738959659, 14.4739593657, 14.4740227627, 14.474086157, 14.4741495485, 14.4742129372, 14.4742763231, 14.4743397062, 14.4744030866, 14.4744664641, 14.4745298389, 14.4745932109, 14.4746565801, 14.4747199465, 14.4747833102, 14.474846671, 14.4749100291, 14.4749733844, 14.4750367369, 14.4751000866, 14.4751634336, 14.4752267777, 14.4752901191, 14.4753534577, 14.4754167936, 14.4754801266, 14.4755434569, 14.4756067843, 14.475670109, 14.475733431, 14.4757967501, 14.4758600665, 14.4759233801, 14.4759866909, 14.4760499989, 14.4761133042, 14.4761766066, 14.4762399063, 14.4763032032, 14.4763664974, 14.4764297888, 14.4764930773, 14.4765563632, 14.4766196462, 14.4766829265, 14.4767462039, 14.4768094787, 14.4768727506, 14.4769360197, 14.4769992861, 14.4770625497, 14.4771258106, 14.4771890686, 14.4772523239, 14.4773155765, 14.4773788262, 14.4774420732, 14.4775053174, 14.4775685588, 14.4776317975, 14.4776950333, 14.4777582664, 14.4778214968, 14.4778847244, 14.4779479491, 14.4780111712, 14.4780743904, 14.4781376069, 14.4782008206, 14.4782640316, 14.4783272398, 14.4783904452, 14.4784536478, 14.4785168477, 14.4785800448, 14.4786432391, 14.4787064307, 14.4787696195, 14.4788328055, 14.4788959888, 14.4789591693, 14.479022347, 14.479085522, 14.4791486942, 14.4792118636, 14.4792750303, 14.4793381941, 14.4794013553, 14.4794645137, 14.4795276693, 14.4795908221, 14.4796539722, 14.4797171195, 14.479780264, 14.4798434058, 14.4799065448, 14.4799696811, 14.4800328146, 14.4800959453, 14.4801590733, 14.4802221985, 14.4802853209, 14.4803484406, 14.4804115575, 14.4804746717, 14.4805377831, 14.4806008917, 14.4806639976, 14.4807271007, 14.4807902011, 14.4808532987, 14.4809163935, 14.4809794856, 14.4810425749, 14.4811056615, 14.4811687453, 14.4812318263, 14.4812949046, 14.4813579802, 14.4814210529, 14.4814841229, 14.4815471902, 14.4816102547, 14.4816733164, 14.4817363754, 14.4817994317, 14.4818624851, 14.4819255359, 14.4819885838, 14.482051629, 14.4821146715, 14.4821777112, 14.4822407481, 14.4823037823, 14.4823668138, 14.4824298424, 14.4824928684, 14.4825558915, 14.482618912, 14.4826819296, 14.4827449446, 14.4828079567, 14.4828709661, 14.4829339728, 14.4829969767, 14.4830599779, 14.4831229763, 14.4831859719, 14.4832489648, 14.483311955, 14.4833749424, 14.4834379271, 14.483500909, 14.4835638881, 14.4836268645, 14.4836898382, 14.4837528091, 14.4838157773, 14.4838787427, 14.4839417053, 14.4840046653, 14.4840676224, 14.4841305769, 14.4841935285, 14.4842564775, 14.4843194236, 14.4843823671, 14.4844453078, 14.4845082457, 14.4845711809, 14.4846341134, 14.4846970431, 14.48475997, 14.4848228943, 14.4848858157, 14.4849487345, 14.4850116505, 14.4850745637, 14.4851374742, 14.485200382, 14.485263287, 14.4853261892, 14.4853890888, 14.4854519856, 14.4855148796, 14.4855777709, 14.4856406595, 14.4857035453, 14.4857664284, 14.4858293087, 14.4858921863, 14.4859550612, 14.4860179333, 14.4860808027, 14.4861436693, 14.4862065332, 14.4862693943, 14.4863322528, 14.4863951085, 14.4864579614, 14.4865208116, 14.4865836591, 14.4866465038, 14.4867093458, 14.486772185, 14.4868350216, 14.4868978553, 14.4869606864, 14.4870235147, 14.4870863403, 14.4871491631, 14.4872119832, 14.4872748006, 14.4873376152, 14.4874004271, 14.4874632363, 14.4875260427, 14.4875888464, 14.4876516473, 14.4877144456, 14.4877772411, 14.4878400338, 14.4879028238, 14.4879656111, 14.4880283957, 14.4880911775, 14.4881539566, 14.488216733, 14.4882795066, 14.4883422775, 14.4884050457, 14.4884678111, 14.4885305739, 14.4885933338, 14.4886560911, 14.4887188456, 14.4887815974, 14.4888443465, 14.4889070928, 14.4889698364, 14.4890325773, 14.4890953154, 14.4891580508, 14.4892207835, 14.4892835135, 14.4893462407, 14.4894089652, 14.489471687, 14.4895344061, 14.4895971224, 14.489659836, 14.4897225469, 14.489785255, 14.4898479604, 14.4899106631, 14.4899733631, 14.4900360604, 14.4900987549, 14.4901614467, 14.4902241358, 14.4902868221, 14.4903495057, 14.4904121866, 14.4904748648, 14.4905375403, 14.490600213, 14.490662883, 14.4907255503, 14.4907882149, 14.4908508767, 14.4909135359, 14.4909761923, 14.491038846, 14.4911014969, 14.4911641452, 14.4912267907, 14.4912894335, 14.4913520736, 14.4914147109, 14.4914773456, 14.4915399775, 14.4916026067, 14.4916652332, 14.4917278569, 14.491790478, 14.4918530963, 14.4919157119, 14.4919783248, 14.492040935, 14.4921035425, 14.4921661472, 14.4922287493, 14.4922913486, 14.4923539452, 14.492416539, 14.4924791302, 14.4925417187, 14.4926043044, 14.4926668874, 14.4927294677, 14.4927920453, 14.4928546202, 14.4929171923, 14.4929797618, 14.4930423285, 14.4931048925, 14.4931674538, 14.4932300124, 14.4932925683, 14.4933551215, 14.493417672, 14.4934802197, 14.4935427647, 14.4936053071, 14.4936678467, 14.4937303836, 14.4937929178, 14.4938554492, 14.493917978, 14.4939805041, 14.4940430274, 14.4941055481, 14.494168066, 14.4942305812, 14.4942930937, 14.4943556035, 14.4944181106, 14.494480615, 14.4945431167, 14.4946056157, 14.4946681119, 14.4947306055, 14.4947930963, 14.4948555845, 14.4949180699, 14.4949805527, 14.4950430327, 14.49510551, 14.4951679846, 14.4952304565, 14.4952929257, 14.4953553922, 14.495417856, 14.4954803171, 14.4955427755, 14.4956052312, 14.4956676842, 14.4957301344, 14.495792582, 14.4958550269, 14.4959174691, 14.4959799085, 14.4960423453, 14.4961047793, 14.4961672107, 14.4962296394, 14.4962920653, 14.4963544886, 14.4964169091, 14.496479327, 14.4965417421, 14.4966041546, 14.4966665643, 14.4967289714, 14.4967913757, 14.4968537774, 14.4969161763, 14.4969785726, 14.4970409662, 14.497103357, 14.4971657452, 14.4972281306, 14.4972905134, 14.4973528935, 14.4974152708, 14.4974776455, 14.4975400175, 14.4976023868, 14.4976647534, 14.4977271173, 14.4977894785, 14.497851837, 14.4979141928, 14.4979765459, 14.4980388963, 14.498101244, 14.498163589, 14.4982259313, 14.498288271, 14.4983506079, 14.4984129422, 14.4984752737, 14.4985376026, 14.4985999288, 14.4986622522, 14.498724573, 14.4987868911, 14.4988492065, 14.4989115192, 14.4989738293, 14.4990361366, 14.4990984412, 14.4991607432, 14.4992230424, 14.499285339, 14.4993476329, 14.4994099241, 14.4994722126, 14.4995344984, 14.4995967815, 14.4996590619, 14.4997213397, 14.4997836147, 14.4998458871, 14.4999081568, 14.4999704238, 14.5000326881, 14.5000949497, 14.5001572086, 14.5002194648, 14.5002817184, 14.5003439693, 14.5004062175, 14.500468463, 14.5005307058, 14.5005929459, 14.5006551833, 14.5007174181, 14.5007796502, 14.5008418796, 14.5009041063, 14.5009663303, 14.5010285516, 14.5010907703, 14.5011529862, 14.5012151995, 14.5012774101, 14.5013396181, 14.5014018233, 14.5014640259, 14.5015262257, 14.5015884229, 14.5016506174, 14.5017128093, 14.5017749984, 14.5018371849, 14.5018993687, 14.5019615498, 14.5020237282, 14.502085904, 14.5021480771, 14.5022102474, 14.5022724152, 14.5023345802, 14.5023967426, 14.5024589022, 14.5025210592, 14.5025832136, 14.5026453652, 14.5027075142, 14.5027696605, 14.5028318041, 14.502893945, 14.5029560833, 14.5030182188, 14.5030803518, 14.503142482, 14.5032046095, 14.5032667344, 14.5033288566, 14.5033909762, 14.503453093, 14.5035152072, 14.5035773187, 14.5036394275, 14.5037015337, 14.5037636372, 14.503825738, 14.5038878361, 14.5039499316, 14.5040120244, 14.5040741145, 14.504136202, 14.5041982867, 14.5042603689, 14.5043224483, 14.5043845251, 14.5044465991, 14.5045086706, 14.5045707393, 14.5046328054, 14.5046948688, 14.5047569296, 14.5048189876, 14.504881043, 14.5049430958, 14.5050051458, 14.5050671932, 14.505129238, 14.50519128, 14.5052533194, 14.5053153561, 14.5053773902, 14.5054394216, 14.5055014503, 14.5055634764, 14.5056254997, 14.5056875205, 14.5057495385, 14.5058115539, 14.5058735666, 14.5059355767, 14.5059975841, 14.5060595888, 14.5061215909, 14.5061835903, 14.506245587, 14.5063075811, 14.5063695725, 14.5064315613, 14.5064935473, 14.5065555308, 14.5066175115, 14.5066794896, 14.506741465, 14.5068034378, 14.5068654079, 14.5069273753, 14.5069893401, 14.5070513022, 14.5071132617, 14.5071752185, 14.5072371726, 14.5072991241, 14.5073610729, 14.5074230191, 14.5074849626, 14.5075469034, 14.5076088416, 14.5076707771, 14.50773271, 14.5077946402, 14.5078565677, 14.5079184926, 14.5079804149, 14.5080423344, 14.5081042513, 14.5081661656, 14.5082280772, 14.5082899861, 14.5083518924, 14.5084137961, 14.508475697, 14.5085375953, 14.508599491, 14.508661384, 14.5087232744, 14.5087851621, 14.5088470471, 14.5089089295, 14.5089708092, 14.5090326863, 14.5090945607, 14.5091564325, 14.5092183016, 14.5092801681, 14.5093420319, 14.5094038931, 14.5094657516, 14.5095276074, 14.5095894606, 14.5096513112, 14.5097131591, 14.5097750043, 14.5098368469, 14.5098986869, 14.5099605242, 14.5100223588, 14.5100841908, 14.5101460202, 14.5102078469, 14.5102696709, 14.5103314923, 14.510393311, 14.5104551271, 14.5105169406, 14.5105787514, 14.5106405596, 14.5107023651, 14.5107641679, 14.5108259681, 14.5108877657, 14.5109495606, 14.5110113529, 14.5110731425, 14.5111349295, 14.5111967138, 14.5112584955, 14.5113202745, 14.5113820509, 14.5114438247, 14.5115055958, 14.5115673643, 14.5116291301, 14.5116908932, 14.5117526538, 14.5118144117, 14.5118761669, 14.5119379195, 14.5119996694, 14.5120614168, 14.5121231614, 14.5121849034, 14.5122466428, 14.5123083796, 14.5123701137, 14.5124318451, 14.5124935739, 14.5125553001, 14.5126170237, 14.5126787445, 14.5127404628, 14.5128021784, 14.5128638914, 14.5129256017, 14.5129873094, 14.5130490145, 14.5131107169, 14.5131724167, 14.5132341138, 14.5132958083, 14.5133575002, 14.5134191894, 14.513480876, 14.5135425599, 14.5136042412, 14.5136659199, 14.513727596, 14.5137892694, 14.5138509401, 14.5139126082, 14.5139742737, 14.5140359366, 14.5140975968, 14.5141592544, 14.5142209094, 14.5142825617, 14.5143442114, 14.5144058584, 14.5144675028, 14.5145291446, 14.5145907837, 14.5146524203, 14.5147140541, 14.5147756854, 14.514837314, 14.51489894, 14.5149605633, 14.515022184, 14.5150838021, 14.5151454176, 14.5152070304, 14.5152686406, 14.5153302482, 14.5153918531, 14.5154534554, 14.5155150551, 14.5155766521, 14.5156382465, 14.5156998383, 14.5157614274, 14.515823014, 14.5158845978, 14.5159461791, 14.5160077577, 14.5160693338, 14.5161309071, 14.5161924779, 14.516254046, 14.5163156115, 14.5163771744, 14.5164387346, 14.5165002922, 14.5165618472, 14.5166233996, 14.5166849493, 14.5167464964, 14.5168080409, 14.5168695828, 14.516931122, 14.5169926586, 14.5170541926, 14.517115724, 14.5171772527, 14.5172387788, 14.5173003023, 14.5173618232, 14.5174233414, 14.517484857, 14.51754637, 14.5176078804, 14.5176693881, 14.5177308933, 14.5177923958, 14.5178538957, 14.5179153929, 14.5179768876, 14.5180383796, 14.518099869, 14.5181613558, 14.5182228399, 14.5182843215, 14.5183458004, 14.5184072767, 14.5184687504, 14.5185302214, 14.5185916899, 14.5186531557, 14.5187146189, 14.5187760795, 14.5188375374, 14.5188989928, 14.5189604455, 14.5190218956, 14.5190833431, 14.519144788, 14.5192062303, 14.5192676699, 14.5193291069, 14.5193905413, 14.5194519731, 14.5195134023, 14.5195748289, 14.5196362528, 14.5196976742, 14.5197590929, 14.519820509, 14.5198819225, 14.5199433334, 14.5200047416, 14.5200661473, 14.5201275503, 14.5201889507, 14.5202503486, 14.5203117438, 14.5203731363, 14.5204345263, 14.5204959137, 14.5205572984, 14.5206186806, 14.5206800601, 14.520741437, 14.5208028113, 14.520864183, 14.5209255521, 14.5209869185, 14.5210482824, 14.5211096437, 14.5211710023, 14.5212323583, 14.5212937117, 14.5213550626, 14.5214164108, 14.5214777564, 14.5215390993, 14.5216004397, 14.5216617775, 14.5217231127, 14.5217844452, 14.5218457752, 14.5219071025, 14.5219684272, 14.5220297494, 14.5220910689, 14.5221523858, 14.5222137001, 14.5222750118, 14.5223363209, 14.5223976274, 14.5224589313, 14.5225202326, 14.5225815313, 14.5226428273, 14.5227041208, 14.5227654117, 14.5228266999, 14.5228879856, 14.5229492686, 14.5230105491, 14.5230718269, 14.5231331022, 14.5231943748, 14.5232556449, 14.5233169123, 14.5233781772, 14.5234394394, 14.523500699, 14.5235619561, 14.5236232105, 14.5236844623, 14.5237457116, 14.5238069582, 14.5238682022, 14.5239294437, 14.5239906825, 14.5240519187, 14.5241131524, 14.5241743834, 14.5242356118, 14.5242968377, 14.5243580609, 14.5244192815, 14.5244804996, 14.524541715, 14.5246029279, 14.5246641381, 14.5247253458, 14.5247865509, 14.5248477533, 14.5249089532, 14.5249701504, 14.5250313451, 14.5250925372, 14.5251537267, 14.5252149136, 14.5252760979, 14.5253372796, 14.5253984587, 14.5254596352, 14.5255208091, 14.5255819804, 14.5256431491, 14.5257043153, 14.5257654788, 14.5258266398, 14.5258877981, 14.5259489539, 14.5260101071, 14.5260712576, 14.5261324056, 14.526193551, 14.5262546938, 14.526315834, 14.5263769717, 14.5264381067, 14.5264992391, 14.526560369, 14.5266214962, 14.5266826209, 14.526743743, 14.5268048625, 14.5268659794, 14.5269270937, 14.5269882054, 14.5270493146, 14.5271104211, 14.5271715251, 14.5272326264, 14.5272937252, 14.5273548214, 14.527415915, 14.5274770061, 14.5275380945, 14.5275991803, 14.5276602636, 14.5277213443, 14.5277824224, 14.5278434979, 14.5279045708, 14.5279656411, 14.5280267089, 14.528087774, 14.5281488366, 14.5282098966, 14.528270954, 14.5283320089, 14.5283930611, 14.5284541108, 14.5285151578, 14.5285762023, 14.5286372442, 14.5286982836, 14.5287593203, 14.5288203545, 14.5288813861, 14.5289424151, 14.5290034415, 14.5290644653, 14.5291254866, 14.5291865053, 14.5292475213, 14.5293085349, 14.5293695458, 14.5294305541, 14.5294915599, 14.5295525631, 14.5296135637, 14.5296745618, 14.5297355572, 14.5297965501, 14.5298575404, 14.5299185281, 14.5299795133, 14.5300404958, 14.5301014758, 14.5301624532, 14.5302234281, 14.5302844003, 14.53034537, 14.5304063371, 14.5304673016, 14.5305282636, 14.530589223, 14.5306501798, 14.530711134, 14.5307720856, 14.5308330347, 14.5308939812, 14.5309549251, 14.5310158665, 14.5310768052, 14.5311377414, 14.5311986751, 14.5312596061, 14.5313205346, 14.5313814605, 14.5314423839, 14.5315033046, 14.5315642228, 14.5316251384, 14.5316860515, 14.5317469619, 14.5318078698, 14.5318687752, 14.5319296779, 14.5319905781, 14.5320514757, 14.5321123708, 14.5321732633, 14.5322341532, 14.5322950405, 14.5323559253, 14.5324168075, 14.5324776871, 14.5325385642, 14.5325994387, 14.5326603106, 14.53272118, 14.5327820467, 14.532842911, 14.5329037726, 14.5329646317, 14.5330254882, 14.5330863422, 14.5331471936, 14.5332080424, 14.5332688886, 14.5333297323, 14.5333905734, 14.533451412, 14.533512248, 14.5335730814, 14.5336339122, 14.5336947405, 14.5337555663, 14.5338163894, 14.53387721, 14.5339380281, 14.5339988435, 14.5340596565, 14.5341204668, 14.5341812746, 14.5342420798, 14.5343028825, 14.5343636825, 14.5344244801, 14.5344852751, 14.5345460675, 14.5346068573, 14.5346676446, 14.5347284293, 14.5347892115, 14.5348499911, 14.5349107681, 14.5349715426, 14.5350323145, 14.5350930839, 14.5351538507, 14.5352146149, 14.5352753766, 14.5353361357, 14.5353968923, 14.5354576463, 14.5355183978, 14.5355791467, 14.535639893, 14.5357006368, 14.535761378, 14.5358221166, 14.5358828528, 14.5359435863, 14.5360043173, 14.5360650457, 14.5361257716, 14.5361864949, 14.5362472157, 14.5363079339, 14.5363686496, 14.5364293627, 14.5364900732, 14.5365507812, 14.5366114866, 14.5366721895, 14.5367328898, 14.5367935876, 14.5368542828, 14.5369149755, 14.5369756656, 14.5370363532, 14.5370970382, 14.5371577206, 14.5372184005, 14.5372790779, 14.5373397527, 14.5374004249, 14.5374610946, 14.5375217618, 14.5375824264, 14.5376430884, 14.5377037479, 14.5377644048, 14.5378250592, 14.5378857111, 14.5379463604, 14.5380070071, 14.5380676513, 14.538128293, 14.5381889321, 14.5382495686, 14.5383102026, 14.538370834, 14.538431463, 14.5384920893, 14.5385527131, 14.5386133344, 14.5386739531, 14.5387345692, 14.5387951829, 14.5388557939, 14.5389164025, 14.5389770084, 14.5390376119, 14.5390982128, 14.5391588111, 14.5392194069, 14.5392800002, 14.5393405909, 14.539401179, 14.5394617646, 14.5395223477, 14.5395829283, 14.5396435062, 14.5397040817, 14.5397646546, 14.5398252249, 14.5398857928, 14.539946358, 14.5400069208, 14.5400674809, 14.5401280386, 14.5401885937, 14.5402491462, 14.5403096963, 14.5403702437, 14.5404307887, 14.5404913311, 14.5405518709, 14.5406124082, 14.540672943, 14.5407334753, 14.540794005, 14.5408545321, 14.5409150567, 14.5409755788, 14.5410360983, 14.5410966153, 14.5411571298, 14.5412176417, 14.5412781511, 14.541338658, 14.5413991623, 14.5414596641, 14.5415201633, 14.54158066, 14.5416411542, 14.5417016458, 14.5417621349, 14.5418226214, 14.5418831054, 14.5419435869, 14.5420040659, 14.5420645423, 14.5421250162, 14.5421854875, 14.5422459563, 14.5423064226, 14.5423668863, 14.5424273475, 14.5424878062, 14.5425482623, 14.5426087159, 14.542669167, 14.5427296155, 14.5427900616, 14.542850505, 14.542910946, 14.5429713844, 14.5430318203, 14.5430922536, 14.5431526844, 14.5432131127, 14.5432735384, 14.5433339617, 14.5433943824, 14.5434548005, 14.5435152162, 14.5435756293, 14.5436360398, 14.5436964479, 14.5437568534, 14.5438172564, 14.5438776568, 14.5439380547, 14.5439984501, 14.544058843, 14.5441192333, 14.5441796212, 14.5442400064, 14.5443003892, 14.5443607694, 14.5444211471, 14.5444815223, 14.544541895, 14.5446022651, 14.5446626327, 14.5447229978, 14.5447833603, 14.5448437203, 14.5449040778, 14.5449644328, 14.5450247852, 14.5450851352, 14.5451454826, 14.5452058274, 14.5452661698, 14.5453265096, 14.5453868469, 14.5454471817, 14.5455075139, 14.5455678437, 14.5456281709, 14.5456884956, 14.5457488177, 14.5458091374, 14.5458694545, 14.5459297691, 14.5459900812, 14.5460503907, 14.5461106978, 14.5461710023, 14.5462313043, 14.5462916037, 14.5463519007, 14.5464121951, 14.546472487, 14.5465327764, 14.5465930633, 14.5466533477, 14.5467136295, 14.5467739088, 14.5468341856, 14.5468944599, 14.5469547317, 14.5470150009, 14.5470752676, 14.5471355318, 14.5471957935, 14.5472560527, 14.5473163094, 14.5473765635, 14.5474368151, 14.5474970642, 14.5475573108, 14.5476175549, 14.5476777965, 14.5477380355, 14.547798272, 14.5478585061, 14.5479187376, 14.5479789665, 14.548039193, 14.548099417, 14.5481596384, 14.5482198574, 14.5482800738, 14.5483402877, 14.5484004991, 14.5484607079, 14.5485209143, 14.5485811182, 14.5486413195, 14.5487015183, 14.5487617147, 14.5488219085, 14.5488820998, 14.5489422885, 14.5490024748, 14.5490626586, 14.5491228398, 14.5491830186, 14.5492431948, 14.5493033685, 14.5493635397, 14.5494237084, 14.5494838746, 14.5495440383, 14.5496041995, 14.5496643581, 14.5497245143, 14.5497846679, 14.5498448191, 14.5499049677, 14.5499651138, 14.5500252575, 14.5500853986, 14.5501455372, 14.5502056733, 14.5502658069, 14.550325938, 14.5503860665, 14.5504461926, 14.5505063162, 14.5505664372, 14.5506265558, 14.5506866718, 14.5507467854, 14.5508068964, 14.550867005, 14.550927111, 14.5509872145, 14.5510473155, 14.5511074141, 14.5511675101, 14.5512276036, 14.5512876946, 14.5513477831, 14.5514078691, 14.5514679526, 14.5515280336, 14.5515881121, 14.5516481881, 14.5517082616, 14.5517683326, 14.5518284011, 14.5518884671, 14.5519485306, 14.5520085916, 14.5520686501, 14.5521287061, 14.5521887596, 14.5522488105, 14.552308859, 14.552368905, 14.5524289485, 14.5524889895, 14.552549028, 14.552609064, 14.5526690975, 14.5527291285, 14.552789157, 14.552849183, 14.5529092065, 14.5529692275, 14.5530292461, 14.5530892621, 14.5531492756, 14.5532092866, 14.5532692952, 14.5533293012, 14.5533893047, 14.5534493058, 14.5535093043, 14.5535693004, 14.5536292939, 14.553689285, 14.5537492735, 14.5538092596, 14.5538692432, 14.5539292243, 14.5539892029, 14.554049179, 14.5541091526, 14.5541691237, 14.5542290923, 14.5542890584, 14.5543490221, 14.5544089832, 14.5544689419, 14.554528898, 14.5545888517, 14.5546488029, 14.5547087515, 14.5547686977, 14.5548286414, 14.5548885826, 14.5549485214, 14.5550084576, 14.5550683913, 14.5551283226, 14.5551882513, 14.5552481776, 14.5553081014, 14.5553680227, 14.5554279415, 14.5554878578, 14.5555477716, 14.555607683, 14.5556675918, 14.5557274982, 14.5557874021, 14.5558473035, 14.5559072024, 14.5559670988, 14.5560269927, 14.5560868842, 14.5561467731, 14.5562066596, 14.5562665436, 14.5563264251, 14.5563863041, 14.5564461806, 14.5565060547, 14.5565659262, 14.5566257953, 14.5566856619, 14.556745526, 14.5568053876, 14.5568652468, 14.5569251034, 14.5569849576, 14.5570448093, 14.5571046585, 14.5571645052, 14.5572243495, 14.5572841912, 14.5573440305, 14.5574038673, 14.5574637016, 14.5575235334, 14.5575833628, 14.5576431896, 14.557703014, 14.5577628359, 14.5578226554, 14.5578824723, 14.5579422868, 14.5580020988, 14.5580619083, 14.5581217153, 14.5581815199, 14.5582413219, 14.5583011215, 14.5583609186, 14.5584207133, 14.5584805054, 14.5585402951, 14.5586000823, 14.558659867, 14.5587196493, 14.558779429, 14.5588392063, 14.5588989811, 14.5589587535, 14.5590185233, 14.5590782907, 14.5591380556, 14.5591978181, 14.559257578, 14.5593173355, 14.5593770905, 14.5594368431, 14.5594965931, 14.5595563407, 14.5596160858, 14.5596758284, 14.5597355686, 14.5597953063, 14.5598550415, 14.5599147743, 14.5599745045, 14.5600342323, 14.5600939576, 14.5601536805, 14.5602134009, 14.5602731188, 14.5603328342, 14.5603925472, 14.5604522577, 14.5605119657, 14.5605716712, 14.5606313743, 14.5606910749, 14.5607507731, 14.5608104687, 14.5608701619, 14.5609298527, 14.5609895409, 14.5610492267, 14.56110891, 14.5611685909, 14.5612282693, 14.5612879452, 14.5613476186, 14.5614072896, 14.5614669581, 14.5615266241, 14.5615862877, 14.5616459488, 14.5617056075, 14.5617652636, 14.5618249173, 14.5618845686, 14.5619442173, 14.5620038637, 14.5620635075, 14.5621231489, 14.5621827878, 14.5622424242, 14.5623020582, 14.5623616897, 14.5624213188, 14.5624809453, 14.5625405695, 14.5626001911, 14.5626598103, 14.562719427, 14.5627790413, 14.5628386531, 14.5628982625, 14.5629578693, 14.5630174737, 14.5630770757, 14.5631366752, 14.5631962722, 14.5632558668, 14.5633154589, 14.5633750485, 14.5634346357, 14.5634942204, 14.5635538027, 14.5636133825, 14.5636729598, 14.5637325347, 14.5637921071, 14.5638516771, 14.5639112446, 14.5639708096, 14.5640303722, 14.5640899323, 14.56414949, 14.5642090452, 14.5642685979, 14.5643281482, 14.5643876961, 14.5644472414, 14.5645067843, 14.5645663248, 14.5646258628, 14.5646853983, 14.5647449314, 14.5648044621, 14.5648639902, 14.5649235159, 14.5649830392, 14.56504256, 14.5651020784, 14.5651615943, 14.5652211077, 14.5652806187, 14.5653401272, 14.5653996333, 14.5654591369, 14.5655186381, 14.5655781368, 14.565637633, 14.5656971268, 14.5657566182, 14.5658161071, 14.5658755935, 14.5659350775, 14.5659945591, 14.5660540382, 14.5661135148, 14.566172989, 14.5662324607, 14.56629193, 14.5663513968, 14.5664108612, 14.5664703231, 14.5665297826, 14.5665892397, 14.5666486942, 14.5667081464, 14.566767596, 14.5668270433, 14.566886488, 14.5669459304, 14.5670053702, 14.5670648077, 14.5671242427, 14.5671836752, 14.5672431053, 14.5673025329, 14.5673619581, 14.5674213808, 14.5674808011, 14.567540219, 14.5675996344, 14.5676590473, 14.5677184579, 14.5677778659, 14.5678372715, 14.5678966747, 14.5679560754, 14.5680154737, 14.5680748695, 14.5681342629, 14.5681936539, 14.5682530423, 14.5683124284, 14.568371812, 14.5684311932, 14.5684905719, 14.5685499482, 14.568609322, 14.5686686934, 14.5687280623, 14.5687874288, 14.5688467929, 14.5689061545, 14.5689655137, 14.5690248704, 14.5690842247, 14.5691435765, 14.569202926, 14.5692622729, 14.5693216174, 14.5693809595, 14.5694402992, 14.5694996364, 14.5695589711, 14.5696183034, 14.5696776333, 14.5697369608, 14.5697962858, 14.5698556083, 14.5699149285, 14.5699742461, 14.5700335614, 14.5700928742, 14.5701521846, 14.5702114925, 14.570270798, 14.570330101, 14.5703894016, 14.5704486998, 14.5705079956, 14.5705672889, 14.5706265797, 14.5706858682, 14.5707451542, 14.5708044377, 14.5708637188, 14.5709229975, 14.5709822738, 14.5710415476, 14.571100819, 14.5711600879, 14.5712193544, 14.5712786185, 14.5713378802, 14.5713971394, 14.5714563961, 14.5715156505, 14.5715749024, 14.5716341519, 14.5716933989, 14.5717526435, 14.5718118857, 14.5718711254, 14.5719303627, 14.5719895976, 14.57204883, 14.5721080601, 14.5721672876, 14.5722265128, 14.5722857355, 14.5723449558, 14.5724041737, 14.5724633891, 14.5725226021, 14.5725818126, 14.5726410208, 14.5727002265, 14.5727594298, 14.5728186306, 14.572877829, 14.572937025, 14.5729962186, 14.5730554097, 14.5731145984, 14.5731737847, 14.5732329685, 14.57329215, 14.5733513289, 14.5734105055, 14.5734696796, 14.5735288514, 14.5735880206, 14.5736471875, 14.5737063519, 14.5737655139, 14.5738246735, 14.5738838307, 14.5739429854, 14.5740021377, 14.5740612876, 14.574120435, 14.57417958, 14.5742387226, 14.5742978628, 14.5743570006, 14.5744161359, 14.5744752688, 14.5745343993, 14.5745935273, 14.574652653, 14.5747117762, 14.574770897, 14.5748300153, 14.5748891313, 14.5749482448, 14.5750073559, 14.5750664646, 14.5751255708, 14.5751846747, 14.5752437761, 14.5753028751, 14.5753619716, 14.5754210658, 14.5754801575, 14.5755392468, 14.5755983337, 14.5756574182, 14.5757165002, 14.5757755799, 14.5758346571, 14.5758937319, 14.5759528043, 14.5760118742, 14.5760709417, 14.5761300069, 14.5761890696, 14.5762481298, 14.5763071877, 14.5763662432, 14.5764252962, 14.5764843468, 14.576543395, 14.5766024408, 14.5766614841, 14.5767205251, 14.5767795636, 14.5768385997, 14.5768976334, 14.5769566647, 14.5770156936, 14.57707472, 14.5771337441, 14.5771927657, 14.5772517849, 14.5773108017, 14.5773698161, 14.577428828, 14.5774878376, 14.5775468447, 14.5776058495, 14.5776648518, 14.5777238517, 14.5777828492, 14.5778418442, 14.5779008369, 14.5779598271, 14.578018815, 14.5780778004, 14.5781367834, 14.578195764, 14.5782547422, 14.578313718, 14.5783726914, 14.5784316623, 14.5784906309, 14.578549597, 14.5786085607, 14.5786675221, 14.578726481, 14.5787854375, 14.5788443916, 14.5789033432, 14.5789622925, 14.5790212394, 14.5790801838, 14.5791391259, 14.5791980655, 14.5792570028, 14.5793159376, 14.57937487, 14.5794338, 14.5794927276, 14.5795516528, 14.5796105756, 14.579669496, 14.579728414, 14.5797873295, 14.5798462427, 14.5799051535, 14.5799640618, 14.5800229678, 14.5800818713, 14.5801407724, 14.5801996712, 14.5802585675, 14.5803174614, 14.5803763529, 14.5804352421, 14.5804941288, 14.5805530131, 14.580611895, 14.5806707745, 14.5807296516, 14.5807885263, 14.5808473986, 14.5809062685, 14.580965136, 14.5810240011, 14.5810828638, 14.581141724, 14.5812005819, 14.5812594374, 14.5813182905, 14.5813771412, 14.5814359895, 14.5814948353, 14.5815536788, 14.5816125199, 14.5816713586, 14.5817301949, 14.5817890287, 14.5818478602, 14.5819066893, 14.581965516, 14.5820243403, 14.5820831622, 14.5821419817, 14.5822007988, 14.5822596134, 14.5823184257, 14.5823772356, 14.5824360431, 14.5824948482, 14.582553651, 14.5826124513, 14.5826712492, 14.5827300447, 14.5827888378, 14.5828476286, 14.5829064169, 14.5829652028, 14.5830239864, 14.5830827675, 14.5831415463, 14.5832003226, 14.5832590966, 14.5833178681, 14.5833766373, 14.5834354041, 14.5834941685, 14.5835529305, 14.5836116901, 14.5836704473, 14.5837292021, 14.5837879545, 14.5838467045, 14.5839054522, 14.5839641974, 14.5840229403, 14.5840816807, 14.5841404188, 14.5841991545, 14.5842578877, 14.5843166186, 14.5843753471, 14.5844340733, 14.584492797, 14.5845515183, 14.5846102372, 14.5846689538, 14.584727668, 14.5847863797, 14.5848450891, 14.5849037961, 14.5849625007, 14.5850212029, 14.5850799028, 14.5851386002, 14.5851972953, 14.5852559879, 14.5853146782, 14.5853733661, 14.5854320516, 14.5854907347, 14.5855494154, 14.5856080938, 14.5856667697, 14.5857254433, 14.5857841145, 14.5858427833, 14.5859014497, 14.5859601137, 14.5860187754, 14.5860774346, 14.5861360915, 14.586194746, 14.5862533981, 14.5863120478, 14.5863706951, 14.5864293401, 14.5864879826, 14.5865466228, 14.5866052606, 14.586663896, 14.586722529, 14.5867811597, 14.586839788, 14.5868984138, 14.5869570373, 14.5870156585, 14.5870742772, 14.5871328936, 14.5871915075, 14.5872501191, 14.5873087283, 14.5873673352, 14.5874259396, 14.5874845417, 14.5875431414, 14.5876017387, 14.5876603336, 14.5877189262, 14.5877775163, 14.5878361041, 14.5878946895, 14.5879532726, 14.5880118532, 14.5880704315, 14.5881290074, 14.5881875809, 14.588246152, 14.5883047208, 14.5883632872, 14.5884218512, 14.5884804128, 14.5885389721, 14.588597529, 14.5886560835, 14.5887146356, 14.5887731853, 14.5888317327, 14.5888902777, 14.5889488203, 14.5890073606, 14.5890658984, 14.5891244339, 14.589182967, 14.5892414978, 14.5893000262, 14.5893585521, 14.5894170758, 14.589475597, 14.5895341159, 14.5895926324, 14.5896511465, 14.5897096583, 14.5897681676, 14.5898266747, 14.5898851793, 14.5899436816, 14.5900021814, 14.590060679, 14.5901191741, 14.5901776669, 14.5902361573, 14.5902946453, 14.590353131, 14.5904116143, 14.5904700952, 14.5905285737, 14.5905870499, 14.5906455237, 14.5907039952, 14.5907624642, 14.5908209309, 14.5908793953, 14.5909378572, 14.5909963168, 14.591054774, 14.5911132289, 14.5911716814, 14.5912301315, 14.5912885792, 14.5913470246, 14.5914054676, 14.5914639083, 14.5915223466, 14.5915807825, 14.591639216, 14.5916976472, 14.591756076, 14.5918145025, 14.5918729266, 14.5919313483, 14.5919897676, 14.5920481846, 14.5921065992, 14.5921650115, 14.5922234214, 14.5922818289, 14.592340234, 14.5923986368, 14.5924570373, 14.5925154353, 14.592573831, 14.5926322244, 14.5926906154, 14.592749004, 14.5928073902, 14.5928657741, 14.5929241556, 14.5929825348, 14.5930409116, 14.593099286, 14.5931576581, 14.5932160278, 14.5932743952, 14.5933327602, 14.5933911228, 14.5934494831, 14.593507841, 14.5935661965, 14.5936245497, 14.5936829005, 14.593741249, 14.5937995951, 14.5938579389, 14.5939162802, 14.5939746193, 14.5940329559, 14.5940912903, 14.5941496222, 14.5942079518, 14.594266279, 14.5943246039, 14.5943829264, 14.5944412466, 14.5944995644, 14.5945578799, 14.594616193, 14.5946745037, 14.5947328121, 14.5947911181, 14.5948494218, 14.5949077231, 14.594966022, 14.5950243186, 14.5950826129, 14.5951409047, 14.5951991943, 14.5952574814, 14.5953157663, 14.5953740487, 14.5954323288, 14.5954906066, 14.595548882, 14.5956071551, 14.5956654258, 14.5957236941, 14.5957819601, 14.5958402237, 14.595898485, 14.5959567439, 14.5960150005, 14.5960732547, 14.5961315066, 14.5961897561, 14.5962480033, 14.5963062481, 14.5963644906, 14.5964227307, 14.5964809685, 14.5965392039, 14.596597437, 14.5966556677, 14.596713896, 14.5967721221, 14.5968303457, 14.596888567, 14.596946786, 14.5970050026, 14.5970632169, 14.5971214288, 14.5971796384, 14.5972378456, 14.5972960504, 14.597354253, 14.5974124531, 14.597470651, 14.5975288465, 14.5975870396, 14.5976452304, 14.5977034188, 14.5977616049, 14.5978197886, 14.59787797, 14.5979361491, 14.5979943258, 14.5980525002, 14.5981106722, 14.5981688418, 14.5982270092, 14.5982851741, 14.5983433368, 14.5984014971, 14.598459655, 14.5985178106, 14.5985759639, 14.5986341148, 14.5986922633, 14.5987504096, 14.5988085535, 14.598866695, 14.5989248342, 14.598982971, 14.5990411055, 14.5990992377, 14.5991573675, 14.599215495, 14.5992736202, 14.599331743, 14.5993898634, 14.5994479815, 14.5995060973, 14.5995642107, 14.5996223218, 14.5996804306, 14.599738537, 14.5997966411, 14.5998547428, 14.5999128422, 14.5999709392, 14.600029034, 14.6000871263, 14.6001452164, 14.6002033041, 14.6002613894, 14.6003194724, 14.6003775531, 14.6004356314, 14.6004937075, 14.6005517811, 14.6006098524, 14.6006679214, 14.6007259881, 14.6007840524, 14.6008421144, 14.600900174, 14.6009582313, 14.6010162863, 14.6010743389, 14.6011323892, 14.6011904372, 14.6012484828, 14.6013065261, 14.6013645671, 14.6014226057, 14.601480642, 14.6015386759, 14.6015967076, 14.6016547368, 14.6017127638, 14.6017707884, 14.6018288107, 14.6018868306, 14.6019448483, 14.6020028635, 14.6020608765, 14.6021188871, 14.6021768954, 14.6022349013, 14.602292905, 14.6023509062, 14.6024089052, 14.6024669018, 14.6025248961, 14.6025828881, 14.6026408777, 14.602698865, 14.60275685, 14.6028148326, 14.6028728129, 14.6029307909, 14.6029887666, 14.6030467399, 14.6031047109, 14.6031626795, 14.6032206459, 14.6032786099, 14.6033365715, 14.6033945309, 14.6034524879, 14.6035104426, 14.603568395, 14.603626345, 14.6036842927, 14.6037422381, 14.6038001811, 14.6038581218, 14.6039160602, 14.6039739963, 14.6040319301, 14.6040898615, 14.6041477906, 14.6042057173, 14.6042636418, 14.6043215639, 14.6043794837, 14.6044374011, 14.6044953163, 14.6045532291, 14.6046111396, 14.6046690477, 14.6047269536, 14.6047848571, 14.6048427583, 14.6049006571, 14.6049585537, 14.6050164479, 14.6050743398, 14.6051322294, 14.6051901166, 14.6052480016, 14.6053058842, 14.6053637645, 14.6054216424, 14.6054795181, 14.6055373914, 14.6055952624, 14.6056531311, 14.6057109974, 14.6057688614, 14.6058267232, 14.6058845826, 14.6059424396, 14.6060002944, 14.6060581468, 14.6061159969, 14.6061738447, 14.6062316902, 14.6062895333, 14.6063473742, 14.6064052127, 14.6064630489, 14.6065208828, 14.6065787143, 14.6066365436, 14.6066943705, 14.6067521951, 14.6068100174, 14.6068678374, 14.606925655, 14.6069834704, 14.6070412834, 14.6070990941, 14.6071569025, 14.6072147086, 14.6072725123, 14.6073303137, 14.6073881129, 14.6074459097, 14.6075037042, 14.6075614964, 14.6076192862, 14.6076770738, 14.607734859, 14.6077926419, 14.6078504225, 14.6079082008, 14.6079659768, 14.6080237505, 14.6080815218, 14.6081392908, 14.6081970576, 14.608254822, 14.6083125841, 14.6083703439, 14.6084281013, 14.6084858565, 14.6085436093, 14.6086013599, 14.6086591081, 14.608716854, 14.6087745976, 14.6088323389, 14.6088900779, 14.6089478146, 14.6090055489, 14.609063281, 14.6091210107, 14.6091787381, 14.6092364633, 14.6092941861, 14.6093519066, 14.6094096248, 14.6094673406, 14.6095250542, 14.6095827655, 14.6096404744, 14.6096981811, 14.6097558854, 14.6098135875, 14.6098712872, 14.6099289846, 14.6099866797, 14.6100443725, 14.610102063, 14.6101597512, 14.6102174371, 14.6102751206, 14.6103328019, 14.6103904809, 14.6104481575, 14.6105058319, 14.6105635039, 14.6106211737, 14.6106788411, 14.6107365062, 14.6107941691, 14.6108518296, 14.6109094878, 14.6109671437, 14.6110247973, 14.6110824486, 14.6111400976, 14.6111977443, 14.6112553887, 14.6113130308, 14.6113706706, 14.6114283081, 14.6114859432, 14.6115435761, 14.6116012067, 14.611658835, 14.6117164609, 14.6117740846, 14.611831706, 14.6118893251, 14.6119469418, 14.6120045563, 14.6120621685, 14.6121197783, 14.6121773859, 14.6122349911, 14.6122925941, 14.6123501948, 14.6124077931, 14.6124653892, 14.612522983, 14.6125805744, 14.6126381636, 14.6126957505, 14.612753335, 14.6128109173, 14.6128684973, 14.612926075, 14.6129836503, 14.6130412234, 14.6130987942, 14.6131563627, 14.6132139289, 14.6132714928, 14.6133290544, 14.6133866137, 14.6134441707, 14.6135017254, 14.6135592778, 14.6136168279, 14.6136743757, 14.6137319212, 14.6137894645, 14.6138470054, 14.613904544, 14.6139620804, 14.6140196144, 14.6140771462, 14.6141346757, 14.6141922028, 14.6142497277, 14.6143072503, 14.6143647706, 14.6144222885, 14.6144798042, 14.6145373177, 14.6145948288, 14.6146523376, 14.6147098441, 14.6147673484, 14.6148248503, 14.6148823499, 14.6149398473, 14.6149973424, 14.6150548352, 14.6151123256, 14.6151698138, 14.6152272997, 14.6152847834, 14.6153422647, 14.6153997437, 14.6154572205, 14.6155146949, 14.6155721671, 14.615629637, 14.6156871046, 14.6157445699, 14.6158020329, 14.6158594936, 14.615916952, 14.6159744082, 14.616031862, 14.6160893136, 14.6161467629, 14.6162042099, 14.6162616546, 14.616319097, 14.6163765371, 14.616433975, 14.6164914105, 14.6165488438, 14.6166062748, 14.6166637035, 14.6167211299, 14.616778554, 14.6168359758, 14.6168933954, 14.6169508127, 14.6170082277, 14.6170656404, 14.6171230508, 14.6171804589, 14.6172378647, 14.6172952683, 14.6173526696, 14.6174100686, 14.6174674653, 14.6175248597, 14.6175822519, 14.6176396417, 14.6176970293, 14.6177544146, 14.6178117976, 14.6178691783, 14.6179265568, 14.617983933, 14.6180413069, 14.6180986785, 14.6181560478, 14.6182134148, 14.6182707796, 14.6183281421, 14.6183855023, 14.6184428602, 14.6185002158, 14.6185575692, 14.6186149203, 14.618672269, 14.6187296156, 14.6187869598, 14.6188443018, 14.6189016414, 14.6189589788, 14.619016314, 14.6190736468, 14.6191309774, 14.6191883057, 14.6192456317, 14.6193029554, 14.6193602769, 14.619417596, 14.6194749129, 14.6195322276, 14.6195895399, 14.61964685, 14.6197041578, 14.6197614633, 14.6198187665, 14.6198760675, 14.6199333662, 14.6199906626, 14.6200479567, 14.6201052486, 14.6201625382, 14.6202198255, 14.6202771105, 14.6203343933, 14.6203916738, 14.620448952, 14.620506228, 14.6205635016, 14.620620773, 14.6206780421, 14.620735309, 14.6207925736, 14.6208498359, 14.6209070959, 14.6209643536, 14.6210216091, 14.6210788623, 14.6211361133, 14.6211933619, 14.6212506083, 14.6213078525, 14.6213650943, 14.6214223339, 14.6214795712, 14.6215368062, 14.621594039, 14.6216512695, 14.6217084977, 14.6217657237, 14.6218229474, 14.6218801688, 14.621937388, 14.6219946048, 14.6220518195, 14.6221090318, 14.6221662419, 14.6222234497, 14.6222806552, 14.6223378585, 14.6223950595, 14.6224522582, 14.6225094547, 14.6225666489, 14.6226238408, 14.6226810305, 14.6227382179, 14.622795403, 14.6228525859, 14.6229097665, 14.6229669448, 14.6230241209, 14.6230812947, 14.6231384662, 14.6231956355, 14.6232528025, 14.6233099672, 14.6233671297, 14.6234242899, 14.6234814478, 14.6235386035, 14.6235957569, 14.6236529081, 14.6237100569, 14.6237672036, 14.6238243479, 14.62388149, 14.6239386298, 14.6239957674, 14.6240529027, 14.6241100358, 14.6241671665, 14.6242242951, 14.6242814213, 14.6243385453, 14.624395667, 14.6244527865, 14.6245099037, 14.6245670187, 14.6246241314, 14.6246812418, 14.62473835, 14.6247954559, 14.6248525595, 14.6249096609, 14.62496676, 14.6250238569, 14.6250809515, 14.6251380438, 14.6251951339, 14.6252522217, 14.6253093073, 14.6253663906, 14.6254234717, 14.6254805505, 14.625537627, 14.6255947013, 14.6256517733, 14.6257088431, 14.6257659106, 14.6258229758, 14.6258800388, 14.6259370995, 14.625994158, 14.6260512142, 14.6261082682, 14.6261653199, 14.6262223694, 14.6262794166, 14.6263364615, 14.6263935042, 14.6264505446, 14.6265075828, 14.6265646187, 14.6266216524, 14.6266786838, 14.6267357129, 14.6267927398, 14.6268497645, 14.6269067869, 14.626963807, 14.6270208249, 14.6270778405, 14.6271348539, 14.627191865, 14.6272488739, 14.6273058805, 14.6273628849, 14.627419887, 14.6274768869, 14.6275338845, 14.6275908798, 14.6276478729, 14.6277048638, 14.6277618524, 14.6278188388, 14.6278758229, 14.6279328047, 14.6279897843, 14.6280467617, 14.6281037368, 14.6281607096, 14.6282176802, 14.6282746486, 14.6283316147, 14.6283885785, 14.6284455401, 14.6285024995, 14.6285594566, 14.6286164115, 14.6286733641, 14.6287303144, 14.6287872625, 14.6288442084, 14.628901152, 14.6289580934, 14.6290150325, 14.6290719694, 14.629128904, 14.6291858364, 14.6292427665, 14.6292996944, 14.6293566201, 14.6294135435, 14.6294704646, 14.6295273835, 14.6295843002, 14.6296412146, 14.6296981268, 14.6297550367, 14.6298119444, 14.6298688498, 14.629925753, 14.629982654, 14.6300395527, 14.6300964491, 14.6301533433, 14.6302102353, 14.630267125, 14.6303240125, 14.6303808978, 14.6304377808, 14.6304946615, 14.63055154, 14.6306084163, 14.6306652903, 14.6307221621, 14.6307790316, 14.630835899, 14.630892764, 14.6309496268, 14.6310064874, 14.6310633457, 14.6311202018, 14.6311770557, 14.6312339073, 14.6312907567, 14.6313476038, 14.6314044487, 14.6314612914, 14.6315181318, 14.63157497, 14.6316318059, 14.6316886396, 14.6317454711, 14.6318023003, 14.6318591273, 14.631915952, 14.6319727745, 14.6320295948, 14.6320864128, 14.6321432286, 14.6322000422, 14.6322568535, 14.6323136626, 14.6323704694, 14.632427274, 14.6324840764, 14.6325408765, 14.6325976744, 14.6326544701, 14.6327112635, 14.6327680547, 14.6328248437, 14.6328816304, 14.6329384149, 14.6329951971, 14.6330519772, 14.6331087549, 14.6331655305, 14.6332223038, 14.6332790749, 14.6333358437, 14.6333926103, 14.6334493747, 14.6335061369, 14.6335628968, 14.6336196544, 14.6336764099, 14.6337331631, 14.6337899141, 14.6338466628, 14.6339034093, 14.6339601536, 14.6340168957, 14.6340736355, 14.6341303731, 14.6341871085, 14.6342438416, 14.6343005725, 14.6343573011, 14.6344140276, 14.6344707518, 14.6345274737, 14.6345841935, 14.634640911, 14.6346976263, 14.6347543393, 14.6348110502, 14.6348677588, 14.6349244651, 14.6349811693, 14.6350378712, 14.6350945709, 14.6351512683, 14.6352079635, 14.6352646565, 14.6353213473, 14.6353780359, 14.6354347222, 14.6354914063, 14.6355480881, 14.6356047677, 14.6356614452, 14.6357181203, 14.6357747933, 14.635831464, 14.6358881325, 14.6359447988, 14.6360014628, 14.6360581247, 14.6361147843, 14.6361714416, 14.6362280968, 14.6362847497, 14.6363414004, 14.6363980489, 14.6364546951, 14.6365113392, 14.636567981, 14.6366246205, 14.6366812579, 14.636737893, 14.6367945259, 14.6368511566, 14.6369077851, 14.6369644113, 14.6370210353, 14.6370776571, 14.6371342767, 14.6371908941, 14.6372475092, 14.6373041221, 14.6373607328, 14.6374173413, 14.6374739475, 14.6375305515, 14.6375871533, 14.6376437529, 14.6377003503, 14.6377569454, 14.6378135383, 14.637870129, 14.6379267175, 14.6379833038, 14.6380398878, 14.6380964696, 14.6381530492, 14.6382096266, 14.6382662018, 14.6383227747, 14.6383793455, 14.638435914, 14.6384924803, 14.6385490444, 14.6386056062, 14.6386621659, 14.6387187233, 14.6387752785, 14.6388318315, 14.6388883823, 14.6389449308, 14.6390014771, 14.6390580213, 14.6391145632, 14.6391711029, 14.6392276403, 14.6392841756, 14.6393407087, 14.6393972395, 14.6394537681, 14.6395102945, 14.6395668187, 14.6396233407, 14.6396798604, 14.639736378, 14.6397928933, 14.6398494064, 14.6399059173, 14.639962426, 14.6400189325, 14.6400754367, 14.6401319388, 14.6401884386, 14.6402449362, 14.6403014316, 14.6403579248, 14.6404144158, 14.6404709046, 14.6405273912, 14.6405838755, 14.6406403576, 14.6406968376, 14.6407533153, 14.6408097908, 14.6408662641, 14.6409227352, 14.640979204, 14.6410356707, 14.6410921352, 14.6411485974, 14.6412050574, 14.6412615153, 14.6413179709, 14.6413744243, 14.6414308755, 14.6414873245, 14.6415437713, 14.6416002158, 14.6416566582, 14.6417130984, 14.6417695363, 14.641825972, 14.6418824056, 14.6419388369, 14.641995266, 14.6420516929, 14.6421081176, 14.6421645401, 14.6422209604, 14.6422773785, 14.6423337944, 14.6423902081, 14.6424466195, 14.6425030288, 14.6425594358, 14.6426158407, 14.6426722433, 14.6427286438, 14.642785042, 14.642841438, 14.6428978319, 14.6429542235, 14.6430106129, 14.6430670001, 14.6431233851, 14.6431797679, 14.6432361485, 14.6432925269, 14.6433489031, 14.6434052771, 14.6434616489, 14.6435180185, 14.6435743859, 14.6436307511, 14.643687114, 14.6437434748, 14.6437998334, 14.6438561898, 14.6439125439, 14.6439688959, 14.6440252457, 14.6440815933, 14.6441379386, 14.6441942818, 14.6442506228, 14.6443069615, 14.6443632981, 14.6444196325, 14.6444759647, 14.6445322946, 14.6445886224, 14.644644948, 14.6447012713, 14.6447575925, 14.6448139115, 14.6448702283, 14.6449265428, 14.6449828552, 14.6450391654, 14.6450954734, 14.6451517792, 14.6452080828, 14.6452643842, 14.6453206834, 14.6453769804, 14.6454332752, 14.6454895678, 14.6455458582, 14.6456021464, 14.6456584324, 14.6457147162, 14.6457709979, 14.6458272773, 14.6458835545, 14.6459398296, 14.6459961024, 14.6460523731, 14.6461086415, 14.6461649078, 14.6462211718, 14.6462774337, 14.6463336934, 14.6463899509, 14.6464462062, 14.6465024593, 14.6465587102, 14.6466149589, 14.6466712054, 14.6467274497, 14.6467836918, 14.6468399318, 14.6468961695, 14.6469524051, 14.6470086384, 14.6470648696, 14.6471210986, 14.6471773254, 14.64723355, 14.6472897724, 14.6473459926, 14.6474022106, 14.6474584265, 14.6475146401, 14.6475708516, 14.6476270608, 14.6476832679, 14.6477394728, 14.6477956755, 14.647851876, 14.6479080743, 14.6479642704, 14.6480204643, 14.6480766561, 14.6481328457, 14.648189033, 14.6482452182, 14.6483014012, 14.648357582, 14.6484137606, 14.6484699371, 14.6485261113, 14.6485822834, 14.6486384532, 14.6486946209, 14.6487507864, 14.6488069497, 14.6488631109, 14.6489192698, 14.6489754265, 14.6490315811, 14.6490877335, 14.6491438837, 14.6492000317, 14.6492561775, 14.6493123212, 14.6493684626, 14.6494246019, 14.649480739, 14.6495368739, 14.6495930066, 14.6496491371, 14.6497052655, 14.6497613916, 14.6498175156, 14.6498736374, 14.649929757, 14.6499858745, 14.6500419897, 14.6500981028, 14.6501542137, 14.6502103224, 14.6502664289, 14.6503225332, 14.6503786354, 14.6504347354, 14.6504908332, 14.6505469288, 14.6506030222, 14.6506591135, 14.6507152025, 14.6507712894, 14.6508273741, 14.6508834567, 14.650939537, 14.6509956152, 14.6510516912, 14.651107765, 14.6511638366, 14.6512199061, 14.6512759733, 14.6513320384, 14.6513881014, 14.6514441621, 14.6515002207, 14.651556277, 14.6516123312, 14.6516683833, 14.6517244331, 14.6517804808, 14.6518365263, 14.6518925696, 14.6519486107, 14.6520046497, 14.6520606865, 14.6521167211, 14.6521727535, 14.6522287838, 14.6522848118, 14.6523408377, 14.6523968615, 14.652452883, 14.6525089024, 14.6525649196, 14.6526209346, 14.6526769475, 14.6527329582, 14.6527889667, 14.652844973, 14.6529009772, 14.6529569791, 14.6530129789, 14.6530689766, 14.653124972, 14.6531809653, 14.6532369564, 14.6532929454, 14.6533489322, 14.6534049167, 14.6534608992, 14.6535168794, 14.6535728575, 14.6536288334, 14.6536848071, 14.6537407787, 14.6537967481, 14.6538527153, 14.6539086804, 14.6539646432, 14.654020604, 14.6540765625, 14.6541325189, 14.6541884731, 14.6542444251, 14.6543003749, 14.6543563226, 14.6544122681, 14.6544682115, 14.6545241527, 14.6545800917, 14.6546360285, 14.6546919632, 14.6547478957, 14.654803826, 14.6548597542, 14.6549156802, 14.654971604, 14.6550275257, 14.6550834452, 14.6551393625, 14.6551952777, 14.6552511907, 14.6553071015, 14.6553630102, 14.6554189167, 14.655474821, 14.6555307232, 14.6555866232, 14.655642521, 14.6556984166, 14.6557543101, 14.6558102015, 14.6558660906, 14.6559219776, 14.6559778625, 14.6560337452, 14.6560896257, 14.656145504, 14.6562013802, 14.6562572542, 14.6563131261, 14.6563689958, 14.6564248633, 14.6564807286, 14.6565365918, 14.6565924529, 14.6566483117, 14.6567041685, 14.656760023, 14.6568158754, 14.6568717256, 14.6569275737, 14.6569834196, 14.6570392633, 14.6570951049, 14.6571509443, 14.6572067816, 14.6572626166, 14.6573184496, 14.6573742804, 14.657430109, 14.6574859354, 14.6575417597, 14.6575975818, 14.6576534018, 14.6577092196, 14.6577650353, 14.6578208488, 14.6578766601, 14.6579324693, 14.6579882763, 14.6580440811, 14.6580998838, 14.6581556844, 14.6582114828, 14.658267279, 14.658323073, 14.6583788649, 14.6584346547, 14.6584904423, 14.6585462277, 14.658602011, 14.6586577921, 14.6587135711, 14.6587693479, 14.6588251226, 14.658880895, 14.6589366654, 14.6589924336, 14.6590481996, 14.6591039635, 14.6591597252, 14.6592154848, 14.6592712422, 14.6593269974, 14.6593827505, 14.6594385015, 14.6594942502, 14.6595499969, 14.6596057414, 14.6596614837, 14.6597172239, 14.6597729619, 14.6598286977, 14.6598844315, 14.659940163, 14.6599958924, 14.6600516197, 14.6601073448, 14.6601630677, 14.6602187885, 14.6602745072, 14.6603302237, 14.660385938, 14.6604416502, 14.6604973602, 14.6605530681, 14.6606087739, 14.6606644775, 14.6607201789, 14.6607758782, 14.6608315753, 14.6608872703, 14.6609429631, 14.6609986538, 14.6610543424, 14.6611100287, 14.661165713, 14.6612213951, 14.661277075, 14.6613327528, 14.6613884284, 14.6614441019, 14.6614997733, 14.6615554425, 14.6616111095, 14.6616667744, 14.6617224372, 14.6617780978, 14.6618337562, 14.6618894125, 14.6619450667, 14.6620007187, 14.6620563686, 14.6621120163, 14.6621676619, 14.6622233053, 14.6622789466, 14.6623345857, 14.6623902227, 14.6624458576, 14.6625014903, 14.6625571208, 14.6626127493, 14.6626683755, 14.6627239996, 14.6627796216, 14.6628352415, 14.6628908591, 14.6629464747, 14.6630020881, 14.6630576993, 14.6631133085, 14.6631689154, 14.6632245203, 14.6632801229, 14.6633357235, 14.6633913219, 14.6634469181, 14.6635025122, 14.6635581042, 14.663613694, 14.6636692817, 14.6637248673, 14.6637804507, 14.6638360319, 14.6638916111, 14.663947188, 14.6640027629, 14.6640583356, 14.6641139061, 14.6641694746, 14.6642250408, 14.664280605, 14.664336167, 14.6643917268, 14.6644472845, 14.6645028401, 14.6645583936, 14.6646139449, 14.664669494, 14.664725041, 14.6647805859, 14.6648361287, 14.6648916693, 14.6649472078, 14.6650027441, 14.6650582783, 14.6651138103, 14.6651693403, 14.665224868, 14.6652803937, 14.6653359172, 14.6653914386, 14.6654469578, 14.6655024749, 14.6655579898, 14.6656135027, 14.6656690134, 14.6657245219, 14.6657800283, 14.6658355326, 14.6658910348, 14.6659465348, 14.6660020326, 14.6660575284, 14.666113022, 14.6661685135, 14.6662240028, 14.66627949, 14.6663349751, 14.666390458, 14.6664459388, 14.6665014175, 14.666556894, 14.6666123684, 14.6666678407, 14.6667233108, 14.6667787788, 14.6668342447, 14.6668897084, 14.66694517, 14.6670006295, 14.6670560869, 14.6671115421, 14.6671669952, 14.6672224461, 14.6672778949, 14.6673333416, 14.6673887862, 14.6674442286, 14.6674996689, 14.667555107, 14.6676105431, 14.667665977, 14.6677214088, 14.6677768384, 14.6678322659, 14.6678876913, 14.6679431145, 14.6679985357, 14.6680539547, 14.6681093715, 14.6681647863, 14.6682201989, 14.6682756094, 14.6683310177, 14.668386424, 14.6684418281, 14.66849723, 14.6685526299, 14.6686080276, 14.6686634232, 14.6687188166, 14.668774208, 14.6688295972, 14.6688849843, 14.6689403692, 14.6689957521, 14.6690511328, 14.6691065113, 14.6691618878, 14.6692172621, 14.6692726343, 14.6693280044, 14.6693833723, 14.6694387382, 14.6694941019, 14.6695494635, 14.6696048229, 14.6696601802, 14.6697155354, 14.6697708885, 14.6698262395, 14.6698815883, 14.669936935, 14.6699922796, 14.6700476221, 14.6701029624, 14.6701583006, 14.6702136367, 14.6702689707, 14.6703243026, 14.6703796323, 14.6704349599, 14.6704902854, 14.6705456088, 14.67060093, 14.6706562491, 14.6707115661, 14.670766881, 14.6708221938, 14.6708775044, 14.6709328129, 14.6709881193, 14.6710434236, 14.6710987257, 14.6711540258, 14.6712093237, 14.6712646195, 14.6713199132, 14.6713752047, 14.6714304942, 14.6714857815, 14.6715410667, 14.6715963498, 14.6716516308, 14.6717069096, 14.6717621863, 14.671817461, 14.6718727335, 14.6719280038, 14.6719832721, 14.6720385382, 14.6720938023, 14.6721490642, 14.672204324, 14.6722595816, 14.6723148372, 14.6723700906, 14.672425342, 14.6724805912, 14.6725358383, 14.6725910833, 14.6726463261, 14.6727015669, 14.6727568055, 14.672812042, 14.6728672764, 14.6729225087, 14.6729777389, 14.673032967, 14.6730881929, 14.6731434167, 14.6731986385, 14.6732538581, 14.6733090756, 14.6733642909, 14.6734195042, 14.6734747154, 14.6735299244, 14.6735851313, 14.6736403361, 14.6736955388, 14.6737507394, 14.6738059379, 14.6738611343, 14.6739163285, 14.6739715207, 14.6740267107, 14.6740818986, 14.6741370844, 14.6741922681, 14.6742474497, 14.6743026292, 14.6743578066, 14.6744129818, 14.674468155, 14.674523326, 14.6745784949, 14.6746336618, 14.6746888265, 14.6747439891, 14.6747991496, 14.6748543079, 14.6749094642, 14.6749646184, 14.6750197704, 14.6750749204, 14.6751300682, 14.675185214, 14.6752403576, 14.6752954991, 14.6753506385, 14.6754057758, 14.675460911, 14.6755160441, 14.6755711751, 14.6756263039, 14.6756814307, 14.6757365554, 14.6757916779, 14.6758467984, 14.6759019167, 14.6759570329, 14.6760121471, 14.6760672591, 14.676122369, 14.6761774768, 14.6762325825, 14.6762876861, 14.6763427876, 14.676397887, 14.6764529843, 14.6765080795, 14.6765631726, 14.6766182636, 14.6766733525, 14.6767284392, 14.6767835239, 14.6768386065, 14.6768936869, 14.6769487653, 14.6770038416, 14.6770589157, 14.6771139878, 14.6771690577, 14.6772241256, 14.6772791913, 14.677334255, 14.6773893165, 14.6774443759, 14.6774994333, 14.6775544885, 14.6776095417, 14.6776645927, 14.6777196416, 14.6777746885, 14.6778297332, 14.6778847759, 14.6779398164, 14.6779948548, 14.6780498912, 14.6781049254, 14.6781599575, 14.6782149876, 14.6782700155, 14.6783250414, 14.6783800651, 14.6784350868, 14.6784901063, 14.6785451237, 14.6786001391, 14.6786551524, 14.6787101635, 14.6787651726, 14.6788201795, 14.6788751844, 14.6789301872, 14.6789851878, 14.6790401864, 14.6790951829, 14.6791501772, 14.6792051695, 14.6792601597, 14.6793151478, 14.6793701338, 14.6794251177, 14.6794800995, 14.6795350792, 14.6795900568, 14.6796450323, 14.6797000058, 14.6797549771, 14.6798099463, 14.6798649135, 14.6799198785, 14.6799748415, 14.6800298023, 14.6800847611, 14.6801397178, 14.6801946723, 14.6802496248, 14.6803045752, 14.6803595235, 14.6804144697, 14.6804694138, 14.6805243559, 14.6805792958, 14.6806342336, 14.6806891694, 14.680744103, 14.6807990346, 14.680853964, 14.6809088914, 14.6809638167, 14.6810187399, 14.681073661, 14.68112858, 14.6811834969, 14.6812384118, 14.6812933245, 14.6813482352, 14.6814031437, 14.6814580502, 14.6815129546, 14.6815678569, 14.6816227571, 14.6816776552, 14.6817325512, 14.6817874452, 14.681842337, 14.6818972268, 14.6819521145, 14.682007, 14.6820618835, 14.682116765, 14.6821716443, 14.6822265215, 14.6822813967, 14.6823362697, 14.6823911407, 14.6824460096, 14.6825008764, 14.6825557411, 14.6826106037, 14.6826654642, 14.6827203227, 14.6827751791, 14.6828300333, 14.6828848855, 14.6829397357, 14.6829945837, 14.6830494296, 14.6831042735, 14.6831591152, 14.6832139549, 14.6832687925, 14.6833236281, 14.6833784615, 14.6834332928, 14.6834881221, 14.6835429493, 14.6835977744, 14.6836525974, 14.6837074183, 14.6837622372, 14.6838170539, 14.6838718686, 14.6839266812, 14.6839814917, 14.6840363002, 14.6840911065, 14.6841459108, 14.684200713, 14.6842555131, 14.6843103111, 14.6843651071, 14.6844199009, 14.6844746927, 14.6845294824, 14.68458427, 14.6846390556, 14.684693839, 14.6847486204, 14.6848033997, 14.6848581769, 14.6849129521, 14.6849677251, 14.6850224961, 14.685077265, 14.6851320319, 14.6851867966, 14.6852415593, 14.6852963198, 14.6853510784, 14.6854058348, 14.6854605891, 14.6855153414, 14.6855700916, 14.6856248397, 14.6856795858, 14.6857343297, 14.6857890716, 14.6858438114, 14.6858985492, 14.6859532848, 14.6860080184, 14.6860627499, 14.6861174793, 14.6861722067, 14.6862269319, 14.6862816551, 14.6863363763, 14.6863910953, 14.6864458123, 14.6865005272, 14.68655524, 14.6866099508, 14.6866646594, 14.686719366, 14.6867740705, 14.686828773, 14.6868834734, 14.6869381717, 14.6869928679, 14.6870475621, 14.6871022541, 14.6871569441, 14.6872116321, 14.6872663179, 14.6873210017, 14.6873756834, 14.6874303631, 14.6874850407, 14.6875397161, 14.6875943896, 14.6876490609, 14.6877037302, 14.6877583974, 14.6878130626, 14.6878677256, 14.6879223866, 14.6879770456, 14.6880317024, 14.6880863572, 14.6881410099, 14.6881956606, 14.6882503091, 14.6883049556, 14.6883596001, 14.6884142424, 14.6884688827, 14.688523521, 14.6885781571, 14.6886327912, 14.6886874232, 14.6887420532, 14.6887966811, 14.6888513069, 14.6889059306, 14.6889605523, 14.6890151719, 14.6890697894, 14.6891244049, 14.6891790183, 14.6892336297, 14.6892882389, 14.6893428461, 14.6893974513, 14.6894520543, 14.6895066553, 14.6895612543, 14.6896158512, 14.689670446, 14.6897250387, 14.6897796294, 14.689834218, 14.6898888045, 14.689943389, 14.6899979714, 14.6900525518, 14.6901071301, 14.6901617063, 14.6902162804, 14.6902708525, 14.6903254225, 14.6903799905, 14.6904345564, 14.6904891202, 14.690543682, 14.6905982417, 14.6906527993, 14.6907073549, 14.6907619084, 14.6908164599, 14.6908710093, 14.6909255566, 14.6909801019, 14.6910346451, 14.6910891862, 14.6911437253, 14.6911982623, 14.6912527973, 14.6913073302, 14.691361861, 14.6914163898, 14.6914709165, 14.6915254412, 14.6915799638, 14.6916344843, 14.6916890028, 14.6917435192, 14.6917980335, 14.6918525458, 14.691907056, 14.6919615642, 14.6920160703, 14.6920705744, 14.6921250764, 14.6921795763, 14.6922340742, 14.69228857, 14.6923430638, 14.6923975555, 14.6924520451, 14.6925065327, 14.6925610182, 14.6926155017, 14.6926699831, 14.6927244625, 14.6927789398, 14.692833415, 14.6928878882, 14.6929423593, 14.6929968284, 14.6930512954, 14.6931057604, 14.6931602233, 14.6932146841, 14.6932691429, 14.6933235996, 14.6933780543, 14.6934325069, 14.6934869575, 14.693541406, 14.6935958525, 14.6936502969, 14.6937047392, 14.6937591795, 14.6938136178, 14.6938680539, 14.6939224881, 14.6939769202, 14.6940313502, 14.6940857782, 14.6941402041, 14.6941946279, 14.6942490498, 14.6943034695, 14.6943578872, 14.6944123029, 14.6944667165, 14.694521128, 14.6945755375, 14.694629945, 14.6946843504, 14.6947387537, 14.694793155, 14.6948475542, 14.6949019514, 14.6949563466, 14.6950107397, 14.6950651307, 14.6951195197, 14.6951739066, 14.6952282915, 14.6952826743, 14.6953370551, 14.6953914339, 14.6954458105, 14.6955001852, 14.6955545578, 14.6956089283, 14.6956632968, 14.6957176632, 14.6957720276, 14.69582639, 14.6958807503, 14.6959351085, 14.6959894647, 14.6960438189, 14.696098171, 14.696152521, 14.696206869, 14.696261215, 14.6963155589, 14.6963699008, 14.6964242406, 14.6964785784, 14.6965329141, 14.6965872478, 14.6966415794, 14.696695909, 14.6967502365, 14.696804562, 14.6968588855, 14.6969132069, 14.6969675262, 14.6970218435, 14.6970761588, 14.697130472, 14.6971847832, 14.6972390924, 14.6972933995, 14.6973477045, 14.6974020075, 14.6974563085, 14.6975106074, 14.6975649043, 14.6976191991, 14.6976734919, 14.6977277826, 14.6977820713, 14.697836358, 14.6978906426, 14.6979449251, 14.6979992057, 14.6980534842, 14.6981077606, 14.698162035, 14.6982163074, 14.6982705777, 14.698324846, 14.6983791122, 14.6984333764, 14.6984876386, 14.6985418987, 14.6985961567, 14.6986504128, 14.6987046668, 14.6987589187, 14.6988131686, 14.6988674165, 14.6989216623, 14.6989759061, 14.6990301479, 14.6990843876, 14.6991386253, 14.6991928609, 14.6992470945, 14.6993013261, 14.6993555556, 14.6994097831, 14.6994640085, 14.6995182319, 14.6995724533, 14.6996266726, 14.6996808899, 14.6997351052, 14.6997893184, 14.6998435296, 14.6998977387, 14.6999519458, 14.7000061509, 14.7000603539, 14.7001145549, 14.7001687539, 14.7002229508, 14.7002771457, 14.7003313385, 14.7003855294, 14.7004397181, 14.7004939049, 14.7005480896, 14.7006022723, 14.7006564529, 14.7007106315, 14.7007648081, 14.7008189826, 14.7008731551, 14.7009273256, 14.700981494, 14.7010356604, 14.7010898248, 14.7011439872, 14.7011981475, 14.7012523057, 14.701306462, 14.7013606162, 14.7014147683, 14.7014689185, 14.7015230666, 14.7015772126, 14.7016313567, 14.7016854987, 14.7017396387, 14.7017937766, 14.7018479125, 14.7019020464, 14.7019561783, 14.7020103081, 14.7020644359, 14.7021185616, 14.7021726854, 14.7022268071, 14.7022809267, 14.7023350444, 14.70238916, 14.7024432736, 14.7024973851, 14.7025514946, 14.7026056021, 14.7026597076, 14.702713811, 14.7027679124, 14.7028220118, 14.7028761091, 14.7029302044, 14.7029842977, 14.703038389, 14.7030924782, 14.7031465654, 14.7032006506, 14.7032547337, 14.7033088149, 14.703362894, 14.703416971, 14.7034710461, 14.7035251191, 14.7035791901, 14.703633259, 14.703687326, 14.7037413909, 14.7037954538, 14.7038495146, 14.7039035734, 14.7039576302, 14.704011685, 14.7040657378, 14.7041197885, 14.7041738372, 14.7042278839, 14.7042819286, 14.7043359712, 14.7043900118, 14.7044440504, 14.7044980869, 14.7045521215, 14.704606154, 14.7046601845, 14.7047142129, 14.7047682394, 14.7048222638, 14.7048762862, 14.7049303065, 14.7049843249, 14.7050383412, 14.7050923555, 14.7051463678, 14.7052003781, 14.7052543863, 14.7053083925, 14.7053623967, 14.7054163989, 14.705470399, 14.7055243972, 14.7055783933, 14.7056323874, 14.7056863794, 14.7057403695, 14.7057943575, 14.7058483435, 14.7059023275, 14.7059563095, 14.7060102894, 14.7060642673, 14.7061182432, 14.7061722171, 14.706226189, 14.7062801588, 14.7063341267, 14.7063880925, 14.7064420563, 14.7064960181, 14.7065499778, 14.7066039356, 14.7066578913, 14.706711845, 14.7067657967, 14.7068197463, 14.706873694, 14.7069276396, 14.7069815832, 14.7070355248, 14.7070894644, 14.707143402, 14.7071973375, 14.7072512711, 14.7073052026, 14.7073591321, 14.7074130596, 14.707466985, 14.7075209085, 14.7075748299, 14.7076287493, 14.7076826668, 14.7077365822, 14.7077904955, 14.7078444069, 14.7078983162, 14.7079522236, 14.7080061289, 14.7080600322, 14.7081139335, 14.7081678328, 14.70822173, 14.7082756253, 14.7083295185, 14.7083834098, 14.708437299, 14.7084911862, 14.7085450714, 14.7085989545, 14.7086528357, 14.7087067148, 14.708760592, 14.7088144671, 14.7088683402, 14.7089222113, 14.7089760804, 14.7090299475, 14.7090838126, 14.7091376756, 14.7091915367, 14.7092453957, 14.7092992527, 14.7093531077, 14.7094069607, 14.7094608117, 14.7095146607, 14.7095685077, 14.7096223526, 14.7096761956, 14.7097300365, 14.7097838755, 14.7098377124, 14.7098915473, 14.7099453802, 14.7099992111, 14.71005304, 14.7101068669, 14.7101606918, 14.7102145147, 14.7102683355, 14.7103221544, 14.7103759712, 14.710429786, 14.7104835989, 14.7105374097, 14.7105912185, 14.7106450253, 14.7106988301, 14.7107526329, 14.7108064337, 14.7108602325, 14.7109140293, 14.710967824, 14.7110216168, 14.7110754076, 14.7111291963, 14.7111829831, 14.7112367678, 14.7112905505, 14.7113443313, 14.71139811, 14.7114518867, 14.7115056614, 14.7115594341, 14.7116132049, 14.7116669736, 14.7117207403, 14.711774505, 14.7118282677, 14.7118820284, 14.711935787, 14.7119895437, 14.7120432984, 14.7120970511, 14.7121508018, 14.7122045504, 14.7122582971, 14.7123120418, 14.7123657844, 14.7124195251, 14.7124732638, 14.7125270004, 14.7125807351, 14.7126344678, 14.7126881984, 14.7127419271, 14.7127956537, 14.7128493784, 14.712903101, 14.7129568217, 14.7130105404, 14.713064257, 14.7131179717, 14.7131716843, 14.713225395, 14.7132791036, 14.7133328103, 14.7133865149, 14.7134402176, 14.7134939183, 14.7135476169, 14.7136013136, 14.7136550082, 14.7137087009, 14.7137623916, 14.7138160802, 14.7138697669, 14.7139234516, 14.7139771343, 14.7140308149, 14.7140844936, 14.7141381703, 14.714191845, 14.7142455177, 14.7142991884, 14.7143528571, 14.7144065238, 14.7144601885, 14.7145138512, 14.7145675119, 14.7146211706, 14.7146748273, 14.714728482, 14.7147821348, 14.7148357855, 14.7148894342, 14.714943081, 14.7149967257, 14.7150503685, 14.7151040092, 14.715157648, 14.7152112848, 14.7152649195, 14.7153185523, 14.7153721831, 14.7154258119, 14.7154794387, 14.7155330635, 14.7155866863, 14.7156403072, 14.715693926, 14.7157475428, 14.7158011577, 14.7158547705, 14.7159083814, 14.7159619903, 14.7160155971, 14.716069202, 14.7161228049, 14.7161764058, 14.7162300047, 14.7162836016, 14.7163371966, 14.7163907895, 14.7164443804, 14.7164979694, 14.7165515564, 14.7166051413, 14.7166587243, 14.7167123053, 14.7167658843, 14.7168194613, 14.7168730364, 14.7169266094, 14.7169801804, 14.7170337495, 14.7170873166, 14.7171408816, 14.7171944447, 14.7172480058, 14.7173015649, 14.7173551221, 14.7174086772, 14.7174622303, 14.7175157815, 14.7175693307, 14.7176228779, 14.7176764231, 14.7177299663, 14.7177835075, 14.7178370467, 14.717890584, 14.7179441193, 14.7179976525, 14.7180511838, 14.7181047131, 14.7181582404, 14.7182117658, 14.7182652891, 14.7183188105, 14.7183723299, 14.7184258472, 14.7184793626, 14.7185328761, 14.7185863875, 14.718639897, 14.7186934044, 14.7187469099, 14.7188004134, 14.7188539149, 14.7189074144, 14.718960912, 14.7190144075, 14.7190679011, 14.7191213927, 14.7191748823, 14.71922837, 14.7192818556, 14.7193353393, 14.7193888209, 14.7194423006, 14.7194957784, 14.7195492541, 14.7196027278, 14.7196561996, 14.7197096694, 14.7197631372, 14.719816603, 14.7198700669, 14.7199235287, 14.7199769886, 14.7200304465, 14.7200839024, 14.7201373564, 14.7201908083, 14.7202442583, 14.7202977063, 14.7203511523, 14.7204045963, 14.7204580384, 14.7205114785, 14.7205649166, 14.7206183527, 14.7206717868, 14.720725219, 14.7207786492, 14.7208320774, 14.7208855036, 14.7209389278, 14.7209923501, 14.7210457704, 14.7210991887, 14.721152605, 14.7212060194, 14.7212594318, 14.7213128422, 14.7213662506, 14.721419657, 14.7214730615, 14.721526464, 14.7215798645, 14.7216332631, 14.7216866596, 14.7217400542, 14.7217934468, 14.7218468375, 14.7219002261, 14.7219536128, 14.7220069975, 14.7220603802, 14.722113761, 14.7221671398, 14.7222205166, 14.7222738914, 14.7223272643, 14.7223806352, 14.7224340041, 14.722487371, 14.722540736, 14.722594099, 14.72264746, 14.722700819, 14.7227541761, 14.7228075312, 14.7228608843, 14.7229142354, 14.7229675846, 14.7230209318, 14.723074277, 14.7231276203, 14.7231809616, 14.7232343009, 14.7232876382, 14.7233409736, 14.723394307, 14.7234476384, 14.7235009679, 14.7235542954, 14.7236076209, 14.7236609444, 14.723714266, 14.7237675856, 14.7238209032, 14.7238742189, 14.7239275326, 14.7239808443, 14.724034154, 14.7240874618, 14.7241407676, 14.7241940714, 14.7242473733, 14.7243006732, 14.7243539711, 14.7244072671, 14.7244605611, 14.7245138531, 14.7245671432, 14.7246204313, 14.7246737174, 14.7247270015, 14.7247802837, 14.7248335639, 14.7248868422, 14.7249401185, 14.7249933928, 14.7250466651, 14.7250999355, 14.7251532039, 14.7252064704, 14.7252597348, 14.7253129973, 14.7253662579, 14.7254195165, 14.7254727731, 14.7255260277, 14.7255792804, 14.7256325311, 14.7256857799, 14.7257390267, 14.7257922715, 14.7258455143, 14.7258987552, 14.7259519942, 14.7260052311, 14.7260584661, 14.7261116992, 14.7261649302, 14.7262181593, 14.7262713865, 14.7263246117, 14.7263778349, 14.7264310561, 14.7264842754, 14.7265374927, 14.7265907081, 14.7266439215, 14.7266971329, 14.7267503424, 14.7268035499, 14.7268567555, 14.726909959, 14.7269631607, 14.7270163603, 14.727069558, 14.7271227538, 14.7271759475, 14.7272291394, 14.7272823292, 14.7273355171, 14.727388703, 14.727441887, 14.727495069, 14.7275482491, 14.7276014272, 14.7276546033, 14.7277077775, 14.7277609497, 14.7278141199, 14.7278672882, 14.7279204546, 14.7279736189, 14.7280267814, 14.7280799418, 14.7281331003, 14.7281862568, 14.7282394114, 14.728292564, 14.7283457147, 14.7283988634, 14.7284520102, 14.728505155, 14.7285582978, 14.7286114387, 14.7286645776, 14.7287177145, 14.7287708495, 14.7288239826, 14.7288771137, 14.7289302428, 14.72898337, 14.7290364952, 14.7290896185, 14.7291427398, 14.7291958591, 14.7292489765, 14.729302092, 14.7293552055, 14.729408317, 14.7294614266, 14.7295145342, 14.7295676398, 14.7296207436, 14.7296738453, 14.7297269451, 14.729780043, 14.7298331388, 14.7298862328, 14.7299393248, 14.7299924148, 14.7300455029, 14.730098589, 14.7301516732, 14.7302047554, 14.7302578357, 14.730310914, 14.7303639903, 14.7304170647, 14.7304701372, 14.7305232077, 14.7305762762, 14.7306293428, 14.7306824075, 14.7307354702, 14.7307885309, 14.7308415897, 14.7308946465, 14.7309477014, 14.7310007544, 14.7310538054, 14.7311068544, 14.7311599015, 14.7312129466, 14.7312659898, 14.731319031, 14.7313720703, 14.7314251076, 14.731478143, 14.7315311765, 14.7315842079, 14.7316372375, 14.7316902651, 14.7317432907, 14.7317963144, 14.7318493361, 14.7319023559, 14.7319553738, 14.7320083897, 14.7320614036, 14.7321144156, 14.7321674257, 14.7322204338, 14.7322734399, 14.7323264441, 14.7323794464, 14.7324324467, 14.7324854451, 14.7325384415, 14.732591436, 14.7326444285, 14.7326974191, 14.7327504077, 14.7328033944, 14.7328563791, 14.7329093619, 14.7329623428, 14.7330153217, 14.7330682986, 14.7331212737, 14.7331742467, 14.7332272179, 14.733280187, 14.7333331543, 14.7333861196, 14.7334390829, 14.7334920443, 14.7335450038, 14.7335979613, 14.7336509168, 14.7337038705, 14.7337568221, 14.7338097719, 14.7338627197, 14.7339156655, 14.7339686094, 14.7340215514, 14.7340744914, 14.7341274295, 14.7341803656, 14.7342332998, 14.7342862321, 14.7343391624, 14.7343920908, 14.7344450172, 14.7344979417, 14.7345508642, 14.7346037848, 14.7346567035, 14.7347096202, 14.734762535, 14.7348154478, 14.7348683587, 14.7349212677, 14.7349741747, 14.7350270798, 14.7350799829, 14.7351328841, 14.7351857834, 14.7352386807, 14.7352915761, 14.7353444695, 14.735397361, 14.7354502506, 14.7355031382, 14.7355560239, 14.7356089077, 14.7356617895, 14.7357146693, 14.7357675473, 14.7358204233, 14.7358732973, 14.7359261694, 14.7359790396, 14.7360319079, 14.7360847742, 14.7361376385, 14.736190501, 14.7362433615, 14.73629622, 14.7363490766, 14.7364019313, 14.7364547841, 14.7365076349, 14.7365604838, 14.7366133307, 14.7366661757, 14.7367190188, 14.7367718599, 14.7368246991, 14.7368775364, 14.7369303717, 14.7369832051, 14.7370360365, 14.7370888661, 14.7371416937, 14.7371945193, 14.737247343, 14.7373001648, 14.7373529847, 14.7374058026, 14.7374586186, 14.7375114326, 14.7375642447, 14.7376170549, 14.7376698632, 14.7377226695, 14.7377754739, 14.7378282763, 14.7378810769, 14.7379338754, 14.7379866721, 14.7380394668, 14.7380922596, 14.7381450505, 14.7381978394, 14.7382506264, 14.7383034115, 14.7383561946, 14.7384089758, 14.7384617551, 14.7385145324, 14.7385673078, 14.7386200813, 14.7386728529, 14.7387256225, 14.7387783902, 14.7388311559, 14.7388839198, 14.7389366817, 14.7389894416, 14.7390421997, 14.7390949558, 14.73914771, 14.7392004622, 14.7392532126, 14.739305961, 14.7393587074, 14.739411452, 14.7394641946, 14.7395169353, 14.739569674, 14.7396224109, 14.7396751458, 14.7397278787, 14.7397806098, 14.7398333389, 14.7398860661, 14.7399387913, 14.7399915147, 14.7400442361, 14.7400969556, 14.7401496731, 14.7402023888, 14.7402551025, 14.7403078143, 14.7403605241, 14.740413232, 14.740465938, 14.7405186421, 14.7405713443, 14.7406240445, 14.7406767428, 14.7407294392, 14.7407821336, 14.7408348261, 14.7408875167, 14.7409402054, 14.7409928922, 14.741045577, 14.7410982599, 14.7411509409, 14.74120362, 14.7412562971, 14.7413089723, 14.7413616456, 14.741414317, 14.7414669864, 14.7415196539, 14.7415723195, 14.7416249832, 14.7416776449, 14.7417303048, 14.7417829627, 14.7418356187, 14.7418882727, 14.7419409249, 14.7419935751, 14.7420462234, 14.7420988698, 14.7421515142, 14.7422041568, 14.7422567974, 14.7423094361, 14.7423620729, 14.7424147077, 14.7424673406, 14.7425199717, 14.7425726008, 14.7426252279, 14.7426778532, 14.7427304765, 14.7427830979, 14.7428357174, 14.742888335, 14.7429409507, 14.7429935644, 14.7430461762, 14.7430987861, 14.7431513941, 14.7432040002, 14.7432566043, 14.7433092066, 14.7433618069, 14.7434144053, 14.7434670017, 14.7435195963, 14.7435721889, 14.7436247797, 14.7436773685, 14.7437299554, 14.7437825403, 14.7438351234, 14.7438877045, 14.7439402838, 14.7439928611, 14.7440454365, 14.7440980099, 14.7441505815, 14.7442031511, 14.7442557189, 14.7443082847, 14.7443608486, 14.7444134106, 14.7444659706, 14.7445185288, 14.744571085, 14.7446236393, 14.7446761918, 14.7447287422, 14.7447812908, 14.7448338375, 14.7448863823, 14.7449389251, 14.744991466, 14.745044005, 14.7450965421, 14.7451490773, 14.7452016106, 14.745254142, 14.7453066714, 14.7453591989, 14.7454117246, 14.7454642483, 14.7455167701, 14.74556929, 14.7456218079, 14.745674324, 14.7457268382, 14.7457793504, 14.7458318607, 14.7458843691, 14.7459368756, 14.7459893802, 14.7460418829, 14.7460943837, 14.7461468826, 14.7461993795, 14.7462518746, 14.7463043677, 14.7463568589, 14.7464093482, 14.7464618356, 14.7465143211, 14.7465668047, 14.7466192864, 14.7466717662, 14.746724244, 14.74677672, 14.746829194, 14.7468816661, 14.7469341364, 14.7469866047, 14.7470390711, 14.7470915356, 14.7471439982, 14.7471964589, 14.7472489176, 14.7473013745, 14.7473538295, 14.7474062825, 14.7474587337, 14.7475111829, 14.7475636303, 14.7476160757, 14.7476685192, 14.7477209608, 14.7477734005, 14.7478258383, 14.7478782742, 14.7479307082, 14.7479831403, 14.7480355705, 14.7480879988, 14.7481404251, 14.7481928496, 14.7482452721, 14.7482976928, 14.7483501116, 14.7484025284, 14.7484549433, 14.7485073564, 14.7485597675, 14.7486121767, 14.7486645841, 14.7487169895, 14.748769393, 14.7488217946, 14.7488741943, 14.7489265921, 14.748978988, 14.749031382, 14.7490837741, 14.7491361643, 14.7491885526, 14.749240939, 14.7492933235, 14.7493457061, 14.7493980868, 14.7494504656, 14.7495028425, 14.7495552174, 14.7496075905, 14.7496599617, 14.749712331, 14.7497646983, 14.7498170638, 14.7498694274, 14.7499217891, 14.7499741488, 14.7500265067, 14.7500788627, 14.7501312168, 14.7501835689, 14.7502359192, 14.7502882676, 14.7503406141, 14.7503929586, 14.7504453013, 14.7504976421, 14.750549981, 14.750602318, 14.750654653, 14.7507069862, 14.7507593175, 14.7508116469, 14.7508639744, 14.7509163, 14.7509686237, 14.7510209455, 14.7510732654, 14.7511255834, 14.7511778995, 14.7512302137, 14.751282526, 14.7513348364, 14.7513871449, 14.7514394515, 14.7514917563, 14.7515440591, 14.75159636, 14.7516486591, 14.7517009562, 14.7517532514, 14.7518055448, 14.7518578362, 14.7519101258, 14.7519624135, 14.7520146992, 14.7520669831, 14.7521192651, 14.7521715452, 14.7522238234, 14.7522760996, 14.752328374, 14.7523806466, 14.7524329172, 14.7524851859, 14.7525374527, 14.7525897176, 14.7526419807, 14.7526942418, 14.7527465011, 14.7527987584, 14.7528510139, 14.7529032675, 14.7529555192, 14.7530077689, 14.7530600168, 14.7531122628, 14.753164507, 14.7532167492, 14.7532689895, 14.7533212279, 14.7533734645, 14.7534256991, 14.7534779319, 14.7535301628, 14.7535823918, 14.7536346189, 14.7536868441, 14.7537390674, 14.7537912888, 14.7538435083, 14.753895726, 14.7539479417, 14.7540001556, 14.7540523675, 14.7541045776, 14.7541567858, 14.7542089921, 14.7542611965, 14.754313399, 14.7543655997, 14.7544177984, 14.7544699953, 14.7545221902, 14.7545743833, 14.7546265745, 14.7546787638, 14.7547309512, 14.7547831368, 14.7548353204, 14.7548875022, 14.754939682, 14.75499186, 14.7550440361, 14.7550962103, 14.7551483826, 14.7552005531, 14.7552527216, 14.7553048883, 14.755357053, 14.7554092159, 14.7554613769, 14.755513536, 14.7555656933, 14.7556178486, 14.7556700021, 14.7557221536, 14.7557743033, 14.7558264511, 14.7558785971, 14.7559307411, 14.7559828832, 14.7560350235, 14.7560871619, 14.7561392984, 14.756191433, 14.7562435657, 14.7562956966, 14.7563478255, 14.7563999526, 14.7564520778, 14.7565042011, 14.7565563225, 14.7566084421, 14.7566605597, 14.7567126755, 14.7567647894, 14.7568169014, 14.7568690115, 14.7569211198, 14.7569732262, 14.7570253307, 14.7570774333, 14.757129534, 14.7571816328, 14.7572337298, 14.7572858249, 14.7573379181, 14.7573900094, 14.7574420988, 14.7574941864, 14.757546272, 14.7575983558, 14.7576504377, 14.7577025178, 14.7577545959, 14.7578066722, 14.7578587466, 14.7579108191, 14.7579628897, 14.7580149585, 14.7580670254, 14.7581190904, 14.7581711535, 14.7582232147, 14.7582752741, 14.7583273316, 14.7583793872, 14.7584314409, 14.7584834927, 14.7585355427, 14.7585875908, 14.758639637, 14.7586916814, 14.7587437238, 14.7587957644, 14.7588478031, 14.7588998399, 14.7589518749, 14.759003908, 14.7590559392, 14.7591079685, 14.7591599959, 14.7592120215, 14.7592640452, 14.759316067, 14.7593680869, 14.759420105, 14.7594721212, 14.7595241355, 14.759576148, 14.7596281585, 14.7596801672, 14.759732174, 14.759784179, 14.759836182, 14.7598881832, 14.7599401825, 14.75999218, 14.7600441755, 14.7600961692, 14.7601481611, 14.760200151, 14.7602521391, 14.7603041253, 14.7603561096, 14.7604080921, 14.7604600726, 14.7605120514, 14.7605640282, 14.7606160032, 14.7606679762, 14.7607199475, 14.7607719168, 14.7608238843, 14.7608758499, 14.7609278136, 14.7609797755, 14.7610317355, 14.7610836936, 14.7611356498, 14.7611876042, 14.7612395567, 14.7612915073, 14.7613434561, 14.761395403, 14.761447348, 14.7614992912, 14.7615512324, 14.7616031719, 14.7616551094, 14.7617070451, 14.7617589789, 14.7618109108, 14.7618628409, 14.7619147691, 14.7619666954, 14.7620186198, 14.7620705424, 14.7621224631, 14.762174382, 14.762226299, 14.7622782141, 14.7623301273, 14.7623820387, 14.7624339482, 14.7624858559, 14.7625377616, 14.7625896655, 14.7626415676, 14.7626934678, 14.7627453661, 14.7627972625, 14.7628491571, 14.7629010498, 14.7629529406, 14.7630048296, 14.7630567167, 14.7631086019, 14.7631604853, 14.7632123668, 14.7632642465, 14.7633161242, 14.7633680001, 14.7634198742, 14.7634717464, 14.7635236167, 14.7635754851, 14.7636273517, 14.7636792164, 14.7637310793, 14.7637829403, 14.7638347994, 14.7638866567, 14.7639385121, 14.7639903656, 14.7640422173, 14.7640940671, 14.7641459151, 14.7641977611, 14.7642496054, 14.7643014477, 14.7643532882, 14.7644051269, 14.7644569636, 14.7645087985, 14.7645606316, 14.7646124628, 14.7646642921, 14.7647161195, 14.7647679451, 14.7648197689, 14.7648715907, 14.7649234107, 14.7649752289, 14.7650270452, 14.7650788596, 14.7651306722, 14.7651824829, 14.7652342917, 14.7652860987, 14.7653379038, 14.7653897071, 14.7654415085, 14.7654933081, 14.7655451058, 14.7655969016, 14.7656486955, 14.7657004877, 14.7657522779, 14.7658040663, 14.7658558528, 14.7659076375, 14.7659594203, 14.7660112013, 14.7660629803, 14.7661147576, 14.766166533, 14.7662183065, 14.7662700781, 14.766321848, 14.7663736159, 14.766425382, 14.7664771462, 14.7665289086, 14.7665806691, 14.7666324278, 14.7666841846, 14.7667359395, 14.7667876926, 14.7668394439, 14.7668911932, 14.7669429408, 14.7669946864, 14.7670464302, 14.7670981722, 14.7671499123, 14.7672016505, 14.7672533869, 14.7673051214, 14.7673568541, 14.7674085849, 14.7674603139, 14.767512041, 14.7675637663, 14.7676154897, 14.7676672112, 14.7677189309, 14.7677706488, 14.7678223648, 14.7678740789, 14.7679257912, 14.7679775016, 14.7680292102, 14.7680809169, 14.7681326218, 14.7681843248, 14.7682360259, 14.7682877252, 14.7683394227, 14.7683911183, 14.7684428121, 14.768494504, 14.768546194, 14.7685978822, 14.7686495685, 14.768701253, 14.7687529357, 14.7688046165, 14.7688562954, 14.7689079725, 14.7689596477, 14.7690113211, 14.7690629926, 14.7691146623, 14.7691663301, 14.7692179961, 14.7692696603, 14.7693213225, 14.769372983, 14.7694246416, 14.7694762983, 14.7695279532, 14.7695796062, 14.7696312574, 14.7696829067, 14.7697345542, 14.7697861998, 14.7698378436, 14.7698894856, 14.7699411257, 14.7699927639, 14.7700444003, 14.7700960348, 14.7701476675, 14.7701992984, 14.7702509274, 14.7703025546, 14.7703541799, 14.7704058033, 14.7704574249, 14.7705090447, 14.7705606626, 14.7706122787, 14.7706638929, 14.7707155053, 14.7707671158, 14.7708187245, 14.7708703314, 14.7709219364, 14.7709735395, 14.7710251408, 14.7710767403, 14.7711283379, 14.7711799336, 14.7712315276, 14.7712831196, 14.7713347099, 14.7713862983, 14.7714378848, 14.7714894695, 14.7715410524, 14.7715926334, 14.7716442125, 14.7716957899, 14.7717473653, 14.771798939, 14.7718505108, 14.7719020807, 14.7719536488, 14.7720052151, 14.7720567795, 14.7721083421, 14.7721599028, 14.7722114617, 14.7722630187, 14.7723145739, 14.7723661273, 14.7724176788, 14.7724692285, 14.7725207763, 14.7725723223, 14.7726238665, 14.7726754088, 14.7727269492, 14.7727784879, 14.7728300247, 14.7728815596, 14.7729330927, 14.772984624, 14.7730361534, 14.773087681, 14.7731392067, 14.7731907306, 14.7732422527, 14.7732937729, 14.7733452913, 14.7733968078, 14.7734483225, 14.7734998354, 14.7735513464, 14.7736028556, 14.773654363, 14.7737058685, 14.7737573721, 14.773808874, 14.773860374, 14.7739118721, 14.7739633684, 14.7740148629, 14.7740663556, 14.7741178464, 14.7741693353, 14.7742208224, 14.7742723077, 14.7743237912, 14.7743752728, 14.7744267526, 14.7744782305, 14.7745297066, 14.7745811809, 14.7746326533, 14.7746841239, 14.7747355927, 14.7747870596, 14.7748385247, 14.7748899879, 14.7749414494, 14.7749929089, 14.7750443667, 14.7750958226, 14.7751472767, 14.7751987289, 14.7752501793, 14.7753016279, 14.7753530746, 14.7754045195, 14.7754559626, 14.7755074038, 14.7755588432, 14.7756102808, 14.7756617165, 14.7757131504, 14.7757645824, 14.7758160127, 14.7758674411, 14.7759188676, 14.7759702924, 14.7760217153, 14.7760731363, 14.7761245555, 14.7761759729, 14.7762273885, 14.7762788022, 14.7763302141, 14.7763816242, 14.7764330324, 14.7764844388, 14.7765358434, 14.7765872462, 14.7766386471, 14.7766900462, 14.7767414434, 14.7767928388, 14.7768442324, 14.7768956242, 14.7769470141, 14.7769984022, 14.7770497884, 14.7771011729, 14.7771525555, 14.7772039362, 14.7772553152, 14.7773066923, 14.7773580676, 14.777409441, 14.7774608127, 14.7775121825, 14.7775635504, 14.7776149166, 14.7776662809, 14.7777176434, 14.777769004, 14.7778203628, 14.7778717198, 14.777923075, 14.7779744283, 14.7780257799, 14.7780771295, 14.7781284774, 14.7781798234, 14.7782311676, 14.77828251, 14.7783338505, 14.7783851893, 14.7784365262, 14.7784878612, 14.7785391945, 14.7785905259, 14.7786418555, 14.7786931832, 14.7787445092, 14.7787958333, 14.7788471556, 14.778898476, 14.7789497946, 14.7790011114, 14.7790524264, 14.7791037396, 14.7791550509, 14.7792063604, 14.7792576681, 14.779308974, 14.779360278, 14.7794115802, 14.7794628806, 14.7795141791, 14.7795654759, 14.7796167708, 14.7796680639, 14.7797193551, 14.7797706446, 14.7798219322, 14.779873218, 14.779924502, 14.7799757841, 14.7800270644, 14.7800783429, 14.7801296196, 14.7801808945, 14.7802321675, 14.7802834387, 14.7803347081, 14.7803859757, 14.7804372414, 14.7804885054, 14.7805397675, 14.7805910278, 14.7806422862, 14.7806935429, 14.7807447977, 14.7807960507, 14.7808473019, 14.7808985512, 14.7809497987, 14.7810010445, 14.7810522884, 14.7811035304, 14.7811547707, 14.7812060091, 14.7812572457, 14.7813084805, 14.7813597135, 14.7814109447, 14.781462174, 14.7815134015, 14.7815646272, 14.7816158511, 14.7816670732, 14.7817182934, 14.7817695119, 14.7818207285, 14.7818719433, 14.7819231562, 14.7819743674, 14.7820255767, 14.7820767842, 14.7821279899, 14.7821791938, 14.7822303959, 14.7822815961, 14.7823327946, 14.7823839912, 14.782435186, 14.782486379, 14.7825375701, 14.7825887595, 14.782639947, 14.7826911327, 14.7827423166, 14.7827934987, 14.782844679, 14.7828958575, 14.7829470341, 14.7829982089, 14.7830493819, 14.7831005531, 14.7831517225, 14.7832028901, 14.7832540558, 14.7833052197, 14.7833563819, 14.7834075422, 14.7834587007, 14.7835098573, 14.7835610122, 14.7836121653, 14.7836633165, 14.7837144659, 14.7837656135, 14.7838167593, 14.7838679033, 14.7839190455, 14.7839701858, 14.7840213244, 14.7840724611, 14.784123596, 14.7841747291, 14.7842258604, 14.7842769899, 14.7843281176, 14.7843792434, 14.7844303675, 14.7844814897, 14.7845326101, 14.7845837288, 14.7846348456, 14.7846859605, 14.7847370737, 14.7847881851, 14.7848392947, 14.7848904024, 14.7849415083, 14.7849926125, 14.7850437148, 14.7850948153, 14.785145914, 14.7851970109, 14.7852481059, 14.7852991992, 14.7853502907, 14.7854013803, 14.7854524682, 14.7855035542, 14.7855546384, 14.7856057208, 14.7856568014, 14.7857078802, 14.7857589572, 14.7858100324, 14.7858611058, 14.7859121773, 14.7859632471, 14.786014315, 14.7860653812, 14.7861164455, 14.786167508, 14.7862185687, 14.7862696276, 14.7863206848, 14.78637174, 14.7864227935, 14.7864738452, 14.7865248951, 14.7865759432, 14.7866269894, 14.7866780339, 14.7867290765, 14.7867801174, 14.7868311564, 14.7868821937, 14.7869332291, 14.7869842627, 14.7870352945, 14.7870863246, 14.7871373528, 14.7871883792, 14.7872394038, 14.7872904266, 14.7873414476, 14.7873924667, 14.7874434841, 14.7874944997, 14.7875455135, 14.7875965254, 14.7876475356, 14.787698544, 14.7877495505, 14.7878005553, 14.7878515582, 14.7879025594, 14.7879535587, 14.7880045563, 14.788055552, 14.788106546, 14.7881575381, 14.7882085284, 14.788259517, 14.7883105037, 14.7883614886, 14.7884124718, 14.7884634531, 14.7885144326, 14.7885654103, 14.7886163863, 14.7886673604, 14.7887183327, 14.7887693032, 14.7888202719, 14.7888712388, 14.788922204, 14.7889731673, 14.7890241288, 14.7890750885, 14.7891260464, 14.7891770025, 14.7892279569, 14.7892789094, 14.7893298601, 14.789380809, 14.7894317561, 14.7894827014, 14.789533645, 14.7895845867, 14.7896355266, 14.7896864647, 14.7897374011, 14.7897883356, 14.7898392683, 14.7898901993, 14.7899411284, 14.7899920557, 14.7900429813, 14.790093905, 14.7901448269, 14.7901957471, 14.7902466654, 14.790297582, 14.7903484968, 14.7903994097, 14.7904503209, 14.7905012302, 14.7905521378, 14.7906030436, 14.7906539476, 14.7907048497, 14.7907557501, 14.7908066487, 14.7908575455, 14.7909084405, 14.7909593337, 14.7910102251, 14.7910611147, 14.7911120025, 14.7911628886, 14.7912137728, 14.7912646552, 14.7913155359, 14.7913664147, 14.7914172917, 14.791468167, 14.7915190405, 14.7915699121, 14.791620782, 14.7916716501, 14.7917225164, 14.7917733809, 14.7918242436, 14.7918751045, 14.7919259636, 14.7919768209, 14.7920276764, 14.7920785302, 14.7921293821, 14.7921802323, 14.7922310806, 14.7922819272, 14.792332772, 14.7923836149, 14.7924344561, 14.7924852955, 14.7925361331, 14.7925869689, 14.792637803, 14.7926886352, 14.7927394656, 14.7927902943, 14.7928411212, 14.7928919462, 14.7929427695, 14.792993591, 14.7930444107, 14.7930952286, 14.7931460447, 14.7931968591, 14.7932476716, 14.7932984824, 14.7933492913, 14.7934000985, 14.7934509039, 14.7935017075, 14.7935525093, 14.7936033093, 14.7936541075, 14.7937049039, 14.7937556986, 14.7938064915, 14.7938572825, 14.7939080718, 14.7939588593, 14.794009645, 14.7940604289, 14.7941112111, 14.7941619914, 14.79421277, 14.7942635468, 14.7943143217, 14.7943650949, 14.7944158664, 14.794466636, 14.7945174038, 14.7945681699, 14.7946189341, 14.7946696966, 14.7947204573, 14.7947712162, 14.7948219733, 14.7948727287, 14.7949234822, 14.794974234, 14.795024984, 14.7950757322, 14.7951264786, 14.7951772232, 14.795227966, 14.7952787071, 14.7953294464, 14.7953801838, 14.7954309195, 14.7954816535, 14.7955323856, 14.7955831159, 14.7956338445, 14.7956845713, 14.7957352963, 14.7957860195, 14.7958367409, 14.7958874606, 14.7959381784, 14.7959888945, 14.7960396088, 14.7960903213, 14.7961410321, 14.796191741, 14.7962424482, 14.7962931536, 14.7963438572, 14.796394559, 14.7964452591, 14.7964959573, 14.7965466538, 14.7965973485, 14.7966480414, 14.7966987325, 14.7967494219, 14.7968001095, 14.7968507953, 14.7969014793, 14.7969521615, 14.797002842, 14.7970535206, 14.7971041975, 14.7971548726, 14.797205546, 14.7972562175, 14.7973068873, 14.7973575553, 14.7974082215, 14.7974588859, 14.7975095486, 14.7975602094, 14.7976108685, 14.7976615259, 14.7977121814, 14.7977628352, 14.7978134871, 14.7978641373, 14.7979147858, 14.7979654324, 14.7980160773, 14.7980667204, 14.7981173617, 14.7981680012, 14.798218639, 14.7982692749, 14.7983199092, 14.7983705416, 14.7984211722, 14.7984718011, 14.7985224282, 14.7985730535, 14.7986236771, 14.7986742988, 14.7987249188, 14.798775537, 14.7988261535, 14.7988767681, 14.798927381, 14.7989779921, 14.7990286015, 14.799079209, 14.7991298148, 14.7991804188, 14.7992310211, 14.7992816215, 14.7993322202, 14.7993828171, 14.7994334123, 14.7994840056, 14.7995345972, 14.799585187, 14.7996357751, 14.7996863613, 14.7997369458, 14.7997875285, 14.7998381095, 14.7998886887, 14.7999392661, 14.7999898417, 14.8000404155, 14.8000909876, 14.8001415579, 14.8001921265, 14.8002426932, 14.8002932582, 14.8003438214, 14.8003943829, 14.8004449426, 14.8004955005, 14.8005460566, 14.800596611, 14.8006471635, 14.8006977144, 14.8007482634, 14.8007988107, 14.8008493562, 14.8008998999, 14.8009504419, 14.8010009821, 14.8010515205, 14.8011020571, 14.801152592, 14.8012031251, 14.8012536565, 14.801304186, 14.8013547139, 14.8014052399, 14.8014557641, 14.8015062866, 14.8015568074, 14.8016073263, 14.8016578435, 14.8017083589, 14.8017588726, 14.8018093844, 14.8018598946, 14.8019104029, 14.8019609095, 14.8020114143, 14.8020619173, 14.8021124186, 14.8021629181, 14.8022134158, 14.8022639118, 14.802314406, 14.8023648984, 14.8024153891, 14.802465878, 14.8025163651, 14.8025668505, 14.8026173341, 14.8026678159, 14.802718296, 14.8027687743, 14.8028192508, 14.8028697256, 14.8029201986, 14.8029706698, 14.8030211393, 14.803071607, 14.8031220729, 14.8031725371, 14.8032229995, 14.8032734602, 14.803323919, 14.8033743762, 14.8034248315, 14.8034752851, 14.8035257369, 14.803576187, 14.8036266353, 14.8036770818, 14.8037275266, 14.8037779696, 14.8038284108, 14.8038788503, 14.803929288, 14.8039797239, 14.8040301581, 14.8040805905, 14.8041310212, 14.8041814501, 14.8042318772, 14.8042823026, 14.8043327262, 14.804383148, 14.8044335681, 14.8044839864, 14.804534403, 14.8045848178, 14.8046352308, 14.8046856421, 14.8047360516, 14.8047864594, 14.8048368654, 14.8048872696, 14.8049376721, 14.8049880728, 14.8050384717, 14.8050888689, 14.8051392643, 14.805189658, 14.8052400499, 14.80529044, 14.8053408284, 14.805391215, 14.8054415999, 14.805491983, 14.8055423644, 14.8055927439, 14.8056431218, 14.8056934978, 14.8057438722, 14.8057942447, 14.8058446155, 14.8058949845, 14.8059453518, 14.8059957173, 14.8060460811, 14.8060964431, 14.8061468033, 14.8061971618, 14.8062475185, 14.8062978735, 14.8063482267, 14.8063985782, 14.8064489279, 14.8064992758, 14.806549622, 14.8065999664, 14.8066503091, 14.80670065, 14.8067509891, 14.8068013265, 14.8068516622, 14.8069019961, 14.8069523282, 14.8070026586, 14.8070529872, 14.8071033141, 14.8071536392, 14.8072039625, 14.8072542841, 14.807304604, 14.8073549221, 14.8074052384, 14.807455553, 14.8075058658, 14.8075561769, 14.8076064862, 14.8076567937, 14.8077070995, 14.8077574036, 14.8078077059, 14.8078580064, 14.8079083052, 14.8079586023, 14.8080088975, 14.8080591911, 14.8081094828, 14.8081597729, 14.8082100611, 14.8082603477, 14.8083106324, 14.8083609154, 14.8084111967, 14.8084614762, 14.808511754, 14.80856203, 14.8086123042, 14.8086625767, 14.8087128475, 14.8087631165, 14.8088133837, 14.8088636492, 14.8089139129, 14.8089641749, 14.8090144352, 14.8090646936, 14.8091149504, 14.8091652054, 14.8092154586, 14.8092657101, 14.8093159598, 14.8093662078, 14.8094164541, 14.8094666985, 14.8095169413, 14.8095671823, 14.8096174215, 14.809667659, 14.8097178947, 14.8097681287, 14.809818361, 14.8098685914, 14.8099188202, 14.8099690472, 14.8100192724, 14.8100694959, 14.8101197177, 14.8101699377, 14.8102201559, 14.8102703724, 14.8103205872, 14.8103708002, 14.8104210114, 14.810471221, 14.8105214287, 14.8105716347, 14.810621839, 14.8106720415, 14.8107222423, 14.8107724413, 14.8108226386, 14.8108728342, 14.810923028, 14.81097322, 14.8110234103, 14.8110735989, 14.8111237857, 14.8111739707, 14.811224154, 14.8112743356, 14.8113245154, 14.8113746935, 14.8114248698, 14.8114750444, 14.8115252173, 14.8115753884, 14.8116255577, 14.8116757253, 14.8117258912, 14.8117760553, 14.8118262177, 14.8118763783, 14.8119265372, 14.8119766944, 14.8120268498, 14.8120770034, 14.8121271553, 14.8121773055, 14.8122274539, 14.8122776006, 14.8123277456, 14.8123778888, 14.8124280302, 14.8124781699, 14.8125283079, 14.8125784441, 14.8126285786, 14.8126787114, 14.8127288424, 14.8127789716, 14.8128290991, 14.8128792249, 14.812929349, 14.8129794713, 14.8130295918, 14.8130797106, 14.8131298277, 14.813179943, 14.8132300566, 14.8132801685, 14.8133302786, 14.8133803869, 14.8134304936, 14.8134805984, 14.8135307016, 14.813580803, 14.8136309027, 14.8136810006, 14.8137310968, 14.8137811912, 14.8138312839, 14.8138813749, 14.8139314641, 14.8139815516, 14.8140316374, 14.8140817214, 14.8141318037, 14.8141818842, 14.814231963, 14.81428204, 14.8143321154, 14.814382189, 14.8144322608, 14.8144823309, 14.8145323993, 14.8145824659, 14.8146325308, 14.814682594, 14.8147326554, 14.8147827151, 14.814832773, 14.8148828292, 14.8149328837, 14.8149829364, 14.8150329874, 14.8150830367, 14.8151330842, 14.81518313, 14.8152331741, 14.8152832164, 14.815333257, 14.8153832958, 14.8154333329, 14.8154833683, 14.8155334019, 14.8155834339, 14.815633464, 14.8156834925, 14.8157335192, 14.8157835441, 14.8158335674, 14.8158835889, 14.8159336086, 14.8159836267, 14.8160336429, 14.8160836575, 14.8161336703, 14.8161836814, 14.8162336908, 14.8162836984, 14.8163337043, 14.8163837085, 14.8164337109, 14.8164837116, 14.8165337106, 14.8165837078, 14.8166337033, 14.816683697, 14.8167336891, 14.8167836794, 14.8168336679, 14.8168836548, 14.8169336399, 14.8169836233, 14.8170336049, 14.8170835848, 14.817133563, 14.8171835394, 14.8172335141, 14.8172834871, 14.8173334584, 14.8173834279, 14.8174333957, 14.8174833617, 14.8175333261, 14.8175832887, 14.8176332495, 14.8176832087, 14.8177331661, 14.8177831218, 14.8178330757, 14.8178830279, 14.8179329784, 14.8179829272, 14.8180328742, 14.8180828195, 14.8181327631, 14.8181827049, 14.8182326451, 14.8182825835, 14.8183325201, 14.818382455, 14.8184323882, 14.8184823197, 14.8185322495, 14.8185821775, 14.8186321038, 14.8186820283, 14.8187319512, 14.8187818723, 14.8188317917, 14.8188817093, 14.8189316252, 14.8189815394, 14.8190314519, 14.8190813626, 14.8191312717, 14.819181179, 14.8192310845, 14.8192809884, 14.8193308905, 14.8193807909, 14.8194306895, 14.8194805865, 14.8195304817, 14.8195803752, 14.8196302669, 14.8196801569, 14.8197300453, 14.8197799318, 14.8198298167, 14.8198796998, 14.8199295812, 14.8199794609, 14.8200293389, 14.8200792151, 14.8201290896, 14.8201789624, 14.8202288335, 14.8202787028, 14.8203285704, 14.8203784363, 14.8204283005, 14.8204781629, 14.8205280237, 14.8205778827, 14.8206277399, 14.8206775955, 14.8207274493, 14.8207773014, 14.8208271518, 14.8208770005, 14.8209268474, 14.8209766926, 14.8210265361, 14.8210763779, 14.8211262179, 14.8211760563, 14.8212258929, 14.8212757278, 14.8213255609, 14.8213753924, 14.8214252221, 14.8214750501, 14.8215248764, 14.8215747009, 14.8216245238, 14.8216743449, 14.8217241643, 14.821773982, 14.8218237979, 14.8218736122, 14.8219234247, 14.8219732355, 14.8220230446, 14.8220728519, 14.8221226576, 14.8221724615, 14.8222222637, 14.8222720642, 14.8223218629, 14.82237166, 14.8224214553, 14.8224712489, 14.8225210408, 14.822570831, 14.8226206194, 14.8226704061, 14.8227201911, 14.8227699744, 14.822819756, 14.8228695359, 14.822919314, 14.8229690905, 14.8230188652, 14.8230686382, 14.8231184094, 14.823168179, 14.8232179468, 14.8232677129, 14.8233174774, 14.82336724, 14.823417001, 14.8234667603, 14.8235165178, 14.8235662736, 14.8236160278, 14.8236657801, 14.8237155308, 14.8237652798, 14.823815027, 14.8238647726, 14.8239145164, 14.8239642585, 14.8240139989, 14.8240637375, 14.8241134745, 14.8241632097, 14.8242129433, 14.8242626751, 14.8243124052, 14.8243621336, 14.8244118602, 14.8244615852, 14.8245113084, 14.82456103, 14.8246107498, 14.8246604679, 14.8247101843, 14.824759899, 14.8248096119, 14.8248593232, 14.8249090327, 14.8249587405, 14.8250084466, 14.825058151, 14.8251078537, 14.8251575547, 14.825207254, 14.8252569515, 14.8253066474, 14.8253563415, 14.8254060339, 14.8254557246, 14.8255054136, 14.8255551009, 14.8256047864, 14.8256544703, 14.8257041524, 14.8257538329, 14.8258035116, 14.8258531886, 14.8259028639, 14.8259525375, 14.8260022094, 14.8260518796, 14.826101548, 14.8261512148, 14.8262008798, 14.8262505432, 14.8263002048, 14.8263498647, 14.8263995229, 14.8264491794, 14.8264988342, 14.8265484873, 14.8265981387, 14.8266477883, 14.8266974363, 14.8267470825, 14.8267967271, 14.8268463699, 14.826896011, 14.8269456504, 14.8269952881, 14.8270449241, 14.8270945584, 14.827144191, 14.8271938219, 14.827243451, 14.8272930785, 14.8273427042, 14.8273923283, 14.8274419506, 14.8274915712, 14.8275411902, 14.8275908074, 14.8276404229, 14.8276900367, 14.8277396488, 14.8277892592, 14.8278388679, 14.8278884749, 14.8279380801, 14.8279876837, 14.8280372856, 14.8280868857, 14.8281364842, 14.8281860809, 14.828235676, 14.8282852693, 14.828334861, 14.8283844509, 14.8284340391, 14.8284836256, 14.8285332105, 14.8285827936, 14.828632375, 14.8286819547, 14.8287315327, 14.828781109, 14.8288306836, 14.8288802565, 14.8289298277, 14.8289793971, 14.8290289649, 14.829078531, 14.8291280954, 14.829177658, 14.829227219, 14.8292767783, 14.8293263358, 14.8293758917, 14.8294254459, 14.8294749983, 14.8295245491, 14.8295740981, 14.8296236455, 14.8296731911, 14.8297227351, 14.8297722773, 14.8298218179, 14.8298713567, 14.8299208939, 14.8299704293, 14.8300199631, 14.8300694951, 14.8301190254, 14.8301685541, 14.830218081, 14.8302676063, 14.8303171298, 14.8303666517, 14.8304161718, 14.8304656902, 14.830515207, 14.830564722, 14.8306142354, 14.830663747, 14.830713257, 14.8307627652, 14.8308122717, 14.8308617766, 14.8309112797, 14.8309607812, 14.8310102809, 14.831059779, 14.8311092754, 14.83115877, 14.831208263, 14.8312577542, 14.8313072438, 14.8313567317, 14.8314062178, 14.8314557023, 14.8315051851, 14.8315546662, 14.8316041455, 14.8316536232, 14.8317030992, 14.8317525735, 14.8318020461, 14.831851517, 14.8319009862, 14.8319504537, 14.8319999195, 14.8320493836, 14.832098846, 14.8321483068, 14.8321977658, 14.8322472231, 14.8322966787, 14.8323461327, 14.8323955849, 14.8324450355, 14.8324944843, 14.8325439315, 14.832593377, 14.8326428207, 14.8326922628, 14.8327417032, 14.8327911419, 14.8328405789, 14.8328900142, 14.8329394478, 14.8329888797, 14.8330383099, 14.8330877384, 14.8331371653, 14.8331865904, 14.8332360138, 14.8332854356, 14.8333348556, 14.833384274, 14.8334336907, 14.8334831057, 14.8335325189, 14.8335819305, 14.8336313404, 14.8336807487, 14.8337301552, 14.83377956, 14.8338289631, 14.8338783646, 14.8339277643, 14.8339771624, 14.8340265588, 14.8340759534, 14.8341253464, 14.8341747377, 14.8342241273, 14.8342735152, 14.8343229015, 14.834372286, 14.8344216688, 14.83447105, 14.8345204294, 14.8345698072, 14.8346191833, 14.8346685577, 14.8347179304, 14.8347673014, 14.8348166707, 14.8348660384, 14.8349154043, 14.8349647686, 14.8350141311, 14.835063492, 14.8351128512, 14.8351622087, 14.8352115645, 14.8352609186, 14.8353102711, 14.8353596218, 14.8354089709, 14.8354583182, 14.8355076639, 14.8355570079, 14.8356063502, 14.8356556908, 14.8357050298, 14.835754367, 14.8358037026, 14.8358530364, 14.8359023686, 14.8359516991, 14.8360010279, 14.8360503551, 14.8360996805, 14.8361490042, 14.8361983263, 14.8362476467, 14.8362969654, 14.8363462824, 14.8363955977, 14.8364449113, 14.8364942233, 14.8365435336, 14.8365928421, 14.836642149, 14.8366914542, 14.8367407578, 14.8367900596, 14.8368393597, 14.8368886582, 14.836937955, 14.8369872501, 14.8370365435, 14.8370858352, 14.8371351253, 14.8371844137, 14.8372337003, 14.8372829853, 14.8373322686, 14.8373815503, 14.8374308302, 14.8374801085, 14.8375293851, 14.83757866, 14.8376279332, 14.8376772047, 14.8377264745, 14.8377757427, 14.8378250092, 14.837874274, 14.8379235371, 14.8379727986, 14.8380220583, 14.8380713164, 14.8381205728, 14.8381698275, 14.8382190805, 14.8382683318, 14.8383175815, 14.8383668295, 14.8384160758, 14.8384653204, 14.8385145634, 14.8385638046, 14.8386130442, 14.8386622821, 14.8387115183, 14.8387607529, 14.8388099857, 14.8388592169, 14.8389084464, 14.8389576742, 14.8390069003, 14.8390561248, 14.8391053476, 14.8391545687, 14.8392037881, 14.8392530058, 14.8393022219, 14.8393514363, 14.839400649, 14.83944986, 14.8394990694, 14.839548277, 14.839597483, 14.8396466873, 14.83969589, 14.8397450909, 14.8397942902, 14.8398434878, 14.8398926837, 14.839941878, 14.8399910705, 14.8400402614, 14.8400894506, 14.8401386382, 14.840187824, 14.8402370082, 14.8402861907, 14.8403353716, 14.8403845507, 14.8404337282, 14.840482904, 14.8405320781, 14.8405812506, 14.8406304213, 14.8406795904, 14.8407287578, 14.8407779236, 14.8408270877, 14.8408762501, 14.8409254108, 14.8409745698, 14.8410237272, 14.8410728829, 14.8411220369, 14.8411711892, 14.8412203399, 14.8412694889, 14.8413186362, 14.8413677819, 14.8414169259, 14.8414660682, 14.8415152088, 14.8415643477, 14.841613485, 14.8416626206, 14.8417117545, 14.8417608868, 14.8418100174, 14.8418591463, 14.8419082735, 14.8419573991, 14.842006523, 14.8420556452, 14.8421047658, 14.8421538846, 14.8422030018, 14.8422521174, 14.8423012312, 14.8423503434, 14.8423994539, 14.8424485628, 14.8424976699, 14.8425467754, 14.8425958793, 14.8426449814, 14.8426940819, 14.8427431807, 14.8427922779, 14.8428413733, 14.8428904672, 14.8429395593, 14.8429886497, 14.8430377385, 14.8430868257, 14.8431359111, 14.8431849949, 14.843234077, 14.8432831574, 14.8433322362, 14.8433813133, 14.8434303888, 14.8434794625, 14.8435285346, 14.843577605, 14.8436266738, 14.8436757409, 14.8437248063, 14.84377387, 14.8438229321, 14.8438719925, 14.8439210513, 14.8439701084, 14.8440191638, 14.8440682175, 14.8441172696, 14.84416632, 14.8442153687, 14.8442644158, 14.8443134612, 14.8443625049, 14.844411547, 14.8444605874, 14.8445096261, 14.8445586632, 14.8446076986, 14.8446567323, 14.8447057644, 14.8447547948, 14.8448038235, 14.8448528506, 14.844901876, 14.8449508998, 14.8449999218, 14.8450489422, 14.845097961, 14.845146978, 14.8451959935, 14.8452450072, 14.8452940193, 14.8453430297, 14.8453920384, 14.8454410455, 14.8454900509, 14.8455390547, 14.8455880568, 14.8456370572, 14.845686056, 14.8457350531, 14.8457840485, 14.8458330423, 14.8458820344, 14.8459310248, 14.8459800136, 14.8460290007, 14.8460779862, 14.84612697, 14.8461759521, 14.8462249325, 14.8462739113, 14.8463228885, 14.846371864, 14.8464208378, 14.8464698099, 14.8465187804, 14.8465677492, 14.8466167164, 14.8466656819, 14.8467146457, 14.8467636079, 14.8468125684, 14.8468615273, 14.8469104845, 14.84695944, 14.8470083939, 14.8470573461, 14.8471062966, 14.8471552455, 14.8472041928, 14.8472531383, 14.8473020822, 14.8473510245, 14.8473999651, 14.847448904, 14.8474978412, 14.8475467769, 14.8475957108, 14.8476446431, 14.8476935737, 14.8477425027, 14.84779143, 14.8478403556, 14.8478892796, 14.8479382019, 14.8479871226, 14.8480360416, 14.848084959, 14.8481338747, 14.8481827887, 14.8482317011, 14.8482806118, 14.8483295209, 14.8483784283, 14.848427334, 14.8484762381, 14.8485251405, 14.8485740413, 14.8486229404, 14.8486718379, 14.8487207337, 14.8487696278, 14.8488185203, 14.8488674111, 14.8489163003, 14.8489651878, 14.8490140737, 14.8490629579, 14.8491118404, 14.8491607213, 14.8492096006, 14.8492584781, 14.8493073541, 14.8493562283, 14.8494051009, 14.8494539719, 14.8495028412, 14.8495517088, 14.8496005748, 14.8496494392, 14.8496983019, 14.8497471629, 14.8497960222, 14.84984488, 14.849893736, 14.8499425904, 14.8499914432, 14.8500402943, 14.8500891437, 14.8501379915, 14.8501868376, 14.8502356821, 14.850284525, 14.8503333661, 14.8503822057, 14.8504310435, 14.8504798797, 14.8505287143, 14.8505775472, 14.8506263785, 14.8506752081, 14.850724036, 14.8507728623, 14.850821687, 14.85087051, 14.8509193313, 14.850968151, 14.851016969, 14.8510657854, 14.8511146001, 14.8511634132, 14.8512122247, 14.8512610344, 14.8513098426, 14.851358649, 14.8514074539, 14.851456257, 14.8515050586, 14.8515538584, 14.8516026567, 14.8516514532, 14.8517002481, 14.8517490414, 14.851797833, 14.851846623, 14.8518954113, 14.851944198, 14.851992983, 14.8520417664, 14.8520905481, 14.8521393282, 14.8521881066, 14.8522368834, 14.8522856585, 14.852334432, 14.8523832038, 14.852431974, 14.8524807425, 14.8525295094, 14.8525782746, 14.8526270382, 14.8526758002, 14.8527245604, 14.8527733191, 14.8528220761, 14.8528708314, 14.8529195851, 14.8529683372, 14.8530170876, 14.8530658363, 14.8531145834, 14.8531633289, 14.8532120727, 14.8532608149, 14.8533095554, 14.8533582943, 14.8534070315, 14.8534557671, 14.853504501, 14.8535532333, 14.853601964, 14.8536506929, 14.8536994203, 14.853748146, 14.8537968701, 14.8538455925, 14.8538943132, 14.8539430324, 14.8539917498, 14.8540404657, 14.8540891799, 14.8541378924, 14.8541866033, 14.8542353126, 14.8542840202, 14.8543327261, 14.8543814305, 14.8544301331, 14.8544788342, 14.8545275336, 14.8545762313, 14.8546249274, 14.8546736219, 14.8547223147, 14.8547710058, 14.8548196954, 14.8548683833, 14.8549170695, 14.8549657541, 14.8550144371, 14.8550631184, 14.855111798, 14.8551604761, 14.8552091525, 14.8552578272, 14.8553065003, 14.8553551718, 14.8554038416, 14.8554525097, 14.8555011763, 14.8555498412, 14.8555985044, 14.855647166, 14.855695826, 14.8557444843, 14.855793141, 14.855841796, 14.8558904495, 14.8559391012, 14.8559877513, 14.8560363998, 14.8560850467, 14.8561336919, 14.8561823354, 14.8562309773, 14.8562796176, 14.8563282563, 14.8563768933, 14.8564255286, 14.8564741623, 14.8565227944, 14.8565714249, 14.8566200537, 14.8566686808, 14.8567173064, 14.8567659303, 14.8568145525, 14.8568631731, 14.8569117921, 14.8569604094, 14.8570090251, 14.8570576392, 14.8571062516, 14.8571548624, 14.8572034715, 14.857252079, 14.8573006849, 14.8573492891, 14.8573978917, 14.8574464927, 14.857495092, 14.8575436897, 14.8575922857, 14.8576408801, 14.8576894729, 14.857738064, 14.8577866535, 14.8578352414, 14.8578838276, 14.8579324122, 14.8579809951, 14.8580295764, 14.8580781561, 14.8581267342, 14.8581753106, 14.8582238853, 14.8582724585, 14.85832103, 14.8583695999, 14.8584181681, 14.8584667347, 14.8585152996, 14.858563863, 14.8586124247, 14.8586609847, 14.8587095431, 14.8587580999, 14.8588066551, 14.8588552086, 14.8589037605, 14.8589523108, 14.8590008594, 14.8590494064, 14.8590979517, 14.8591464954, 14.8591950375, 14.859243578, 14.8592921168, 14.859340654, 14.8593891895, 14.8594377234, 14.8594862557, 14.8595347864, 14.8595833154, 14.8596318428, 14.8596803686, 14.8597288927, 14.8597774152, 14.859825936, 14.8598744553, 14.8599229729, 14.8599714888, 14.8600200032, 14.8600685159, 14.8601170269, 14.8601655364, 14.8602140442, 14.8602625504, 14.8603110549, 14.8603595578, 14.8604080591, 14.8604565588, 14.8605050568, 14.8605535532, 14.860602048, 14.8606505411, 14.8606990326, 14.8607475225, 14.8607960107, 14.8608444974, 14.8608929823, 14.8609414657, 14.8609899474, 14.8610384275, 14.861086906, 14.8611353828, 14.861183858, 14.8612323316, 14.8612808036, 14.8613292739, 14.8613777426, 14.8614262097, 14.8614746751, 14.8615231389, 14.8615716011, 14.8616200617, 14.8616685206, 14.8617169779, 14.8617654336, 14.8618138876, 14.8618623401, 14.8619107909, 14.86195924, 14.8620076876, 14.8620561335, 14.8621045778, 14.8621530204, 14.8622014614, 14.8622499009, 14.8622983386, 14.8623467748, 14.8623952093, 14.8624436422, 14.8624920735, 14.8625405031, 14.8625889312, 14.8626373576, 14.8626857823, 14.8627342055, 14.862782627, 14.8628310469, 14.8628794652, 14.8629278818, 14.8629762968, 14.8630247102, 14.863073122, 14.8631215322, 14.8631699407, 14.8632183476, 14.8632667529, 14.8633151565, 14.8633635585, 14.8634119589, 14.8634603577, 14.8635087549, 14.8635571504, 14.8636055443, 14.8636539366, 14.8637023273, 14.8637507163, 14.8637991037, 14.8638474895, 14.8638958737, 14.8639442562, 14.8639926372, 14.8640410165, 14.8640893942, 14.8641377702, 14.8641861447, 14.8642345175, 14.8642828887, 14.8643312582, 14.8643796262, 14.8644279925, 14.8644763572, 14.8645247203, 14.8645730818, 14.8646214416, 14.8646697998, 14.8647181564, 14.8647665114, 14.8648148648, 14.8648632165, 14.8649115666, 14.8649599151, 14.865008262, 14.8650566073, 14.8651049509, 14.8651532929, 14.8652016333, 14.8652499721, 14.8652983093, 14.8653466448, 14.8653949787, 14.865443311, 14.8654916417, 14.8655399708, 14.8655882982, 14.8656366241, 14.8656849483, 14.8657332709, 14.8657815918, 14.8658299112, 14.8658782289, 14.865926545, 14.8659748595, 14.8660231724, 14.8660714837, 14.8661197933, 14.8661681013, 14.8662164077, 14.8662647125, 14.8663130157, 14.8663613173, 14.8664096172, 14.8664579155, 14.8665062122, 14.8665545073, 14.8666028008, 14.8666510926, 14.8666993829, 14.8667476715, 14.8667959585, 14.8668442439, 14.8668925277, 14.8669408098, 14.8669890904, 14.8670373693, 14.8670856466, 14.8671339223, 14.8671821964, 14.8672304689, 14.8672787397, 14.8673270089, 14.8673752766, 14.8674235426, 14.867471807, 14.8675200697, 14.8675683309, 14.8676165904, 14.8676648484, 14.8677131047, 14.8677613594, 14.8678096125, 14.867857864, 14.8679061138, 14.8679543621, 14.8680026087, 14.8680508537, 14.8680990972, 14.868147339, 14.8681955791, 14.8682438177, 14.8682920547, 14.86834029, 14.8683885237, 14.8684367559, 14.8684849864, 14.8685332153, 14.8685814425, 14.8686296682, 14.8686778923, 14.8687261147, 14.8687743356, 14.8688225548, 14.8688707724, 14.8689189884, 14.8689672028, 14.8690154156, 14.8690636267, 14.8691118363, 14.8691600442, 14.8692082506, 14.8692564553, 14.8693046584, 14.8693528599, 14.8694010598, 14.8694492581, 14.8694974547, 14.8695456498, 14.8695938432, 14.8696420351, 14.8696902253, 14.8697384139, 14.8697866009, 14.8698347863, 14.8698829701, 14.8699311523, 14.8699793329, 14.8700275119, 14.8700756892, 14.870123865, 14.8701720391, 14.8702202116, 14.8702683826, 14.8703165519, 14.8703647196, 14.8704128857, 14.8704610502, 14.8705092131, 14.8705573743, 14.870605534, 14.8706536921, 14.8707018485, 14.8707500033, 14.8707981566, 14.8708463082, 14.8708944582, 14.8709426066, 14.8709907535, 14.8710388987, 14.8710870423, 14.8711351842, 14.8711833246, 14.8712314634, 14.8712796006, 14.8713277361, 14.8713758701, 14.8714240024, 14.8714721332, 14.8715202623, 14.8715683899, 14.8716165158, 14.8716646401, 14.8717127628, 14.8717608839, 14.8718090035, 14.8718571214, 14.8719052377, 14.8719533524, 14.8720014654, 14.8720495769, 14.8720976868, 14.8721457951, 14.8721939018, 14.8722420068, 14.8722901103, 14.8723382121, 14.8723863124, 14.8724344111, 14.8724825081, 14.8725306036, 14.8725786974, 14.8726267896, 14.8726748803, 14.8727229693, 14.8727710567, 14.8728191426, 14.8728672268, 14.8729153094, 14.8729633904, 14.8730114698, 14.8730595477, 14.8731076239, 14.8731556985, 14.8732037715, 14.8732518429, 14.8732999127, 14.8733479809, 14.8733960475, 14.8734441125, 14.8734921759, 14.8735402377, 14.8735882979, 14.8736363565, 14.8736844135, 14.8737324689, 14.8737805227, 14.8738285749, 14.8738766255, 14.8739246745, 14.8739727219, 14.8740207677, 14.8740688119, 14.8741168544, 14.8741648954, 14.8742129348, 14.8742609726, 14.8743090088, 14.8743570434, 14.8744050764, 14.8744531078, 14.8745011376, 14.8745491658, 14.8745971924, 14.8746452174, 14.8746932408, 14.8747412626, 14.8747892828, 14.8748373014, 14.8748853184, 14.8749333338, 14.8749813477, 14.8750293599, 14.8750773705, 14.8751253795, 14.8751733869, 14.8752213928, 14.875269397, 14.8753173996, 14.8753654006, 14.8754134001, 14.8754613979, 14.8755093942, 14.8755573888, 14.8756053819, 14.8756533733, 14.8757013632, 14.8757493514, 14.8757973381, 14.8758453232, 14.8758933066, 14.8759412885, 14.8759892688, 14.8760372475, 14.8760852245, 14.8761332, 14.8761811739, 14.8762291462, 14.876277117, 14.8763250861, 14.8763730536, 14.8764210195, 14.8764689838, 14.8765169466, 14.8765649077, 14.8766128672, 14.8766608252, 14.8767087816, 14.8767567363, 14.8768046895, 14.8768526411, 14.876900591, 14.8769485394, 14.8769964862, 14.8770444314, 14.877092375, 14.877140317, 14.8771882575, 14.8772361963, 14.8772841335, 14.8773320692, 14.8773800032, 14.8774279357, 14.8774758665, 14.8775237958, 14.8775717235, 14.8776196496, 14.8776675741, 14.877715497, 14.8777634183, 14.877811338, 14.8778592561, 14.8779071727, 14.8779550876, 14.878003001, 14.8780509127, 14.8780988229, 14.8781467315, 14.8781946385, 14.8782425439, 14.8782904477, 14.8783383499, 14.8783862505, 14.8784341496, 14.878482047, 14.8785299429, 14.8785778371, 14.8786257298, 14.8786736209, 14.8787215104, 14.8787693983, 14.8788172846, 14.8788651693, 14.8789130525, 14.878960934, 14.879008814, 14.8790566924, 14.8791045691, 14.8791524443, 14.8792003179, 14.87924819, 14.8792960604, 14.8793439292, 14.8793917965, 14.8794396621, 14.8794875262, 14.8795353887, 14.8795832496, 14.8796311089, 14.8796789666, 14.8797268228, 14.8797746773, 14.8798225303, 14.8798703817, 14.8799182315, 14.8799660797, 14.8800139263, 14.8800617713, 14.8801096147, 14.8801574566, 14.8802052969, 14.8802531356, 14.8803009726, 14.8803488082, 14.8803966421, 14.8804444744, 14.8804923052, 14.8805401343, 14.8805879619, 14.8806357879, 14.8806836123, 14.8807314351, 14.8807792564, 14.880827076, 14.8808748941, 14.8809227106, 14.8809705255, 14.8810183388, 14.8810661505, 14.8811139607, 14.8811617692, 14.8812095762, 14.8812573816, 14.8813051854, 14.8813529876, 14.8814007883, 14.8814485873, 14.8814963848, 14.8815441807, 14.881591975, 14.8816397677, 14.8816875589, 14.8817353484, 14.8817831364, 14.8818309228, 14.8818787076, 14.8819264908, 14.8819742725, 14.8820220525, 14.882069831, 14.8821176079, 14.8821653832, 14.8822131569, 14.8822609291, 14.8823086997, 14.8823564687, 14.8824042361, 14.8824520019, 14.8824997661, 14.8825475288, 14.8825952899, 14.8826430494, 14.8826908073, 14.8827385636, 14.8827863184, 14.8828340715, 14.8828818231, 14.8829295732, 14.8829773216, 14.8830250684, 14.8830728137, 14.8831205574, 14.8831682995, 14.8832160401, 14.883263779, 14.8833115164, 14.8833592522, 14.8834069864, 14.883454719, 14.8835024501, 14.8835501796, 14.8835979075, 14.8836456338, 14.8836933585, 14.8837410817, 14.8837888033, 14.8838365233, 14.8838842417, 14.8839319585, 14.8839796738, 14.8840273875, 14.8840750996, 14.8841228102, 14.8841705191, 14.8842182265, 14.8842659323, 14.8843136365, 14.8843613392, 14.8844090402, 14.8844567397, 14.8845044376, 14.884552134, 14.8845998288, 14.8846475219, 14.8846952135, 14.8847429036, 14.884790592, 14.8848382789, 14.8848859642, 14.8849336479, 14.8849813301, 14.8850290107, 14.8850766897, 14.8851243671, 14.885172043, 14.8852197172, 14.8852673899, 14.885315061, 14.8853627306, 14.8854103986, 14.885458065, 14.8855057298, 14.885553393, 14.8856010547, 14.8856487148, 14.8856963733, 14.8857440303, 14.8857916857, 14.8858393395, 14.8858869917, 14.8859346424, 14.8859822914, 14.8860299389, 14.8860775849, 14.8861252292, 14.886172872, 14.8862205132, 14.8862681529, 14.8863157909, 14.8863634274, 14.8864110624, 14.8864586957, 14.8865063275, 14.8865539577, 14.8866015863, 14.8866492134, 14.8866968389, 14.8867444628, 14.8867920851, 14.8868397059, 14.8868873251, 14.8869349427, 14.8869825588, 14.8870301732, 14.8870777862, 14.8871253975, 14.8871730073, 14.8872206155, 14.8872682221, 14.8873158272, 14.8873634306, 14.8874110326, 14.8874586329, 14.8875062317, 14.8875538289, 14.8876014245, 14.8876490186, 14.8876966111, 14.887744202, 14.8877917913, 14.8878393791, 14.8878869653, 14.88793455, 14.8879821331, 14.8880297146, 14.8880772945, 14.8881248729, 14.8881724497, 14.8882200249, 14.8882675986, 14.8883151706, 14.8883627412, 14.8884103101, 14.8884578775, 14.8885054433, 14.8885530076, 14.8886005703, 14.8886481314, 14.8886956909, 14.8887432489, 14.8887908053, 14.8888383602, 14.8888859134, 14.8889334651, 14.8889810153, 14.8890285638, 14.8890761109, 14.8891236563, 14.8891712002, 14.8892187425, 14.8892662832, 14.8893138224, 14.88936136, 14.889408896, 14.8894564305, 14.8895039634, 14.8895514948, 14.8895990245, 14.8896465527, 14.8896940794, 14.8897416045, 14.889789128, 14.8898366499, 14.8898841703, 14.8899316891, 14.8899792064, 14.8900267221, 14.8900742362, 14.8901217487, 14.8901692597, 14.8902167692, 14.890264277, 14.8903117833, 14.8903592881, 14.8904067912, 14.8904542928, 14.8905017929, 14.8905492914, 14.8905967883, 14.8906442836, 14.8906917774, 14.8907392696, 14.8907867603, 14.8908342494, 14.8908817369, 14.8909292229, 14.8909767073, 14.8910241901, 14.8910716714, 14.8911191512, 14.8911666293, 14.8912141059, 14.8912615809, 14.8913090544, 14.8913565263, 14.8914039967, 14.8914514654, 14.8914989327, 14.8915463983, 14.8915938624, 14.891641325, 14.8916887859, 14.8917362454, 14.8917837032, 14.8918311595, 14.8918786142, 14.8919260674, 14.891973519, 14.8920209691, 14.8920684176, 14.8921158645, 14.8921633099, 14.8922107537, 14.8922581959, 14.8923056366, 14.8923530757, 14.8924005133, 14.8924479493, 14.8924953838, 14.8925428166, 14.892590248, 14.8926376777, 14.892685106, 14.8927325326, 14.8927799577, 14.8928273812, 14.8928748032, 14.8929222236, 14.8929696425, 14.8930170598, 14.8930644755, 14.8931118897, 14.8931593023, 14.8932067134, 14.8932541229, 14.8933015309, 14.8933489373, 14.8933963421, 14.8934437454, 14.8934911471, 14.8935385472, 14.8935859459, 14.8936333429, 14.8936807384, 14.8937281323, 14.8937755247, 14.8938229155, 14.8938703048, 14.8939176925, 14.8939650786, 14.8940124632, 14.8940598463, 14.8941072278, 14.8941546077, 14.8942019861, 14.8942493629, 14.8942967381, 14.8943441118, 14.894391484, 14.8944388546, 14.8944862236, 14.8945335911, 14.894580957, 14.8946283214, 14.8946756842, 14.8947230455, 14.8947704052, 14.8948177633, 14.8948651199, 14.8949124749, 14.8949598284, 14.8950071804, 14.8950545307, 14.8951018796, 14.8951492268, 14.8951965726, 14.8952439167, 14.8952912593, 14.8953386004, 14.8953859399, 14.8954332778, 14.8954806142, 14.8955279491, 14.8955752824, 14.8956226141, 14.8956699443, 14.8957172729, 14.8957646, 14.8958119255, 14.8958592495, 14.8959065719, 14.8959538928, 14.8960012121, 14.8960485299, 14.8960958461, 14.8961431608, 14.8961904739, 14.8962377854, 14.8962850955, 14.8963324039, 14.8963797108, 14.8964270162, 14.89647432, 14.8965216222, 14.8965689229, 14.8966162221, 14.8966635197, 14.8967108157, 14.8967581102, 14.8968054032, 14.8968526946, 14.8968999844, 14.8969472727, 14.8969945595, 14.8970418447, 14.8970891283, 14.8971364104, 14.897183691, 14.89723097, 14.8972782474, 14.8973255233, 14.8973727977, 14.8974200705, 14.8974673417, 14.8975146114, 14.8975618796, 14.8976091462, 14.8976564113, 14.8977036748, 14.8977509367, 14.8977981971, 14.897845456, 14.8978927133, 14.8979399691, 14.8979872233, 14.898034476, 14.8980817271, 14.8981289767, 14.8981762247, 14.8982234712, 14.8982707162, 14.8983179595, 14.8983652014, 14.8984124417, 14.8984596804, 14.8985069176, 14.8985541533, 14.8986013874, 14.89864862, 14.898695851, 14.8987430805, 14.8987903084, 14.8988375348, 14.8988847596, 14.8989319829, 14.8989792046, 14.8990264248, 14.8990736435, 14.8991208606, 14.8991680761, 14.8992152901, 14.8992625026, 14.8993097135, 14.8993569229, 14.8994041308, 14.899451337, 14.8994985418, 14.899545745, 14.8995929467, 14.8996401468, 14.8996873453, 14.8997345424, 14.8997817378, 14.8998289318, 14.8998761242, 14.899923315, 14.8999705043, 14.9000176921, 14.9000648783, 14.900112063, 14.9001592461, 14.9002064277, 14.9002536077, 14.9003007862, 14.9003479632, 14.9003951386, 14.9004423125, 14.9004894848, 14.9005366556, 14.9005838249, 14.9006309926, 14.9006781587, 14.9007253234, 14.9007724864, 14.900819648, 14.900866808, 14.9009139664, 14.9009611233, 14.9010082787, 14.9010554326, 14.9011025848, 14.9011497356, 14.9011968848, 14.9012440325, 14.9012911786, 14.9013383232, 14.9013854662, 14.9014326077, 14.9014797477, 14.9015268861, 14.901574023, 14.9016211583, 14.9016682922, 14.9017154244, 14.9017625551, 14.9018096843, 14.901856812, 14.9019039381, 14.9019510626, 14.9019981857, 14.9020453072, 14.9020924271, 14.9021395455, 14.9021866624, 14.9022337777, 14.9022808915, 14.9023280038, 14.9023751145, 14.9024222237, 14.9024693313, 14.9025164374, 14.902563542, 14.902610645, 14.9026577465, 14.9027048464, 14.9027519449, 14.9027990417, 14.9028461371, 14.9028932309, 14.9029403231, 14.9029874139, 14.903034503, 14.9030815907, 14.9031286768, 14.9031757614, 14.9032228444, 14.9032699259, 14.9033170059, 14.9033640843, 14.9034111612, 14.9034582366, 14.9035053104, 14.9035523827, 14.9035994535, 14.9036465227, 14.9036935904, 14.9037406565, 14.9037877211, 14.9038347842, 14.9038818457, 14.9039289057, 14.9039759642, 14.9040230211, 14.9040700765, 14.9041171304, 14.9041641827, 14.9042112335, 14.9042582828, 14.9043053305, 14.9043523767, 14.9043994214, 14.9044464645, 14.9044935061, 14.9045405462, 14.9045875847, 14.9046346217, 14.9046816571, 14.904728691, 14.9047757234, 14.9048227543, 14.9048697836, 14.9049168114, 14.9049638377, 14.9050108624, 14.9050578856, 14.9051049072, 14.9051519274, 14.905198946, 14.905245963, 14.9052929786, 14.9053399926, 14.905387005, 14.905434016, 14.9054810254, 14.9055280332, 14.9055750396, 14.9056220444, 14.9056690476, 14.9057160494, 14.9057630496, 14.9058100483, 14.9058570454, 14.9059040411, 14.9059510351, 14.9059980277, 14.9060450187, 14.9060920082, 14.9061389962, 14.9061859826, 14.9062329675, 14.9062799509, 14.9063269328, 14.9063739131, 14.9064208919, 14.9064678691, 14.9065148448, 14.906561819, 14.9066087917, 14.9066557629, 14.9067027325, 14.9067497005, 14.9067966671, 14.9068436321, 14.9068905956, 14.9069375576, 14.906984518, 14.9070314769, 14.9070784343, 14.9071253901, 14.9071723445, 14.9072192973, 14.9072662485, 14.9073131983, 14.9073601465, 14.9074070932, 14.9074540383, 14.9075009819, 14.907547924, 14.9075948646, 14.9076418037, 14.9076887412, 14.9077356772, 14.9077826116, 14.9078295446, 14.907876476, 14.9079234059, 14.9079703342, 14.9080172611, 14.9080641864, 14.9081111101, 14.9081580324, 14.9082049531, 14.9082518723, 14.90829879, 14.9083457062, 14.9083926208, 14.9084395339, 14.9084864454, 14.9085333555, 14.908580264, 14.908627171, 14.9086740765, 14.9087209804, 14.9087678828, 14.9088147837, 14.9088616831, 14.908908581, 14.9089554773, 14.9090023721, 14.9090492654, 14.9090961571, 14.9091430473, 14.909189936, 14.9092368232, 14.9092837089, 14.909330593, 14.9093774756, 14.9094243567, 14.9094712363, 14.9095181143, 14.9095649908, 14.9096118658, 14.9096587393, 14.9097056112, 14.9097524816, 14.9097993505, 14.9098462179, 14.9098930838, 14.9099399481, 14.9099868109, 14.9100336722, 14.910080532, 14.9101273902, 14.9101742469, 14.9102211021, 14.9102679558, 14.910314808, 14.9103616586, 14.9104085077, 14.9104553553, 14.9105022014, 14.9105490459, 14.910595889, 14.9106427305, 14.9106895705, 14.9107364089, 14.9107832459, 14.9108300813, 14.9108769152, 14.9109237476, 14.9109705785, 14.9110174078, 14.9110642356, 14.9111110619, 14.9111578867, 14.91120471, 14.9112515317, 14.9112983519, 14.9113451707, 14.9113919878, 14.9114388035, 14.9114856177, 14.9115324303, 14.9115792414, 14.911626051, 14.9116728591, 14.9117196656, 14.9117664707, 14.9118132742, 14.9118600762, 14.9119068767, 14.9119536756, 14.9120004731, 14.912047269, 14.9120940634, 14.9121408563, 14.9121876477, 14.9122344375, 14.9122812259, 14.9123280127, 14.912374798, 14.9124215818, 14.912468364, 14.9125151448, 14.912561924, 14.9126087018, 14.912655478, 14.9127022526, 14.9127490258, 14.9127957975, 14.9128425676, 14.9128893362, 14.9129361033, 14.9129828689, 14.913029633, 14.9130763956, 14.9131231566, 14.9131699161, 14.9132166741, 14.9132634306, 14.9133101856, 14.9133569391, 14.913403691, 14.9134504415, 14.9134971904, 14.9135439378, 14.9135906837, 14.913637428, 14.9136841709, 14.9137309123, 14.9137776521, 14.9138243904, 14.9138711272, 14.9139178625, 14.9139645963, 14.9140113285, 14.9140580593, 14.9141047885, 14.9141515162, 14.9141982425, 14.9142449671, 14.9142916903, 14.914338412, 14.9143851322, 14.9144318508, 14.9144785679, 14.9145252835, 14.9145719976, 14.9146187102, 14.9146654213, 14.9147121309, 14.9147588389, 14.9148055455, 14.9148522505, 14.914898954, 14.914945656, 14.9149923565, 14.9150390555, 14.915085753, 14.915132449, 14.9151791434, 14.9152258363, 14.9152725278, 14.9153192177, 14.9153659061, 14.915412593, 14.9154592784, 14.9155059622, 14.9155526446, 14.9155993254, 14.9156460048, 14.9156926826, 14.9157393589, 14.9157860337, 14.915832707, 14.9158793788, 14.9159260491, 14.9159727179, 14.9160193851, 14.9160660509, 14.9161127151, 14.9161593779, 14.9162060391, 14.9162526988, 14.916299357, 14.9163460137, 14.9163926689, 14.9164393226, 14.9164859748, 14.9165326254, 14.9165792746, 14.9166259222, 14.9166725683, 14.916719213, 14.9167658561, 14.9168124977, 14.9168591378, 14.9169057764, 14.9169524135, 14.9169990491, 14.9170456832, 14.9170923157, 14.9171389468, 14.9171855763, 14.9172322044, 14.9172788309, 14.917325456, 14.9173720795, 14.9174187015, 14.917465322, 14.917511941, 14.9175585585, 14.9176051745, 14.917651789, 14.917698402, 14.9177450134, 14.9177916234, 14.9178382319, 14.9178848388, 14.9179314443, 14.9179780482, 14.9180246507, 14.9180712516, 14.918117851, 14.918164449, 14.9182110454, 14.9182576403, 14.9183042337, 14.9183508256, 14.918397416, 14.9184440049, 14.9184905923, 14.9185371782, 14.9185837626, 14.9186303454, 14.9186769268, 14.9187235067, 14.9187700851, 14.9188166619, 14.9188632373, 14.9189098111, 14.9189563835, 14.9190029543, 14.9190495237, 14.9190960915, 14.9191426579, 14.9191892227, 14.919235786, 14.9192823479, 14.9193289082, 14.919375467, 14.9194220243, 14.9194685802, 14.9195151345, 14.9195616873, 14.9196082386, 14.9196547884, 14.9197013367, 14.9197478835, 14.9197944288, 14.9198409726, 14.9198875149, 14.9199340557, 14.919980595, 14.9200271328, 14.9200736691, 14.9201202039, 14.9201667372, 14.920213269, 14.9202597993, 14.9203063281, 14.9203528554, 14.9203993812, 14.9204459055, 14.9204924283, 14.9205389496, 14.9205854694, 14.9206319877, 14.9206785045, 14.9207250198, 14.9207715335, 14.9208180458, 14.9208645566, 14.9209110659, 14.9209575737, 14.92100408, 14.9210505848, 14.9210970881, 14.9211435899, 14.9211900902, 14.921236589, 14.9212830863, 14.9213295821, 14.9213760764, 14.9214225692, 14.9214690605, 14.9215155503, 14.9215620387, 14.9216085255, 14.9216550108, 14.9217014946, 14.9217479769, 14.9217944577, 14.9218409371, 14.9218874149, 14.9219338912, 14.9219803661, 14.9220268394, 14.9220733112, 14.9221197816, 14.9221662504, 14.9222127178, 14.9222591836, 14.922305648, 14.9223521109, 14.9223985722, 14.9224450321, 14.9224914905, 14.9225379473, 14.9225844027, 14.9226308566, 14.922677309, 14.9227237599, 14.9227702093, 14.9228166572, 14.9228631036, 14.9229095485, 14.9229559919, 14.9230024338, 14.9230488743, 14.9230953132, 14.9231417506, 14.9231881866, 14.923234621, 14.923281054, 14.9233274854, 14.9233739154, 14.9234203439, 14.9234667708, 14.9235131963, 14.9235596203, 14.9236060428, 14.9236524638, 14.9236988833, 14.9237453013, 14.9237917178, 14.9238381329, 14.9238845464, 14.9239309584, 14.923977369, 14.924023778, 14.9240701856, 14.9241165917, 14.9241629962, 14.9242093993, 14.9242558009, 14.924302201, 14.9243485996, 14.9243949967, 14.9244413923, 14.9244877865, 14.9245341791, 14.9245805703, 14.9246269599, 14.9246733481, 14.9247197347, 14.9247661199, 14.9248125036, 14.9248588858, 14.9249052665, 14.9249516457, 14.9249980234, 14.9250443997, 14.9250907744, 14.9251371477, 14.9251835194, 14.9252298897, 14.9252762585, 14.9253226258, 14.9253689916, 14.9254153559, 14.9254617187, 14.92550808, 14.9255544399, 14.9256007982, 14.9256471551, 14.9256935105, 14.9257398643, 14.9257862167, 14.9258325676, 14.925878917, 14.925925265, 14.9259716114, 14.9260179564, 14.9260642998, 14.9261106418, 14.9261569823, 14.9262033213, 14.9262496588, 14.9262959948, 14.9263423293, 14.9263886623, 14.9264349939, 14.926481324, 14.9265276525, 14.9265739796, 14.9266203052, 14.9266666293, 14.926712952, 14.9267592731, 14.9268055928, 14.9268519109, 14.9268982276, 14.9269445428, 14.9269908565, 14.9270371687, 14.9270834795, 14.9271297887, 14.9271760965, 14.9272224027, 14.9272687075, 14.9273150108, 14.9273613126, 14.9274076129, 14.9274539118, 14.9275002091, 14.927546505, 14.9275927994, 14.9276390923, 14.9276853837, 14.9277316736, 14.9277779621, 14.927824249, 14.9278705345, 14.9279168185, 14.927963101, 14.928009382, 14.9280556616, 14.9281019396, 14.9281482162, 14.9281944912, 14.9282407648, 14.928287037, 14.9283333076, 14.9283795767, 14.9284258444, 14.9284721106, 14.9285183753, 14.9285646385, 14.9286109002, 14.9286571604, 14.9287034192, 14.9287496765, 14.9287959323, 14.9288421866, 14.9288884394, 14.9289346907, 14.9289809406, 14.929027189, 14.9290734359, 14.9291196813, 14.9291659252, 14.9292121677, 14.9292584086, 14.9293046481, 14.9293508861, 14.9293971226, 14.9294433577, 14.9294895912, 14.9295358233, 14.9295820539, 14.929628283, 14.9296745107, 14.9297207368, 14.9297669615, 14.9298131847, 14.9298594064, 14.9299056266, 14.9299518453, 14.9299980626, 14.9300442784, 14.9300904927, 14.9301367055, 14.9301829169, 14.9302291267, 14.9302753351, 14.930321542, 14.9303677474, 14.9304139514, 14.9304601538, 14.9305063548, 14.9305525543, 14.9305987524, 14.9306449489, 14.930691144, 14.9307373376, 14.9307835297, 14.9308297203, 14.9308759095, 14.9309220971, 14.9309682833, 14.931014468, 14.9310606513, 14.931106833, 14.9311530133, 14.9311991921, 14.9312453694, 14.9312915453, 14.9313377196, 14.9313838925, 14.931430064, 14.9314762339, 14.9315224023, 14.9315685693, 14.9316147348, 14.9316608989, 14.9317070614, 14.9317532225, 14.9317993821, 14.9318455402, 14.9318916968, 14.931937852, 14.9319840057, 14.9320301579, 14.9320763086, 14.9321224579, 14.9321686057, 14.932214752, 14.9322608968, 14.9323070402, 14.932353182, 14.9323993224, 14.9324454614, 14.9324915988, 14.9325377348, 14.9325838693, 14.9326300023, 14.9326761339, 14.9327222639, 14.9327683925, 14.9328145197, 14.9328606453, 14.9329067695, 14.9329528922, 14.9329990134, 14.9330451332, 14.9330912515, 14.9331373683, 14.9331834836, 14.9332295974, 14.9332757098, 14.9333218207, 14.9333679302, 14.9334140381, 14.9334601446, 14.9335062496, 14.9335523532, 14.9335984552, 14.9336445558, 14.933690655, 14.9337367526, 14.9337828488, 14.9338289435, 14.9338750367, 14.9339211285, 14.9339672187, 14.9340133076, 14.9340593949, 14.9341054808, 14.9341515652, 14.9341976481, 14.9342437295, 14.9342898095, 14.934335888, 14.9343819651, 14.9344280406, 14.9344741147, 14.9345201873, 14.9345662585, 14.9346123282, 14.9346583964, 14.9347044631, 14.9347505284, 14.9347965922, 14.9348426545, 14.9348887154, 14.9349347747, 14.9349808327, 14.9350268891, 14.9350729441, 14.9351189976, 14.9351650496, 14.9352111002, 14.9352571493, 14.9353031969, 14.935349243, 14.9353952877, 14.9354413309, 14.9354873727, 14.935533413, 14.9355794518, 14.9356254891, 14.935671525, 14.9357175594, 14.9357635923, 14.9358096238, 14.9358556537, 14.9359016823, 14.9359477093, 14.9359937349, 14.936039759, 14.9360857817, 14.9361318029, 14.9361778226, 14.9362238408, 14.9362698576, 14.9363158729, 14.9363618868, 14.9364078991, 14.93645391, 14.9364999195, 14.9365459275, 14.936591934, 14.936637939, 14.9366839426, 14.9367299447, 14.9367759453, 14.9368219445, 14.9368679422, 14.9369139384, 14.9369599332, 14.9370059265, 14.9370519184, 14.9370979087, 14.9371438976, 14.9371898851, 14.9372358711, 14.9372818556, 14.9373278386, 14.9373738202, 14.9374198003, 14.937465779, 14.9375117561, 14.9375577319, 14.9376037061, 14.9376496789, 14.9376956502, 14.9377416201, 14.9377875885, 14.9378335554, 14.9378795209, 14.9379254849, 14.9379714474, 14.9380174085, 14.9380633681, 14.9381093262, 14.9381552829, 14.9382012381, 14.9382471919, 14.9382931442, 14.938339095, 14.9383850443, 14.9384309922, 14.9384769387, 14.9385228836, 14.9385688271, 14.9386147692, 14.9386607098, 14.9387066489, 14.9387525865, 14.9387985227, 14.9388444575, 14.9388903907, 14.9389363225, 14.9389822529, 14.9390281818, 14.9390741092, 14.9391200351, 14.9391659596, 14.9392118827, 14.9392578042, 14.9393037243, 14.939349643, 14.9393955602, 14.9394414759, 14.9394873902, 14.939533303, 14.9395792143, 14.9396251242, 14.9396710326, 14.9397169396, 14.9397628451, 14.9398087491, 14.9398546517, 14.9399005528, 14.9399464525, 14.9399923507, 14.9400382474, 14.9400841427, 14.9401300365, 14.9401759288, 14.9402218197, 14.9402677092, 14.9403135971, 14.9403594837, 14.9404053687, 14.9404512523, 14.9404971345, 14.9405430151, 14.9405888944, 14.9406347721, 14.9406806484, 14.9407265233, 14.9407723967, 14.9408182686, 14.940864139, 14.9409100081, 14.9409558756, 14.9410017417, 14.9410476063, 14.9410934695, 14.9411393312, 14.9411851915, 14.9412310503, 14.9412769076, 14.9413227635, 14.941368618, 14.9414144709, 14.9414603225, 14.9415061725, 14.9415520211, 14.9415978683, 14.941643714, 14.9416895582, 14.941735401, 14.9417812423, 14.9418270821, 14.9418729205, 14.9419187575, 14.941964593, 14.942010427, 14.9420562596, 14.9421020907, 14.9421479204, 14.9421937486, 14.9422395754, 14.9422854007, 14.9423312245, 14.9423770469, 14.9424228678, 14.9424686873, 14.9425145053, 14.9425603219, 14.942606137, 14.9426519507, 14.9426977629, 14.9427435736, 14.9427893829, 14.9428351908, 14.9428809972, 14.9429268021, 14.9429726056, 14.9430184076, 14.9430642082, 14.9431100073, 14.9431558049, 14.9432016011, 14.9432473959, 14.9432931892, 14.943338981, 14.9433847714, 14.9434305604, 14.9434763479, 14.9435221339, 14.9435679185, 14.9436137016, 14.9436594833, 14.9437052635, 14.9437510423, 14.9437968196, 14.9438425955, 14.9438883699, 14.9439341428, 14.9439799143, 14.9440256844, 14.944071453, 14.9441172202, 14.9441629859, 14.9442087501, 14.9442545129, 14.9443002742, 14.9443460341, 14.9443917926, 14.9444375496, 14.9444833051, 14.9445290592, 14.9445748118, 14.944620563, 14.9446663128, 14.944712061, 14.9447578079, 14.9448035533, 14.9448492972, 14.9448950397, 14.9449407807, 14.9449865203, 14.9450322584, 14.9450779951, 14.9451237303, 14.9451694641, 14.9452151965, 14.9452609273, 14.9453066568, 14.9453523848, 14.9453981113, 14.9454438364, 14.94548956, 14.9455352822, 14.9455810029, 14.9456267222, 14.9456724401, 14.9457181565, 14.9457638714, 14.9458095849, 14.9458552969, 14.9459010075, 14.9459467167, 14.9459924244, 14.9460381307, 14.9460838355, 14.9461295388, 14.9461752407, 14.9462209412, 14.9462666402, 14.9463123378, 14.9463580339, 14.9464037286, 14.9464494218, 14.9464951136, 14.9465408039, 14.9465864928, 14.9466321802, 14.9466778662, 14.9467235507, 14.9467692338, 14.9468149155, 14.9468605957, 14.9469062745, 14.9469519518, 14.9469976276, 14.9470433021, 14.947088975, 14.9471346466, 14.9471803166, 14.9472259853, 14.9472716525, 14.9473173182, 14.9473629825, 14.9474086454, 14.9474543068, 14.9474999667, 14.9475456252, 14.9475912823, 14.947636938, 14.9476825921, 14.9477282449, 14.9477738962, 14.947819546, 14.9478651944, 14.9479108414, 14.9479564869, 14.948002131, 14.9480477736, 14.9480934148, 14.9481390545, 14.9481846928, 14.9482303297, 14.9482759651, 14.9483215991, 14.9483672316, 14.9484128627, 14.9484584923, 14.9485041205, 14.9485497472, 14.9485953726, 14.9486409964, 14.9486866188, 14.9487322398, 14.9487778594, 14.9488234775, 14.9488690941, 14.9489147093, 14.9489603231, 14.9490059354, 14.9490515463, 14.9490971557, 14.9491427637, 14.9491883703, 14.9492339754, 14.9492795791, 14.9493251813, 14.9493707821, 14.9494163815, 14.9494619794, 14.9495075758, 14.9495531709, 14.9495987644, 14.9496443566, 14.9496899473, 14.9497355366, 14.9497811244, 14.9498267108, 14.9498722957, 14.9499178792, 14.9499634613, 14.9500090419, 14.9500546211, 14.9501001988, 14.9501457751, 14.95019135, 14.9502369234, 14.9502824954, 14.9503280659, 14.950373635, 14.9504192027, 14.9504647689, 14.9505103337, 14.950555897, 14.950601459, 14.9506470194, 14.9506925785, 14.950738136, 14.9507836922, 14.9508292469, 14.9508748002, 14.950920352, 14.9509659024, 14.9510114514, 14.9510569989, 14.951102545, 14.9511480896, 14.9511936329, 14.9512391746, 14.951284715, 14.9513302539, 14.9513757913, 14.9514213273, 14.9514668619, 14.9515123951, 14.9515579268, 14.9516034571, 14.9516489859, 14.9516945133, 14.9517400393, 14.9517855638, 14.9518310869, 14.9518766085, 14.9519221288, 14.9519676475, 14.9520131649, 14.9520586808, 14.9521041953, 14.9521497083, 14.9521952199, 14.9522407301, 14.9522862388, 14.9523317461, 14.952377252, 14.9524227564, 14.9524682594, 14.9525137609, 14.9525592611, 14.9526047597, 14.952650257, 14.9526957528, 14.9527412472, 14.9527867401, 14.9528322316, 14.9528777217, 14.9529232104, 14.9529686976, 14.9530141833, 14.9530596677, 14.9531051506, 14.9531506321, 14.9531961121, 14.9532415907, 14.9532870679, 14.9533325436, 14.9533780179, 14.9534234908, 14.9534689622, 14.9535144322, 14.9535599008, 14.9536053679, 14.9536508336, 14.9536962979, 14.9537417608, 14.9537872222, 14.9538326821, 14.9538781407, 14.9539235978, 14.9539690535, 14.9540145077, 14.9540599605, 14.9541054119, 14.9541508619, 14.9541963104, 14.9542417575, 14.9542872031, 14.9543326474, 14.9543780901, 14.9544235315, 14.9544689714, 14.9545144099, 14.954559847, 14.9546052826, 14.9546507168, 14.9546961496, 14.954741581, 14.9547870109, 14.9548324394, 14.9548778664, 14.954923292, 14.9549687162, 14.955014139, 14.9550595603, 14.9551049802, 14.9551503987, 14.9551958157, 14.9552412313, 14.9552866455, 14.9553320583, 14.9553774696, 14.9554228795, 14.955468288, 14.955513695, 14.9555591006, 14.9556045048, 14.9556499075, 14.9556953088, 14.9557407087, 14.9557861072, 14.9558315042, 14.9558768998, 14.955922294, 14.9559676868, 14.9560130781, 14.956058468, 14.9561038564, 14.9561492435, 14.9561946291, 14.9562400133, 14.956285396, 14.9563307774, 14.9563761572, 14.9564215357, 14.9564669128, 14.9565122884, 14.9565576626, 14.9566030353, 14.9566484067, 14.9566937766, 14.9567391451, 14.9567845121, 14.9568298777, 14.9568752419, 14.9569206047, 14.9569659661, 14.957011326, 14.9570566845, 14.9571020416, 14.9571473972, 14.9571927514, 14.9572381042, 14.9572834556, 14.9573288055, 14.957374154, 14.9574195011, 14.9574648468, 14.957510191, 14.9575555339, 14.9576008753, 14.9576462152, 14.9576915538, 14.9577368909, 14.9577822266, 14.9578275608, 14.9578728937, 14.9579182251, 14.9579635551, 14.9580088837, 14.9580542108, 14.9580995365, 14.9581448608, 14.9581901837, 14.9582355051, 14.9582808252, 14.9583261438, 14.9583714609, 14.9584167767, 14.958462091, 14.9585074039, 14.9585527154, 14.9585980255, 14.9586433341, 14.9586886413, 14.9587339471, 14.9587792515, 14.9588245545, 14.958869856, 14.9589151561, 14.9589604548, 14.959005752, 14.9590510479, 14.9590963423, 14.9591416353, 14.9591869268, 14.959232217, 14.9592775057, 14.959322793, 14.9593680789, 14.9594133634, 14.9594586464, 14.959503928, 14.9595492082, 14.959594487, 14.9596397644, 14.9596850403, 14.9597303148, 14.9597755879, 14.9598208596, 14.9598661298, 14.9599113987, 14.9599566661, 14.9600019321, 14.9600471966, 14.9600924598, 14.9601377215, 14.9601829818, 14.9602282407, 14.9602734982, 14.9603187542, 14.9603640089, 14.9604092621, 14.9604545139, 14.9604997643, 14.9605450132, 14.9605902607, 14.9606355069, 14.9606807516, 14.9607259948, 14.9607712367, 14.9608164771, 14.9608617162, 14.9609069538, 14.96095219, 14.9609974247, 14.9610426581, 14.96108789, 14.9611331205, 14.9611783496, 14.9612235773, 14.9612688035, 14.9613140284, 14.9613592518, 14.9614044738, 14.9614496944, 14.9614949136, 14.9615401313, 14.9615853477, 14.9616305626, 14.9616757761, 14.9617209882, 14.9617661988, 14.9618114081, 14.9618566159, 14.9619018223, 14.9619470273, 14.9619922309, 14.9620374331, 14.9620826339, 14.9621278332, 14.9621730311, 14.9622182276, 14.9622634227, 14.9623086164, 14.9623538086, 14.9623989995, 14.9624441889, 14.9624893769, 14.9625345635, 14.9625797487, 14.9626249325, 14.9626701148, 14.9627152957, 14.9627604753, 14.9628056534, 14.9628508301, 14.9628960053, 14.9629411792, 14.9629863516, 14.9630315227, 14.9630766923, 14.9631218605, 14.9631670273, 14.9632121927, 14.9632573566, 14.9633025192, 14.9633476803, 14.96339284, 14.9634379983, 14.9634831552, 14.9635283107, 14.9635734648, 14.9636186174, 14.9636637687, 14.9637089185, 14.9637540669, 14.9637992139, 14.9638443595, 14.9638895037, 14.9639346465, 14.9639797878, 14.9640249278, 14.9640700663, 14.9641152034, 14.9641603391, 14.9642054734, 14.9642506063, 14.9642957377, 14.9643408678, 14.9643859964, 14.9644311237, 14.9644762495, 14.9645213739, 14.9645664969, 14.9646116185, 14.9646567387, 14.9647018574, 14.9647469748, 14.9647920907, 14.9648372052, 14.9648823184, 14.9649274301, 14.9649725404, 14.9650176493, 14.9650627567, 14.9651078628, 14.9651529675, 14.9651980707, 14.9652431726, 14.965288273, 14.965333372, 14.9653784696, 14.9654235658, 14.9654686606, 14.965513754, 14.9655588459, 14.9656039365, 14.9656490257, 14.9656941134, 14.9657391997, 14.9657842847, 14.9658293682, 14.9658744503, 14.965919531, 14.9659646103, 14.9660096882, 14.9660547646, 14.9660998397, 14.9661449133, 14.9661899856, 14.9662350564, 14.9662801259, 14.9663251939, 14.9663702605, 14.9664153257, 14.9664603895, 14.9665054519, 14.9665505129, 14.9665955725, 14.9666406306, 14.9666856874, 14.9667307428, 14.9667757967, 14.9668208493, 14.9668659004, 14.9669109501, 14.9669559984, 14.9670010454, 14.9670460909, 14.967091135, 14.9671361777, 14.967181219, 14.9672262588, 14.9672712973, 14.9673163344, 14.9673613701, 14.9674064043, 14.9674514372, 14.9674964686, 14.9675414987, 14.9675865273, 14.9676315545, 14.9676765804, 14.9677216048, 14.9677666278, 14.9678116494, 14.9678566696, 14.9679016884, 14.9679467058, 14.9679917218, 14.9680367364, 14.9680817496, 14.9681267614, 14.9681717717, 14.9682167807, 14.9682617883, 14.9683067944, 14.9683517992, 14.9683968025, 14.9684418045, 14.968486805, 14.9685318042, 14.9685768019, 14.9686217983, 14.9686667932, 14.9687117867, 14.9687567789, 14.9688017696, 14.9688467589, 14.9688917468, 14.9689367333, 14.9689817184, 14.9690267022, 14.9690716845, 14.9691166654, 14.9691616449, 14.969206623, 14.9692515997, 14.969296575, 14.9693415489, 14.9693865213, 14.9694314924, 14.9694764621, 14.9695214304, 14.9695663973, 14.9696113628, 14.9696563269, 14.9697012895, 14.9697462508, 14.9697912107, 14.9698361692, 14.9698811262, 14.9699260819, 14.9699710362, 14.9700159891, 14.9700609405, 14.9701058906, 14.9701508393, 14.9701957866, 14.9702407324, 14.9702856769, 14.97033062, 14.9703755616, 14.9704205019, 14.9704654408, 14.9705103783, 14.9705553143, 14.970600249, 14.9706451823, 14.9706901141, 14.9707350446, 14.9707799737, 14.9708249014, 14.9708698276, 14.9709147525, 14.970959676, 14.9710045981, 14.9710495188, 14.971094438, 14.9711393559, 14.9711842724, 14.9712291875, 14.9712741012, 14.9713190135, 14.9713639244, 14.9714088339, 14.971453742, 14.9714986487, 14.971543554, 14.9715884579, 14.9716333604, 14.9716782615, 14.9717231612, 14.9717680595, 14.9718129564, 14.9718578519, 14.971902746, 14.9719476388, 14.9719925301, 14.97203742, 14.9720823086, 14.9721271957, 14.9721720814, 14.9722169658, 14.9722618487, 14.9723067303, 14.9723516104, 14.9723964892, 14.9724413666, 14.9724862425, 14.9725311171, 14.9725759903, 14.9726208621, 14.9726657324, 14.9727106014, 14.972755469, 14.9728003352, 14.9728452, 14.9728900634, 14.9729349254, 14.9729797861, 14.9730246453, 14.9730695031, 14.9731143596, 14.9731592146, 14.9732040682, 14.9732489205, 14.9732937713, 14.9733386208, 14.9733834689, 14.9734283155, 14.9734731608, 14.9735180047, 14.9735628472, 14.9736076883, 14.973652528, 14.9736973663, 14.9737422032, 14.9737870387, 14.9738318729, 14.9738767056, 14.973921537, 14.9739663669, 14.9740111955, 14.9740560226, 14.9741008484, 14.9741456728, 14.9741904958, 14.9742353174, 14.9742801376, 14.9743249564, 14.9743697738, 14.9744145898, 14.9744594044, 14.9745042177, 14.9745490295, 14.97459384, 14.974638649, 14.9746834567, 14.974728263, 14.9747730679, 14.9748178714, 14.9748626735, 14.9749074742, 14.9749522735, 14.9749970715, 14.975041868, 14.9750866632, 14.9751314569, 14.9751762493, 14.9752210403, 14.9752658299, 14.9753106181, 14.9753554049, 14.9754001903, 14.9754449743, 14.9754897569, 14.9755345382, 14.975579318, 14.9756240965, 14.9756688736, 14.9757136493, 14.9757584236, 14.9758031965, 14.975847968, 14.9758927381, 14.9759375069, 14.9759822742, 14.9760270402, 14.9760718048, 14.9761165679, 14.9761613297, 14.9762060901, 14.9762508492, 14.9762956068, 14.976340363, 14.9763851179, 14.9764298714, 14.9764746234, 14.9765193741, 14.9765641234, 14.9766088713, 14.9766536179, 14.976698363, 14.9767431067, 14.9767878491, 14.9768325901, 14.9768773297, 14.9769220679, 14.9769668047, 14.9770115401, 14.9770562741, 14.9771010068, 14.977145738, 14.9771904679, 14.9772351964, 14.9772799235, 14.9773246492, 14.9773693735, 14.9774140965, 14.977458818, 14.9775035382, 14.977548257, 14.9775929744, 14.9776376904, 14.977682405, 14.9777271183, 14.9777718301, 14.9778165406, 14.9778612497, 14.9779059574, 14.9779506637, 14.9779953686, 14.9780400722, 14.9780847743, 14.9781294751, 14.9781741745, 14.9782188725, 14.9782635691, 14.9783082643, 14.9783529582, 14.9783976506, 14.9784423417, 14.9784870314, 14.9785317197, 14.9785764066, 14.9786210922, 14.9786657763, 14.9787104591, 14.9787551405, 14.9787998205, 14.9788444991, 14.9788891764, 14.9789338522, 14.9789785267, 14.9790231998, 14.9790678715, 14.9791125418, 14.9791572107, 14.9792018783, 14.9792465445, 14.9792912093, 14.9793358727, 14.9793805347, 14.9794251953, 14.9794698546, 14.9795145125, 14.979559169, 14.9796038241, 14.9796484778, 14.9796931302, 14.9797377811, 14.9797824307, 14.9798270789, 14.9798717257, 14.9799163712, 14.9799610152, 14.9800056579, 14.9800502992, 14.9800949391, 14.9801395776, 14.9801842148, 14.9802288506, 14.9802734849, 14.980318118, 14.9803627496, 14.9804073798, 14.9804520087, 14.9804966362, 14.9805412623, 14.980585887, 14.9806305104, 14.9806751323, 14.9807197529, 14.9807643721, 14.9808089899, 14.9808536064, 14.9808982214, 14.9809428351, 14.9809874474, 14.9810320584, 14.9810766679, 14.9811212761, 14.9811658829, 14.9812104883, 14.9812550923, 14.981299695, 14.9813442962, 14.9813888961, 14.9814334946, 14.9814780918, 14.9815226875, 14.9815672819, 14.9816118749, 14.9816564665, 14.9817010568, 14.9817456456, 14.9817902331, 14.9818348192, 14.981879404, 14.9819239873, 14.9819685693, 14.9820131499, 14.9820577291, 14.982102307, 14.9821468834, 14.9821914585, 14.9822360322, 14.9822806046, 14.9823251755, 14.9823697451, 14.9824143133, 14.9824588801, 14.9825034456, 14.9825480097, 14.9825925723, 14.9826371337, 14.9826816936, 14.9827262522, 14.9827708094, 14.9828153652, 14.9828599196, 14.9829044727, 14.9829490244, 14.9829935747, 14.9830381236, 14.9830826712, 14.9831272174, 14.9831717622, 14.9832163056, 14.9832608477, 14.9833053884, 14.9833499277, 14.9833944656, 14.9834390022, 14.9834835374, 14.9835280712, 14.9835726036, 14.9836171347, 14.9836616643, 14.9837061927, 14.9837507196, 14.9837952452, 14.9838397693, 14.9838842922, 14.9839288136, 14.9839733337, 14.9840178524, 14.9840623697, 14.9841068856, 14.9841514002, 14.9841959134, 14.9842404252, 14.9842849357, 14.9843294448, 14.9843739525, 14.9844184588, 14.9844629638, 14.9845074673, 14.9845519696, 14.9845964704, 14.9846409699, 14.984685468, 14.9847299647, 14.98477446, 14.984818954, 14.9848634466, 14.9849079379, 14.9849524277, 14.9849969162, 14.9850414033, 14.9850858891, 14.9851303735, 14.9851748565, 14.9852193381, 14.9852638184, 14.9853082973, 14.9853527748, 14.9853972509, 14.9854417257, 14.9854861991, 14.9855306711, 14.9855751418, 14.9856196111, 14.985664079, 14.9857085456, 14.9857530108, 14.9857974746, 14.985841937, 14.9858863981, 14.9859308578, 14.9859753161, 14.9860197731, 14.9860642287, 14.9861086829, 14.9861531357, 14.9861975872, 14.9862420373, 14.9862864861, 14.9863309334, 14.9863753794, 14.9864198241, 14.9864642673, 14.9865087092, 14.9865531498, 14.9865975889, 14.9866420267, 14.9866864631, 14.9867308982, 14.9867753319, 14.9868197642, 14.9868641951, 14.9869086247, 14.9869530529, 14.9869974797, 14.9870419052, 14.9870863293, 14.9871307521, 14.9871751734, 14.9872195934, 14.9872640121, 14.9873084293, 14.9873528452, 14.9873972598, 14.9874416729, 14.9874860847, 14.9875304952, 14.9875749042, 14.9876193119, 14.9876637183, 14.9877081232, 14.9877525268, 14.987796929, 14.9878413299, 14.9878857294, 14.9879301275, 14.9879745243, 14.9880189197, 14.9880633137, 14.9881077064, 14.9881520977, 14.9881964876, 14.9882408762, 14.9882852634, 14.9883296492, 14.9883740337, 14.9884184168, 14.9884627985, 14.9885071789, 14.9885515579, 14.9885959356, 14.9886403119, 14.9886846868, 14.9887290603, 14.9887734325, 14.9888178033, 14.9888621728, 14.9889065409, 14.9889509076, 14.988995273, 14.989039637, 14.9890839996, 14.9891283609, 14.9891727208, 14.9892170793, 14.9892614365, 14.9893057923, 14.9893501468, 14.9893944998, 14.9894388516, 14.9894832019, 14.9895275509, 14.9895718986, 14.9896162448, 14.9896605897, 14.9897049333, 14.9897492755, 14.9897936163, 14.9898379557, 14.9898822938, 14.9899266306, 14.9899709659, 14.9900152999, 14.9900596326, 14.9901039639, 14.9901482938, 14.9901926223, 14.9902369495, 14.9902812754, 14.9903255998, 14.9903699229, 14.9904142447, 14.9904585651, 14.9905028841, 14.9905472018, 14.9905915181, 14.990635833, 14.9906801466, 14.9907244588, 14.9907687697, 14.9908130792, 14.9908573873, 14.9909016941, 14.9909459995, 14.9909903035, 14.9910346062, 14.9910789076, 14.9911232075, 14.9911675061, 14.9912118034, 14.9912560993, 14.9913003938, 14.991344687, 14.9913889788, 14.9914332693, 14.9914775583, 14.9915218461, 14.9915661324, 14.9916104175, 14.9916547011, 14.9916989834, 14.9917432643, 14.9917875439, 14.9918318221, 14.991876099, 14.9919203745, 14.9919646486, 14.9920089214, 14.9920531929, 14.9920974629, 14.9921417316, 14.992185999, 14.992230265, 14.9922745296, 14.9923187929, 14.9923630548, 14.9924073153, 14.9924515745, 14.9924958324, 14.9925400889, 14.992584344, 14.9926285978, 14.9926728502, 14.9927171012, 14.9927613509, 14.9928055993, 14.9928498463, 14.9928940919, 14.9929383362, 14.9929825791, 14.9930268206, 14.9930710608, 14.9931152997, 14.9931595372, 14.9932037733, 14.9932480081, 14.9932922415, 14.9933364736, 14.9933807043, 14.9934249336, 14.9934691616, 14.9935133882, 14.9935576135, 14.9936018374, 14.99364606, 14.9936902812, 14.9937345011, 14.9937787196, 14.9938229367, 14.9938671525, 14.993911367, 14.9939555801, 14.9939997918, 14.9940440022, 14.9940882112, 14.9941324189, 14.9941766252, 14.9942208301, 14.9942650337, 14.994309236, 14.9943534369, 14.9943976364, 14.9944418346, 14.9944860314, 14.9945302269, 14.994574421, 14.9946186138, 14.9946628052, 14.9947069953, 14.994751184, 14.9947953713, 14.9948395573, 14.994883742, 14.9949279253, 14.9949721072, 14.9950162878, 14.995060467, 14.9951046449, 14.9951488214, 14.9951929966, 14.9952371704, 14.9952813429, 14.995325514, 14.9953696838, 14.9954138522, 14.9954580193, 14.995502185, 14.9955463494, 14.9955905124, 14.995634674, 14.9956788343, 14.9957229933, 14.9957671509, 14.9958113071, 14.995855462, 14.9958996156, 14.9959437678, 14.9959879186, 14.9960320681, 14.9960762162, 14.996120363, 14.9961645085, 14.9962086526, 14.9962527953, 14.9962969367, 14.9963410767, 14.9963852154, 14.9964293527, 14.9964734887, 14.9965176234, 14.9965617567, 14.9966058886, 14.9966500192, 14.9966941484, 14.9967382763, 14.9967824028, 14.996826528, 14.9968706519, 14.9969147743, 14.9969588955, 14.9970030153, 14.9970471337, 14.9970912508, 14.9971353665, 14.9971794809, 14.997223594, 14.9972677057, 14.997311816, 14.997355925, 14.9974000327, 14.997444139, 14.9974882439, 14.9975323475, 14.9975764498, 14.9976205507, 14.9976646502, 14.9977087485, 14.9977528453, 14.9977969408, 14.997841035, 14.9978851278, 14.9979292193, 14.9979733094, 14.9980173982, 14.9980614856, 14.9981055717, 14.9981496565, 14.9981937398, 14.9982378219, 14.9982819026, 14.9983259819, 14.9983700599, 14.9984141366, 14.9984582119, 14.9985022859, 14.9985463585, 14.9985904297, 14.9986344997, 14.9986785682, 14.9987226355, 14.9987667014, 14.9988107659, 14.9988548291, 14.9988988909, 14.9989429514, 14.9989870106, 14.9990310684, 14.9990751249, 14.99911918, 14.9991632338, 14.9992072862, 14.9992513373, 14.999295387, 14.9993394354, 14.9993834825, 14.9994275282, 14.9994715725, 14.9995156155, 14.9995596572, 14.9996036975, 14.9996477365, 14.9996917742, 14.9997358105, 14.9997798454, 14.999823879, 14.9998679113, 14.9999119422, 14.9999559718, 15.0, 15.0000440269, 15.0000880524, 15.0001320766, 15.0001760995, 15.000220121, 15.0002641412, 15.00030816, 15.0003521775, 15.0003961936, 15.0004402084, 15.0004842219, 15.000528234, 15.0005722448, 15.0006162542, 15.0006602623, 15.000704269, 15.0007482744, 15.0007922785, 15.0008362812, 15.0008802826, 15.0009242826, 15.0009682813, 15.0010122786, 15.0010562746, 15.0011002693, 15.0011442626, 15.0011882546, 15.0012322452, 15.0012762345, 15.0013202225, 15.0013642091, 15.0014081944, 15.0014521783, 15.0014961609, 15.0015401422, 15.0015841221, 15.0016281007, 15.0016720779, 15.0017160538, 15.0017600283, 15.0018040015, 15.0018479734, 15.0018919439, 15.0019359131, 15.001979881, 15.0020238475, 15.0020678127, 15.0021117765, 15.002155739, 15.0021997001, 15.0022436599, 15.0022876184, 15.0023315755, 15.0023755313, 15.0024194858, 15.0024634389, 15.0025073907, 15.0025513411, 15.0025952902, 15.002639238, 15.0026831844, 15.0027271295, 15.0027710732, 15.0028150156, 15.0028589567, 15.0029028964, 15.0029468348, 15.0029907718, 15.0030347076, 15.0030786419, 15.003122575, 15.0031665067, 15.003210437, 15.0032543661, 15.0032982937, 15.0033422201, 15.0033861451, 15.0034300688, 15.0034739911, 15.0035179121, 15.0035618318, 15.0036057501, 15.0036496671, 15.0036935827, 15.0037374971, 15.00378141, 15.0038253217, 15.003869232, 15.0039131409, 15.0039570486, 15.0040009549, 15.0040448598, 15.0040887635, 15.0041326657, 15.0041765667, 15.0042204663, 15.0042643646, 15.0043082615, 15.0043521572, 15.0043960514, 15.0044399444, 15.004483836, 15.0045277262, 15.0045716152, 15.0046155028, 15.004659389, 15.004703274, 15.0047471575, 15.0047910398, 15.0048349207, 15.0048788003, 15.0049226786, 15.0049665555, 15.0050104311, 15.0050543053, 15.0050981782, 15.0051420498, 15.0051859201, 15.005229789, 15.0052736566, 15.0053175228, 15.0053613877, 15.0054052513, 15.0054491135, 15.0054929745, 15.005536834, 15.0055806923, 15.0056245492, 15.0056684048, 15.005712259, 15.0057561119, 15.0057999635, 15.0058438138, 15.0058876627, 15.0059315103, 15.0059753565, 15.0060192014, 15.006063045, 15.0061068873, 15.0061507282, 15.0061945678, 15.006238406, 15.0062822429, 15.0063260785, 15.0063699128, 15.0064137457, 15.0064575773, 15.0065014076, 15.0065452365, 15.0065890641, 15.0066328904, 15.0066767153, 15.0067205389, 15.0067643612, 15.0068081821, 15.0068520017, 15.00689582, 15.006939637, 15.0069834526, 15.0070272669, 15.0070710799, 15.0071148915, 15.0071587018, 15.0072025107, 15.0072463184, 15.0072901247, 15.0073339297, 15.0073777333, 15.0074215356, 15.0074653366, 15.0075091363, 15.0075529346, 15.0075967316, 15.0076405273, 15.0076843216, 15.0077281146, 15.0077719063, 15.0078156967, 15.0078594857, 15.0079032734, 15.0079470597, 15.0079908448, 15.0080346285, 15.0080784109, 15.0081221919, 15.0081659716, 15.00820975, 15.0082535271, 15.0082973028, 15.0083410772, 15.0083848503, 15.0084286221, 15.0084723925, 15.0085161616, 15.0085599294, 15.0086036958, 15.0086474609, 15.0086912247, 15.0087349872, 15.0087787483, 15.0088225081, 15.0088662666, 15.0089100237, 15.0089537795, 15.008997534, 15.0090412872, 15.009085039, 15.0091287895, 15.0091725387, 15.0092162866, 15.0092600331, 15.0093037783, 15.0093475222, 15.0093912648, 15.009435006, 15.0094787459, 15.0095224845, 15.0095662217, 15.0096099576, 15.0096536922, 15.0096974255, 15.0097411575, 15.0097848881, 15.0098286174, 15.0098723453, 15.009916072, 15.0099597973, 15.0100035213, 15.010047244, 15.0100909653, 15.0101346853, 15.010178404, 15.0102221214, 15.0102658374, 15.0103095522, 15.0103532655, 15.0103969776, 15.0104406884, 15.0104843978, 15.0105281059, 15.0105718127, 15.0106155181, 15.0106592222, 15.010702925, 15.0107466265, 15.0107903267, 15.0108340255, 15.010877723, 15.0109214192, 15.0109651141, 15.0110088076, 15.0110524998, 15.0110961907, 15.0111398803, 15.0111835685, 15.0112272554, 15.011270941, 15.0113146253, 15.0113583082, 15.0114019899, 15.0114456702, 15.0114893492, 15.0115330268, 15.0115767032, 15.0116203782, 15.0116640519, 15.0117077243, 15.0117513953, 15.011795065, 15.0118387335, 15.0118824005, 15.0119260663, 15.0119697308, 15.0120133939, 15.0120570557, 15.0121007162, 15.0121443753, 15.0121880331, 15.0122316897, 15.0122753449, 15.0123189987, 15.0123626513, 15.0124063025, 15.0124499524, 15.012493601, 15.0125372483, 15.0125808942, 15.0126245389, 15.0126681822, 15.0127118242, 15.0127554648, 15.0127991042, 15.0128427422, 15.0128863789, 15.0129300143, 15.0129736484, 15.0130172811, 15.0130609126, 15.0131045427, 15.0131481715, 15.0131917989, 15.0132354251, 15.0132790499, 15.0133226734, 15.0133662956, 15.0134099165, 15.0134535361, 15.0134971543, 15.0135407712, 15.0135843868, 15.0136280011, 15.0136716141, 15.0137152257, 15.013758836, 15.013802445, 15.0138460527, 15.0138896591, 15.0139332642, 15.0139768679, 15.0140204703, 15.0140640714, 15.0141076712, 15.0141512697, 15.0141948668, 15.0142384626, 15.0142820572, 15.0143256504, 15.0143692422, 15.0144128328, 15.014456422, 15.01450001, 15.0145435966, 15.0145871819, 15.0146307659, 15.0146743485, 15.0147179299, 15.0147615099, 15.0148050886, 15.014848666, 15.0148922421, 15.0149358168, 15.0149793903, 15.0150229624, 15.0150665332, 15.0151101027, 15.0151536709, 15.0151972378, 15.0152408033, 15.0152843676, 15.0153279305, 15.0153714921, 15.0154150524, 15.0154586114, 15.015502169, 15.0155457254, 15.0155892804, 15.0156328341, 15.0156763865, 15.0157199376, 15.0157634874, 15.0158070358, 15.015850583, 15.0158941288, 15.0159376733, 15.0159812165, 15.0160247584, 15.016068299, 15.0161118382, 15.0161553762, 15.0161989128, 15.0162424481, 15.0162859821, 15.0163295148, 15.0163730462, 15.0164165762, 15.016460105, 15.0165036324, 15.0165471585, 15.0165906833, 15.0166342068, 15.016677729, 15.0167212499, 15.0167647694, 15.0168082877, 15.0168518046, 15.0168953202, 15.0169388345, 15.0169823475, 15.0170258592, 15.0170693696, 15.0171128786, 15.0171563864, 15.0171998928, 15.0172433979, 15.0172869017, 15.0173304042, 15.0173739054, 15.0174174053, 15.0174609039, 15.0175044011, 15.017547897, 15.0175913917, 15.017634885, 15.017678377, 15.0177218677, 15.0177653571, 15.0178088451, 15.0178523319, 15.0178958174, 15.0179393015, 15.0179827843, 15.0180262658, 15.0180697461, 15.0181132249, 15.0181567025, 15.0182001788, 15.0182436538, 15.0182871274, 15.0183305998, 15.0183740708, 15.0184175405, 15.018461009, 15.0185044761, 15.0185479419, 15.0185914064, 15.0186348695, 15.0186783314, 15.018721792, 15.0187652512, 15.0188087092, 15.0188521658, 15.0188956211, 15.0189390751, 15.0189825278, 15.0190259792, 15.0190694293, 15.0191128781, 15.0191563256, 15.0191997717, 15.0192432166, 15.0192866602, 15.0193301024, 15.0193735433, 15.0194169829, 15.0194604213, 15.0195038583, 15.019547294, 15.0195907284, 15.0196341614, 15.0196775932, 15.0197210237, 15.0197644528, 15.0198078807, 15.0198513073, 15.0198947325, 15.0199381564, 15.0199815791, 15.0200250004, 15.0200684204, 15.0201118391, 15.0201552565, 15.0201986726, 15.0202420874, 15.0202855008, 15.020328913, 15.0203723239, 15.0204157334, 15.0204591417, 15.0205025486, 15.0205459543, 15.0205893586, 15.0206327617, 15.0206761634, 15.0207195638, 15.0207629629, 15.0208063607, 15.0208497572, 15.0208931524, 15.0209365463, 15.0209799389, 15.0210233302, 15.0210667202, 15.0211101088, 15.0211534962, 15.0211968823, 15.021240267, 15.0212836505, 15.0213270326, 15.0213704135, 15.021413793, 15.0214571712, 15.0215005482, 15.0215439238, 15.0215872981, 15.0216306711, 15.0216740429, 15.0217174133, 15.0217607824, 15.0218041502, 15.0218475167, 15.0218908819, 15.0219342458, 15.0219776084, 15.0220209696, 15.0220643296, 15.0221076883, 15.0221510457, 15.0221944018, 15.0222377565, 15.02228111, 15.0223244622, 15.022367813, 15.0224111626, 15.0224545108, 15.0224978578, 15.0225412035, 15.0225845478, 15.0226278909, 15.0226712326, 15.022714573, 15.0227579122, 15.02280125, 15.0228445866, 15.0228879218, 15.0229312557, 15.0229745884, 15.0230179197, 15.0230612497, 15.0231045785, 15.0231479059, 15.023191232, 15.0232345568, 15.0232778804, 15.0233212026, 15.0233645235, 15.0234078431, 15.0234511615, 15.0234944785, 15.0235377942, 15.0235811086, 15.0236244217, 15.0236677336, 15.0237110441, 15.0237543533, 15.0237976612, 15.0238409678, 15.0238842732, 15.0239275772, 15.0239708799, 15.0240141813, 15.0240574814, 15.0241007803, 15.0241440778, 15.024187374, 15.0242306689, 15.0242739625, 15.0243172549, 15.0243605459, 15.0244038356, 15.024447124, 15.0244904112, 15.024533697, 15.0245769815, 15.0246202648, 15.0246635467, 15.0247068273, 15.0247501067, 15.0247933847, 15.0248366614, 15.0248799369, 15.024923211, 15.0249664839, 15.0250097554, 15.0250530257, 15.0250962946, 15.0251395623, 15.0251828286, 15.0252260937, 15.0252693575, 15.0253126199, 15.0253558811, 15.025399141, 15.0254423995, 15.0254856568, 15.0255289128, 15.0255721675, 15.0256154209, 15.0256586729, 15.0257019237, 15.0257451732, 15.0257884214, 15.0258316683, 15.0258749139, 15.0259181582, 15.0259614013, 15.026004643, 15.0260478834, 15.0260911225, 15.0261343604, 15.0261775969, 15.0262208321, 15.0262640661, 15.0263072987, 15.0263505301, 15.0263937601, 15.0264369889, 15.0264802163, 15.0265234425, 15.0265666674, 15.026609891, 15.0266531133, 15.0266963342, 15.0267395539, 15.0267827723, 15.0268259895, 15.0268692053, 15.0269124198, 15.026955633, 15.0269988449, 15.0270420556, 15.0270852649, 15.027128473, 15.0271716797, 15.0272148852, 15.0272580893, 15.0273012922, 15.0273444938, 15.0273876941, 15.027430893, 15.0274740907, 15.0275172871, 15.0275604822, 15.0276036761, 15.0276468686, 15.0276900598, 15.0277332498, 15.0277764384, 15.0278196257, 15.0278628118, 15.0279059966, 15.02794918, 15.0279923622, 15.0280355431, 15.0280787227, 15.028121901, 15.028165078, 15.0282082537, 15.0282514282, 15.0282946013, 15.0283377731, 15.0283809437, 15.0284241129, 15.0284672809, 15.0285104476, 15.028553613, 15.0285967771, 15.0286399399, 15.0286831014, 15.0287262616, 15.0287694205, 15.0288125782, 15.0288557345, 15.0288988896, 15.0289420433, 15.0289851958, 15.029028347, 15.0290714969, 15.0291146455, 15.0291577928, 15.0292009388, 15.0292440835, 15.029287227, 15.0293303691, 15.02937351, 15.0294166495, 15.0294597878, 15.0295029248, 15.0295460605, 15.0295891949, 15.029632328, 15.0296754599, 15.0297185904, 15.0297617197, 15.0298048476, 15.0298479743, 15.0298910997, 15.0299342238, 15.0299773466, 15.0300204681, 15.0300635883, 15.0301067073, 15.0301498249, 15.0301929413, 15.0302360564, 15.0302791701, 15.0303222826, 15.0303653939, 15.0304085038, 15.0304516124, 15.0304947197, 15.0305378258, 15.0305809306, 15.0306240341, 15.0306671362, 15.0307102372, 15.0307533368, 15.0307964351, 15.0308395321, 15.0308826279, 15.0309257224, 15.0309688155, 15.0310119074, 15.031054998, 15.0310980874, 15.0311411754, 15.0311842621, 15.0312273476, 15.0312704318, 15.0313135147, 15.0313565963, 15.0313996766, 15.0314427556, 15.0314858333, 15.0315289098, 15.031571985, 15.0316150588, 15.0316581314, 15.0317012027, 15.0317442728, 15.0317873415, 15.031830409, 15.0318734751, 15.03191654, 15.0319596036, 15.0320026659, 15.0320457269, 15.0320887867, 15.0321318451, 15.0321749023, 15.0322179582, 15.0322610128, 15.0323040661, 15.0323471181, 15.0323901689, 15.0324332183, 15.0324762665, 15.0325193134, 15.032562359, 15.0326054033, 15.0326484464, 15.0326914881, 15.0327345286, 15.0327775678, 15.0328206057, 15.0328636423, 15.0329066776, 15.0329497117, 15.0329927444, 15.0330357759, 15.0330788061, 15.033121835, 15.0331648627, 15.033207889, 15.0332509141, 15.0332939379, 15.0333369604, 15.0333799816, 15.0334230015, 15.0334660202, 15.0335090376, 15.0335520536, 15.0335950685, 15.033638082, 15.0336810942, 15.0337241052, 15.0337671148, 15.0338101232, 15.0338531304, 15.0338961362, 15.0339391407, 15.033982144, 15.034025146, 15.0340681467, 15.0341111461, 15.0341541442, 15.0341971411, 15.0342401367, 15.034283131, 15.034326124, 15.0343691157, 15.0344121062, 15.0344550953, 15.0344980832, 15.0345410698, 15.0345840552, 15.0346270392, 15.034670022, 15.0347130034, 15.0347559837, 15.0347989626, 15.0348419402, 15.0348849166, 15.0349278917, 15.0349708655, 15.035013838, 15.0350568092, 15.0350997792, 15.0351427479, 15.0351857153, 15.0352286814, 15.0352716463, 15.0353146098, 15.0353575721, 15.0354005331, 15.0354434928, 15.0354864513, 15.0355294085, 15.0355723644, 15.035615319, 15.0356582723, 15.0357012243, 15.0357441751, 15.0357871246, 15.0358300728, 15.0358730198, 15.0359159654, 15.0359589098, 15.0360018529, 15.0360447947, 15.0360877353, 15.0361306746, 15.0361736126, 15.0362165493, 15.0362594847, 15.0363024189, 15.0363453517, 15.0363882833, 15.0364312137, 15.0364741427, 15.0365170705, 15.036559997, 15.0366029222, 15.0366458461, 15.0366887688, 15.0367316902, 15.0367746103, 15.0368175291, 15.0368604467, 15.036903363, 15.036946278, 15.0369891917, 15.0370321041, 15.0370750153, 15.0371179252, 15.0371608338, 15.0372037412, 15.0372466472, 15.037289552, 15.0373324555, 15.0373753578, 15.0374182587, 15.0374611584, 15.0375040568, 15.037546954, 15.0375898498, 15.0376327444, 15.0376756377, 15.0377185298, 15.0377614205, 15.03780431, 15.0378471982, 15.0378900851, 15.0379329708, 15.0379758552, 15.0380187383, 15.0380616201, 15.0381045007, 15.03814738, 15.038190258, 15.0382331347, 15.0382760102, 15.0383188844, 15.0383617573, 15.0384046289, 15.0384474993, 15.0384903684, 15.0385332362, 15.0385761028, 15.038618968, 15.038661832, 15.0387046948, 15.0387475562, 15.0387904164, 15.0388332753, 15.0388761329, 15.0389189893, 15.0389618444, 15.0390046982, 15.0390475507, 15.039090402, 15.039133252, 15.0391761007, 15.0392189482, 15.0392617943, 15.0393046392, 15.0393474829, 15.0393903252, 15.0394331663, 15.0394760061, 15.0395188447, 15.039561682, 15.039604518, 15.0396473527, 15.0396901861, 15.0397330183, 15.0397758492, 15.0398186789, 15.0398615072, 15.0399043343, 15.0399471602, 15.0399899847, 15.040032808, 15.04007563, 15.0401184508, 15.0401612702, 15.0402040884, 15.0402469054, 15.040289721, 15.0403325354, 15.0403753485, 15.0404181604, 15.040460971, 15.0405037803, 15.0405465883, 15.0405893951, 15.0406322006, 15.0406750048, 15.0407178077, 15.0407606094, 15.0408034098, 15.040846209, 15.0408890069, 15.0409318035, 15.0409745988, 15.0410173929, 15.0410601857, 15.0411029772, 15.0411457675, 15.0411885565, 15.0412313442, 15.0412741306, 15.0413169158, 15.0413596997, 15.0414024824, 15.0414452638, 15.0414880439, 15.0415308227, 15.0415736003, 15.0416163766, 15.0416591516, 15.0417019254, 15.0417446979, 15.0417874691, 15.0418302391, 15.0418730078, 15.0419157752, 15.0419585414, 15.0420013063, 15.0420440699, 15.0420868323, 15.0421295934, 15.0421723532, 15.0422151117, 15.042257869, 15.042300625, 15.0423433798, 15.0423861333, 15.0424288855, 15.0424716365, 15.0425143861, 15.0425571346, 15.0425998817, 15.0426426276, 15.0426853722, 15.0427281156, 15.0427708577, 15.0428135985, 15.042856338, 15.0428990763, 15.0429418133, 15.0429845491, 15.0430272836, 15.0430700168, 15.0431127488, 15.0431554795, 15.0431982089, 15.0432409371, 15.043283664, 15.0433263896, 15.043369114, 15.0434118371, 15.0434545589, 15.0434972795, 15.0435399988, 15.0435827168, 15.0436254336, 15.0436681491, 15.0437108633, 15.0437535763, 15.043796288, 15.0438389985, 15.0438817077, 15.0439244156, 15.0439671223, 15.0440098277, 15.0440525318, 15.0440952347, 15.0441379363, 15.0441806366, 15.0442233357, 15.0442660335, 15.0443087301, 15.0443514253, 15.0443941194, 15.0444368121, 15.0444795036, 15.0445221938, 15.0445648828, 15.0446075705, 15.044650257, 15.0446929421, 15.0447356261, 15.0447783087, 15.0448209901, 15.0448636702, 15.0449063491, 15.0449490267, 15.044991703, 15.0450343781, 15.0450770519, 15.0451197245, 15.0451623958, 15.0452050658, 15.0452477346, 15.0452904021, 15.0453330683, 15.0453757333, 15.045418397, 15.0454610595, 15.0455037207, 15.0455463806, 15.0455890393, 15.0456316967, 15.0456743529, 15.0457170078, 15.0457596614, 15.0458023138, 15.0458449649, 15.0458876147, 15.0459302633, 15.0459729106, 15.0460155567, 15.0460582015, 15.046100845, 15.0461434873, 15.0461861283, 15.0462287681, 15.0462714066, 15.0463140438, 15.0463566798, 15.0463993145, 15.046441948, 15.0464845802, 15.0465272112, 15.0465698408, 15.0466124693, 15.0466550964, 15.0466977223, 15.046740347, 15.0467829704, 15.0468255925, 15.0468682133, 15.046910833, 15.0469534513, 15.0469960684, 15.0470386842, 15.0470812988, 15.0471239121, 15.0471665242, 15.047209135, 15.0472517445, 15.0472943528, 15.0473369598, 15.0473795656, 15.0474221701, 15.0474647733, 15.0475073753, 15.047549976, 15.0475925755, 15.0476351737, 15.0476777707, 15.0477203664, 15.0477629608, 15.047805554, 15.0478481459, 15.0478907366, 15.047933326, 15.0479759142, 15.0480185011, 15.0480610867, 15.0481036711, 15.0481462542, 15.0481888361, 15.0482314167, 15.0482739961, 15.0483165742, 15.048359151, 15.0484017266, 15.0484443009, 15.048486874, 15.0485294458, 15.0485720164, 15.0486145857, 15.0486571537, 15.0486997205, 15.0487422861, 15.0487848503, 15.0488274134, 15.0488699751, 15.0489125356, 15.0489550949, 15.0489976529, 15.0490402097, 15.0490827652, 15.0491253194, 15.0491678724, 15.0492104241, 15.0492529746, 15.0492955238, 15.0493380718, 15.0493806185, 15.0494231639, 15.0494657081, 15.0495082511, 15.0495507927, 15.0495933332, 15.0496358724, 15.0496784103, 15.049720947, 15.0497634824, 15.0498060165, 15.0498485495, 15.0498910811, 15.0499336115, 15.0499761407, 15.0500186686, 15.0500611952, 15.0501037206, 15.0501462447, 15.0501887676, 15.0502312892, 15.0502738096, 15.0503163287, 15.0503588466, 15.0504013632, 15.0504438786, 15.0504863927, 15.0505289055, 15.0505714171, 15.0506139275, 15.0506564366, 15.0506989444, 15.050741451, 15.0507839564, 15.0508264605, 15.0508689633, 15.0509114649, 15.0509539652, 15.0509964643, 15.0510389621, 15.0510814587, 15.051123954, 15.0511664481, 15.0512089409, 15.0512514325, 15.0512939228, 15.0513364119, 15.0513788997, 15.0514213863, 15.0514638716, 15.0515063556, 15.0515488384, 15.05159132, 15.0516338003, 15.0516762794, 15.0517187572, 15.0517612337, 15.051803709, 15.0518461831, 15.0518886559, 15.0519311275, 15.0519735978, 15.0520160668, 15.0520585346, 15.0521010012, 15.0521434665, 15.0521859305, 15.0522283933, 15.0522708549, 15.0523133152, 15.0523557743, 15.0523982321, 15.0524406886, 15.0524831439, 15.052525598, 15.0525680508, 15.0526105024, 15.0526529527, 15.0526954017, 15.0527378495, 15.0527802961, 15.0528227414, 15.0528651855, 15.0529076283, 15.0529500699, 15.0529925102, 15.0530349493, 15.0530773871, 15.0531198237, 15.053162259, 15.0532046931, 15.0532471259, 15.0532895575, 15.0533319878, 15.0533744169, 15.0534168448, 15.0534592713, 15.0535016967, 15.0535441208, 15.0535865436, 15.0536289652, 15.0536713856, 15.0537138047, 15.0537562226, 15.0537986392, 15.0538410545, 15.0538834687, 15.0539258815, 15.0539682932, 15.0540107035, 15.0540531127, 15.0540955206, 15.0541379272, 15.0541803326, 15.0542227367, 15.0542651396, 15.0543075413, 15.0543499417, 15.0543923408, 15.0544347388, 15.0544771354, 15.0545195309, 15.054561925, 15.054604318, 15.0546467096, 15.0546891001, 15.0547314893, 15.0547738772, 15.0548162639, 15.0548586494, 15.0549010336, 15.0549434166, 15.0549857983, 15.0550281788, 15.055070558, 15.055112936, 15.0551553127, 15.0551976882, 15.0552400625, 15.0552824355, 15.0553248073, 15.0553671778, 15.0554095471, 15.0554519151, 15.0554942819, 15.0555366474, 15.0555790117, 15.0556213748, 15.0556637366, 15.0557060972, 15.0557484565, 15.0557908146, 15.0558331714, 15.055875527, 15.0559178813, 15.0559602345, 15.0560025863, 15.0560449369, 15.0560872863, 15.0561296344, 15.0561719813, 15.056214327, 15.0562566714, 15.0562990146, 15.0563413565, 15.0563836971, 15.0564260366, 15.0564683748, 15.0565107117, 15.0565530474, 15.0565953819, 15.0566377151, 15.0566800471, 15.0567223778, 15.0567647073, 15.0568070356, 15.0568493626, 15.0568916884, 15.0569340129, 15.0569763362, 15.0570186582, 15.057060979, 15.0571032986, 15.0571456169, 15.057187934, 15.0572302498, 15.0572725644, 15.0573148778, 15.0573571899, 15.0573995008, 15.0574418104, 15.0574841188, 15.057526426, 15.0575687319, 15.0576110365, 15.05765334, 15.0576956422, 15.0577379431, 15.0577802428, 15.0578225413, 15.0578648385, 15.0579071345, 15.0579494292, 15.0579917228, 15.058034015, 15.0580763061, 15.0581185958, 15.0581608844, 15.0582031717, 15.0582454578, 15.0582877426, 15.0583300262, 15.0583723086, 15.0584145897, 15.0584568695, 15.0584991482, 15.0585414256, 15.0585837017, 15.0586259767, 15.0586682503, 15.0587105228, 15.058752794, 15.058795064, 15.0588373327, 15.0588796002, 15.0589218664, 15.0589641314, 15.0590063952, 15.0590486577, 15.059090919, 15.0591331791, 15.0591754379, 15.0592176955, 15.0592599518, 15.059302207, 15.0593444608, 15.0593867135, 15.0594289649, 15.059471215, 15.0595134639, 15.0595557116, 15.0595979581, 15.0596402033, 15.0596824472, 15.05972469, 15.0597669315, 15.0598091717, 15.0598514108, 15.0598936486, 15.0599358851, 15.0599781204, 15.0600203545, 15.0600625874, 15.060104819, 15.0601470493, 15.0601892785, 15.0602315064, 15.060273733, 15.0603159585, 15.0603581826, 15.0604004056, 15.0604426273, 15.0604848478, 15.060527067, 15.0605692851, 15.0606115018, 15.0606537174, 15.0606959317, 15.0607381448, 15.0607803566, 15.0608225672, 15.0608647766, 15.0609069847, 15.0609491916, 15.0609913973, 15.0610336017, 15.0610758049, 15.0611180068, 15.0611602076, 15.061202407, 15.0612446053, 15.0612868023, 15.0613289981, 15.0613711927, 15.061413386, 15.0614555781, 15.0614977689, 15.0615399585, 15.0615821469, 15.0616243341, 15.06166652, 15.0617087047, 15.0617508881, 15.0617930703, 15.0618352513, 15.0618774311, 15.0619196096, 15.0619617869, 15.0620039629, 15.0620461377, 15.0620883113, 15.0621304837, 15.0621726548, 15.0622148247, 15.0622569933, 15.0622991607, 15.0623413269, 15.0623834919, 15.0624256556, 15.0624678181, 15.0625099793, 15.0625521394, 15.0625942982, 15.0626364557, 15.0626786121, 15.0627207672, 15.062762921, 15.0628050737, 15.0628472251, 15.0628893752, 15.0629315242, 15.0629736719, 15.0630158184, 15.0630579636, 15.0631001076, 15.0631422504, 15.063184392, 15.0632265323, 15.0632686714, 15.0633108093, 15.0633529459, 15.0633950813, 15.0634372155, 15.0634793484, 15.0635214801, 15.0635636106, 15.0636057398, 15.0636478679, 15.0636899946, 15.0637321202, 15.0637742445, 15.0638163676, 15.0638584895, 15.0639006101, 15.0639427295, 15.0639848477, 15.0640269647, 15.0640690804, 15.0641111949, 15.0641533081, 15.0641954202, 15.064237531, 15.0642796405, 15.0643217489, 15.064363856, 15.0644059619, 15.0644480665, 15.06449017, 15.0645322722, 15.0645743731, 15.0646164729, 15.0646585714, 15.0647006687, 15.0647427648, 15.0647848596, 15.0648269532, 15.0648690456, 15.0649111367, 15.0649532266, 15.0649953153, 15.0650374028, 15.065079489, 15.065121574, 15.0651636578, 15.0652057403, 15.0652478217, 15.0652899018, 15.0653319806, 15.0653740583, 15.0654161347, 15.0654582099, 15.0655002838, 15.0655423566, 15.0655844281, 15.0656264983, 15.0656685674, 15.0657106352, 15.0657527018, 15.0657947672, 15.0658368313, 15.0658788943, 15.0659209559, 15.0659630164, 15.0660050757, 15.0660471337, 15.0660891905, 15.066131246, 15.0661733004, 15.0662153535, 15.0662574054, 15.066299456, 15.0663415054, 15.0663835537, 15.0664256006, 15.0664676464, 15.0665096909, 15.0665517342, 15.0665937763, 15.0666358172, 15.0666778568, 15.0667198952, 15.0667619324, 15.0668039683, 15.0668460031, 15.0668880366, 15.0669300689, 15.0669720999, 15.0670141298, 15.0670561584, 15.0670981857, 15.0671402119, 15.0671822368, 15.0672242606, 15.067266283, 15.0673083043, 15.0673503243, 15.0673923432, 15.0674343608, 15.0674763771, 15.0675183923, 15.0675604062, 15.0676024189, 15.0676444304, 15.0676864406, 15.0677284496, 15.0677704574, 15.067812464, 15.0678544694, 15.0678964735, 15.0679384764, 15.0679804781, 15.0680224786, 15.0680644778, 15.0681064759, 15.0681484727, 15.0681904682, 15.0682324626, 15.0682744557, 15.0683164476, 15.0683584383, 15.0684004278, 15.068442416, 15.068484403, 15.0685263888, 15.0685683734, 15.0686103568, 15.0686523389, 15.0686943198, 15.0687362995, 15.068778278, 15.0688202552, 15.0688622313, 15.0689042061, 15.0689461796, 15.068988152, 15.0690301232, 15.0690720931, 15.0691140618, 15.0691560293, 15.0691979955, 15.0692399605, 15.0692819244, 15.069323887, 15.0693658483, 15.0694078085, 15.0694497674, 15.0694917251, 15.0695336816, 15.0695756369, 15.069617591, 15.0696595438, 15.0697014954, 15.0697434458, 15.069785395, 15.0698273429, 15.0698692897, 15.0699112352, 15.0699531795, 15.0699951226, 15.0700370644, 15.0700790051, 15.0701209445, 15.0701628827, 15.0702048197, 15.0702467554, 15.07028869, 15.0703306233, 15.0703725554, 15.0704144863, 15.0704564159, 15.0704983444, 15.0705402716, 15.0705821976, 15.0706241224, 15.070666046, 15.0707079684, 15.0707498895, 15.0707918094, 15.0708337281, 15.0708756456, 15.0709175619, 15.0709594769, 15.0710013908, 15.0710433034, 15.0710852148, 15.0711271249, 15.0711690339, 15.0712109417, 15.0712528482, 15.0712947535, 15.0713366576, 15.0713785605, 15.0714204621, 15.0714623626, 15.0715042618, 15.0715461598, 15.0715880566, 15.0716299522, 15.0716718465, 15.0717137397, 15.0717556316, 15.0717975223, 15.0718394118, 15.0718813001, 15.0719231871, 15.071965073, 15.0720069576, 15.072048841, 15.0720907232, 15.0721326042, 15.0721744839, 15.0722163625, 15.0722582398, 15.0723001159, 15.0723419908, 15.0723838645, 15.072425737, 15.0724676082, 15.0725094783, 15.0725513471, 15.0725932147, 15.0726350811, 15.0726769463, 15.0727188103, 15.072760673, 15.0728025345, 15.0728443949, 15.072886254, 15.0729281119, 15.0729699685, 15.073011824, 15.0730536783, 15.0730955313, 15.0731373831, 15.0731792337, 15.0732210831, 15.0732629313, 15.0733047783, 15.073346624, 15.0733884685, 15.0734303119, 15.073472154, 15.0735139949, 15.0735558346, 15.073597673, 15.0736395103, 15.0736813463, 15.0737231812, 15.0737650148, 15.0738068472, 15.0738486784, 15.0738905083, 15.0739323371, 15.0739741647, 15.074015991, 15.0740578161, 15.07409964, 15.0741414628, 15.0741832842, 15.0742251045, 15.0742669236, 15.0743087414, 15.0743505581, 15.0743923735, 15.0744341877, 15.0744760007, 15.0745178125, 15.0745596231, 15.0746014325, 15.0746432406, 15.0746850476, 15.0747268533, 15.0747686578, 15.0748104612, 15.0748522633, 15.0748940642, 15.0749358638, 15.0749776623, 15.0750194596, 15.0750612556, 15.0751030504, 15.0751448441, 15.0751866365, 15.0752284277, 15.0752702177, 15.0753120065, 15.075353794, 15.0753955804, 15.0754373655, 15.0754791495, 15.0755209322, 15.0755627137, 15.0756044941, 15.0756462732, 15.075688051, 15.0757298277, 15.0757716032, 15.0758133775, 15.0758551505, 15.0758969224, 15.075938693, 15.0759804624, 15.0760222306, 15.0760639976, 15.0761057634, 15.076147528, 15.0761892914, 15.0762310536, 15.0762728145, 15.0763145743, 15.0763563328, 15.0763980902, 15.0764398463, 15.0764816012, 15.0765233549, 15.0765651074, 15.0766068587, 15.0766486088, 15.0766903577, 15.0767321053, 15.0767738518, 15.0768155971, 15.0768573411, 15.0768990839, 15.0769408256, 15.076982566, 15.0770243052, 15.0770660432, 15.07710778, 15.0771495156, 15.07719125, 15.0772329831, 15.0772747151, 15.0773164459, 15.0773581754, 15.0773999038, 15.0774416309, 15.0774833569, 15.0775250816, 15.0775668051, 15.0776085274, 15.0776502485, 15.0776919684, 15.0777336871, 15.0777754046, 15.0778171209, 15.077858836, 15.0779005498, 15.0779422625, 15.077983974, 15.0780256842, 15.0780673933, 15.0781091011, 15.0781508077, 15.0781925132, 15.0782342174, 15.0782759204, 15.0783176222, 15.0783593228, 15.0784010222, 15.0784427204, 15.0784844174, 15.0785261132, 15.0785678078, 15.0786095012, 15.0786511933, 15.0786928843, 15.0787345741, 15.0787762626, 15.07881795, 15.0788596361, 15.0789013211, 15.0789430048, 15.0789846873, 15.0790263687, 15.0790680488, 15.0791097277, 15.0791514054, 15.0791930819, 15.0792347572, 15.0792764314, 15.0793181043, 15.079359776, 15.0794014464, 15.0794431157, 15.0794847838, 15.0795264507, 15.0795681164, 15.0796097809, 15.0796514441, 15.0796931062, 15.0797347671, 15.0797764267, 15.0798180852, 15.0798597425, 15.0799013985, 15.0799430534, 15.079984707, 15.0800263595, 15.0800680107, 15.0801096608, 15.0801513096, 15.0801929573, 15.0802346037, 15.0802762489, 15.080317893, 15.0803595358, 15.0804011774, 15.0804428178, 15.0804844571, 15.0805260951, 15.0805677319, 15.0806093675, 15.0806510019, 15.0806926352, 15.0807342672, 15.080775898, 15.0808175276, 15.080859156, 15.0809007832, 15.0809424092, 15.080984034, 15.0810256577, 15.0810672801, 15.0811089013, 15.0811505213, 15.0811921401, 15.0812337577, 15.0812753741, 15.0813169893, 15.0813586033, 15.0814002161, 15.0814418277, 15.0814834381, 15.0815250473, 15.0815666553, 15.0816082621, 15.0816498677, 15.0816914721, 15.0817330753, 15.0817746773, 15.0818162781, 15.0818578777, 15.0818994761, 15.0819410733, 15.0819826693, 15.0820242641, 15.0820658577, 15.0821074501, 15.0821490414, 15.0821906314, 15.0822322202, 15.0822738078, 15.0823153942, 15.0823569794, 15.0823985634, 15.0824401462, 15.0824817279, 15.0825233083, 15.0825648875, 15.0826064655, 15.0826480424, 15.082689618, 15.0827311924, 15.0827727656, 15.0828143377, 15.0828559085, 15.0828974781, 15.0829390466, 15.0829806138, 15.0830221799, 15.0830637447, 15.0831053084, 15.0831468708, 15.0831884321, 15.0832299921, 15.083271551, 15.0833131087, 15.0833546651, 15.0833962204, 15.0834377745, 15.0834793273, 15.083520879, 15.0835624295, 15.0836039788, 15.0836455269, 15.0836870738, 15.0837286195, 15.083770164, 15.0838117073, 15.0838532494, 15.0838947903, 15.08393633, 15.0839778685, 15.0840194058, 15.084060942, 15.0841024769, 15.0841440106, 15.0841855432, 15.0842270745, 15.0842686046, 15.0843101336, 15.0843516614, 15.0843931879, 15.0844347133, 15.0844762375, 15.0845177604, 15.0845592822, 15.0846008028, 15.0846423222, 15.0846838404, 15.0847253574, 15.0847668732, 15.0848083878, 15.0848499012, 15.0848914134, 15.0849329245, 15.0849744343, 15.0850159429, 15.0850574504, 15.0850989566, 15.0851404617, 15.0851819656, 15.0852234682, 15.0852649697, 15.08530647, 15.0853479691, 15.085389467, 15.0854309637, 15.0854724592, 15.0855139535, 15.0855554466, 15.0855969385, 15.0856384293, 15.0856799188, 15.0857214072, 15.0857628943, 15.0858043803, 15.085845865, 15.0858873486, 15.085928831, 15.0859703122, 15.0860117922, 15.086053271, 15.0860947486, 15.086136225, 15.0861777003, 15.0862191743, 15.0862606471, 15.0863021188, 15.0863435892, 15.0863850585, 15.0864265266, 15.0864679935, 15.0865094592, 15.0865509237, 15.086592387, 15.0866338491, 15.08667531, 15.0867167697, 15.0867582283, 15.0867996856, 15.0868411418, 15.0868825967, 15.0869240505, 15.0869655031, 15.0870069545, 15.0870484047, 15.0870898537, 15.0871313015, 15.0871727482, 15.0872141936, 15.0872556379, 15.0872970809, 15.0873385228, 15.0873799635, 15.087421403, 15.0874628413, 15.0875042784, 15.0875457143, 15.087587149, 15.0876285825, 15.0876700149, 15.087711446, 15.087752876, 15.0877943048, 15.0878357324, 15.0878771588, 15.087918584, 15.087960008, 15.0880014308, 15.0880428525, 15.0880842729, 15.0881256922, 15.0881671103, 15.0882085271, 15.0882499428, 15.0882913573, 15.0883327707, 15.0883741828, 15.0884155937, 15.0884570035, 15.088498412, 15.0885398194, 15.0885812256, 15.0886226306, 15.0886640344, 15.088705437, 15.0887468385, 15.0887882387, 15.0888296378, 15.0888710356, 15.0889124323, 15.0889538278, 15.0889952221, 15.0890366152, 15.0890780072, 15.0891193979, 15.0891607875, 15.0892021758, 15.089243563, 15.089284949, 15.0893263338, 15.0893677174, 15.0894090999, 15.0894504811, 15.0894918612, 15.08953324, 15.0895746177, 15.0896159942, 15.0896573695, 15.0896987437, 15.0897401166, 15.0897814884, 15.0898228589, 15.0898642283, 15.0899055965, 15.0899469635, 15.0899883293, 15.090029694, 15.0900710574, 15.0901124197, 15.0901537807, 15.0901951406, 15.0902364993, 15.0902778569, 15.0903192132, 15.0903605683, 15.0904019223, 15.0904432751, 15.0904846267, 15.0905259771, 15.0905673263, 15.0906086743, 15.0906500212, 15.0906913669, 15.0907327113, 15.0907740546, 15.0908153968, 15.0908567377, 15.0908980774, 15.090939416, 15.0909807534, 15.0910220895, 15.0910634246, 15.0911047584, 15.091146091, 15.0911874225, 15.0912287527, 15.0912700818, 15.0913114097, 15.0913527364, 15.091394062, 15.0914353863, 15.0914767095, 15.0915180315, 15.0915593523, 15.0916006719, 15.0916419903, 15.0916833076, 15.0917246236, 15.0917659385, 15.0918072522, 15.0918485647, 15.0918898761, 15.0919311862, 15.0919724952, 15.092013803, 15.0920551096, 15.092096415, 15.0921377192, 15.0921790223, 15.0922203242, 15.0922616248, 15.0923029244, 15.0923442227, 15.0923855198, 15.0924268158, 15.0924681106, 15.0925094042, 15.0925506966, 15.0925919878, 15.0926332779, 15.0926745667, 15.0927158544, 15.0927571409, 15.0927984262, 15.0928397104, 15.0928809934, 15.0929222751, 15.0929635557, 15.0930048352, 15.0930461134, 15.0930873904, 15.0931286663, 15.093169941, 15.0932112145, 15.0932524869, 15.093293758, 15.093335028, 15.0933762968, 15.0934175644, 15.0934588308, 15.0935000961, 15.0935413601, 15.093582623, 15.0936238847, 15.0936651453, 15.0937064046, 15.0937476628, 15.0937889198, 15.0938301756, 15.0938714302, 15.0939126837, 15.0939539359, 15.093995187, 15.0940364369, 15.0940776857, 15.0941189332, 15.0941601796, 15.0942014248, 15.0942426688, 15.0942839116, 15.0943251533, 15.0943663938, 15.0944076331, 15.0944488712, 15.0944901081, 15.0945313439, 15.0945725785, 15.0946138119, 15.0946550441, 15.0946962752, 15.094737505, 15.0947787337, 15.0948199613, 15.0948611876, 15.0949024128, 15.0949436367, 15.0949848595, 15.0950260812, 15.0950673016, 15.0951085209, 15.095149739, 15.0951909559, 15.0952321716, 15.0952733862, 15.0953145996, 15.0953558118, 15.0953970228, 15.0954382326, 15.0954794413, 15.0955206488, 15.0955618551, 15.0956030603, 15.0956442642, 15.095685467, 15.0957266686, 15.0957678691, 15.0958090683, 15.0958502664, 15.0958914633, 15.0959326591, 15.0959738536, 15.096015047, 15.0960562392, 15.0960974302, 15.0961386201, 15.0961798087, 15.0962209962, 15.0962621825, 15.0963033677, 15.0963445517, 15.0963857345, 15.0964269161, 15.0964680965, 15.0965092758, 15.0965504539, 15.0965916308, 15.0966328065, 15.0966739811, 15.0967151545, 15.0967563267, 15.0967974977, 15.0968386676, 15.0968798363, 15.0969210038, 15.0969621702, 15.0970033353, 15.0970444993, 15.0970856621, 15.0971268238, 15.0971679843, 15.0972091436, 15.0972503017, 15.0972914586, 15.0973326144, 15.097373769, 15.0974149224, 15.0974560747, 15.0974972257, 15.0975383756, 15.0975795244, 15.0976206719, 15.0976618183, 15.0977029635, 15.0977441076, 15.0977852504, 15.0978263921, 15.0978675326, 15.097908672, 15.0979498101, 15.0979909471, 15.098032083, 15.0980732176, 15.0981143511, 15.0981554834, 15.0981966145, 15.0982377445, 15.0982788733, 15.0983200009, 15.0983611273, 15.0984022526, 15.0984433767, 15.0984844996, 15.0985256214, 15.098566742, 15.0986078614, 15.0986489796, 15.0986900967, 15.0987312126, 15.0987723273, 15.0988134408, 15.0988545532, 15.0988956644, 15.0989367745, 15.0989778833, 15.099018991, 15.0990600975, 15.0991012029, 15.0991423071, 15.0991834101, 15.0992245119, 15.0992656126, 15.0993067121, 15.0993478104, 15.0993889076, 15.0994300035, 15.0994710984, 15.099512192, 15.0995532845, 15.0995943758, 15.0996354659, 15.0996765549, 15.0997176427, 15.0997587293, 15.0997998147, 15.099840899, 15.0998819821, 15.0999230641, 15.0999641448, 15.1000052244, 15.1000463029, 15.1000873801, 15.1001284562, 15.1001695311, 15.1002106049, 15.1002516775, 15.1002927489, 15.1003338191, 15.1003748882, 15.1004159561, 15.1004570228, 15.1004980884, 15.1005391528, 15.100580216, 15.1006212781, 15.100662339, 15.1007033987, 15.1007444573, 15.1007855147, 15.1008265709, 15.1008676259, 15.1009086798, 15.1009497325, 15.1009907841, 15.1010318345, 15.1010728837, 15.1011139317, 15.1011549786, 15.1011960243, 15.1012370688, 15.1012781122, 15.1013191544, 15.1013601955, 15.1014012353, 15.101442274, 15.1014833116, 15.1015243479, 15.1015653831, 15.1016064172, 15.10164745, 15.1016884817, 15.1017295123, 15.1017705416, 15.1018115698, 15.1018525969, 15.1018936227, 15.1019346474, 15.1019756709, 15.1020166933, 15.1020577145, 15.1020987345, 15.1021397534, 15.1021807711, 15.1022217876, 15.102262803, 15.1023038172, 15.1023448302, 15.1023858421, 15.1024268528, 15.1024678624, 15.1025088707, 15.1025498779, 15.102590884, 15.1026318889, 15.1026728926, 15.1027138951, 15.1027548965, 15.1027958967, 15.1028368958, 15.1028778936, 15.1029188904, 15.1029598859, 15.1030008803, 15.1030418735, 15.1030828656, 15.1031238565, 15.1031648462, 15.1032058348, 15.1032468222, 15.1032878084, 15.1033287935, 15.1033697774, 15.1034107601, 15.1034517417, 15.1034927221, 15.1035337014, 15.1035746795, 15.1036156564, 15.1036566322, 15.1036976068, 15.1037385802, 15.1037795525, 15.1038205236, 15.1038614935, 15.1039024623, 15.1039434299, 15.1039843963, 15.1040253616, 15.1040663258, 15.1041072887, 15.1041482505, 15.1041892112, 15.1042301706, 15.1042711289, 15.1043120861, 15.1043530421, 15.1043939969, 15.1044349506, 15.104475903, 15.1045168544, 15.1045578046, 15.1045987536, 15.1046397014, 15.1046806481, 15.1047215936, 15.104762538, 15.1048034812, 15.1048444232, 15.1048853641, 15.1049263038, 15.1049672424, 15.1050081798, 15.105049116, 15.105090051, 15.105130985, 15.1051719177, 15.1052128493, 15.1052537797, 15.105294709, 15.1053356371, 15.105376564, 15.1054174898, 15.1054584144, 15.1054993378, 15.1055402601, 15.1055811813, 15.1056221013, 15.1056630201, 15.1057039377, 15.1057448542, 15.1057857695, 15.1058266837, 15.1058675967, 15.1059085086, 15.1059494193, 15.1059903288, 15.1060312372, 15.1060721444, 15.1061130504, 15.1061539553, 15.106194859, 15.1062357616, 15.106276663, 15.1063175633, 15.1063584624, 15.1063993603, 15.1064402571, 15.1064811527, 15.1065220471, 15.1065629404, 15.1066038326, 15.1066447236, 15.1066856134, 15.106726502, 15.1067673895, 15.1068082759, 15.1068491611, 15.1068900451, 15.106930928, 15.1069718097, 15.1070126902, 15.1070535696, 15.1070944478, 15.1071353249, 15.1071762008, 15.1072170756, 15.1072579492, 15.1072988216, 15.1073396929, 15.107380563, 15.107421432, 15.1074622998, 15.1075031665, 15.107544032, 15.1075848963, 15.1076257595, 15.1076666215, 15.1077074824, 15.1077483421, 15.1077892006, 15.107830058, 15.1078709143, 15.1079117694, 15.1079526233, 15.1079934761, 15.1080343277, 15.1080751781, 15.1081160274, 15.1081568756, 15.1081977225, 15.1082385684, 15.108279413, 15.1083202565, 15.1083610989, 15.1084019401, 15.1084427802, 15.108483619, 15.1085244568, 15.1085652934, 15.1086061288, 15.108646963, 15.1086877962, 15.1087286281, 15.1087694589, 15.1088102886, 15.108851117, 15.1088919444, 15.1089327706, 15.1089735956, 15.1090144194, 15.1090552422, 15.1090960637, 15.1091368841, 15.1091777034, 15.1092185214, 15.1092593384, 15.1093001542, 15.1093409688, 15.1093817823, 15.1094225946, 15.1094634057, 15.1095042158, 15.1095450246, 15.1095858323, 15.1096266389, 15.1096674443, 15.1097082485, 15.1097490516, 15.1097898535, 15.1098306543, 15.1098714539, 15.1099122524, 15.1099530497, 15.1099938458, 15.1100346409, 15.1100754347, 15.1101162274, 15.110157019, 15.1101978093, 15.1102385986, 15.1102793867, 15.1103201736, 15.1103609594, 15.110401744, 15.1104425275, 15.1104833098, 15.110524091, 15.110564871, 15.1106056499, 15.1106464276, 15.1106872041, 15.1107279795, 15.1107687538, 15.1108095269, 15.1108502988, 15.1108910696, 15.1109318393, 15.1109726078, 15.1110133751, 15.1110541413, 15.1110949063, 15.1111356702, 15.111176433, 15.1112171945, 15.111257955, 15.1112987143, 15.1113394724, 15.1113802294, 15.1114209852, 15.1114617399, 15.1115024934, 15.1115432457, 15.111583997, 15.111624747, 15.111665496, 15.1117062437, 15.1117469903, 15.1117877358, 15.1118284801, 15.1118692233, 15.1119099653, 15.1119507062, 15.1119914459, 15.1120321844, 15.1120729218, 15.1121136581, 15.1121543932, 15.1121951272, 15.11223586, 15.1122765916, 15.1123173221, 15.1123580515, 15.1123987797, 15.1124395068, 15.1124802327, 15.1125209575, 15.1125616811, 15.1126024035, 15.1126431248, 15.112683845, 15.112724564, 15.1127652819, 15.1128059986, 15.1128467142, 15.1128874286, 15.1129281419, 15.112968854, 15.1130095649, 15.1130502748, 15.1130909834, 15.113131691, 15.1131723973, 15.1132131026, 15.1132538067, 15.1132945096, 15.1133352114, 15.113375912, 15.1134166115, 15.1134573098, 15.113498007, 15.1135387031, 15.113579398, 15.1136200917, 15.1136607843, 15.1137014757, 15.113742166, 15.1137828552, 15.1138235432, 15.1138642301, 15.1139049158, 15.1139456004, 15.1139862838, 15.114026966, 15.1140676472, 15.1141083271, 15.114149006, 15.1141896837, 15.1142303602, 15.1142710356, 15.1143117098, 15.1143523829, 15.1143930549, 15.1144337257, 15.1144743953, 15.1145150638, 15.1145557312, 15.1145963974, 15.1146370625, 15.1146777264, 15.1147183892, 15.1147590508, 15.1147997113, 15.1148403706, 15.1148810288, 15.1149216859, 15.1149623418, 15.1150029966, 15.1150436502, 15.1150843026, 15.1151249539, 15.1151656041, 15.1152062532, 15.115246901, 15.1152875478, 15.1153281934, 15.1153688378, 15.1154094811, 15.1154501233, 15.1154907643, 15.1155314042, 15.1155720429, 15.1156126805, 15.1156533169, 15.1156939522, 15.1157345863, 15.1157752193, 15.1158158512, 15.1158564819, 15.1158971115, 15.1159377399, 15.1159783672, 15.1160189933, 15.1160596183, 15.1161002422, 15.1161408649, 15.1161814864, 15.1162221068, 15.1162627261, 15.1163033443, 15.1163439612, 15.1163845771, 15.1164251918, 15.1164658053, 15.1165064177, 15.116547029, 15.1165876391, 15.1166282481, 15.116668856, 15.1167094627, 15.1167500682, 15.1167906726, 15.1168312759, 15.116871878, 15.116912479, 15.1169530788, 15.1169936775, 15.1170342751, 15.1170748715, 15.1171154668, 15.1171560609, 15.1171966539, 15.1172372457, 15.1172778364, 15.117318426, 15.1173590144, 15.1173996017, 15.1174401878, 15.1174807728, 15.1175213567, 15.1175619394, 15.117602521, 15.1176431014, 15.1176836807, 15.1177242588, 15.1177648358, 15.1178054117, 15.1178459864, 15.11788656, 15.1179271324, 15.1179677037, 15.1180082739, 15.1180488429, 15.1180894108, 15.1181299775, 15.1181705431, 15.1182111075, 15.1182516709, 15.118292233, 15.1183327941, 15.1183733539, 15.1184139127, 15.1184544703, 15.1184950268, 15.1185355821, 15.1185761363, 15.1186166894, 15.1186572413, 15.118697792, 15.1187383417, 15.1187788902, 15.1188194375, 15.1188599837, 15.1189005288, 15.1189410727, 15.1189816155, 15.1190221572, 15.1190626977, 15.1191032371, 15.1191437753, 15.1191843124, 15.1192248484, 15.1192653832, 15.1193059169, 15.1193464494, 15.1193869808, 15.1194275111, 15.1194680402, 15.1195085682, 15.119549095, 15.1195896207, 15.1196301453, 15.1196706687, 15.119711191, 15.1197517122, 15.1197922322, 15.1198327511, 15.1198732688, 15.1199137855, 15.1199543009, 15.1199948153, 15.1200353284, 15.1200758405, 15.1201163514, 15.1201568612, 15.1201973698, 15.1202378773, 15.1202783837, 15.1203188889, 15.120359393, 15.120399896, 15.1204403978, 15.1204808985, 15.120521398, 15.1205618964, 15.1206023937, 15.1206428898, 15.1206833848, 15.1207238787, 15.1207643714, 15.120804863, 15.1208453535, 15.1208858428, 15.120926331, 15.120966818, 15.1210073039, 15.1210477887, 15.1210882723, 15.1211287548, 15.1211692362, 15.1212097164, 15.1212501955, 15.1212906735, 15.1213311503, 15.121371626, 15.1214121005, 15.1214525739, 15.1214930462, 15.1215335173, 15.1215739873, 15.1216144562, 15.121654924, 15.1216953906, 15.121735856, 15.1217763204, 15.1218167836, 15.1218572456, 15.1218977065, 15.1219381663, 15.121978625, 15.1220190825, 15.1220595389, 15.1220999942, 15.1221404483, 15.1221809013, 15.1222213531, 15.1222618038, 15.1223022534, 15.1223427019, 15.1223831492, 15.1224235954, 15.1224640404, 15.1225044843, 15.1225449271, 15.1225853687, 15.1226258093, 15.1226662486, 15.1227066869, 15.122747124, 15.12278756, 15.1228279948, 15.1228684285, 15.1229088611, 15.1229492925, 15.1229897229, 15.123030152, 15.1230705801, 15.123111007, 15.1231514328, 15.1231918574, 15.1232322809, 15.1232727033, 15.1233131246, 15.1233535447, 15.1233939637, 15.1234343815, 15.1234747982, 15.1235152138, 15.1235556283, 15.1235960416, 15.1236364538, 15.1236768649, 15.1237172748, 15.1237576836, 15.1237980913, 15.1238384978, 15.1238789032, 15.1239193075, 15.1239597106, 15.1240001126, 15.1240405135, 15.1240809132, 15.1241213118, 15.1241617093, 15.1242021057, 15.1242425009, 15.124282895, 15.1243232879, 15.1243636797, 15.1244040704, 15.12444446, 15.1244848484, 15.1245252357, 15.1245656219, 15.124606007, 15.1246463909, 15.1246867737, 15.1247271553, 15.1247675358, 15.1248079152, 15.1248482935, 15.1248886706, 15.1249290466, 15.1249694215, 15.1250097952, 15.1250501678, 15.1250905393, 15.1251309097, 15.1251712789, 15.125211647, 15.1252520139, 15.1252923798, 15.1253327445, 15.125373108, 15.1254134705, 15.1254538318, 15.125494192, 15.125534551, 15.125574909, 15.1256152658, 15.1256556214, 15.125695976, 15.1257363294, 15.1257766817, 15.1258170328, 15.1258573829, 15.1258977318, 15.1259380795, 15.1259784262, 15.1260187717, 15.1260591161, 15.1260994593, 15.1261398015, 15.1261801425, 15.1262204823, 15.1262608211, 15.1263011587, 15.1263414952, 15.1263818305, 15.1264221648, 15.1264624979, 15.1265028299, 15.1265431607, 15.1265834904, 15.126623819, 15.1266641465, 15.1267044728, 15.1267447981, 15.1267851221, 15.1268254451, 15.1268657669, 15.1269060876, 15.1269464072, 15.1269867257, 15.127027043, 15.1270673592, 15.1271076743, 15.1271479882, 15.127188301, 15.1272286127, 15.1272689233, 15.1273092327, 15.1273495411, 15.1273898482, 15.1274301543, 15.1274704592, 15.1275107631, 15.1275510657, 15.1275913673, 15.1276316677, 15.127671967, 15.1277122652, 15.1277525623, 15.1277928582, 15.127833153, 15.1278734467, 15.1279137392, 15.1279540307, 15.127994321, 15.1280346102, 15.1280748982, 15.1281151851, 15.1281554709, 15.1281957556, 15.1282360392, 15.1282763216, 15.1283166029, 15.1283568831, 15.1283971621, 15.1284374401, 15.1284777169, 15.1285179926, 15.1285582671, 15.1285985405, 15.1286388129, 15.128679084, 15.1287193541, 15.128759623, 15.1287998908, 15.1288401575, 15.1288804231, 15.1289206875, 15.1289609509, 15.129001213, 15.1290414741, 15.1290817341, 15.1291219929, 15.1291622506, 15.1292025072, 15.1292427626, 15.1292830169, 15.1293232702, 15.1293635222, 15.1294037732, 15.129444023, 15.1294842717, 15.1295245193, 15.1295647658, 15.1296050112, 15.1296452554, 15.1296854985, 15.1297257405, 15.1297659813, 15.129806221, 15.1298464597, 15.1298866971, 15.1299269335, 15.1299671688, 15.1300074029, 15.1300476359, 15.1300878678, 15.1301280985, 15.1301683281, 15.1302085567, 15.1302487841, 15.1302890103, 15.1303292355, 15.1303694595, 15.1304096824, 15.1304499042, 15.1304901248, 15.1305303444, 15.1305705628, 15.1306107801, 15.1306509963, 15.1306912113, 15.1307314253, 15.1307716381, 15.1308118498, 15.1308520604, 15.1308922698, 15.1309324781, 15.1309726853, 15.1310128914, 15.1310530964, 15.1310933003, 15.131133503, 15.1311737046, 15.1312139051, 15.1312541045, 15.1312943027, 15.1313344998, 15.1313746958, 15.1314148907, 15.1314550845, 15.1314952771, 15.1315354687, 15.1315756591, 15.1316158484, 15.1316560365, 15.1316962236, 15.1317364095, 15.1317765943, 15.131816778, 15.1318569606, 15.1318971421, 15.1319373224, 15.1319775016, 15.1320176797, 15.1320578567, 15.1320980326, 15.1321382073, 15.1321783809, 15.1322185534, 15.1322587248, 15.1322988951, 15.1323390642, 15.1323792322, 15.1324193992, 15.132459565, 15.1324997296, 15.1325398932, 15.1325800556, 15.1326202169, 15.1326603771, 15.1327005362, 15.1327406942, 15.132780851, 15.1328210068, 15.1328611614, 15.1329013149, 15.1329414673, 15.1329816185, 15.1330217687, 15.1330619177, 15.1331020656, 15.1331422124, 15.1331823581, 15.1332225026, 15.1332626461, 15.1333027884, 15.1333429296, 15.1333830697, 15.1334232087, 15.1334633465, 15.1335034833, 15.1335436189, 15.1335837534, 15.1336238868, 15.1336640191, 15.1337041502, 15.1337442803, 15.1337844092, 15.133824537, 15.1338646637, 15.1339047893, 15.1339449137, 15.1339850371, 15.1340251593, 15.1340652804, 15.1341054004, 15.1341455193, 15.134185637, 15.1342257537, 15.1342658692, 15.1343059837, 15.134346097, 15.1343862091, 15.1344263202, 15.1344664302, 15.134506539, 15.1345466468, 15.1345867534, 15.1346268589, 15.1346669632, 15.1347070665, 15.1347471687, 15.1347872697, 15.1348273696, 15.1348674684, 15.1349075661, 15.1349476627, 15.1349877582, 15.1350278525, 15.1350679458, 15.1351080379, 15.1351481289, 15.1351882188, 15.1352283076, 15.1352683953, 15.1353084818, 15.1353485673, 15.1353886516, 15.1354287348, 15.1354688169, 15.1355088979, 15.1355489777, 15.1355890565, 15.1356291342, 15.1356692107, 15.1357092861, 15.1357493604, 15.1357894336, 15.1358295057, 15.1358695766, 15.1359096465, 15.1359497152, 15.1359897829, 15.1360298494, 15.1360699148, 15.1361099791, 15.1361500423, 15.1361901043, 15.1362301653, 15.1362702251, 15.1363102838, 15.1363503415, 15.136390398, 15.1364304533, 15.1364705076, 15.1365105608, 15.1365506128, 15.1365906638, 15.1366307136, 15.1366707623, 15.1367108099, 15.1367508564, 15.1367909018, 15.1368309461, 15.1368709893, 15.1369110313, 15.1369510723, 15.1369911121, 15.1370311508, 15.1370711884, 15.1371112249, 15.1371512603, 15.1371912946, 15.1372313277, 15.1372713598, 15.1373113907, 15.1373514205, 15.1373914492, 15.1374314769, 15.1374715034, 15.1375115287, 15.137551553, 15.1375915762, 15.1376315982, 15.1376716192, 15.137711639, 15.1377516577, 15.1377916754, 15.1378316919, 15.1378717073, 15.1379117215, 15.1379517347, 15.1379917468, 15.1380317577, 15.1380717676, 15.1381117763, 15.1381517839, 15.1381917905, 15.1382317959, 15.1382718002, 15.1383118034, 15.1383518054, 15.1383918064, 15.1384318063, 15.138471805, 15.1385118027, 15.1385517992, 15.1385917946, 15.138631789, 15.1386717822, 15.1387117743, 15.1387517653, 15.1387917551, 15.1388317439, 15.1388717316, 15.1389117181, 15.1389517036, 15.1389916879, 15.1390316712, 15.1390716533, 15.1391116343, 15.1391516142, 15.139191593, 15.1392315707, 15.1392715473, 15.1393115228, 15.1393514972, 15.1393914704, 15.1394314426, 15.1394714136, 15.1395113836, 15.1395513524, 15.1395913201, 15.1396312867, 15.1396712523, 15.1397112167, 15.13975118, 15.1397911422, 15.1398311032, 15.1398710632, 15.1399110221, 15.1399509798, 15.1399909365, 15.1400308921, 15.1400708465, 15.1401107998, 15.1401507521, 15.1401907032, 15.1402306532, 15.1402706021, 15.1403105499, 15.1403504966, 15.1403904422, 15.1404303867, 15.1404703301, 15.1405102724, 15.1405502135, 15.1405901536, 15.1406300926, 15.1406700304, 15.1407099672, 15.1407499028, 15.1407898373, 15.1408297708, 15.1408697031, 15.1409096343, 15.1409495644, 15.1409894934, 15.1410294214, 15.1410693482, 15.1411092738, 15.1411491984, 15.1411891219, 15.1412290443, 15.1412689656, 15.1413088858, 15.1413488048, 15.1413887228, 15.1414286396, 15.1414685554, 15.14150847, 15.1415483836, 15.141588296, 15.1416282074, 15.1416681176, 15.1417080267, 15.1417479348, 15.1417878417, 15.1418277475, 15.1418676522, 15.1419075558, 15.1419474583, 15.1419873597, 15.14202726, 15.1420671592, 15.1421070573, 15.1421469543, 15.1421868502, 15.142226745, 15.1422666386, 15.1423065312, 15.1423464227, 15.1423863131, 15.1424262023, 15.1424660905, 15.1425059775, 15.1425458635, 15.1425857484, 15.1426256321, 15.1426655148, 15.1427053963, 15.1427452768, 15.1427851561, 15.1428250343, 15.1428649115, 15.1429047875, 15.1429446624, 15.1429845363, 15.143024409, 15.1430642806, 15.1431041512, 15.1431440206, 15.1431838889, 15.1432237561, 15.1432636222, 15.1433034873, 15.1433433512, 15.143383214, 15.1434230757, 15.1434629363, 15.1435027958, 15.1435426542, 15.1435825115, 15.1436223677, 15.1436622229, 15.1437020769, 15.1437419298, 15.1437817816, 15.1438216323, 15.1438614819, 15.1439013304, 15.1439411778, 15.1439810241, 15.1440208693, 15.1440607134, 15.1441005564, 15.1441403983, 15.1441802391, 15.1442200788, 15.1442599174, 15.1442997549, 15.1443395912, 15.1443794265, 15.1444192607, 15.1444590938, 15.1444989258, 15.1445387567, 15.1445785865, 15.1446184152, 15.1446582428, 15.1446980693, 15.1447378947, 15.144777719, 15.1448175422, 15.1448573643, 15.1448971853, 15.1449370052, 15.1449768241, 15.1450166418, 15.1450564584, 15.1450962739, 15.1451360883, 15.1451759016, 15.1452157138, 15.1452555249, 15.1452953349, 15.1453351439, 15.1453749517, 15.1454147584, 15.145454564, 15.1454943685, 15.145534172, 15.1455739743, 15.1456137755, 15.1456535756, 15.1456933747, 15.1457331726, 15.1457729694, 15.1458127652, 15.1458525598, 15.1458923534, 15.1459321458, 15.1459719372, 15.1460117274, 15.1460515166, 15.1460913046, 15.1461310916, 15.1461708775, 15.1462106622, 15.1462504459, 15.1462902285, 15.1463300099, 15.1463697903, 15.1464095696, 15.1464493478, 15.1464891249, 15.1465289008, 15.1465686757, 15.1466084495, 15.1466482222, 15.1466879938, 15.1467277643, 15.1467675338, 15.1468073021, 15.1468470693, 15.1468868354, 15.1469266004, 15.1469663644, 15.1470061272, 15.1470458889, 15.1470856496, 15.1471254091, 15.1471651676, 15.1472049249, 15.1472446812, 15.1472844364, 15.1473241904, 15.1473639434, 15.1474036953, 15.1474434461, 15.1474831958, 15.1475229444, 15.1475626918, 15.1476024383, 15.1476421836, 15.1476819278, 15.1477216709, 15.1477614129, 15.1478011538, 15.1478408937, 15.1478806324, 15.1479203701, 15.1479601066, 15.1479998421, 15.1480395764, 15.1480793097, 15.1481190419, 15.1481587729, 15.1481985029, 15.1482382318, 15.1482779596, 15.1483176863, 15.1483574119, 15.1483971364, 15.1484368599, 15.1484765822, 15.1485163034, 15.1485560236, 15.1485957426, 15.1486354605, 15.1486751774, 15.1487148932, 15.1487546078, 15.1487943214, 15.1488340339, 15.1488737453, 15.1489134556, 15.1489531648, 15.1489928729, 15.1490325799, 15.1490722859, 15.1491119907, 15.1491516944, 15.1491913971, 15.1492310987, 15.1492707991, 15.1493104985, 15.1493501968, 15.149389894, 15.1494295901, 15.1494692851, 15.149508979, 15.1495486718, 15.1495883635, 15.1496280542, 15.1496677437, 15.1497074321, 15.1497471195, 15.1497868058, 15.1498264909, 15.149866175, 15.149905858, 15.1499455399, 15.1499852207, 15.1500249005, 15.1500645791, 15.1501042566, 15.1501439331, 15.1501836084, 15.1502232827, 15.1502629558, 15.1503026279, 15.1503422989, 15.1503819688, 15.1504216376, 15.1504613053, 15.150500972, 15.1505406375, 15.150580302, 15.1506199653, 15.1506596276, 15.1506992887, 15.1507389488, 15.1507786078, 15.1508182657, 15.1508579225, 15.1508975783, 15.1509372329, 15.1509768864, 15.1510165389, 15.1510561903, 15.1510958405, 15.1511354897, 15.1511751378, 15.1512147848, 15.1512544307, 15.1512940756, 15.1513337193, 15.1513733619, 15.1514130035, 15.151452644, 15.1514922833, 15.1515319216, 15.1515715588, 15.1516111949, 15.15165083, 15.1516904639, 15.1517300968, 15.1517697285, 15.1518093592, 15.1518489888, 15.1518886173, 15.1519282447, 15.151967871, 15.1520074962, 15.1520471203, 15.1520867434, 15.1521263653, 15.1521659862, 15.152205606, 15.1522452247, 15.1522848423, 15.1523244588, 15.1523640743, 15.1524036886, 15.1524433019, 15.152482914, 15.1525225251, 15.1525621351, 15.152601744, 15.1526413518, 15.1526809586, 15.1527205642, 15.1527601688, 15.1527997722, 15.1528393746, 15.1528789759, 15.1529185761, 15.1529581753, 15.1529977733, 15.1530373702, 15.1530769661, 15.1531165609, 15.1531561546, 15.1531957472, 15.1532353387, 15.1532749291, 15.1533145185, 15.1533541067, 15.1533936939, 15.15343328, 15.153472865, 15.1535124489, 15.1535520317, 15.1535916134, 15.1536311941, 15.1536707737, 15.1537103522, 15.1537499295, 15.1537895059, 15.1538290811, 15.1538686552, 15.1539082283, 15.1539478002, 15.1539873711, 15.1540269409, 15.1540665096, 15.1541060773, 15.1541456438, 15.1541852093, 15.1542247736, 15.1542643369, 15.1543038991, 15.1543434602, 15.1543830203, 15.1544225792, 15.1544621371, 15.1545016939, 15.1545412496, 15.1545808042, 15.1546203577, 15.1546599101, 15.1546994615, 15.1547390118, 15.1547785609, 15.1548181091, 15.1548576561, 15.154897202, 15.1549367469, 15.1549762906, 15.1550158333, 15.1550553749, 15.1550949154, 15.1551344549, 15.1551739932, 15.1552135305, 15.1552530667, 15.1552926018, 15.1553321358, 15.1553716687, 15.1554112005, 15.1554507313, 15.155490261, 15.1555297896, 15.1555693171, 15.1556088435, 15.1556483689, 15.1556878932, 15.1557274163, 15.1557669384, 15.1558064595, 15.1558459794, 15.1558854983, 15.155925016, 15.1559645327, 15.1560040483, 15.1560435628, 15.1560830763, 15.1561225886, 15.1561620999, 15.1562016101, 15.1562411192, 15.1562806273, 15.1563201342, 15.1563596401, 15.1563991449, 15.1564386486, 15.1564781512, 15.1565176527, 15.1565571532, 15.1565966526, 15.1566361509, 15.1566756481, 15.1567151442, 15.1567546393, 15.1567941332, 15.1568336261, 15.1568731179, 15.1569126087, 15.1569520983, 15.1569915869, 15.1570310744, 15.1570705608, 15.1571100461, 15.1571495304, 15.1571890135, 15.1572284956, 15.1572679766, 15.1573074565, 15.1573469354, 15.1573864131, 15.1574258898, 15.1574653654, 15.1575048399, 15.1575443134, 15.1575837857, 15.157623257, 15.1576627272, 15.1577021963, 15.1577416644, 15.1577811313, 15.1578205972, 15.157860062, 15.1578995257, 15.1579389884, 15.1579784499, 15.1580179104, 15.1580573698, 15.1580968282, 15.1581362854, 15.1581757416, 15.1582151967, 15.1582546507, 15.1582941036, 15.1583335555, 15.1583730062, 15.1584124559, 15.1584519045, 15.1584913521, 15.1585307985, 15.1585702439, 15.1586096882, 15.1586491314, 15.1586885736, 15.1587280146, 15.1587674546, 15.1588068935, 15.1588463314, 15.1588857681, 15.1589252038, 15.1589646384, 15.1590040719, 15.1590435044, 15.1590829357, 15.159122366, 15.1591617952, 15.1592012234, 15.1592406504, 15.1592800764, 15.1593195013, 15.1593589251, 15.1593983479, 15.1594377695, 15.1594771901, 15.1595166096, 15.1595560281, 15.1595954454, 15.1596348617, 15.1596742769, 15.159713691, 15.1597531041, 15.1597925161, 15.159831927, 15.1598713368, 15.1599107455, 15.1599501532, 15.1599895598, 15.1600289653, 15.1600683697, 15.1601077731, 15.1601471754, 15.1601865766, 15.1602259767, 15.1602653758, 15.1603047738, 15.1603441707, 15.1603835665, 15.1604229613, 15.160462355, 15.1605017476, 15.1605411391, 15.1605805295, 15.1606199189, 15.1606593072, 15.1606986944, 15.1607380806, 15.1607774657, 15.1608168497, 15.1608562326, 15.1608956145, 15.1609349952, 15.1609743749, 15.1610137536, 15.1610531311, 15.1610925076, 15.161131883, 15.1611712573, 15.1612106306, 15.1612500027, 15.1612893738, 15.1613287439, 15.1613681128, 15.1614074807, 15.1614468475, 15.1614862133, 15.1615255779, 15.1615649415, 15.161604304, 15.1616436654, 15.1616830258, 15.1617223851, 15.1617617433, 15.1618011004, 15.1618404565, 15.1618798115, 15.1619191654, 15.1619585183, 15.16199787, 15.1620372207, 15.1620765704, 15.1621159189, 15.1621552664, 15.1621946128, 15.1622339581, 15.1622733024, 15.1623126456, 15.1623519877, 15.1623913288, 15.1624306687, 15.1624700076, 15.1625093454, 15.1625486822, 15.1625880179, 15.1626273525, 15.162666686, 15.1627060185, 15.1627453499, 15.1627846802, 15.1628240094, 15.1628633376, 15.1629026647, 15.1629419907, 15.1629813157, 15.1630206396, 15.1630599624, 15.1630992841, 15.1631386048, 15.1631779244, 15.1632172429, 15.1632565604, 15.1632958768, 15.1633351921, 15.1633745063, 15.1634138195, 15.1634531316, 15.1634924426, 15.1635317526, 15.1635710615, 15.1636103693, 15.163649676, 15.1636889817, 15.1637282863, 15.1637675898, 15.1638068923, 15.1638461937, 15.163885494, 15.1639247932, 15.1639640914, 15.1640033885, 15.1640426846, 15.1640819795, 15.1641212734, 15.1641605662, 15.164199858, 15.1642391487, 15.1642784383, 15.1643177268, 15.1643570143, 15.1643963007, 15.1644355861, 15.1644748703, 15.1645141535, 15.1645534357, 15.1645927167, 15.1646319967, 15.1646712756, 15.1647105535, 15.1647498302, 15.164789106, 15.1648283806, 15.1648676542, 15.1649069267, 15.1649461981, 15.1649854685, 15.1650247378, 15.165064006, 15.1651032732, 15.1651425392, 15.1651818043, 15.1652210682, 15.1652603311, 15.1652995929, 15.1653388537, 15.1653781133, 15.165417372, 15.1654566295, 15.165495886, 15.1655351414, 15.1655743957, 15.165613649, 15.1656529012, 15.1656921523, 15.1657314024, 15.1657706514, 15.1658098993, 15.1658491462, 15.165888392, 15.1659276367, 15.1659668804, 15.166006123, 15.1660453645, 15.1660846049, 15.1661238443, 15.1661630826, 15.1662023199, 15.1662415561, 15.1662807912, 15.1663200253, 15.1663592583, 15.1663984902, 15.166437721, 15.1664769508, 15.1665161795, 15.1665554072, 15.1665946338, 15.1666338593, 15.1666730838, 15.1667123071, 15.1667515295, 15.1667907507, 15.1668299709, 15.16686919, 15.1669084081, 15.1669476251, 15.166986841, 15.1670260559, 15.1670652697, 15.1671044824, 15.167143694, 15.1671829046, 15.1672221142, 15.1672613226, 15.16730053, 15.1673397364, 15.1673789416, 15.1674181458, 15.167457349, 15.167496551, 15.167535752, 15.167574952, 15.1676141509, 15.1676533487, 15.1676925454, 15.1677317411, 15.1677709357, 15.1678101293, 15.1678493218, 15.1678885132, 15.1679277035, 15.1679668928, 15.1680060811, 15.1680452682, 15.1680844543, 15.1681236394, 15.1681628233, 15.1682020062, 15.1682411881, 15.1682803689, 15.1683195486, 15.1683587272, 15.1683979048, 15.1684370813, 15.1684762568, 15.1685154312, 15.1685546045, 15.1685937768, 15.168632948, 15.1686721181, 15.1687112872, 15.1687504552, 15.1687896222, 15.1688287881, 15.1688679529, 15.1689071166, 15.1689462793, 15.168985441, 15.1690246016, 15.1690637611, 15.1691029195, 15.1691420769, 15.1691812332, 15.1692203885, 15.1692595427, 15.1692986958, 15.1693378479, 15.1693769989, 15.1694161488, 15.1694552977, 15.1694944455, 15.1695335923, 15.169572738, 15.1696118826, 15.1696510262, 15.1696901687, 15.1697293101, 15.1697684505, 15.1698075898, 15.1698467281, 15.1698858653, 15.1699250014, 15.1699641365, 15.1700032705, 15.1700424035, 15.1700815354, 15.1701206662, 15.170159796, 15.1701989247, 15.1702380523, 15.1702771789, 15.1703163044, 15.1703554289, 15.1703945523, 15.1704336747, 15.1704727959, 15.1705119162, 15.1705510353, 15.1705901534, 15.1706292705, 15.1706683864, 15.1707075013, 15.1707466152, 15.170785728, 15.1708248397, 15.1708639504, 15.17090306, 15.1709421686, 15.1709812761, 15.1710203825, 15.1710594879, 15.1710985922, 15.1711376955, 15.1711767977, 15.1712158988, 15.1712549989, 15.1712940979, 15.1713331958, 15.1713722927, 15.1714113886, 15.1714504833, 15.1714895771, 15.1715286697, 15.1715677613, 15.1716068519, 15.1716459413, 15.1716850298, 15.1717241171, 15.1717632034, 15.1718022887, 15.1718413729, 15.171880456, 15.1719195381, 15.1719586191, 15.171997699, 15.1720367779, 15.1720758558, 15.1721149325, 15.1721540083, 15.1721930829, 15.1722321565, 15.1722712291, 15.1723103005, 15.172349371, 15.1723884403, 15.1724275086, 15.1724665759, 15.1725056421, 15.1725447072, 15.1725837713, 15.1726228343, 15.1726618963, 15.1727009572, 15.172740017, 15.1727790758, 15.1728181336, 15.1728571903, 15.1728962459, 15.1729353004, 15.1729743539, 15.1730134064, 15.1730524578, 15.1730915081, 15.1731305574, 15.1731696056, 15.1732086528, 15.1732476989, 15.1732867439, 15.1733257879, 15.1733648308, 15.1734038727, 15.1734429136, 15.1734819533, 15.173520992, 15.1735600297, 15.1735990663, 15.1736381018, 15.1736771363, 15.1737161697, 15.1737552021, 15.1737942334, 15.1738332637, 15.1738722929, 15.173911321, 15.1739503481, 15.1739893742, 15.1740283991, 15.1740674231, 15.1741064459, 15.1741454678, 15.1741844885, 15.1742235082, 15.1742625269, 15.1743015445, 15.174340561, 15.1743795765, 15.1744185909, 15.1744576043, 15.1744966166, 15.1745356279, 15.1745746381, 15.1746136472, 15.1746526553, 15.1746916624, 15.1747306684, 15.1747696733, 15.1748086772, 15.17484768, 15.1748866818, 15.1749256825, 15.1749646822, 15.1750036808, 15.1750426783, 15.1750816748, 15.1751206703, 15.1751596647, 15.175198658, 15.1752376503, 15.1752766415, 15.1753156317, 15.1753546208, 15.1753936089, 15.1754325959, 15.1754715819, 15.1755105668, 15.1755495506, 15.1755885334, 15.1756275152, 15.1756664959, 15.1757054755, 15.1757444541, 15.1757834317, 15.1758224081, 15.1758613836, 15.1759003579, 15.1759393313, 15.1759783035, 15.1760172748, 15.1760562449, 15.176095214, 15.1761341821, 15.1761731491, 15.1762121151, 15.17625108, 15.1762900438, 15.1763290066, 15.1763679684, 15.1764069291, 15.1764458887, 15.1764848473, 15.1765238048, 15.1765627613, 15.1766017168, 15.1766406711, 15.1766796245, 15.1767185767, 15.176757528, 15.1767964781, 15.1768354273, 15.1768743753, 15.1769133224, 15.1769522683, 15.1769912133, 15.1770301571, 15.1770690999, 15.1771080417, 15.1771469824, 15.1771859221, 15.1772248607, 15.1772637983, 15.1773027348, 15.1773416702, 15.1773806046, 15.177419538, 15.1774584703, 15.1774974016, 15.1775363318, 15.1775752609, 15.177614189, 15.1776531161, 15.1776920421, 15.177730967, 15.1777698909, 15.1778088138, 15.1778477356, 15.1778866563, 15.1779255761, 15.1779644947, 15.1780034123, 15.1780423289, 15.1780812444, 15.1781201588, 15.1781590722, 15.1781979846, 15.1782368959, 15.1782758061, 15.1783147154, 15.1783536235, 15.1783925306, 15.1784314367, 15.1784703417, 15.1785092457, 15.1785481486, 15.1785870504, 15.1786259512, 15.178664851, 15.1787037497, 15.1787426474, 15.178781544, 15.1788204396, 15.1788593341, 15.1788982276, 15.17893712, 15.1789760114, 15.1790149017, 15.179053791, 15.1790926792, 15.1791315664, 15.1791704525, 15.1792093376, 15.1792482217, 15.1792871046, 15.1793259866, 15.1793648675, 15.1794037473, 15.1794426261, 15.1794815039, 15.1795203806, 15.1795592562, 15.1795981308, 15.1796370044, 15.1796758769, 15.1797147484, 15.1797536188, 15.1797924882, 15.1798313565, 15.1798702238, 15.17990909, 15.1799479552, 15.1799868193, 15.1800256824, 15.1800645445, 15.1801034055, 15.1801422654, 15.1801811243, 15.1802199822, 15.180258839, 15.1802976947, 15.1803365495, 15.1803754031, 15.1804142558, 15.1804531073, 15.1804919579, 15.1805308073, 15.1805696558, 15.1806085032, 15.1806473495, 15.1806861948, 15.1807250391, 15.1807638823, 15.1808027244, 15.1808415656, 15.1808804056, 15.1809192447, 15.1809580826, 15.1809969196, 15.1810357555, 15.1810745903, 15.1811134241, 15.1811522569, 15.1811910886, 15.1812299192, 15.1812687489, 15.1813075774, 15.181346405, 15.1813852314, 15.1814240569, 15.1814628813, 15.1815017046, 15.1815405269, 15.1815793482, 15.1816181684, 15.1816569876, 15.1816958057, 15.1817346228, 15.1817734388, 15.1818122538, 15.1818510677, 15.1818898807, 15.1819286925, 15.1819675033, 15.1820063131, 15.1820451218, 15.1820839295, 15.1821227362, 15.1821615417, 15.1822003463, 15.1822391498, 15.1822779523, 15.1823167537, 15.1823555541, 15.1823943534, 15.1824331517, 15.1824719489, 15.1825107451, 15.1825495403, 15.1825883344, 15.1826271275, 15.1826659195, 15.1827047105, 15.1827435005, 15.1827822894, 15.1828210772, 15.182859864, 15.1828986498, 15.1829374345, 15.1829762182, 15.1830150009, 15.1830537825, 15.183092563, 15.1831313426, 15.183170121, 15.1832088985, 15.1832476749, 15.1832864502, 15.1833252245, 15.1833639978, 15.18340277, 15.1834415412, 15.1834803113, 15.1835190804, 15.1835578485, 15.1835966155, 15.1836353815, 15.1836741464, 15.1837129103, 15.1837516731, 15.1837904349, 15.1838291957, 15.1838679554, 15.1839067141, 15.1839454718, 15.1839842284, 15.1840229839, 15.1840617384, 15.1841004919, 15.1841392443, 15.1841779957, 15.1842167461, 15.1842554954, 15.1842942437, 15.1843329909, 15.1843717371, 15.1844104822, 15.1844492264, 15.1844879694, 15.1845267115, 15.1845654524, 15.1846041924, 15.1846429313, 15.1846816692, 15.184720406, 15.1847591418, 15.1847978765, 15.1848366102, 15.1848753429, 15.1849140745, 15.1849528051, 15.1849915347, 15.1850302632, 15.1850689907, 15.1851077171, 15.1851464425, 15.1851851668, 15.1852238901, 15.1852626124, 15.1853013336, 15.1853400538, 15.185378773, 15.1854174911, 15.1854562082, 15.1854949242, 15.1855336392, 15.1855723532, 15.1856110661, 15.185649778, 15.1856884888, 15.1857271986, 15.1857659074, 15.1858046151, 15.1858433218, 15.1858820274, 15.1859207321, 15.1859594356, 15.1859981382, 15.1860368397, 15.1860755401, 15.1861142395, 15.1861529379, 15.1861916353, 15.1862303316, 15.1862690268, 15.1863077211, 15.1863464143, 15.1863851064, 15.1864237975, 15.1864624876, 15.1865011767, 15.1865398647, 15.1865785516, 15.1866172376, 15.1866559225, 15.1866946063, 15.1867332891, 15.1867719709, 15.1868106517, 15.1868493314, 15.18688801, 15.1869266877, 15.1869653643, 15.1870040398, 15.1870427143, 15.1870813878, 15.1871200603, 15.1871587317, 15.1871974021, 15.1872360714, 15.1872747397, 15.187313407, 15.1873520732, 15.1873907384, 15.1874294026, 15.1874680657, 15.1875067278, 15.1875453888, 15.1875840488, 15.1876227078, 15.1876613657, 15.1877000226, 15.1877386785, 15.1877773333, 15.1878159871, 15.1878546399, 15.1878932916, 15.1879319423, 15.187970592, 15.1880092406, 15.1880478882, 15.1880865347, 15.1881251803, 15.1881638247, 15.1882024682, 15.1882411106, 15.188279752, 15.1883183923, 15.1883570316, 15.1883956699, 15.1884343071, 15.1884729433, 15.1885115785, 15.1885502126, 15.1885888457, 15.1886274778, 15.1886661088, 15.1887047388, 15.1887433677, 15.1887819957, 15.1888206226, 15.1888592484, 15.1888978732, 15.188936497, 15.1889751198, 15.1890137415, 15.1890523622, 15.1890909818, 15.1891296005, 15.189168218, 15.1892068346, 15.1892454501, 15.1892840646, 15.189322678, 15.1893612905, 15.1893999018, 15.1894385122, 15.1894771215, 15.1895157298, 15.1895543371, 15.1895929433, 15.1896315485, 15.1896701526, 15.1897087557, 15.1897473578, 15.1897859589, 15.1898245589, 15.1898631579, 15.1899017558, 15.1899403527, 15.1899789486, 15.1900175435, 15.1900561373, 15.1900947301, 15.1901333219, 15.1901719126, 15.1902105023, 15.1902490909, 15.1902876786, 15.1903262652, 15.1903648507, 15.1904034353, 15.1904420188, 15.1904806013, 15.1905191827, 15.1905577631, 15.1905963425, 15.1906349208, 15.1906734981, 15.1907120744, 15.1907506497, 15.1907892239, 15.1908277971, 15.1908663692, 15.1909049403, 15.1909435104, 15.1909820795, 15.1910206475, 15.1910592145, 15.1910977805, 15.1911363454, 15.1911749093, 15.1912134722, 15.1912520341, 15.1912905949, 15.1913291547, 15.1913677134, 15.1914062711, 15.1914448278, 15.1914833835, 15.1915219381, 15.1915604917, 15.1915990443, 15.1916375958, 15.1916761464, 15.1917146958, 15.1917532443, 15.1917917917, 15.1918303381, 15.1918688835, 15.1919074278, 15.1919459711, 15.1919845134, 15.1920230546, 15.1920615948, 15.192100134, 15.1921386722, 15.1921772093, 15.1922157454, 15.1922542804, 15.1922928145, 15.1923313475, 15.1923698795, 15.1924084104, 15.1924469403, 15.1924854692, 15.1925239971, 15.1925625239, 15.1926010497, 15.1926395745, 15.1926780982, 15.192716621, 15.1927551426, 15.1927936633, 15.1928321829, 15.1928707015, 15.1929092191, 15.1929477357, 15.1929862512, 15.1930247657, 15.1930632791, 15.1931017916, 15.193140303, 15.1931788133, 15.1932173227, 15.193255831, 15.1932943383, 15.1933328446, 15.1933713498, 15.193409854, 15.1934483572, 15.1934868594, 15.1935253605, 15.1935638606, 15.1936023597, 15.1936408577, 15.1936793547, 15.1937178507, 15.1937563457, 15.1937948396, 15.1938333325, 15.1938718244, 15.1939103153, 15.1939488051, 15.1939872939, 15.1940257817, 15.1940642684, 15.1941027542, 15.1941412389, 15.1941797225, 15.1942182052, 15.1942566868, 15.1942951674, 15.1943336469, 15.1943721255, 15.194410603, 15.1944490795, 15.1944875549, 15.1945260294, 15.1945645028, 15.1946029752, 15.1946414465, 15.1946799168, 15.1947183861, 15.1947568544, 15.1947953217, 15.1948337879, 15.1948722531, 15.1949107173, 15.1949491804, 15.1949876425, 15.1950261036, 15.1950645637, 15.1951030228, 15.1951414808, 15.1951799378, 15.1952183938, 15.1952568487, 15.1952953026, 15.1953337555, 15.1953722074, 15.1954106583, 15.1954491081, 15.1954875569, 15.1955260046, 15.1955644514, 15.1956028971, 15.1956413418, 15.1956797855, 15.1957182281, 15.1957566698, 15.1957951104, 15.19583355, 15.1958719885, 15.195910426, 15.1959488625, 15.195987298, 15.1960257325, 15.1960641659, 15.1961025983, 15.1961410297, 15.1961794601, 15.1962178894, 15.1962563177, 15.196294745, 15.1963331713, 15.1963715965, 15.1964100208, 15.196448444, 15.1964868661, 15.1965252873, 15.1965637074, 15.1966021265, 15.1966405446, 15.1966789617, 15.1967173777, 15.1967557927, 15.1967942067, 15.1968326197, 15.1968710316, 15.1969094425, 15.1969478524, 15.1969862613, 15.1970246692, 15.197063076, 15.1971014818, 15.1971398866, 15.1971782904, 15.1972166931, 15.1972550948, 15.1972934955, 15.1973318952, 15.1973702939, 15.1974086915, 15.1974470881, 15.1974854837, 15.1975238783, 15.1975622718, 15.1976006643, 15.1976390558, 15.1976774463, 15.1977158358, 15.1977542242, 15.1977926116, 15.197830998, 15.1978693834, 15.1979077677, 15.1979461511, 15.1979845334, 15.1980229147, 15.1980612949, 15.1980996742, 15.1981380524, 15.1981764296, 15.1982148058, 15.198253181, 15.1982915551, 15.1983299282, 15.1983683003, 15.1984066714, 15.1984450415, 15.1984834105, 15.1985217785, 15.1985601455, 15.1985985115, 15.1986368764, 15.1986752404, 15.1987136033, 15.1987519652, 15.1987903261, 15.1988286859, 15.1988670448, 15.1989054026, 15.1989437594, 15.1989821152, 15.1990204699, 15.1990588237, 15.1990971764, 15.1991355281, 15.1991738788, 15.1992122284, 15.1992505771, 15.1992889247, 15.1993272713, 15.1993656169, 15.1994039614, 15.199442305, 15.1994806475, 15.199518989, 15.1995573295, 15.199595669, 15.1996340074, 15.1996723448, 15.1997106812, 15.1997490166, 15.199787351, 15.1998256844, 15.1998640167, 15.199902348, 15.1999406783, 15.1999790076, 15.2000173359, 15.2000556631, 15.2000939894, 15.2001323146, 15.2001706388, 15.2002089619, 15.2002472841, 15.2002856052, 15.2003239253, 15.2003622444, 15.2004005625, 15.2004388796, 15.2004771956, 15.2005155107, 15.2005538247, 15.2005921377, 15.2006304497, 15.2006687606, 15.2007070706, 15.2007453795, 15.2007836874, 15.2008219943, 15.2008603002, 15.200898605, 15.2009369089, 15.2009752117, 15.2010135135, 15.2010518143, 15.2010901141, 15.2011284128, 15.2011667106, 15.2012050073, 15.201243303, 15.2012815977, 15.2013198914, 15.201358184, 15.2013964757, 15.2014347663, 15.2014730559, 15.2015113445, 15.2015496321, 15.2015879186, 15.2016262042, 15.2016644887, 15.2017027722, 15.2017410547, 15.2017793362, 15.2018176167, 15.2018558961, 15.2018941746, 15.201932452, 15.2019707284, 15.2020090038, 15.2020472781, 15.2020855515, 15.2021238238, 15.2021620952, 15.2022003655, 15.2022386348, 15.202276903, 15.2023151703, 15.2023534366, 15.2023917018, 15.202429966, 15.2024682292, 15.2025064914, 15.2025447526, 15.2025830127, 15.2026212719, 15.20265953, 15.2026977871, 15.2027360433, 15.2027742983, 15.2028125524, 15.2028508055, 15.2028890575, 15.2029273086, 15.2029655586, 15.2030038076, 15.2030420556, 15.2030803025, 15.2031185485, 15.2031567934, 15.2031950374, 15.2032332803, 15.2032715222, 15.2033097631, 15.203348003, 15.2033862418, 15.2034244797, 15.2034627165, 15.2035009524, 15.2035391872, 15.203577421, 15.2036156538, 15.2036538855, 15.2036921163, 15.203730346, 15.2037685748, 15.2038068025, 15.2038450292, 15.2038832549, 15.2039214796, 15.2039597032, 15.2039979259, 15.2040361475, 15.2040743682, 15.2041125878, 15.2041508064, 15.204189024, 15.2042272406, 15.2042654561, 15.2043036707, 15.2043418842, 15.2043800968, 15.2044183083, 15.2044565188, 15.2044947283, 15.2045329368, 15.2045711442, 15.2046093507, 15.2046475562, 15.2046857606, 15.204723964, 15.2047621664, 15.2048003678, 15.2048385682, 15.2048767676, 15.204914966, 15.2049531633, 15.2049913597, 15.205029555, 15.2050677493, 15.2051059426, 15.2051441349, 15.2051823262, 15.2052205165, 15.2052587058, 15.205296894, 15.2053350813, 15.2053732675, 15.2054114527, 15.2054496369, 15.2054878202, 15.2055260023, 15.2055641835, 15.2056023637, 15.2056405429, 15.205678721, 15.2057168981, 15.2057550743, 15.2057932494, 15.2058314235, 15.2058695966, 15.2059077687, 15.2059459398, 15.2059841098, 15.2060222789, 15.206060447, 15.206098614, 15.20613678, 15.206174945, 15.2062131091, 15.2062512721, 15.2062894341, 15.206327595, 15.206365755, 15.206403914, 15.2064420719, 15.2064802289, 15.2065183848, 15.2065565397, 15.2065946937, 15.2066328466, 15.2066709985, 15.2067091494, 15.2067472992, 15.2067854481, 15.206823596, 15.2068617428, 15.2068998887, 15.2069380335, 15.2069761774, 15.2070143202, 15.207052462, 15.2070906028, 15.2071287426, 15.2071668814, 15.2072050192, 15.2072431559, 15.2072812917, 15.2073194265, 15.2073575602, 15.2073956929, 15.2074338247, 15.2074719554, 15.2075100851, 15.2075482138, 15.2075863415, 15.2076244682, 15.2076625939, 15.2077007186, 15.2077388423, 15.2077769649, 15.2078150866, 15.2078532072, 15.2078913269, 15.2079294455, 15.2079675631, 15.2080056798, 15.2080437954, 15.20808191, 15.2081200236, 15.2081581362, 15.2081962478, 15.2082343583, 15.2082724679, 15.2083105765, 15.208348684, 15.2083867906, 15.2084248961, 15.2084630007, 15.2085011042, 15.2085392067, 15.2085773083, 15.2086154088, 15.2086535083, 15.2086916068, 15.2087297043, 15.2087678008, 15.2088058963, 15.2088439907, 15.2088820842, 15.2089201767, 15.2089582681, 15.2089963586, 15.209034448, 15.2090725365, 15.2091106239, 15.2091487104, 15.2091867958, 15.2092248802, 15.2092629636, 15.209301046, 15.2093391274, 15.2093772078, 15.2094152872, 15.2094533656, 15.209491443, 15.2095295194, 15.2095675948, 15.2096056691, 15.2096437425, 15.2096818149, 15.2097198862, 15.2097579566, 15.2097960259, 15.2098340943, 15.2098721616, 15.2099102279, 15.2099482933, 15.2099863576, 15.2100244209, 15.2100624832, 15.2101005446, 15.2101386049, 15.2101766642, 15.2102147225, 15.2102527798, 15.2102908361, 15.2103288913, 15.2103669456, 15.2104049989, 15.2104430512, 15.2104811025, 15.2105191527, 15.210557202, 15.2105952503, 15.2106332975, 15.2106713438, 15.210709389, 15.2107474333, 15.2107854765, 15.2108235188, 15.21086156, 15.2108996003, 15.2109376395, 15.2109756777, 15.211013715, 15.2110517512, 15.2110897864, 15.2111278206, 15.2111658538, 15.2112038861, 15.2112419173, 15.2112799475, 15.2113179767, 15.2113560049, 15.2113940321, 15.2114320583, 15.2114700835, 15.2115081077, 15.2115461309, 15.2115841531, 15.2116221743, 15.2116601945, 15.2116982136, 15.2117362318, 15.211774249, 15.2118122652, 15.2118502804, 15.2118882945, 15.2119263077, 15.2119643199, 15.2120023311, 15.2120403412, 15.2120783504, 15.2121163586, 15.2121543657, 15.2121923719, 15.2122303771, 15.2122683812, 15.2123063844, 15.2123443866, 15.2123823877, 15.2124203879, 15.212458387, 15.2124963852, 15.2125343824, 15.2125723785, 15.2126103737, 15.2126483678, 15.212686361, 15.2127243531, 15.2127623443, 15.2128003344, 15.2128383236, 15.2128763117, 15.2129142989, 15.212952285, 15.2129902702, 15.2130282543, 15.2130662375, 15.2131042196, 15.2131422008, 15.2131801809, 15.2132181601, 15.2132561382, 15.2132941154, 15.2133320916, 15.2133700667, 15.2134080409, 15.213446014, 15.2134839862, 15.2135219573, 15.2135599275, 15.2135978966, 15.2136358648, 15.2136738319, 15.2137117981, 15.2137497633, 15.2137877274, 15.2138256906, 15.2138636527, 15.2139016139, 15.2139395741, 15.2139775332, 15.2140154914, 15.2140534486, 15.2140914047, 15.2141293599, 15.2141673141, 15.2142052673, 15.2142432194, 15.2142811706, 15.2143191208, 15.21435707, 15.2143950182, 15.2144329653, 15.2144709115, 15.2145088567, 15.2145468009, 15.2145847441, 15.2146226863, 15.2146606275, 15.2146985677, 15.2147365069, 15.2147744451, 15.2148123823, 15.2148503185, 15.2148882537, 15.2149261879, 15.2149641212, 15.2150020534, 15.2150399846, 15.2150779148, 15.215115844, 15.2151537723, 15.2151916995, 15.2152296257, 15.215267551, 15.2153054752, 15.2153433985, 15.2153813207, 15.215419242, 15.2154571622, 15.2154950815, 15.2155329997, 15.215570917, 15.2156088333, 15.2156467485, 15.2156846628, 15.2157225761, 15.2157604884, 15.2157983997, 15.21583631, 15.2158742193, 15.2159121276, 15.2159500349, 15.2159879412, 15.2160258465, 15.2160637508, 15.2161016541, 15.2161395564, 15.2161774578, 15.2162153581, 15.2162532574, 15.2162911558, 15.2163290531, 15.2163669494, 15.2164048448, 15.2164427392, 15.2164806325, 15.2165185249, 15.2165564163, 15.2165943066, 15.216632196, 15.2166700844, 15.2167079718, 15.2167458582, 15.2167837436, 15.216821628, 15.2168595114, 15.2168973938, 15.2169352753, 15.2169731557, 15.2170110351, 15.2170489136, 15.217086791, 15.2171246675, 15.2171625429, 15.2172004174, 15.2172382908, 15.2172761633, 15.2173140348, 15.2173519053, 15.2173897748, 15.2174276433, 15.2174655108, 15.2175033773, 15.2175412428, 15.2175791073, 15.2176169708, 15.2176548334, 15.2176926949, 15.2177305554, 15.217768415, 15.2178062736, 15.2178441311, 15.2178819877, 15.2179198433, 15.2179576979, 15.2179955515, 15.2180334041, 15.2180712557, 15.2181091063, 15.2181469559, 15.2181848045, 15.2182226522, 15.2182604988, 15.2182983444, 15.2183361891, 15.2183740328, 15.2184118754, 15.2184497171, 15.2184875578, 15.2185253975, 15.2185632362, 15.2186010739, 15.2186389106, 15.2186767463, 15.2187145811, 15.2187524148, 15.2187902476, 15.2188280793, 15.2188659101, 15.2189037398, 15.2189415686, 15.2189793964, 15.2190172232, 15.219055049, 15.2190928738, 15.2191306976, 15.2191685205, 15.2192063423, 15.2192441631, 15.219281983, 15.2193198019, 15.2193576197, 15.2193954366, 15.2194332525, 15.2194710674, 15.2195088813, 15.2195466942, 15.2195845061, 15.2196223171, 15.219660127, 15.219697936, 15.2197357439, 15.2197735509, 15.2198113569, 15.2198491619, 15.2198869659, 15.2199247689, 15.2199625709, 15.2200003719, 15.2200381719, 15.220075971, 15.220113769, 15.2201515661, 15.2201893622, 15.2202271573, 15.2202649514, 15.2203027445, 15.2203405366, 15.2203783277, 15.2204161178, 15.220453907, 15.2204916951, 15.2205294823, 15.2205672685, 15.2206050537, 15.2206428378, 15.2206806211, 15.2207184033, 15.2207561845, 15.2207939647, 15.220831744, 15.2208695222, 15.2209072995, 15.2209450758, 15.2209828511, 15.2210206254, 15.2210583987, 15.221096171, 15.2211339424, 15.2211717127, 15.2212094821, 15.2212472504, 15.2212850178, 15.2213227842, 15.2213605496, 15.221398314, 15.2214360774, 15.2214738399, 15.2215116013, 15.2215493618, 15.2215871213, 15.2216248797, 15.2216626372, 15.2217003938, 15.2217381493, 15.2217759038, 15.2218136573, 15.2218514099, 15.2218891615, 15.2219269121, 15.2219646616, 15.2220024102, 15.2220401579, 15.2220779045, 15.2221156501, 15.2221533948, 15.2221911385, 15.2222288811, 15.2222666228, 15.2223043635, 15.2223421032, 15.222379842, 15.2224175797, 15.2224553165, 15.2224930522, 15.222530787, 15.2225685208, 15.2226062536, 15.2226439855, 15.2226817163, 15.2227194461, 15.222757175, 15.2227949029, 15.2228326298, 15.2228703557, 15.2229080806, 15.2229458045, 15.2229835274, 15.2230212494, 15.2230589704, 15.2230966903, 15.2231344093, 15.2231721274, 15.2232098444, 15.2232475604, 15.2232852755, 15.2233229895, 15.2233607026, 15.2233984147, 15.2234361258, 15.2234738359, 15.2235115451, 15.2235492532, 15.2235869604, 15.2236246666, 15.2236623718, 15.223700076, 15.2237377792, 15.2237754815, 15.2238131827, 15.223850883, 15.2238885823, 15.2239262806, 15.2239639779, 15.2240016742, 15.2240393695, 15.2240770639, 15.2241147573, 15.2241524497, 15.2241901411, 15.2242278315, 15.2242655209, 15.2243032094, 15.2243408968, 15.2243785833, 15.2244162688, 15.2244539533, 15.2244916369, 15.2245293194, 15.224567001, 15.2246046815, 15.2246423611, 15.2246800397, 15.2247177174, 15.224755394, 15.2247930697, 15.2248307443, 15.224868418, 15.2249060907, 15.2249437624, 15.2249814332, 15.2250191029, 15.2250567717, 15.2250944395, 15.2251321063, 15.2251697721, 15.2252074369, 15.2252451008, 15.2252827637, 15.2253204256, 15.2253580865, 15.2253957464, 15.2254334053, 15.2254710633, 15.2255087202, 15.2255463762, 15.2255840312, 15.2256216853, 15.2256593383, 15.2256969903, 15.2257346414, 15.2257722915, 15.2258099406, 15.2258475888, 15.2258852359, 15.2259228821, 15.2259605272, 15.2259981714, 15.2260358146, 15.2260734569, 15.2261110981, 15.2261487384, 15.2261863777, 15.226224016, 15.2262616533, 15.2262992897, 15.226336925, 15.2263745594, 15.2264121928, 15.2264498252, 15.2264874566, 15.2265250871, 15.2265627166, 15.226600345, 15.2266379725, 15.2266755991, 15.2267132246, 15.2267508492, 15.2267884728, 15.2268260954, 15.226863717, 15.2269013376, 15.2269389573, 15.226976576, 15.2270141936, 15.2270518104, 15.2270894261, 15.2271270409, 15.2271646546, 15.2272022674, 15.2272398792, 15.2272774901, 15.2273150999, 15.2273527088, 15.2273903167, 15.2274279236, 15.2274655295, 15.2275031345, 15.2275407384, 15.2275783414, 15.2276159434, 15.2276535444, 15.2276911445, 15.2277287436, 15.2277663416, 15.2278039388, 15.2278415349, 15.22787913, 15.2279167242, 15.2279543174, 15.2279919096, 15.2280295008, 15.2280670911, 15.2281046804, 15.2281422686, 15.228179856, 15.2282174423, 15.2282550276, 15.228292612, 15.2283301954, 15.2283677778, 15.2284053593, 15.2284429397, 15.2284805192, 15.2285180977, 15.2285556752, 15.2285932518, 15.2286308273, 15.2286684019, 15.2287059755, 15.2287435482, 15.2287811198, 15.2288186905, 15.2288562602, 15.2288938289, 15.2289313966, 15.2289689634, 15.2290065292, 15.229044094, 15.2290816578, 15.2291192207, 15.2291567825, 15.2291943434, 15.2292319033, 15.2292694623, 15.2293070202, 15.2293445772, 15.2293821332, 15.2294196882, 15.2294572423, 15.2294947953, 15.2295323474, 15.2295698986, 15.2296074487, 15.2296449978, 15.229682546, 15.2297200932, 15.2297576395, 15.2297951847, 15.229832729, 15.2298702723, 15.2299078146, 15.229945356, 15.2299828963, 15.2300204357, 15.2300579741, 15.2300955116, 15.230133048, 15.2301705835, 15.230208118, 15.2302456515, 15.2302831841, 15.2303207157, 15.2303582463, 15.2303957759, 15.2304333045, 15.2304708322, 15.2305083589, 15.2305458846, 15.2305834094, 15.2306209331, 15.2306584559, 15.2306959777, 15.2307334986, 15.2307710184, 15.2308085373, 15.2308460552, 15.2308835722, 15.2309210881, 15.2309586031, 15.2309961171, 15.2310336302, 15.2310711422, 15.2311086533, 15.2311461634, 15.2311836726, 15.2312211807, 15.2312586879, 15.2312961941, 15.2313336993, 15.2313712036, 15.2314087069, 15.2314462092, 15.2314837105, 15.2315212109, 15.2315587103, 15.2315962087, 15.2316337061, 15.2316712026, 15.231708698, 15.2317461926, 15.2317836861, 15.2318211787, 15.2318586702, 15.2318961609, 15.2319336505, 15.2319711392, 15.2320086269, 15.2320461136, 15.2320835993, 15.2321210841, 15.2321585679, 15.2321960507, 15.2322335325, 15.2322710134, 15.2323084933, 15.2323459722, 15.2323834502, 15.2324209272, 15.2324584032, 15.2324958782, 15.2325333523, 15.2325708254, 15.2326082975, 15.2326457686, 15.2326832388, 15.232720708, 15.2327581762, 15.2327956434, 15.2328331097, 15.232870575, 15.2329080393, 15.2329455027, 15.2329829651, 15.2330204265, 15.2330578869, 15.2330953464, 15.2331328049, 15.2331702624, 15.2332077189, 15.2332451745, 15.2332826291, 15.2333200827, 15.2333575354, 15.2333949871, 15.2334324378, 15.2334698875, 15.2335073363, 15.2335447841, 15.2335822309, 15.2336196768, 15.2336571216, 15.2336945655, 15.2337320085, 15.2337694504, 15.2338068914, 15.2338443315, 15.2338817705, 15.2339192086, 15.2339566457, 15.2339940818, 15.234031517, 15.2340689512, 15.2341063844, 15.2341438167, 15.2341812479, 15.2342186782, 15.2342561076, 15.2342935359, 15.2343309633, 15.2343683898, 15.2344058152, 15.2344432397, 15.2344806632, 15.2345180857, 15.2345555073, 15.2345929279, 15.2346303475, 15.2346677662, 15.2347051839, 15.2347426006, 15.2347800163, 15.2348174311, 15.2348548449, 15.2348922578, 15.2349296696, 15.2349670805, 15.2350044904, 15.2350418994, 15.2350793074, 15.2351167144, 15.2351541204, 15.2351915255, 15.2352289296, 15.2352663328, 15.2353037349, 15.2353411361, 15.2353785363, 15.2354159356, 15.2354533339, 15.2354907312, 15.2355281276, 15.2355655229, 15.2356029173, 15.2356403108, 15.2356777033, 15.2357150948, 15.2357524853, 15.2357898749, 15.2358272635, 15.2358646511, 15.2359020377, 15.2359394234, 15.2359768081, 15.2360141919, 15.2360515747, 15.2360889565, 15.2361263373, 15.2361637172, 15.2362010961, 15.2362384741, 15.236275851, 15.236313227, 15.2363506021, 15.2363879761, 15.2364253492, 15.2364627214, 15.2365000925, 15.2365374627, 15.236574832, 15.2366122002, 15.2366495675, 15.2366869338, 15.2367242992, 15.2367616636, 15.236799027, 15.2368363894, 15.2368737509, 15.2369111114, 15.236948471, 15.2369858296, 15.2370231872, 15.2370605438, 15.2370978995, 15.2371352542, 15.237172608, 15.2372099608, 15.2372473126, 15.2372846634, 15.2373220133, 15.2373593622, 15.2373967101, 15.2374340571, 15.2374714031, 15.2375087482, 15.2375460922, 15.2375834354, 15.2376207775, 15.2376581187, 15.2376954589, 15.2377327981, 15.2377701364, 15.2378074737, 15.2378448101, 15.2378821454, 15.2379194799, 15.2379568133, 15.2379941458, 15.2380314773, 15.2380688078, 15.2381061374, 15.238143466, 15.2381807937, 15.2382181204, 15.2382554461, 15.2382927709, 15.2383300946, 15.2383674175, 15.2384047393, 15.2384420602, 15.2384793801, 15.2385166991, 15.2385540171, 15.2385913341, 15.2386286502, 15.2386659653, 15.2387032794, 15.2387405926, 15.2387779048, 15.238815216, 15.2388525263, 15.2388898356, 15.238927144, 15.2389644514, 15.2390017578, 15.2390390632, 15.2390763677, 15.2391136712, 15.2391509738, 15.2391882754, 15.239225576, 15.2392628757, 15.2393001744, 15.2393374721, 15.2393747689, 15.2394120647, 15.2394493595, 15.2394866534, 15.2395239463, 15.2395612383, 15.2395985292, 15.2396358193, 15.2396731083, 15.2397103964, 15.2397476836, 15.2397849697, 15.2398222549, 15.2398595392, 15.2398968224, 15.2399341048, 15.2399713861, 15.2400086665, 15.2400459459, 15.2400832244, 15.2401205019, 15.2401577784, 15.240195054, 15.2402323286, 15.2402696022, 15.2403068749, 15.2403441466, 15.2403814174, 15.2404186872, 15.240455956, 15.2404932239, 15.2405304908, 15.2405677567, 15.2406050217, 15.2406422857, 15.2406795488, 15.2407168109, 15.240754072, 15.2407913322, 15.2408285914, 15.2408658496, 15.2409031069, 15.2409403632, 15.2409776186, 15.241014873, 15.2410521264, 15.2410893789, 15.2411266304, 15.2411638809, 15.2412011305, 15.2412383791, 15.2412756268, 15.2413128735, 15.2413501192, 15.241387364, 15.2414246078, 15.2414618507, 15.2414990926, 15.2415363335, 15.2415735735, 15.2416108125, 15.2416480505, 15.2416852876, 15.2417225237, 15.2417597589, 15.2417969931, 15.2418342263, 15.2418714586, 15.2419086899, 15.2419459203, 15.2419831497, 15.2420203781, 15.2420576056, 15.2420948321, 15.2421320577, 15.2421692823, 15.2422065059, 15.2422437286, 15.2422809503, 15.2423181711, 15.2423553909, 15.2423926097, 15.2424298276, 15.2424670445, 15.2425042604, 15.2425414754, 15.2425786895, 15.2426159025, 15.2426531146, 15.2426903258, 15.242727536, 15.2427647452, 15.2428019535, 15.2428391608, 15.2428763672, 15.2429135726, 15.242950777, 15.2429879805, 15.243025183, 15.2430623846, 15.2430995852, 15.2431367848, 15.2431739835, 15.2432111812, 15.243248378, 15.2432855738, 15.2433227686, 15.2433599625, 15.2433971554, 15.2434343474, 15.2434715384, 15.2435087284, 15.2435459175, 15.2435831057, 15.2436202928, 15.2436574791, 15.2436946643, 15.2437318486, 15.243769032, 15.2438062143, 15.2438433958, 15.2438805762, 15.2439177557, 15.2439549343, 15.2439921119, 15.2440292885, 15.2440664642, 15.2441036389, 15.2441408127, 15.2441779855, 15.2442151573, 15.2442523282, 15.2442894981, 15.2443266671, 15.2443638351, 15.2444010022, 15.2444381683, 15.2444753334, 15.2445124976, 15.2445496608, 15.2445868231, 15.2446239844, 15.2446611448, 15.2446983042, 15.2447354626, 15.2447726201, 15.2448097766, 15.2448469322, 15.2448840868, 15.2449212405, 15.2449583932, 15.2449955449, 15.2450326957, 15.2450698455, 15.2451069944, 15.2451441423, 15.2451812893, 15.2452184353, 15.2452555803, 15.2452927244, 15.2453298675, 15.2453670097, 15.2454041509, 15.2454412912, 15.2454784305, 15.2455155689, 15.2455527063, 15.2455898427, 15.2456269782, 15.2456641127, 15.2457012463, 15.2457383789, 15.2457755106, 15.2458126413, 15.245849771, 15.2458868998, 15.2459240277, 15.2459611545, 15.2459982805, 15.2460354054, 15.2460725295, 15.2461096525, 15.2461467746, 15.2461838958, 15.246221016, 15.2462581352, 15.2462952535, 15.2463323708, 15.2463694872, 15.2464066026, 15.2464437171, 15.2464808306, 15.2465179432, 15.2465550548, 15.2465921654, 15.2466292751, 15.2466663839, 15.2467034917, 15.2467405985, 15.2467777044, 15.2468148093, 15.2468519133, 15.2468890163, 15.2469261183, 15.2469632194, 15.2470003196, 15.2470374188, 15.247074517, 15.2471116143, 15.2471487107, 15.247185806, 15.2472229005, 15.2472599939, 15.2472970865, 15.247334178, 15.2473712686, 15.2474083583, 15.247445447, 15.2474825348, 15.2475196216, 15.2475567074, 15.2475937923, 15.2476308762, 15.2476679592, 15.2477050413, 15.2477421223, 15.2477792025, 15.2478162816, 15.2478533599, 15.2478904371, 15.2479275134, 15.2479645888, 15.2480016632, 15.2480387367, 15.2480758092, 15.2481128807, 15.2481499513, 15.248187021, 15.2482240897, 15.2482611574, 15.2482982242, 15.24833529, 15.2483723549, 15.2484094189, 15.2484464818, 15.2484835439, 15.2485206049, 15.2485576651, 15.2485947242, 15.2486317825, 15.2486688397, 15.248705896, 15.2487429514, 15.2487800058, 15.2488170593, 15.2488541118, 15.2488911633, 15.248928214, 15.2489652636, 15.2490023123, 15.2490393601, 15.2490764069, 15.2491134527, 15.2491504976, 15.2491875416, 15.2492245846, 15.2492616266, 15.2492986677, 15.2493357078, 15.249372747, 15.2494097853, 15.2494468226, 15.2494838589, 15.2495208943, 15.2495579287, 15.2495949622, 15.2496319947, 15.2496690263, 15.249706057, 15.2497430867, 15.2497801154, 15.2498171432, 15.24985417, 15.2498911959, 15.2499282208, 15.2499652448, 15.2500022678, 15.2500392899, 15.2500763111, 15.2501133312, 15.2501503505, 15.2501873688, 15.2502243861, 15.2502614025, 15.2502984179, 15.2503354324, 15.2503724459, 15.2504094585, 15.2504464701, 15.2504834808, 15.2505204906, 15.2505574994, 15.2505945072, 15.2506315141, 15.25066852, 15.250705525, 15.2507425291, 15.2507795321, 15.2508165343, 15.2508535355, 15.2508905357, 15.250927535, 15.2509645334, 15.2510015308, 15.2510385272, 15.2510755227, 15.2511125173, 15.2511495109, 15.2511865035, 15.2512234952, 15.251260486, 15.2512974758, 15.2513344647, 15.2513714526, 15.2514084395, 15.2514454256, 15.2514824106, 15.2515193947, 15.2515563779, 15.2515933601, 15.2516303414, 15.2516673217, 15.2517043011, 15.2517412796, 15.251778257, 15.2518152336, 15.2518522092, 15.2518891838, 15.2519261575, 15.2519631302, 15.252000102, 15.2520370729, 15.2520740428, 15.2521110118, 15.2521479798, 15.2521849468, 15.2522219129, 15.2522588781, 15.2522958423, 15.2523328056, 15.2523697679, 15.2524067293, 15.2524436897, 15.2524806492, 15.2525176078, 15.2525545654, 15.252591522, 15.2526284777, 15.2526654325, 15.2527023863, 15.2527393391, 15.252776291, 15.252813242, 15.252850192, 15.2528871411, 15.2529240892, 15.2529610364, 15.2529979826, 15.2530349279, 15.2530718723, 15.2531088157, 15.2531457581, 15.2531826996, 15.2532196402, 15.2532565798, 15.2532935184, 15.2533304562, 15.2533673929, 15.2534043288, 15.2534412637, 15.2534781976, 15.2535151306, 15.2535520626, 15.2535889937, 15.2536259239, 15.2536628531, 15.2536997814, 15.2537367087, 15.2537736351, 15.2538105605, 15.253847485, 15.2538844085, 15.2539213311, 15.2539582528, 15.2539951735, 15.2540320932, 15.2540690121, 15.2541059299, 15.2541428469, 15.2541797628, 15.2542166779, 15.254253592, 15.2542905051, 15.2543274173, 15.2543643286, 15.2544012389, 15.2544381483, 15.2544750567, 15.2545119642, 15.2545488707, 15.2545857763, 15.254622681, 15.2546595847, 15.2546964874, 15.2547333892, 15.2547702901, 15.2548071901, 15.254844089, 15.2548809871, 15.2549178842, 15.2549547803, 15.2549916755, 15.2550285698, 15.2550654631, 15.2551023555, 15.255139247, 15.2551761375, 15.255213027, 15.2552499156, 15.2552868033, 15.25532369, 15.2553605758, 15.2553974606, 15.2554343445, 15.2554712275, 15.2555081095, 15.2555449905, 15.2555818707, 15.2556187498, 15.2556556281, 15.2556925054, 15.2557293817, 15.2557662571, 15.2558031316, 15.2558400051, 15.2558768777, 15.2559137493, 15.25595062, 15.2559874898, 15.2560243586, 15.2560612265, 15.2560980934, 15.2561349594, 15.2561718244, 15.2562086885, 15.2562455517, 15.2562824139, 15.2563192752, 15.2563561355, 15.2563929949, 15.2564298534, 15.2564667109, 15.2565035674, 15.2565404231, 15.2565772777, 15.2566141315, 15.2566509843, 15.2566878361, 15.2567246871, 15.256761537, 15.2567983861, 15.2568352342, 15.2568720813, 15.2569089275, 15.2569457728, 15.2569826171, 15.2570194605, 15.257056303, 15.2570931445, 15.2571299851, 15.2571668247, 15.2572036634, 15.2572405011, 15.2572773379, 15.2573141738, 15.2573510087, 15.2573878427, 15.2574246757, 15.2574615078, 15.257498339, 15.2575351692, 15.2575719985, 15.2576088268, 15.2576456542, 15.2576824807, 15.2577193062, 15.2577561308, 15.2577929545, 15.2578297772, 15.2578665989, 15.2579034197, 15.2579402396, 15.2579770586, 15.2580138766, 15.2580506936, 15.2580875098, 15.2581243249, 15.2581611392, 15.2581979525, 15.2582347649, 15.2582715763, 15.2583083868, 15.2583451963, 15.2583820049, 15.2584188126, 15.2584556193, 15.2584924251, 15.25852923, 15.2585660339, 15.2586028369, 15.2586396389, 15.25867644, 15.2587132402, 15.2587500394, 15.2587868377, 15.258823635, 15.2588604314, 15.2588972269, 15.2589340214, 15.258970815, 15.2590076076, 15.2590443994, 15.2590811901, 15.25911798, 15.2591547689, 15.2591915568, 15.2592283438, 15.2592651299, 15.2593019151, 15.2593386993, 15.2593754826, 15.2594122649, 15.2594490463, 15.2594858267, 15.2595226063, 15.2595593848, 15.2595961625, 15.2596329392, 15.259669715, 15.2597064898, 15.2597432637, 15.2597800366, 15.2598168087, 15.2598535798, 15.2598903499, 15.2599271191, 15.2599638874, 15.2600006547, 15.2600374211, 15.2600741866, 15.2601109511, 15.2601477147, 15.2601844773, 15.260221239, 15.2602579998, 15.2602947597, 15.2603315186, 15.2603682765, 15.2604050336, 15.2604417896, 15.2604785448, 15.260515299, 15.2605520523, 15.2605888047, 15.2606255561, 15.2606623065, 15.2606990561, 15.2607358047, 15.2607725524, 15.2608092991, 15.2608460449, 15.2608827897, 15.2609195337, 15.2609562767, 15.2609930187, 15.2610297598, 15.2610665, 15.2611032392, 15.2611399776, 15.2611767149, 15.2612134514, 15.2612501869, 15.2612869214, 15.2613236551, 15.2613603878, 15.2613971195, 15.2614338504, 15.2614705802, 15.2615073092, 15.2615440372, 15.2615807643, 15.2616174905, 15.2616542157, 15.26169094, 15.2617276633, 15.2617643857, 15.2618011072, 15.2618378277, 15.2618745473, 15.261911266, 15.2619479838, 15.2619847006, 15.2620214164, 15.2620581314, 15.2620948454, 15.2621315584, 15.2621682706, 15.2622049818, 15.262241692, 15.2622784014, 15.2623151098, 15.2623518172, 15.2623885238, 15.2624252293, 15.262461934, 15.2624986377, 15.2625353405, 15.2625720424, 15.2626087433, 15.2626454433, 15.2626821424, 15.2627188405, 15.2627555377, 15.2627922339, 15.2628289293, 15.2628656237, 15.2629023171, 15.2629390096, 15.2629757012, 15.2630123919, 15.2630490816, 15.2630857704, 15.2631224583, 15.2631591452, 15.2631958312, 15.2632325162, 15.2632692004, 15.2633058836, 15.2633425658, 15.2633792472, 15.2634159276, 15.263452607, 15.2634892856, 15.2635259632, 15.2635626398, 15.2635993156, 15.2636359904, 15.2636726642, 15.2637093372, 15.2637460092, 15.2637826802, 15.2638193504, 15.2638560196, 15.2638926879, 15.2639293552, 15.2639660216, 15.2640026871, 15.2640393517, 15.2640760153, 15.264112678, 15.2641493397, 15.2641860005, 15.2642226604, 15.2642593194, 15.2642959774, 15.2643326345, 15.2643692907, 15.2644059459, 15.2644426002, 15.2644792536, 15.264515906, 15.2645525575, 15.2645892081, 15.2646258578, 15.2646625065, 15.2646991543, 15.2647358011, 15.2647724471, 15.264809092, 15.2648457361, 15.2648823792, 15.2649190214, 15.2649556627, 15.264992303, 15.2650289425, 15.2650655809, 15.2651022185, 15.2651388551, 15.2651754908, 15.2652121255, 15.2652487594, 15.2652853923, 15.2653220242, 15.2653586553, 15.2653952854, 15.2654319146, 15.2654685428, 15.2655051701, 15.2655417965, 15.265578422, 15.2656150465, 15.2656516701, 15.2656882927, 15.2657249145, 15.2657615353, 15.2657981552, 15.2658347741, 15.2658713921, 15.2659080092, 15.2659446254, 15.2659812406, 15.2660178549, 15.2660544683, 15.2660910807, 15.2661276923, 15.2661643028, 15.2662009125, 15.2662375212, 15.266274129, 15.2663107359, 15.2663473418, 15.2663839468, 15.2664205509, 15.2664571541, 15.2664937563, 15.2665303576, 15.266566958, 15.2666035574, 15.2666401559, 15.2666767535, 15.2667133502, 15.2667499459, 15.2667865407, 15.2668231346, 15.2668597275, 15.2668963195, 15.2669329106, 15.2669695008, 15.26700609, 15.2670426783, 15.2670792657, 15.2671158521, 15.2671524376, 15.2671890222, 15.2672256059, 15.2672621886, 15.2672987704, 15.2673353513, 15.2673719313, 15.2674085103, 15.2674450884, 15.2674816656, 15.2675182418, 15.2675548171, 15.2675913915, 15.267627965, 15.2676645375, 15.2677011091, 15.2677376798, 15.2677742495, 15.2678108184, 15.2678473863, 15.2678839532, 15.2679205193, 15.2679570844, 15.2679936486, 15.2680302119, 15.2680667742, 15.2681033356, 15.2681398961, 15.2681764557, 15.2682130143, 15.268249572, 15.2682861288, 15.2683226846, 15.2683592396, 15.2683957936, 15.2684323466, 15.2684688988, 15.26850545, 15.2685420003, 15.2685785497, 15.2686150981, 15.2686516456, 15.2686881922, 15.2687247379, 15.2687612826, 15.2687978265, 15.2688343693, 15.2688709113, 15.2689074523, 15.2689439925, 15.2689805316, 15.2690170699, 15.2690536073, 15.2690901437, 15.2691266791, 15.2691632137, 15.2691997473, 15.2692362801, 15.2692728118, 15.2693093427, 15.2693458726, 15.2693824017, 15.2694189297, 15.2694554569, 15.2694919831, 15.2695285085, 15.2695650328, 15.2696015563, 15.2696380788, 15.2696746005, 15.2697111211, 15.2697476409, 15.2697841597, 15.2698206777, 15.2698571947, 15.2698937107, 15.2699302259, 15.2699667401, 15.2700032534, 15.2700397657, 15.2700762772, 15.2701127877, 15.2701492973, 15.270185806, 15.2702223137, 15.2702588206, 15.2702953265, 15.2703318315, 15.2703683355, 15.2704048386, 15.2704413408, 15.2704778421, 15.2705143425, 15.2705508419, 15.2705873404, 15.270623838, 15.2706603347, 15.2706968305, 15.2707333253, 15.2707698192, 15.2708063121, 15.2708428042, 15.2708792953, 15.2709157855, 15.2709522748, 15.2709887632, 15.2710252506, 15.2710617371, 15.2710982227, 15.2711347074, 15.2711711911, 15.271207674, 15.2712441559, 15.2712806368, 15.2713171169, 15.271353596, 15.2713900742, 15.2714265515, 15.2714630279, 15.2714995033, 15.2715359779, 15.2715724515, 15.2716089242, 15.2716453959, 15.2716818667, 15.2717183367, 15.2717548056, 15.2717912737, 15.2718277409, 15.2718642071, 15.2719006724, 15.2719371368, 15.2719736002, 15.2720100628, 15.2720465244, 15.2720829851, 15.2721194449, 15.2721559037, 15.2721923616, 15.2722288187, 15.2722652747, 15.2723017299, 15.2723381842, 15.2723746375, 15.2724110899, 15.2724475414, 15.2724839919, 15.2725204416, 15.2725568903, 15.2725933381, 15.272629785, 15.2726662309, 15.272702676, 15.2727391201, 15.2727755633, 15.2728120056, 15.2728484469, 15.2728848874, 15.2729213269, 15.2729577655, 15.2729942031, 15.2730306399, 15.2730670757, 15.2731035106, 15.2731399446, 15.2731763777, 15.2732128099, 15.2732492411, 15.2732856714, 15.2733221008, 15.2733585293, 15.2733949568, 15.2734313835, 15.2734678092, 15.273504234, 15.2735406578, 15.2735770808, 15.2736135028, 15.2736499239, 15.2736863441, 15.2737227634, 15.2737591818, 15.2737955992, 15.2738320157, 15.2738684313, 15.273904846, 15.2739412598, 15.2739776726, 15.2740140845, 15.2740504955, 15.2740869056, 15.2741233148, 15.274159723, 15.2741961304, 15.2742325368, 15.2742689423, 15.2743053469, 15.2743417505, 15.2743781532, 15.2744145551, 15.274450956, 15.2744873559, 15.274523755, 15.2745601532, 15.2745965504, 15.2746329467, 15.2746693421, 15.2747057365, 15.2747421301, 15.2747785227, 15.2748149145, 15.2748513053, 15.2748876951, 15.2749240841, 15.2749604721, 15.2749968593, 15.2750332455, 15.2750696308, 15.2751060151, 15.2751423986, 15.2751787811, 15.2752151628, 15.2752515435, 15.2752879233, 15.2753243021, 15.2753606801, 15.2753970571, 15.2754334332, 15.2754698084, 15.2755061827, 15.2755425561, 15.2755789285, 15.2756153001, 15.2756516707, 15.2756880404, 15.2757244092, 15.275760777, 15.275797144, 15.27583351, 15.2758698751, 15.2759062393, 15.2759426026, 15.275978965, 15.2760153264, 15.276051687, 15.2760880466, 15.2761244053, 15.2761607631, 15.2761971199, 15.2762334759, 15.2762698309, 15.276306185, 15.2763425382, 15.2763788905, 15.2764152419, 15.2764515923, 15.2764879419, 15.2765242905, 15.2765606382, 15.276596985, 15.2766333309, 15.2766696758, 15.2767060199, 15.276742363, 15.2767787052, 15.2768150465, 15.2768513869, 15.2768877264, 15.2769240649, 15.2769604026, 15.2769967393, 15.2770330751, 15.27706941, 15.277105744, 15.277142077, 15.2771784092, 15.2772147404, 15.2772510707, 15.2772874001, 15.2773237286, 15.2773600562, 15.2773963828, 15.2774327086, 15.2774690334, 15.2775053573, 15.2775416803, 15.2775780024, 15.2776143236, 15.2776506438, 15.2776869632, 15.2777232816, 15.2777595991, 15.2777959157, 15.2778322314, 15.2778685462, 15.27790486, 15.277941173, 15.277977485, 15.2780137961, 15.2780501063, 15.2780864156, 15.278122724, 15.2781590314, 15.278195338, 15.2782316436, 15.2782679483, 15.2783042521, 15.278340555, 15.278376857, 15.2784131581, 15.2784494582, 15.2784857575, 15.2785220558, 15.2785583532, 15.2785946497, 15.2786309453, 15.2786672399, 15.2787035337, 15.2787398266, 15.2787761185, 15.2788124095, 15.2788486996, 15.2788849888, 15.2789212771, 15.2789575645, 15.2789938509, 15.2790301364, 15.2790664211, 15.2791027048, 15.2791389876, 15.2791752695, 15.2792115505, 15.2792478305, 15.2792841097, 15.2793203879, 15.2793566653, 15.2793929417, 15.2794292172, 15.2794654918, 15.2795017655, 15.2795380382, 15.2795743101, 15.2796105811, 15.2796468511, 15.2796831202, 15.2797193884, 15.2797556557, 15.2797919221, 15.2798281876, 15.2798644521, 15.2799007158, 15.2799369785, 15.2799732404, 15.2800095013, 15.2800457613, 15.2800820204, 15.2801182786, 15.2801545359, 15.2801907922, 15.2802270477, 15.2802633022, 15.2802995558, 15.2803358086, 15.2803720604, 15.2804083113, 15.2804445612, 15.2804808103, 15.2805170585, 15.2805533057, 15.2805895521, 15.2806257975, 15.280662042, 15.2806982856, 15.2807345283, 15.2807707701, 15.280807011, 15.280843251, 15.28087949, 15.2809157282, 15.2809519654, 15.2809882018, 15.2810244372, 15.2810606717, 15.2810969053, 15.281133138, 15.2811693697, 15.2812056006, 15.2812418306, 15.2812780596, 15.2813142878, 15.281350515, 15.2813867413, 15.2814229667, 15.2814591912, 15.2814954148, 15.2815316375, 15.2815678593, 15.2816040801, 15.2816403001, 15.2816765191, 15.2817127372, 15.2817489545, 15.2817851708, 15.2818213862, 15.2818576007, 15.2818938143, 15.281930027, 15.2819662387, 15.2820024496, 15.2820386595, 15.2820748686, 15.2821110767, 15.2821472839, 15.2821834903, 15.2822196957, 15.2822559002, 15.2822921038, 15.2823283064, 15.2823645082, 15.2824007091, 15.282436909, 15.2824731081, 15.2825093062, 15.2825455035, 15.2825816998, 15.2826178952, 15.2826540897, 15.2826902833, 15.282726476, 15.2827626678, 15.2827988587, 15.2828350487, 15.2828712377, 15.2829074259, 15.2829436131, 15.2829797995, 15.2830159849, 15.2830521694, 15.283088353, 15.2831245357, 15.2831607175, 15.2831968984, 15.2832330784, 15.2832692575, 15.2833054357, 15.2833416129, 15.2833777893, 15.2834139647, 15.2834501393, 15.2834863129, 15.2835224856, 15.2835586575, 15.2835948284, 15.2836309984, 15.2836671675, 15.2837033357, 15.283739503, 15.2837756694, 15.2838118348, 15.2838479994, 15.2838841631, 15.2839203258, 15.2839564877, 15.2839926486, 15.2840288086, 15.2840649678, 15.284101126, 15.2841372833, 15.2841734397, 15.2842095952, 15.2842457498, 15.2842819035, 15.2843180563, 15.2843542082, 15.2843903592, 15.2844265092, 15.2844626584, 15.2844988067, 15.284534954, 15.2845711005, 15.284607246, 15.2846433906, 15.2846795344, 15.2847156772, 15.2847518191, 15.2847879601, 15.2848241002, 15.2848602394, 15.2848963777, 15.2849325151, 15.2849686516, 15.2850047872, 15.2850409219, 15.2850770556, 15.2851131885, 15.2851493205, 15.2851854515, 15.2852215817, 15.2852577109, 15.2852938393, 15.2853299667, 15.2853660932, 15.2854022189, 15.2854383436, 15.2854744674, 15.2855105903, 15.2855467123, 15.2855828334, 15.2856189536, 15.2856550729, 15.2856911913, 15.2857273088, 15.2857634254, 15.2857995411, 15.2858356559, 15.2858717697, 15.2859078827, 15.2859439948, 15.2859801059, 15.2860162162, 15.2860523255, 15.286088434, 15.2861245415, 15.2861606482, 15.2861967539, 15.2862328587, 15.2862689627, 15.2863050657, 15.2863411678, 15.2863772691, 15.2864133694, 15.2864494688, 15.2864855673, 15.2865216649, 15.2865577616, 15.2865938574, 15.2866299523, 15.2866660463, 15.2867021394, 15.2867382316, 15.2867743229, 15.2868104133, 15.2868465027, 15.2868825913, 15.286918679, 15.2869547658, 15.2869908516, 15.2870269366, 15.2870630207, 15.2870991038, 15.2871351861, 15.2871712674, 15.2872073479, 15.2872434275, 15.2872795061, 15.2873155839, 15.2873516607, 15.2873877366, 15.2874238117, 15.2874598858, 15.2874959591, 15.2875320314, 15.2875681028, 15.2876041734, 15.287640243, 15.2876763117, 15.2877123795, 15.2877484465, 15.2877845125, 15.2878205776, 15.2878566418, 15.2878927052, 15.2879287676, 15.2879648291, 15.2880008897, 15.2880369494, 15.2880730082, 15.2881090661, 15.2881451232, 15.2881811793, 15.2882172345, 15.2882532888, 15.2882893422, 15.2883253947, 15.2883614463, 15.288397497, 15.2884335468, 15.2884695957, 15.2885056437, 15.2885416908, 15.288577737, 15.2886137823, 15.2886498267, 15.2886858702, 15.2887219128, 15.2887579545, 15.2887939953, 15.2888300352, 15.2888660742, 15.2889021123, 15.2889381495, 15.2889741858, 15.2890102211, 15.2890462556, 15.2890822892, 15.2891183219, 15.2891543537, 15.2891903846, 15.2892264146, 15.2892624437, 15.2892984719, 15.2893344992, 15.2893705256, 15.2894065511, 15.2894425757, 15.2894785994, 15.2895146222, 15.2895506441, 15.2895866651, 15.2896226852, 15.2896587044, 15.2896947227, 15.2897307401, 15.2897667566, 15.2898027722, 15.2898387869, 15.2898748007, 15.2899108136, 15.2899468256, 15.2899828367, 15.2900188469, 15.2900548562, 15.2900908647, 15.2901268722, 15.2901628788, 15.2901988845, 15.2902348893, 15.2902708932, 15.2903068963, 15.2903428984, 15.2903788996, 15.2904148999, 15.2904508994, 15.2904868979, 15.2905228955, 15.2905588922, 15.2905948881, 15.290630883, 15.2906668771, 15.2907028702, 15.2907388624, 15.2907748538, 15.2908108442, 15.2908468338, 15.2908828224, 15.2909188102, 15.290954797, 15.290990783, 15.2910267681, 15.2910627522, 15.2910987355, 15.2911347179, 15.2911706993, 15.2912066799, 15.2912426596, 15.2912786383, 15.2913146162, 15.2913505932, 15.2913865693, 15.2914225445, 15.2914585188, 15.2914944922, 15.2915304647, 15.2915664363, 15.291602407, 15.2916383768, 15.2916743457, 15.2917103137, 15.2917462808, 15.2917822471, 15.2918182124, 15.2918541768, 15.2918901403, 15.291926103, 15.2919620647, 15.2919980256, 15.2920339855, 15.2920699445, 15.2921059027, 15.29214186, 15.2921778163, 15.2922137718, 15.2922497264, 15.29228568, 15.2923216328, 15.2923575847, 15.2923935357, 15.2924294858, 15.2924654349, 15.2925013832, 15.2925373306, 15.2925732772, 15.2926092228, 15.2926451675, 15.2926811113, 15.2927170542, 15.2927529962, 15.2927889374, 15.2928248776, 15.292860817, 15.2928967554, 15.292932693, 15.2929686296, 15.2930045654, 15.2930405002, 15.2930764342, 15.2931123673, 15.2931482995, 15.2931842308, 15.2932201612, 15.2932560906, 15.2932920192, 15.293327947, 15.2933638738, 15.2933997997, 15.2934357247, 15.2934716488, 15.2935075721, 15.2935434944, 15.2935794159, 15.2936153364, 15.2936512561, 15.2936871748, 15.2937230927, 15.2937590097, 15.2937949257, 15.2938308409, 15.2938667552, 15.2939026686, 15.2939385811, 15.2939744927, 15.2940104034, 15.2940463133, 15.2940822222, 15.2941181302, 15.2941540374, 15.2941899436, 15.294225849, 15.2942617534, 15.294297657, 15.2943335597, 15.2943694615, 15.2944053623, 15.2944412623, 15.2944771614, 15.2945130596, 15.2945489569, 15.2945848534, 15.2946207489, 15.2946566435, 15.2946925373, 15.2947284301, 15.2947643221, 15.2948002131, 15.2948361033, 15.2948719926, 15.294907881, 15.2949437684, 15.294979655, 15.2950155407, 15.2950514256, 15.2950873095, 15.2951231925, 15.2951590746, 15.2951949559, 15.2952308362, 15.2952667157, 15.2953025943, 15.2953384719, 15.2953743487, 15.2954102246, 15.2954460996, 15.2954819737, 15.2955178469, 15.2955537192, 15.2955895907, 15.2956254612, 15.2956613308, 15.2956971996, 15.2957330675, 15.2957689344, 15.2958048005, 15.2958406657, 15.29587653, 15.2959123934, 15.2959482559, 15.2959841175, 15.2960199782, 15.2960558381, 15.296091697, 15.2961275551, 15.2961634122, 15.2961992685, 15.2962351239, 15.2962709784, 15.296306832, 15.2963426847, 15.2963785365, 15.2964143874, 15.2964502375, 15.2964860866, 15.2965219349, 15.2965577822, 15.2965936287, 15.2966294743, 15.296665319, 15.2967011628, 15.2967370057, 15.2967728477, 15.2968086888, 15.2968445291, 15.2968803684, 15.2969162069, 15.2969520444, 15.2969878811, 15.2970237169, 15.2970595518, 15.2970953858, 15.2971312189, 15.2971670512, 15.2972028825, 15.2972387129, 15.2972745425, 15.2973103712, 15.2973461989, 15.2973820258, 15.2974178518, 15.2974536769, 15.2974895012, 15.2975253245, 15.2975611469, 15.2975969685, 15.2976327891, 15.2976686089, 15.2977044278, 15.2977402458, 15.2977760629, 15.2978118791, 15.2978476944, 15.2978835089, 15.2979193224, 15.2979551351, 15.2979909468, 15.2980267577, 15.2980625677, 15.2980983768, 15.298134185, 15.2981699924, 15.2982057988, 15.2982416043, 15.298277409, 15.2983132128, 15.2983490157, 15.2983848177, 15.2984206188, 15.298456419, 15.2984922183, 15.2985280167, 15.2985638143, 15.298599611, 15.2986354067, 15.2986712016, 15.2987069956, 15.2987427887, 15.298778581, 15.2988143723, 15.2988501627, 15.2988859523, 15.298921741, 15.2989575288, 15.2989933156, 15.2990291017, 15.2990648868, 15.299100671, 15.2991364544, 15.2991722368, 15.2992080184, 15.2992437991, 15.2992795789, 15.2993153578, 15.2993511358, 15.2993869129, 15.2994226892, 15.2994584645, 15.299494239, 15.2995300126, 15.2995657853, 15.2996015571, 15.299637328, 15.2996730981, 15.2997088672, 15.2997446355, 15.2997804029, 15.2998161693, 15.299851935, 15.2998876997, 15.2999234635, 15.2999592264, 15.2999949885, 15.3000307497, 15.30006651, 15.3001022694, 15.3001380279, 15.3001737855, 15.3002095422, 15.3002452981, 15.3002810531, 15.3003168071, 15.3003525603, 15.3003883126, 15.3004240641, 15.3004598146, 15.3004955642, 15.300531313, 15.3005670609, 15.3006028079, 15.300638554, 15.3006742992, 15.3007100436, 15.300745787, 15.3007815296, 15.3008172712, 15.300853012, 15.300888752, 15.300924491, 15.3009602291, 15.3009959664, 15.3010317027, 15.3010674382, 15.3011031728, 15.3011389065, 15.3011746394, 15.3012103713, 15.3012461024, 15.3012818325, 15.3013175618, 15.3013532902, 15.3013890177, 15.3014247444, 15.3014604701, 15.301496195, 15.301531919, 15.3015676421, 15.3016033643, 15.3016390856, 15.301674806, 15.3017105256, 15.3017462443, 15.3017819621, 15.301817679, 15.301853395, 15.3018891101, 15.3019248244, 15.3019605377, 15.3019962502, 15.3020319618, 15.3020676725, 15.3021033824, 15.3021390913, 15.3021747994, 15.3022105065, 15.3022462128, 15.3022819183, 15.3023176228, 15.3023533264, 15.3023890292, 15.3024247311, 15.3024604321, 15.3024961322, 15.3025318314, 15.3025675297, 15.3026032272, 15.3026389238, 15.3026746195, 15.3027103143, 15.3027460082, 15.3027817013, 15.3028173934, 15.3028530847, 15.3028887751, 15.3029244646, 15.3029601532, 15.302995841, 15.3030315279, 15.3030672138, 15.3031028989, 15.3031385832, 15.3031742665, 15.3032099489, 15.3032456305, 15.3032813112, 15.303316991, 15.3033526699, 15.303388348, 15.3034240251, 15.3034597014, 15.3034953768, 15.3035310513, 15.3035667249, 15.3036023977, 15.3036380695, 15.3036737405, 15.3037094106, 15.3037450798, 15.3037807482, 15.3038164156, 15.3038520822, 15.3038877479, 15.3039234127, 15.3039590766, 15.3039947397, 15.3040304018, 15.3040660631, 15.3041017235, 15.304137383, 15.3041730417, 15.3042086994, 15.3042443563, 15.3042800123, 15.3043156674, 15.3043513217, 15.304386975, 15.3044226275, 15.3044582791, 15.3044939298, 15.3045295796, 15.3045652286, 15.3046008766, 15.3046365238, 15.3046721701, 15.3047078155, 15.3047434601, 15.3047791037, 15.3048147465, 15.3048503884, 15.3048860294, 15.3049216696, 15.3049573088, 15.3049929472, 15.3050285847, 15.3050642213, 15.3050998571, 15.3051354919, 15.3051711259, 15.305206759, 15.3052423912, 15.3052780226, 15.305313653, 15.3053492826, 15.3053849113, 15.3054205391, 15.3054561661, 15.3054917921, 15.3055274173, 15.3055630416, 15.305598665, 15.3056342875, 15.3056699092, 15.30570553, 15.3057411499, 15.3057767689, 15.3058123871, 15.3058480043, 15.3058836207, 15.3059192362, 15.3059548508, 15.3059904646, 15.3060260774, 15.3060616894, 15.3060973005, 15.3061329108, 15.3061685201, 15.3062041286, 15.3062397362, 15.3062753429, 15.3063109487, 15.3063465537, 15.3063821578, 15.306417761, 15.3064533633, 15.3064889647, 15.3065245653, 15.306560165, 15.3065957638, 15.3066313617, 15.3066669588, 15.3067025549, 15.3067381502, 15.3067737446, 15.3068093382, 15.3068449308, 15.3068805226, 15.3069161135, 15.3069517035, 15.3069872927, 15.307022881, 15.3070584684, 15.3070940549, 15.3071296405, 15.3071652253, 15.3072008091, 15.3072363921, 15.3072719743, 15.3073075555, 15.3073431359, 15.3073787154, 15.307414294, 15.3074498717, 15.3074854486, 15.3075210246, 15.3075565997, 15.3075921739, 15.3076277473, 15.3076633197, 15.3076988913, 15.307734462, 15.3077700319, 15.3078056009, 15.3078411689, 15.3078767362, 15.3079123025, 15.307947868, 15.3079834325, 15.3080189962, 15.3080545591, 15.308090121, 15.3081256821, 15.3081612423, 15.3081968016, 15.3082323601, 15.3082679176, 15.3083034743, 15.3083390301, 15.3083745851, 15.3084101391, 15.3084456923, 15.3084812446, 15.3085167961, 15.3085523466, 15.3085878963, 15.3086234451, 15.3086589931, 15.3086945401, 15.3087300863, 15.3087656316, 15.308801176, 15.3088367196, 15.3088722623, 15.3089078041, 15.308943345, 15.308978885, 15.3090144242, 15.3090499625, 15.3090854999, 15.3091210365, 15.3091565722, 15.309192107, 15.3092276409, 15.3092631739, 15.3092987061, 15.3093342374, 15.3093697678, 15.3094052974, 15.309440826, 15.3094763538, 15.3095118808, 15.3095474068, 15.309582932, 15.3096184563, 15.3096539797, 15.3096895023, 15.3097250239, 15.3097605447, 15.3097960647, 15.3098315837, 15.3098671019, 15.3099026192, 15.3099381356, 15.3099736512, 15.3100091658, 15.3100446796, 15.3100801926, 15.3101157046, 15.3101512158, 15.3101867261, 15.3102222356, 15.3102577441, 15.3102932518, 15.3103287586, 15.3103642646, 15.3103997696, 15.3104352738, 15.3104707771, 15.3105062796, 15.3105417811, 15.3105772818, 15.3106127817, 15.3106482806, 15.3106837787, 15.3107192759, 15.3107547722, 15.3107902677, 15.3108257623, 15.310861256, 15.3108967488, 15.3109322408, 15.3109677318, 15.3110032221, 15.3110387114, 15.3110741999, 15.3111096875, 15.3111451742, 15.3111806601, 15.311216145, 15.3112516291, 15.3112871124, 15.3113225947, 15.3113580762, 15.3113935568, 15.3114290366, 15.3114645154, 15.3114999934, 15.3115354706, 15.3115709468, 15.3116064222, 15.3116418967, 15.3116773703, 15.3117128431, 15.311748315, 15.311783786, 15.3118192562, 15.3118547254, 15.3118901939, 15.3119256614, 15.311961128, 15.3119965938, 15.3120320587, 15.3120675228, 15.312102986, 15.3121384483, 15.3121739097, 15.3122093702, 15.3122448299, 15.3122802887, 15.3123157467, 15.3123512038, 15.31238666, 15.3124221153, 15.3124575697, 15.3124930233, 15.312528476, 15.3125639279, 15.3125993789, 15.312634829, 15.3126702782, 15.3127057266, 15.312741174, 15.3127766207, 15.3128120664, 15.3128475113, 15.3128829553, 15.3129183984, 15.3129538407, 15.3129892821, 15.3130247226, 15.3130601622, 15.313095601, 15.3131310389, 15.313166476, 15.3132019121, 15.3132373474, 15.3132727819, 15.3133082154, 15.3133436481, 15.3133790799, 15.3134145109, 15.313449941, 15.3134853702, 15.3135207985, 15.313556226, 15.3135916526, 15.3136270783, 15.3136625032, 15.3136979271, 15.3137333503, 15.3137687725, 15.3138041939, 15.3138396144, 15.313875034, 15.3139104528, 15.3139458707, 15.3139812877, 15.3140167039, 15.3140521192, 15.3140875336, 15.3141229472, 15.3141583599, 15.3141937717, 15.3142291826, 15.3142645927, 15.3143000019, 15.3143354102, 15.3143708177, 15.3144062243, 15.31444163, 15.3144770349, 15.3145124389, 15.314547842, 15.3145832443, 15.3146186457, 15.3146540462, 15.3146894458, 15.3147248446, 15.3147602425, 15.3147956396, 15.3148310357, 15.3148664311, 15.3149018255, 15.3149372191, 15.3149726118, 15.3150080036, 15.3150433946, 15.3150787847, 15.3151141739, 15.3151495623, 15.3151849498, 15.3152203364, 15.3152557221, 15.315291107, 15.315326491, 15.3153618742, 15.3153972565, 15.3154326379, 15.3154680185, 15.3155033981, 15.315538777, 15.3155741549, 15.315609532, 15.3156449082, 15.3156802835, 15.315715658, 15.3157510316, 15.3157864044, 15.3158217763, 15.3158571473, 15.3158925174, 15.3159278867, 15.3159632551, 15.3159986226, 15.3160339893, 15.3160693551, 15.31610472, 15.3161400841, 15.3161754473, 15.3162108097, 15.3162461711, 15.3162815317, 15.3163168915, 15.3163522504, 15.3163876084, 15.3164229655, 15.3164583218, 15.3164936772, 15.3165290317, 15.3165643854, 15.3165997382, 15.3166350901, 15.3166704412, 15.3167057914, 15.3167411408, 15.3167764892, 15.3168118369, 15.3168471836, 15.3168825295, 15.3169178745, 15.3169532186, 15.3169885619, 15.3170239043, 15.3170592459, 15.3170945866, 15.3171299264, 15.3171652653, 15.3172006034, 15.3172359406, 15.317271277, 15.3173066125, 15.3173419471, 15.3173772809, 15.3174126138, 15.3174479458, 15.317483277, 15.3175186073, 15.3175539367, 15.3175892653, 15.317624593, 15.3176599198, 15.3176952458, 15.3177305709, 15.3177658951, 15.3178012185, 15.317836541, 15.3178718627, 15.3179071834, 15.3179425034, 15.3179778224, 15.3180131406, 15.3180484579, 15.3180837744, 15.31811909, 15.3181544047, 15.3181897186, 15.3182250316, 15.3182603437, 15.318295655, 15.3183309654, 15.3183662749, 15.3184015836, 15.3184368914, 15.3184721984, 15.3185075045, 15.3185428097, 15.3185781141, 15.3186134176, 15.3186487202, 15.318684022, 15.3187193229, 15.3187546229, 15.3187899221, 15.3188252204, 15.3188605179, 15.3188958144, 15.3189311102, 15.318966405, 15.319001699, 15.3190369921, 15.3190722844, 15.3191075758, 15.3191428664, 15.319178156, 15.3192134449, 15.3192487328, 15.3192840199, 15.3193193061, 15.3193545915, 15.319389876, 15.3194251596, 15.3194604424, 15.3194957243, 15.3195310054, 15.3195662856, 15.3196015649, 15.3196368433, 15.3196721209, 15.3197073977, 15.3197426736, 15.3197779486, 15.3198132227, 15.319848496, 15.3198837684, 15.31991904, 15.3199543107, 15.3199895805, 15.3200248495, 15.3200601176, 15.3200953849, 15.3201306512, 15.3201659168, 15.3202011814, 15.3202364452, 15.3202717082, 15.3203069703, 15.3203422315, 15.3203774918, 15.3204127513, 15.32044801, 15.3204832677, 15.3205185246, 15.3205537807, 15.3205890359, 15.3206242902, 15.3206595436, 15.3206947962, 15.320730048, 15.3207652989, 15.3208005489, 15.320835798, 15.3208710463, 15.3209062938, 15.3209415403, 15.320976786, 15.3210120309, 15.3210472749, 15.321082518, 15.3211177603, 15.3211530017, 15.3211882422, 15.3212234819, 15.3212587207, 15.3212939587, 15.3213291958, 15.321364432, 15.3213996674, 15.3214349019, 15.3214701356, 15.3215053684, 15.3215406003, 15.3215758314, 15.3216110616, 15.321646291, 15.3216815195, 15.3217167471, 15.3217519739, 15.3217871998, 15.3218224249, 15.3218576491, 15.3218928724, 15.3219280949, 15.3219633165, 15.3219985373, 15.3220337572, 15.3220689762, 15.3221041944, 15.3221394117, 15.3221746282, 15.3222098437, 15.3222450585, 15.3222802724, 15.3223154854, 15.3223506975, 15.3223859088, 15.3224211193, 15.3224563289, 15.3224915376, 15.3225267455, 15.3225619525, 15.3225971586, 15.3226323639, 15.3226675683, 15.3227027719, 15.3227379746, 15.3227731765, 15.3228083774, 15.3228435776, 15.3228787769, 15.3229139753, 15.3229491728, 15.3229843695, 15.3230195654, 15.3230547603, 15.3230899545, 15.3231251477, 15.3231603401, 15.3231955317, 15.3232307224, 15.3232659122, 15.3233011012, 15.3233362893, 15.3233714765, 15.3234066629, 15.3234418485, 15.3234770332, 15.323512217, 15.3235473999, 15.323582582, 15.3236177633, 15.3236529437, 15.3236881232, 15.3237233019, 15.3237584797, 15.3237936567, 15.3238288328, 15.323864008, 15.3238991824, 15.3239343559, 15.3239695286, 15.3240047004, 15.3240398714, 15.3240750415, 15.3241102107, 15.3241453791, 15.3241805466, 15.3242157133, 15.3242508791, 15.3242860441, 15.3243212082, 15.3243563714, 15.3243915338, 15.3244266953, 15.324461856, 15.3244970158, 15.3245321747, 15.3245673328, 15.3246024901, 15.3246376465, 15.324672802, 15.3247079567, 15.3247431105, 15.3247782635, 15.3248134156, 15.3248485668, 15.3248837172, 15.3249188667, 15.3249540154, 15.3249891632, 15.3250243102, 15.3250594563, 15.3250946016, 15.3251297459, 15.3251648895, 15.3252000322, 15.325235174, 15.325270315, 15.3253054551, 15.3253405943, 15.3253757328, 15.3254108703, 15.325446007, 15.3254811428, 15.3255162778, 15.3255514119, 15.3255865452, 15.3256216776, 15.3256568092, 15.3256919399, 15.3257270697, 15.3257621987, 15.3257973269, 15.3258324541, 15.3258675806, 15.3259027061, 15.3259378309, 15.3259729547, 15.3260080777, 15.3260431999, 15.3260783212, 15.3261134416, 15.3261485612, 15.3261836799, 15.3262187978, 15.3262539148, 15.326289031, 15.3263241463, 15.3263592608, 15.3263943744, 15.3264294871, 15.326464599, 15.3264997101, 15.3265348202, 15.3265699296, 15.326605038, 15.3266401457, 15.3266752524, 15.3267103583, 15.3267454634, 15.3267805676, 15.326815671, 15.3268507735, 15.3268858751, 15.3269209759, 15.3269560758, 15.3269911749, 15.3270262731, 15.3270613705, 15.327096467, 15.3271315627, 15.3271666575, 15.3272017515, 15.3272368446, 15.3272719368, 15.3273070282, 15.3273421187, 15.3273772084, 15.3274122973, 15.3274473853, 15.3274824724, 15.3275175587, 15.3275526441, 15.3275877287, 15.3276228124, 15.3276578952, 15.3276929772, 15.3277280584, 15.3277631387, 15.3277982182, 15.3278332968, 15.3278683745, 15.3279034514, 15.3279385274, 15.3279736026, 15.3280086769, 15.3280437504, 15.3280788231, 15.3281138948, 15.3281489658, 15.3281840358, 15.328219105, 15.3282541734, 15.3282892409, 15.3283243076, 15.3283593734, 15.3283944384, 15.3284295025, 15.3284645657, 15.3284996281, 15.3285346897, 15.3285697504, 15.3286048102, 15.3286398692, 15.3286749273, 15.3287099846, 15.3287450411, 15.3287800966, 15.3288151514, 15.3288502052, 15.3288852583, 15.3289203105, 15.3289553618, 15.3289904123, 15.3290254619, 15.3290605106, 15.3290955586, 15.3291306056, 15.3291656519, 15.3292006972, 15.3292357417, 15.3292707854, 15.3293058282, 15.3293408702, 15.3293759113, 15.3294109515, 15.3294459909, 15.3294810295, 15.3295160672, 15.3295511041, 15.3295861401, 15.3296211752, 15.3296562095, 15.329691243, 15.3297262756, 15.3297613073, 15.3297963382, 15.3298313683, 15.3298663975, 15.3299014258, 15.3299364533, 15.32997148, 15.3300065058, 15.3300415307, 15.3300765548, 15.330111578, 15.3301466004, 15.330181622, 15.3302166427, 15.3302516625, 15.3302866815, 15.3303216997, 15.330356717, 15.3303917334, 15.330426749, 15.3304617637, 15.3304967776, 15.3305317907, 15.3305668029, 15.3306018142, 15.3306368247, 15.3306718344, 15.3307068432, 15.3307418511, 15.3307768582, 15.3308118645, 15.3308468699, 15.3308818744, 15.3309168781, 15.330951881, 15.330986883, 15.3310218841, 15.3310568844, 15.3310918839, 15.3311268825, 15.3311618802, 15.3311968772, 15.3312318732, 15.3312668684, 15.3313018628, 15.3313368563, 15.331371849, 15.3314068408, 15.3314418317, 15.3314768219, 15.3315118111, 15.3315467995, 15.3315817871, 15.3316167738, 15.3316517597, 15.3316867447, 15.3317217289, 15.3317567123, 15.3317916947, 15.3318266764, 15.3318616572, 15.3318966371, 15.3319316162, 15.3319665944, 15.3320015718, 15.3320365484, 15.3320715241, 15.3321064989, 15.3321414729, 15.3321764461, 15.3322114184, 15.3322463898, 15.3322813604, 15.3323163302, 15.3323512991, 15.3323862672, 15.3324212344, 15.3324562008, 15.3324911663, 15.332526131, 15.3325610948, 15.3325960578, 15.3326310199, 15.3326659812, 15.3327009417, 15.3327359012, 15.33277086, 15.3328058179, 15.3328407749, 15.3328757312, 15.3329106865, 15.332945641, 15.3329805947, 15.3330155475, 15.3330504995, 15.3330854506, 15.3331204009, 15.3331553503, 15.3331902989, 15.3332252466, 15.3332601935, 15.3332951396, 15.3333300848, 15.3333650291, 15.3333999726, 15.3334349153, 15.3334698571, 15.3335047981, 15.3335397382, 15.3335746775, 15.3336096159, 15.3336445535, 15.3336794902, 15.3337144261, 15.3337493611, 15.3337842953, 15.3338192287, 15.3338541612, 15.3338890929, 15.3339240237, 15.3339589536, 15.3339938828, 15.334028811, 15.3340637385, 15.3340986651, 15.3341335908, 15.3341685157, 15.3342034397, 15.3342383629, 15.3342732853, 15.3343082068, 15.3343431275, 15.3343780473, 15.3344129663, 15.3344478844, 15.3344828017, 15.3345177182, 15.3345526338, 15.3345875485, 15.3346224624, 15.3346573755, 15.3346922877, 15.3347271991, 15.3347621096, 15.3347970193, 15.3348319281, 15.3348668361, 15.3349017433, 15.3349366496, 15.334971555, 15.3350064596, 15.3350413634, 15.3350762663, 15.3351111684, 15.3351460697, 15.3351809701, 15.3352158696, 15.3352507683, 15.3352856662, 15.3353205632, 15.3353554594, 15.3353903547, 15.3354252492, 15.3354601428, 15.3354950356, 15.3355299276, 15.3355648187, 15.3355997089, 15.3356345984, 15.3356694869, 15.3357043747, 15.3357392616, 15.3357741476, 15.3358090328, 15.3358439172, 15.3358788007, 15.3359136834, 15.3359485652, 15.3359834462, 15.3360183263, 15.3360532056, 15.3360880841, 15.3361229617, 15.3361578385, 15.3361927144, 15.3362275895, 15.3362624637, 15.3362973371, 15.3363322097, 15.3363670814, 15.3364019523, 15.3364368223, 15.3364716915, 15.3365065598, 15.3365414273, 15.336576294, 15.3366111598, 15.3366460247, 15.3366808889, 15.3367157522, 15.3367506146, 15.3367854762, 15.336820337, 15.3368551969, 15.336890056, 15.3369249142, 15.3369597716, 15.3369946281, 15.3370294838, 15.3370643387, 15.3370991927, 15.3371340459, 15.3371688982, 15.3372037497, 15.3372386004, 15.3372734502, 15.3373082991, 15.3373431473, 15.3373779946, 15.337412841, 15.3374476866, 15.3374825314, 15.3375173753, 15.3375522184, 15.3375870606, 15.337621902, 15.3376567425, 15.3376915823, 15.3377264211, 15.3377612592, 15.3377960963, 15.3378309327, 15.3378657682, 15.3379006029, 15.3379354367, 15.3379702697, 15.3380051018, 15.3380399331, 15.3380747636, 15.3381095932, 15.338144422, 15.3381792499, 15.338214077, 15.3382489033, 15.3382837287, 15.3383185532, 15.338353377, 15.3383881999, 15.3384230219, 15.3384578431, 15.3384926635, 15.338527483, 15.3385623017, 15.3385971196, 15.3386319366, 15.3386667528, 15.3387015681, 15.3387363826, 15.3387711962, 15.338806009, 15.338840821, 15.3388756321, 15.3389104424, 15.3389452519, 15.3389800605, 15.3390148683, 15.3390496752, 15.3390844813, 15.3391192865, 15.3391540909, 15.3391888945, 15.3392236972, 15.3392584991, 15.3392933002, 15.3393281004, 15.3393628998, 15.3393976983, 15.339432496, 15.3394672929, 15.3395020889, 15.339536884, 15.3395716784, 15.3396064719, 15.3396412645, 15.3396760564, 15.3397108473, 15.3397456375, 15.3397804268, 15.3398152153, 15.3398500029, 15.3398847897, 15.3399195756, 15.3399543607, 15.339989145, 15.3400239284, 15.340058711, 15.3400934928, 15.3401282737, 15.3401630538, 15.340197833, 15.3402326114, 15.340267389, 15.3403021657, 15.3403369416, 15.3403717166, 15.3404064909, 15.3404412642, 15.3404760368, 15.3405108085, 15.3405455793, 15.3405803493, 15.3406151185, 15.3406498869, 15.3406846544, 15.340719421, 15.3407541869, 15.3407889519, 15.340823716, 15.3408584793, 15.3408932418, 15.3409280034, 15.3409627643, 15.3409975242, 15.3410322833, 15.3410670416, 15.3411017991, 15.3411365557, 15.3411713115, 15.3412060664, 15.3412408205, 15.3412755738, 15.3413103262, 15.3413450778, 15.3413798286, 15.3414145785, 15.3414493276, 15.3414840758, 15.3415188232, 15.3415535698, 15.3415883156, 15.3416230605, 15.3416578045, 15.3416925477, 15.3417272901, 15.3417620317, 15.3417967724, 15.3418315123, 15.3418662513, 15.3419009895, 15.3419357269, 15.3419704634, 15.3420051991, 15.342039934, 15.342074668, 15.3421094012, 15.3421441335, 15.3421788651, 15.3422135957, 15.3422483256, 15.3422830546, 15.3423177828, 15.3423525101, 15.3423872366, 15.3424219623, 15.3424566871, 15.3424914111, 15.3425261342, 15.3425608565, 15.342595578, 15.3426302987, 15.3426650185, 15.3426997375, 15.3427344556, 15.3427691729, 15.3428038894, 15.342838605, 15.3428733198, 15.3429080338, 15.3429427469, 15.3429774592, 15.3430121707, 15.3430468813, 15.3430815911, 15.3431163, 15.3431510082, 15.3431857154, 15.3432204219, 15.3432551275, 15.3432898323, 15.3433245362, 15.3433592393, 15.3433939416, 15.3434286431, 15.3434633437, 15.3434980434, 15.3435327424, 15.3435674405, 15.3436021377, 15.3436368342, 15.3436715298, 15.3437062245, 15.3437409185, 15.3437756116, 15.3438103038, 15.3438449953, 15.3438796858, 15.3439143756, 15.3439490645, 15.3439837526, 15.3440184399, 15.3440531263, 15.3440878119, 15.3441224966, 15.3441571806, 15.3441918637, 15.3442265459, 15.3442612273, 15.3442959079, 15.3443305877, 15.3443652666, 15.3443999447, 15.3444346219, 15.3444692983, 15.3445039739, 15.3445386487, 15.3445733226, 15.3446079957, 15.3446426679, 15.3446773394, 15.3447120099, 15.3447466797, 15.3447813486, 15.3448160167, 15.3448506839, 15.3448853504, 15.3449200159, 15.3449546807, 15.3449893446, 15.3450240077, 15.34505867, 15.3450933314, 15.345127992, 15.3451626517, 15.3451973107, 15.3452319687, 15.345266626, 15.3453012824, 15.345335938, 15.3453705928, 15.3454052467, 15.3454398998, 15.3454745521, 15.3455092035, 15.3455438541, 15.3455785039, 15.3456131528, 15.3456478009, 15.3456824482, 15.3457170946, 15.3457517402, 15.345786385, 15.345821029, 15.3458556721, 15.3458903143, 15.3459249558, 15.3459595964, 15.3459942362, 15.3460288751, 15.3460635133, 15.3460981505, 15.346132787, 15.3461674226, 15.3462020574, 15.3462366914, 15.3462713245, 15.3463059568, 15.3463405883, 15.3463752189, 15.3464098487, 15.3464444777, 15.3464791059, 15.3465137332, 15.3465483596, 15.3465829853, 15.3466176101, 15.3466522341, 15.3466868573, 15.3467214796, 15.3467561011, 15.3467907218, 15.3468253416, 15.3468599606, 15.3468945788, 15.3469291961, 15.3469638126, 15.3469984283, 15.3470330431, 15.3470676572, 15.3471022704, 15.3471368827, 15.3471714942, 15.3472061049, 15.3472407148, 15.3472753238, 15.3473099321, 15.3473445394, 15.347379146, 15.3474137517, 15.3474483566, 15.3474829606, 15.3475175639, 15.3475521663, 15.3475867678, 15.3476213686, 15.3476559685, 15.3476905676, 15.3477251658, 15.3477597632, 15.3477943598, 15.3478289556, 15.3478635505, 15.3478981446, 15.3479327379, 15.3479673303, 15.3480019219, 15.3480365127, 15.3480711027, 15.3481056918, 15.3481402801, 15.3481748675, 15.3482094542, 15.34824404, 15.348278625, 15.3483132091, 15.3483477924, 15.3483823749, 15.3484169566, 15.3484515374, 15.3484861174, 15.3485206966, 15.3485552749, 15.3485898524, 15.3486244291, 15.348659005, 15.34869358, 15.3487281542, 15.3487627276, 15.3487973002, 15.3488318719, 15.3488664428, 15.3489010128, 15.348935582, 15.3489701505, 15.349004718, 15.3490392848, 15.3490738507, 15.3491084158, 15.34914298, 15.3491775435, 15.3492121061, 15.3492466679, 15.3492812288, 15.3493157889, 15.3493503482, 15.3493849067, 15.3494194643, 15.3494540212, 15.3494885771, 15.3495231323, 15.3495576866, 15.3495922401, 15.3496267928, 15.3496613446, 15.3496958957, 15.3497304458, 15.3497649952, 15.3497995437, 15.3498340915, 15.3498686383, 15.3499031844, 15.3499377296, 15.349972274, 15.3500068176, 15.3500413603, 15.3500759023, 15.3501104433, 15.3501449836, 15.3501795231, 15.3502140617, 15.3502485994, 15.3502831364, 15.3503176725, 15.3503522078, 15.3503867423, 15.350421276, 15.3504558088, 15.3504903408, 15.350524872, 15.3505594023, 15.3505939318, 15.3506284605, 15.3506629884, 15.3506975154, 15.3507320416, 15.350766567, 15.3508010916, 15.3508356153, 15.3508701382, 15.3509046603, 15.3509391815, 15.350973702, 15.3510082216, 15.3510427404, 15.3510772583, 15.3511117754, 15.3511462917, 15.3511808072, 15.3512153219, 15.3512498357, 15.3512843487, 15.3513188608, 15.3513533722, 15.3513878827, 15.3514223924, 15.3514569013, 15.3514914093, 15.3515259165, 15.3515604229, 15.3515949285, 15.3516294332, 15.3516639372, 15.3516984403, 15.3517329425, 15.351767444, 15.3518019446, 15.3518364444, 15.3518709433, 15.3519054415, 15.3519399388, 15.3519744353, 15.352008931, 15.3520434258, 15.3520779198, 15.352112413, 15.3521469054, 15.3521813969, 15.3522158876, 15.3522503775, 15.3522848666, 15.3523193548, 15.3523538423, 15.3523883289, 15.3524228146, 15.3524572996, 15.3524917837, 15.352526267, 15.3525607495, 15.3525952311, 15.352629712, 15.352664192, 15.3526986711, 15.3527331495, 15.352767627, 15.3528021037, 15.3528365796, 15.3528710547, 15.3529055289, 15.3529400023, 15.3529744749, 15.3530089467, 15.3530434176, 15.3530778877, 15.353112357, 15.3531468255, 15.3531812931, 15.35321576, 15.353250226, 15.3532846911, 15.3533191555, 15.353353619, 15.3533880817, 15.3534225436, 15.3534570047, 15.3534914649, 15.3535259243, 15.3535603829, 15.3535948407, 15.3536292976, 15.3536637537, 15.353698209, 15.3537326635, 15.3537671172, 15.35380157, 15.353836022, 15.3538704732, 15.3539049236, 15.3539393731, 15.3539738218, 15.3540082697, 15.3540427168, 15.354077163, 15.3541116085, 15.3541460531, 15.3541804968, 15.3542149398, 15.3542493819, 15.3542838233, 15.3543182638, 15.3543527034, 15.3543871423, 15.3544215803, 15.3544560175, 15.3544904539, 15.3545248894, 15.3545593242, 15.3545937581, 15.3546281912, 15.3546626235, 15.3546970549, 15.3547314856, 15.3547659154, 15.3548003444, 15.3548347725, 15.3548691999, 15.3549036264, 15.3549380521, 15.354972477, 15.355006901, 15.3550413243, 15.3550757467, 15.3551101683, 15.355144589, 15.355179009, 15.3552134281, 15.3552478464, 15.3552822639, 15.3553166806, 15.3553510964, 15.3553855114, 15.3554199257, 15.355454339, 15.3554887516, 15.3555231633, 15.3555575743, 15.3555919844, 15.3556263936, 15.3556608021, 15.3556952097, 15.3557296166, 15.3557640225, 15.3557984277, 15.3558328321, 15.3558672356, 15.3559016383, 15.3559360402, 15.3559704413, 15.3560048416, 15.356039241, 15.3560736396, 15.3561080374, 15.3561424344, 15.3561768305, 15.3562112258, 15.3562456204, 15.3562800141, 15.3563144069, 15.356348799, 15.3563831902, 15.3564175806, 15.3564519702, 15.356486359, 15.356520747, 15.3565551341, 15.3565895204, 15.3566239059, 15.3566582906, 15.3566926744, 15.3567270575, 15.3567614397, 15.3567958211, 15.3568302017, 15.3568645814, 15.3568989604, 15.3569333385, 15.3569677158, 15.3570020923, 15.3570364679, 15.3570708428, 15.3571052168, 15.35713959, 15.3571739624, 15.357208334, 15.3572427047, 15.3572770746, 15.3573114438, 15.357345812, 15.3573801795, 15.3574145462, 15.357448912, 15.357483277, 15.3575176412, 15.3575520046, 15.3575863672, 15.3576207289, 15.3576550899, 15.35768945, 15.3577238093, 15.3577581677, 15.3577925254, 15.3578268822, 15.3578612382, 15.3578955934, 15.3579299478, 15.3579643014, 15.3579986541, 15.358033006, 15.3580673571, 15.3581017074, 15.3581360569, 15.3581704056, 15.3582047534, 15.3582391004, 15.3582734466, 15.358307792, 15.3583421366, 15.3583764803, 15.3584108233, 15.3584451654, 15.3584795067, 15.3585138471, 15.3585481868, 15.3585825257, 15.3586168637, 15.3586512009, 15.3586855373, 15.3587198729, 15.3587542076, 15.3587885416, 15.3588228747, 15.358857207, 15.3588915385, 15.3589258692, 15.358960199, 15.3589945281, 15.3590288563, 15.3590631837, 15.3590975103, 15.359131836, 15.359166161, 15.3592004851, 15.3592348085, 15.359269131, 15.3593034527, 15.3593377735, 15.3593720936, 15.3594064128, 15.3594407312, 15.3594750488, 15.3595093656, 15.3595436816, 15.3595779968, 15.3596123111, 15.3596466246, 15.3596809374, 15.3597152492, 15.3597495603, 15.3597838706, 15.35981818, 15.3598524887, 15.3598867965, 15.3599211035, 15.3599554097, 15.359989715, 15.3600240196, 15.3600583233, 15.3600926262, 15.3601269283, 15.3601612296, 15.3601955301, 15.3602298297, 15.3602641286, 15.3602984266, 15.3603327238, 15.3603670202, 15.3604013158, 15.3604356106, 15.3604699045, 15.3605041977, 15.36053849, 15.3605727815, 15.3606070722, 15.360641362, 15.3606756511, 15.3607099393, 15.3607442268, 15.3607785134, 15.3608127992, 15.3608470842, 15.3608813684, 15.3609156517, 15.3609499342, 15.360984216, 15.3610184969, 15.361052777, 15.3610870563, 15.3611213347, 15.3611556124, 15.3611898892, 15.3612241653, 15.3612584405, 15.3612927149, 15.3613269884, 15.3613612612, 15.3613955332, 15.3614298043, 15.3614640746, 15.3614983441, 15.3615326128, 15.3615668807, 15.3616011478, 15.3616354141, 15.3616696795, 15.3617039441, 15.3617382079, 15.3617724709, 15.3618067331, 15.3618409945, 15.3618752551, 15.3619095148, 15.3619437737, 15.3619780319, 15.3620122892, 15.3620465457, 15.3620808013, 15.3621150562, 15.3621493102, 15.3621835635, 15.3622178159, 15.3622520675, 15.3622863183, 15.3623205683, 15.3623548175, 15.3623890658, 15.3624233134, 15.3624575601, 15.362491806, 15.3625260512, 15.3625602954, 15.3625945389, 15.3626287816, 15.3626630235, 15.3626972645, 15.3627315047, 15.3627657442, 15.3627999828, 15.3628342206, 15.3628684575, 15.3629026937, 15.3629369291, 15.3629711636, 15.3630053973, 15.3630396303, 15.3630738624, 15.3631080937, 15.3631423241, 15.3631765538, 15.3632107827, 15.3632450107, 15.363279238, 15.3633134644, 15.36334769, 15.3633819148, 15.3634161388, 15.3634503619, 15.3634845843, 15.3635188059, 15.3635530266, 15.3635872465, 15.3636214656, 15.3636556839, 15.3636899014, 15.3637241181, 15.363758334, 15.363792549, 15.3638267633, 15.3638609767, 15.3638951894, 15.3639294012, 15.3639636122, 15.3639978224, 15.3640320317, 15.3640662403, 15.3641004481, 15.364134655, 15.3641688611, 15.3642030665, 15.364237271, 15.3642714747, 15.3643056776, 15.3643398797, 15.3643740809, 15.3644082814, 15.364442481, 15.3644766799, 15.3645108779, 15.3645450751, 15.3645792715, 15.3646134671, 15.3646476619, 15.3646818559, 15.364716049, 15.3647502414, 15.3647844329, 15.3648186237, 15.3648528136, 15.3648870027, 15.364921191, 15.3649553785, 15.3649895652, 15.365023751, 15.3650579361, 15.3650921203, 15.3651263038, 15.3651604864, 15.3651946682, 15.3652288493, 15.3652630295, 15.3652972088, 15.3653313874, 15.3653655652, 15.3653997422, 15.3654339183, 15.3654680937, 15.3655022682, 15.3655364419, 15.3655706148, 15.3656047869, 15.3656389582, 15.3656731287, 15.3657072984, 15.3657414673, 15.3657756353, 15.3658098026, 15.365843969, 15.3658781346, 15.3659122995, 15.3659464635, 15.3659806267, 15.3660147891, 15.3660489507, 15.3660831114, 15.3661172714, 15.3661514306, 15.3661855889, 15.3662197465, 15.3662539032, 15.3662880591, 15.3663222142, 15.3663563686, 15.3663905221, 15.3664246747, 15.3664588266, 15.3664929777, 15.366527128, 15.3665612774, 15.3665954261, 15.3666295739, 15.3666637209, 15.3666978672, 15.3667320126, 15.3667661572, 15.366800301, 15.366834444, 15.3668685862, 15.3669027275, 15.3669368681, 15.3669710079, 15.3670051468, 15.367039285, 15.3670734223, 15.3671075588, 15.3671416946, 15.3671758295, 15.3672099636, 15.3672440969, 15.3672782294, 15.367312361, 15.3673464919, 15.367380622, 15.3674147512, 15.3674488797, 15.3674830073, 15.3675171342, 15.3675512602, 15.3675853854, 15.3676195099, 15.3676536335, 15.3676877563, 15.3677218783, 15.3677559995, 15.3677901198, 15.3678242394, 15.3678583582, 15.3678924761, 15.3679265933, 15.3679607096, 15.3679948252, 15.3680289399, 15.3680630538, 15.368097167, 15.3681312793, 15.3681653908, 15.3681995015, 15.3682336114, 15.3682677205, 15.3683018288, 15.3683359362, 15.3683700429, 15.3684041488, 15.3684382538, 15.3684723581, 15.3685064615, 15.3685405641, 15.368574666, 15.368608767, 15.3686428672, 15.3686769666, 15.3687110652, 15.368745163, 15.36877926, 15.3688133562, 15.3688474516, 15.3688815462, 15.36891564, 15.3689497329, 15.3689838251, 15.3690179165, 15.369052007, 15.3690860967, 15.3691201857, 15.3691542738, 15.3691883611, 15.3692224477, 15.3692565334, 15.3692906183, 15.3693247024, 15.3693587857, 15.3693928682, 15.3694269499, 15.3694610308, 15.3694951109, 15.3695291901, 15.3695632686, 15.3695973463, 15.3696314231, 15.3696654992, 15.3696995744, 15.3697336489, 15.3697677225, 15.3698017954, 15.3698358674, 15.3698699386, 15.3699040091, 15.3699380787, 15.3699721475, 15.3700062155, 15.3700402827, 15.3700743491, 15.3701084147, 15.3701424795, 15.3701765435, 15.3702106067, 15.370244669, 15.3702787306, 15.3703127914, 15.3703468514, 15.3703809105, 15.3704149689, 15.3704490264, 15.3704830832, 15.3705171391, 15.3705511943, 15.3705852486, 15.3706193021, 15.3706533549, 15.3706874068, 15.3707214579, 15.3707555083, 15.3707895578, 15.3708236065, 15.3708576544, 15.3708917015, 15.3709257478, 15.3709597933, 15.370993838, 15.3710278819, 15.371061925, 15.3710959673, 15.3711300087, 15.3711640494, 15.3711980893, 15.3712321284, 15.3712661666, 15.3713002041, 15.3713342408, 15.3713682766, 15.3714023117, 15.3714363459, 15.3714703794, 15.371504412, 15.3715384439, 15.3715724749, 15.3716065052, 15.3716405346, 15.3716745632, 15.3717085911, 15.3717426181, 15.3717766443, 15.3718106698, 15.3718446944, 15.3718787182, 15.3719127412, 15.3719467634, 15.3719807849, 15.3720148055, 15.3720488253, 15.3720828443, 15.3721168625, 15.3721508799, 15.3721848965, 15.3722189123, 15.3722529273, 15.3722869415, 15.3723209549, 15.3723549675, 15.3723889792, 15.3724229902, 15.3724570004, 15.3724910098, 15.3725250184, 15.3725590262, 15.3725930331, 15.3726270393, 15.3726610447, 15.3726950493, 15.372729053, 15.372763056, 15.3727970582, 15.3728310595, 15.3728650601, 15.3728990599, 15.3729330588, 15.372967057, 15.3730010544, 15.3730350509, 15.3730690467, 15.3731030416, 15.3731370358, 15.3731710292, 15.3732050217, 15.3732390135, 15.3732730044, 15.3733069946, 15.3733409839, 15.3733749725, 15.3734089602, 15.3734429472, 15.3734769333, 15.3735109187, 15.3735449032, 15.373578887, 15.3736128699, 15.3736468521, 15.3736808334, 15.373714814, 15.3737487937, 15.3737827726, 15.3738167508, 15.3738507281, 15.3738847047, 15.3739186804, 15.3739526554, 15.3739866295, 15.3740206029, 15.3740545754, 15.3740885471, 15.3741225181, 15.3741564882, 15.3741904576, 15.3742244261, 15.3742583939, 15.3742923608, 15.374326327, 15.3743602923, 15.3743942569, 15.3744282206, 15.3744621835, 15.3744961457, 15.374530107, 15.3745640676, 15.3745980273, 15.3746319863, 15.3746659444, 15.3746999018, 15.3747338583, 15.3747678141, 15.374801769, 15.3748357232, 15.3748696766, 15.3749036291, 15.3749375809, 15.3749715318, 15.375005482, 15.3750394313, 15.3750733799, 15.3751073277, 15.3751412746, 15.3751752208, 15.3752091662, 15.3752431107, 15.3752770545, 15.3753109975, 15.3753449396, 15.375378881, 15.3754128216, 15.3754467614, 15.3754807003, 15.3755146385, 15.3755485759, 15.3755825125, 15.3756164483, 15.3756503833, 15.3756843174, 15.3757182508, 15.3757521834, 15.3757861152, 15.3758200462, 15.3758539764, 15.3758879058, 15.3759218344, 15.3759557622, 15.3759896892, 15.3760236154, 15.3760575408, 15.3760914655, 15.3761253893, 15.3761593123, 15.3761932345, 15.3762271559, 15.3762610766, 15.3762949964, 15.3763289154, 15.3763628336, 15.3763967511, 15.3764306677, 15.3764645836, 15.3764984986, 15.3765324128, 15.3765663263, 15.3766002389, 15.3766341508, 15.3766680619, 15.3767019721, 15.3767358816, 15.3767697902, 15.3768036981, 15.3768376052, 15.3768715115, 15.3769054169, 15.3769393216, 15.3769732255, 15.3770071286, 15.3770410309, 15.3770749324, 15.3771088331, 15.377142733, 15.3771766321, 15.3772105304, 15.3772444279, 15.3772783246, 15.3773122205, 15.3773461157, 15.37738001, 15.3774139035, 15.3774477962, 15.3774816882, 15.3775155793, 15.3775494697, 15.3775833592, 15.377617248, 15.3776511359, 15.3776850231, 15.3777189095, 15.377752795, 15.3777866798, 15.3778205638, 15.377854447, 15.3778883293, 15.3779222109, 15.3779560917, 15.3779899717, 15.3780238509, 15.3780577293, 15.3780916069, 15.3781254838, 15.3781593598, 15.378193235, 15.3782271094, 15.3782609831, 15.3782948559, 15.378328728, 15.3783625992, 15.3783964697, 15.3784303393, 15.3784642082, 15.3784980762, 15.3785319435, 15.37856581, 15.3785996757, 15.3786335406, 15.3786674047, 15.378701268, 15.3787351305, 15.3787689922, 15.3788028531, 15.3788367132, 15.3788705725, 15.3789044311, 15.3789382888, 15.3789721457, 15.3790060019, 15.3790398572, 15.3790737118, 15.3791075656, 15.3791414185, 15.3791752707, 15.3792091221, 15.3792429727, 15.3792768225, 15.3793106715, 15.3793445197, 15.3793783671, 15.3794122137, 15.3794460595, 15.3794799045, 15.3795137488, 15.3795475922, 15.3795814349, 15.3796152767, 15.3796491178, 15.379682958, 15.3797167975, 15.3797506362, 15.3797844741, 15.3798183111, 15.3798521474, 15.3798859829, 15.3799198176, 15.3799536516, 15.3799874847, 15.380021317, 15.3800551485, 15.3800889793, 15.3801228092, 15.3801566384, 15.3801904667, 15.3802242943, 15.3802581211, 15.3802919471, 15.3803257723, 15.3803595967, 15.3803934203, 15.3804272431, 15.3804610651, 15.3804948863, 15.3805287067, 15.3805625264, 15.3805963452, 15.3806301633, 15.3806639805, 15.380697797, 15.3807316127, 15.3807654276, 15.3807992417, 15.380833055, 15.3808668675, 15.3809006792, 15.3809344901, 15.3809683002, 15.3810021096, 15.3810359181, 15.3810697258, 15.3811035328, 15.381137339, 15.3811711443, 15.3812049489, 15.3812387527, 15.3812725557, 15.3813063579, 15.3813401593, 15.38137396, 15.3814077598, 15.3814415588, 15.3814753571, 15.3815091545, 15.3815429512, 15.3815767471, 15.3816105421, 15.3816443364, 15.3816781299, 15.3817119226, 15.3817457145, 15.3817795057, 15.381813296, 15.3818470855, 15.3818808743, 15.3819146622, 15.3819484494, 15.3819822358, 15.3820160214, 15.3820498061, 15.3820835901, 15.3821173734, 15.3821511558, 15.3821849374, 15.3822187182, 15.3822524983, 15.3822862775, 15.382320056, 15.3823538337, 15.3823876105, 15.3824213866, 15.3824551619, 15.3824889364, 15.3825227102, 15.3825564831, 15.3825902552, 15.3826240266, 15.3826577971, 15.3826915669, 15.3827253359, 15.3827591041, 15.3827928715, 15.3828266381, 15.3828604039, 15.3828941689, 15.3829279331, 15.3829616966, 15.3829954592, 15.3830292211, 15.3830629822, 15.3830967424, 15.3831305019, 15.3831642606, 15.3831980185, 15.3832317757, 15.383265532, 15.3832992875, 15.3833330423, 15.3833667963, 15.3834005494, 15.3834343018, 15.3834680534, 15.3835018042, 15.3835355542, 15.3835693035, 15.3836030519, 15.3836367995, 15.3836705464, 15.3837042925, 15.3837380378, 15.3837717822, 15.3838055259, 15.3838392689, 15.383873011, 15.3839067523, 15.3839404929, 15.3839742326, 15.3840079716, 15.3840417098, 15.3840754471, 15.3841091837, 15.3841429195, 15.3841766546, 15.3842103888, 15.3842441222, 15.3842778549, 15.3843115868, 15.3843453178, 15.3843790481, 15.3844127776, 15.3844465063, 15.3844802343, 15.3845139614, 15.3845476877, 15.3845814133, 15.3846151381, 15.3846488621, 15.3846825852, 15.3847163076, 15.3847500293, 15.3847837501, 15.3848174701, 15.3848511894, 15.3848849078, 15.3849186255, 15.3849523424, 15.3849860585, 15.3850197738, 15.3850534883, 15.3850872021, 15.385120915, 15.3851546272, 15.3851883386, 15.3852220491, 15.3852557589, 15.385289468, 15.3853231762, 15.3853568836, 15.3853905903, 15.3854242961, 15.3854580012, 15.3854917055, 15.385525409, 15.3855591117, 15.3855928136, 15.3856265147, 15.3856602151, 15.3856939146, 15.3857276134, 15.3857613114, 15.3857950086, 15.385828705, 15.3858624006, 15.3858960955, 15.3859297895, 15.3859634828, 15.3859971753, 15.386030867, 15.3860645579, 15.386098248, 15.3861319373, 15.3861656259, 15.3861993136, 15.3862330006, 15.3862666868, 15.3863003722, 15.3863340568, 15.3863677406, 15.3864014236, 15.3864351059, 15.3864687874, 15.386502468, 15.3865361479, 15.386569827, 15.3866035054, 15.3866371829, 15.3866708596, 15.3867045356, 15.3867382108, 15.3867718852, 15.3868055588, 15.3868392316, 15.3868729036, 15.3869065749, 15.3869402453, 15.386973915, 15.3870075839, 15.387041252, 15.3870749193, 15.3871085858, 15.3871422516, 15.3871759165, 15.3872095807, 15.3872432441, 15.3872769067, 15.3873105685, 15.3873442296, 15.3873778898, 15.3874115493, 15.387445208, 15.3874788658, 15.3875125229, 15.3875461793, 15.3875798348, 15.3876134896, 15.3876471435, 15.3876807967, 15.3877144491, 15.3877481007, 15.3877817515, 15.3878154016, 15.3878490508, 15.3878826993, 15.387916347, 15.3879499939, 15.38798364, 15.3880172853, 15.3880509299, 15.3880845737, 15.3881182166, 15.3881518588, 15.3881855002, 15.3882191409, 15.3882527807, 15.3882864198, 15.388320058, 15.3883536955, 15.3883873322, 15.3884209681, 15.3884546033, 15.3884882376, 15.3885218712, 15.388555504, 15.388589136, 15.3886227672, 15.3886563976, 15.3886900273, 15.3887236561, 15.3887572842, 15.3887909115, 15.388824538, 15.3888581638, 15.3888917887, 15.3889254129, 15.3889590362, 15.3889926588, 15.3890262806, 15.3890599017, 15.3890935219, 15.3891271414, 15.38916076, 15.3891943779, 15.389227995, 15.3892616114, 15.3892952269, 15.3893288417, 15.3893624556, 15.3893960688, 15.3894296812, 15.3894632929, 15.3894969037, 15.3895305138, 15.3895641231, 15.3895977315, 15.3896313393, 15.3896649462, 15.3896985523, 15.3897321577, 15.3897657623, 15.3897993661, 15.3898329691, 15.3898665713, 15.3899001728, 15.3899337734, 15.3899673733, 15.3900009724, 15.3900345707, 15.3900681683, 15.390101765, 15.390135361, 15.3901689562, 15.3902025506, 15.3902361442, 15.3902697371, 15.3903033291, 15.3903369204, 15.3903705109, 15.3904041006, 15.3904376896, 15.3904712777, 15.3905048651, 15.3905384517, 15.3905720375, 15.3906056225, 15.3906392067, 15.3906727902, 15.3907063729, 15.3907399548, 15.3907735359, 15.3908071162, 15.3908406958, 15.3908742745, 15.3909078525, 15.3909414297, 15.3909750062, 15.3910085818, 15.3910421567, 15.3910757307, 15.391109304, 15.3911428766, 15.3911764483, 15.3912100193, 15.3912435894, 15.3912771588, 15.3913107274, 15.3913442953, 15.3913778623, 15.3914114286, 15.3914449941, 15.3914785588, 15.3915121227, 15.3915456859, 15.3915792482, 15.3916128098, 15.3916463706, 15.3916799306, 15.3917134899, 15.3917470483, 15.391780606, 15.3918141629, 15.391847719, 15.3918812744, 15.3919148289, 15.3919483827, 15.3919819357, 15.3920154879, 15.3920490394, 15.39208259, 15.3921161399, 15.392149689, 15.3921832373, 15.3922167848, 15.3922503316, 15.3922838776, 15.3923174228, 15.3923509672, 15.3923845108, 15.3924180537, 15.3924515958, 15.3924851371, 15.3925186776, 15.3925522173, 15.3925857563, 15.3926192945, 15.3926528319, 15.3926863685, 15.3927199043, 15.3927534394, 15.3927869737, 15.3928205072, 15.3928540399, 15.3928875718, 15.392921103, 15.3929546334, 15.392988163, 15.3930216918, 15.3930552198, 15.3930887471, 15.3931222736, 15.3931557993, 15.3931893242, 15.3932228484, 15.3932563717, 15.3932898943, 15.3933234162, 15.3933569372, 15.3933904574, 15.3934239769, 15.3934574956, 15.3934910135, 15.3935245307, 15.393558047, 15.3935915626, 15.3936250774, 15.3936585915, 15.3936921047, 15.3937256172, 15.3937591289, 15.3937926398, 15.3938261499, 15.3938596593, 15.3938931678, 15.3939266756, 15.3939601827, 15.3939936889, 15.3940271944, 15.3940606991, 15.394094203, 15.3941277061, 15.3941612084, 15.39419471, 15.3942282108, 15.3942617108, 15.3942952101, 15.3943287085, 15.3943622062, 15.3943957031, 15.3944291993, 15.3944626946, 15.3944961892, 15.394529683, 15.394563176, 15.3945966682, 15.3946301597, 15.3946636504, 15.3946971403, 15.3947306294, 15.3947641178, 15.3947976054, 15.3948310922, 15.3948645782, 15.3948980634, 15.3949315479, 15.3949650316, 15.3949985145, 15.3950319966, 15.395065478, 15.3950989586, 15.3951324384, 15.3951659174, 15.3951993957, 15.3952328731, 15.3952663498, 15.3952998258, 15.3953333009, 15.3953667753, 15.3954002489, 15.3954337217, 15.3954671937, 15.395500665, 15.3955341355, 15.3955676052, 15.3956010741, 15.3956345423, 15.3956680096, 15.3957014762, 15.3957349421, 15.3957684071, 15.3958018714, 15.3958353349, 15.3958687976, 15.3959022596, 15.3959357207, 15.3959691811, 15.3960026407, 15.3960360996, 15.3960695576, 15.3961030149, 15.3961364714, 15.3961699272, 15.3962033821, 15.3962368363, 15.3962702897, 15.3963037424, 15.3963371942, 15.3963706453, 15.3964040956, 15.3964375452, 15.3964709939, 15.3965044419, 15.3965378891, 15.3965713355, 15.3966047812, 15.3966382261, 15.3966716702, 15.3967051135, 15.396738556, 15.3967719978, 15.3968054388, 15.3968388791, 15.3968723185, 15.3969057572, 15.3969391951, 15.3969726322, 15.3970060686, 15.3970395042, 15.397072939, 15.397106373, 15.3971398062, 15.3971732387, 15.3972066704, 15.3972401013, 15.3972735315, 15.3973069609, 15.3973403895, 15.3973738173, 15.3974072444, 15.3974406707, 15.3974740962, 15.3975075209, 15.3975409449, 15.397574368, 15.3976077905, 15.3976412121, 15.3976746329, 15.397708053, 15.3977414723, 15.3977748909, 15.3978083087, 15.3978417256, 15.3978751419, 15.3979085573, 15.397941972, 15.3979753859, 15.398008799, 15.3980422113, 15.3980756229, 15.3981090337, 15.3981424437, 15.398175853, 15.3982092615, 15.3982426692, 15.3982760761, 15.3983094823, 15.3983428876, 15.3983762923, 15.3984096961, 15.3984430992, 15.3984765014, 15.398509903, 15.3985433037, 15.3985767037, 15.3986101029, 15.3986435013, 15.398676899, 15.3987102958, 15.3987436919, 15.3987770873, 15.3988104818, 15.3988438756, 15.3988772686, 15.3989106609, 15.3989440523, 15.398977443, 15.399010833, 15.3990442221, 15.3990776105, 15.3991109981, 15.3991443849, 15.399177771, 15.3992111563, 15.3992445408, 15.3992779245, 15.3993113075, 15.3993446897, 15.3993780711, 15.3994114517, 15.3994448316, 15.3994782107, 15.3995115891, 15.3995449666, 15.3995783434, 15.3996117194, 15.3996450947, 15.3996784692, 15.3997118429, 15.3997452158, 15.3997785879, 15.3998119593, 15.3998453299, 15.3998786998, 15.3999120689, 15.3999454371, 15.3999788047, 15.4000121714, 15.4000455374, 15.4000789026, 15.4001122671, 15.4001456307, 15.4001789936, 15.4002123558, 15.4002457171, 15.4002790777, 15.4003124375, 15.4003457965, 15.4003791548, 15.4004125123, 15.400445869, 15.400479225, 15.4005125802, 15.4005459346, 15.4005792882, 15.4006126411, 15.4006459932, 15.4006793445, 15.4007126951, 15.4007460448, 15.4007793939, 15.4008127421, 15.4008460896, 15.4008794363, 15.4009127822, 15.4009461274, 15.4009794718, 15.4010128154, 15.4010461582, 15.4010795003, 15.4011128416, 15.4011461822, 15.4011795219, 15.4012128609, 15.4012461991, 15.4012795366, 15.4013128733, 15.4013462092, 15.4013795443, 15.4014128787, 15.4014462123, 15.4014795452, 15.4015128772, 15.4015462085, 15.401579539, 15.4016128688, 15.4016461978, 15.401679526, 15.4017128534, 15.4017461801, 15.401779506, 15.4018128311, 15.4018461555, 15.4018794791, 15.4019128019, 15.401946124, 15.4019794453, 15.4020127658, 15.4020460855, 15.4020794045, 15.4021127227, 15.4021460401, 15.4021793568, 15.4022126727, 15.4022459878, 15.4022793022, 15.4023126158, 15.4023459286, 15.4023792407, 15.402412552, 15.4024458625, 15.4024791722, 15.4025124812, 15.4025457894, 15.4025790968, 15.4026124035, 15.4026457094, 15.4026790145, 15.4027123189, 15.4027456225, 15.4027789253, 15.4028122274, 15.4028455287, 15.4028788292, 15.4029121289, 15.4029454279, 15.4029787261, 15.4030120236, 15.4030453203, 15.4030786162, 15.4031119113, 15.4031452057, 15.4031784993, 15.4032117921, 15.4032450842, 15.4032783755, 15.403311666, 15.4033449558, 15.4033782448, 15.403411533, 15.4034448204, 15.4034781071, 15.403511393, 15.4035446782, 15.4035779626, 15.4036112462, 15.4036445291, 15.4036778111, 15.4037110925, 15.403744373, 15.4037776528, 15.4038109318, 15.40384421, 15.4038774875, 15.4039107642, 15.4039440402, 15.4039773153, 15.4040105897, 15.4040438634, 15.4040771362, 15.4041104083, 15.4041436797, 15.4041769502, 15.4042102201, 15.4042434891, 15.4042767574, 15.4043100249, 15.4043432916, 15.4043765576, 15.4044098228, 15.4044430872, 15.4044763508, 15.4045096137, 15.4045428759, 15.4045761372, 15.4046093978, 15.4046426577, 15.4046759167, 15.404709175, 15.4047424326, 15.4047756893, 15.4048089453, 15.4048422006, 15.404875455, 15.4049087087, 15.4049419616, 15.4049752138, 15.4050084652, 15.4050417158, 15.4050749657, 15.4051082148, 15.4051414631, 15.4051747107, 15.4052079575, 15.4052412035, 15.4052744488, 15.4053076933, 15.405340937, 15.40537418, 15.4054074222, 15.4054406637, 15.4054739043, 15.4055071442, 15.4055403834, 15.4055736218, 15.4056068594, 15.4056400962, 15.4056733323, 15.4057065676, 15.4057398021, 15.4057730359, 15.4058062689, 15.4058395012, 15.4058727327, 15.4059059634, 15.4059391933, 15.4059724225, 15.406005651, 15.4060388786, 15.4060721055, 15.4061053316, 15.406138557, 15.4061717816, 15.4062050054, 15.4062382285, 15.4062714508, 15.4063046723, 15.4063378931, 15.4063711131, 15.4064043323, 15.4064375508, 15.4064707685, 15.4065039855, 15.4065372017, 15.4065704171, 15.4066036317, 15.4066368456, 15.4066700587, 15.4067032711, 15.4067364827, 15.4067696935, 15.4068029036, 15.4068361129, 15.4068693214, 15.4069025292, 15.4069357362, 15.4069689424, 15.4070021479, 15.4070353526, 15.4070685566, 15.4071017598, 15.4071349622, 15.4071681639, 15.4072013647, 15.4072345649, 15.4072677642, 15.4073009628, 15.4073341607, 15.4073673578, 15.4074005541, 15.4074337496, 15.4074669444, 15.4075001384, 15.4075333317, 15.4075665242, 15.4075997159, 15.4076329069, 15.4076660971, 15.4076992865, 15.4077324752, 15.4077656631, 15.4077988502, 15.4078320366, 15.4078652222, 15.4078984071, 15.4079315912, 15.4079647745, 15.4079979571, 15.4080311389, 15.4080643199, 15.4080975002, 15.4081306797, 15.4081638585, 15.4081970364, 15.4082302137, 15.4082633901, 15.4082965658, 15.4083297408, 15.4083629149, 15.4083960884, 15.408429261, 15.4084624329, 15.408495604, 15.4085287744, 15.408561944, 15.4085951128, 15.4086282809, 15.4086614482, 15.4086946147, 15.4087277805, 15.4087609455, 15.4087941098, 15.4088272733, 15.408860436, 15.408893598, 15.4089267592, 15.4089599197, 15.4089930793, 15.4090262383, 15.4090593964, 15.4090925538, 15.4091257105, 15.4091588663, 15.4091920215, 15.4092251758, 15.4092583294, 15.4092914822, 15.4093246343, 15.4093577856, 15.4093909361, 15.4094240859, 15.4094572349, 15.4094903832, 15.4095235307, 15.4095566774, 15.4095898234, 15.4096229686, 15.4096561131, 15.4096892567, 15.4097223997, 15.4097555418, 15.4097886832, 15.4098218239, 15.4098549638, 15.4098881029, 15.4099212412, 15.4099543788, 15.4099875157, 15.4100206518, 15.4100537871, 15.4100869216, 15.4101200554, 15.4101531885, 15.4101863207, 15.4102194522, 15.410252583, 15.410285713, 15.4103188422, 15.4103519707, 15.4103850984, 15.4104182253, 15.4104513515, 15.4104844769, 15.4105176016, 15.4105507255, 15.4105838486, 15.410616971, 15.4106500926, 15.4106832135, 15.4107163336, 15.4107494529, 15.4107825715, 15.4108156893, 15.4108488064, 15.4108819227, 15.4109150382, 15.410948153, 15.410981267, 15.4110143803, 15.4110474928, 15.4110806045, 15.4111137155, 15.4111468257, 15.4111799352, 15.4112130439, 15.4112461518, 15.411279259, 15.4113123654, 15.4113454711, 15.411378576, 15.4114116801, 15.4114447835, 15.4114778861, 15.411510988, 15.4115440891, 15.4115771895, 15.411610289, 15.4116433879, 15.4116764859, 15.4117095832, 15.4117426798, 15.4117757756, 15.4118088706, 15.4118419649, 15.4118750584, 15.4119081511, 15.4119412431, 15.4119743344, 15.4120074248, 15.4120405146, 15.4120736035, 15.4121066917, 15.4121397791, 15.4121728658, 15.4122059517, 15.4122390369, 15.4122721213, 15.412305205, 15.4123382878, 15.41237137, 15.4124044513, 15.4124375319, 15.4124706118, 15.4125036909, 15.4125367692, 15.4125698468, 15.4126029236, 15.4126359997, 15.412669075, 15.4127021495, 15.4127352233, 15.4127682963, 15.4128013686, 15.4128344401, 15.4128675109, 15.4129005809, 15.4129336501, 15.4129667186, 15.4129997863, 15.4130328533, 15.4130659195, 15.4130989849, 15.4131320496, 15.4131651135, 15.4131981767, 15.4132312391, 15.4132643008, 15.4132973617, 15.4133304218, 15.4133634812, 15.4133965398, 15.4134295977, 15.4134626548, 15.4134957112, 15.4135287668, 15.4135618216, 15.4135948757, 15.413627929, 15.4136609816, 15.4136940334, 15.4137270845, 15.4137601348, 15.4137931843, 15.4138262331, 15.4138592811, 15.4138923284, 15.4139253749, 15.4139584206, 15.4139914656, 15.4140245099, 15.4140575534, 15.4140905961, 15.4141236381, 15.4141566793, 15.4141897197, 15.4142227594, 15.4142557984, 15.4142888366, 15.414321874, 15.4143549107, 15.4143879466, 15.4144209817, 15.4144540162, 15.4144870498, 15.4145200827, 15.4145531148, 15.4145861462, 15.4146191768, 15.4146522067, 15.4146852358, 15.4147182642, 15.4147512918, 15.4147843186, 15.4148173447, 15.41485037, 15.4148833946, 15.4149164184, 15.4149494415, 15.4149824638, 15.4150154853, 15.4150485061, 15.4150815262, 15.4151145454, 15.415147564, 15.4151805817, 15.4152135988, 15.415246615, 15.4152796305, 15.4153126453, 15.4153456593, 15.4153786725, 15.415411685, 15.4154446967, 15.4154777077, 15.4155107179, 15.4155437274, 15.4155767361, 15.415609744, 15.4156427512, 15.4156757577, 15.4157087634, 15.4157417683, 15.4157747725, 15.4158077759, 15.4158407786, 15.4158737805, 15.4159067816, 15.415939782, 15.4159727817, 15.4160057806, 15.4160387787, 15.4160717761, 15.4161047727, 15.4161377686, 15.4161707637, 15.4162037581, 15.4162367517, 15.4162697445, 15.4163027366, 15.416335728, 15.4163687186, 15.4164017084, 15.4164346975, 15.4164676858, 15.4165006734, 15.4165336602, 15.4165666463, 15.4165996316, 15.4166326161, 15.4166655999, 15.416698583, 15.4167315653, 15.4167645468, 15.4167975276, 15.4168305076, 15.4168634869, 15.4168964654, 15.4169294432, 15.4169624202, 15.4169953965, 15.417028372, 15.4170613468, 15.4170943208, 15.417127294, 15.4171602665, 15.4171932382, 15.4172262092, 15.4172591795, 15.417292149, 15.4173251177, 15.4173580857, 15.4173910529, 15.4174240193, 15.4174569851, 15.41748995, 15.4175229142, 15.4175558777, 15.4175888404, 15.4176218023, 15.4176547635, 15.417687724, 15.4177206837, 15.4177536426, 15.4177866008, 15.4178195582, 15.4178525149, 15.4178854708, 15.417918426, 15.4179513804, 15.4179843341, 15.418017287, 15.4180502391, 15.4180831906, 15.4181161412, 15.4181490911, 15.4181820403, 15.4182149887, 15.4182479363, 15.4182808832, 15.4183138293, 15.4183467747, 15.4183797194, 15.4184126632, 15.4184456064, 15.4184785488, 15.4185114904, 15.4185444313, 15.4185773714, 15.4186103108, 15.4186432494, 15.4186761872, 15.4187091244, 15.4187420607, 15.4187749963, 15.4188079312, 15.4188408653, 15.4188737987, 15.4189067313, 15.4189396631, 15.4189725942, 15.4190055246, 15.4190384542, 15.419071383, 15.4191043111, 15.4191372384, 15.419170165, 15.4192030909, 15.419236016, 15.4192689403, 15.4193018639, 15.4193347867, 15.4193677088, 15.4194006301, 15.4194335507, 15.4194664705, 15.4194993896, 15.4195323079, 15.4195652255, 15.4195981423, 15.4196310584, 15.4196639737, 15.4196968883, 15.4197298021, 15.4197627152, 15.4197956275, 15.4198285391, 15.4198614499, 15.41989436, 15.4199272693, 15.4199601778, 15.4199930857, 15.4200259927, 15.420058899, 15.4200918046, 15.4201247094, 15.4201576135, 15.4201905168, 15.4202234193, 15.4202563212, 15.4202892222, 15.4203221225, 15.4203550221, 15.4203879209, 15.420420819, 15.4204537163, 15.4204866128, 15.4205195086, 15.4205524037, 15.420585298, 15.4206181916, 15.4206510844, 15.4206839764, 15.4207168677, 15.4207497583, 15.4207826481, 15.4208155372, 15.4208484255, 15.420881313, 15.4209141998, 15.4209470859, 15.4209799712, 15.4210128558, 15.4210457396, 15.4210786227, 15.421111505, 15.4211443865, 15.4211772673, 15.4212101474, 15.4212430267, 15.4212759053, 15.4213087831, 15.4213416602, 15.4213745365, 15.4214074121, 15.4214402869, 15.421473161, 15.4215060343, 15.4215389068, 15.4215717787, 15.4216046497, 15.4216375201, 15.4216703897, 15.4217032585, 15.4217361266, 15.4217689939, 15.4218018605, 15.4218347263, 15.4218675914, 15.4219004557, 15.4219333193, 15.4219661821, 15.4219990442, 15.4220319056, 15.4220647662, 15.422097626, 15.4221304851, 15.4221633435, 15.4221962011, 15.4222290579, 15.422261914, 15.4222947694, 15.422327624, 15.4223604778, 15.4223933309, 15.4224261833, 15.4224590349, 15.4224918858, 15.4225247359, 15.4225575853, 15.4225904339, 15.4226232818, 15.4226561289, 15.4226889753, 15.4227218209, 15.4227546658, 15.4227875099, 15.4228203533, 15.4228531959, 15.4228860378, 15.422918879, 15.4229517194, 15.422984559, 15.4230173979, 15.4230502361, 15.4230830735, 15.4231159101, 15.4231487461, 15.4231815812, 15.4232144156, 15.4232472493, 15.4232800822, 15.4233129144, 15.4233457458, 15.4233785765, 15.4234114065, 15.4234442356, 15.4234770641, 15.4235098918, 15.4235427187, 15.4235755449, 15.4236083704, 15.4236411951, 15.423674019, 15.4237068422, 15.4237396647, 15.4237724864, 15.4238053074, 15.4238381276, 15.4238709471, 15.4239037658, 15.4239365838, 15.4239694011, 15.4240022176, 15.4240350333, 15.4240678483, 15.4241006626, 15.4241334761, 15.4241662888, 15.4241991008, 15.4242319121, 15.4242647226, 15.4242975324, 15.4243303414, 15.4243631497, 15.4243959572, 15.424428764, 15.4244615701, 15.4244943754, 15.4245271799, 15.4245599837, 15.4245927868, 15.4246255891, 15.4246583907, 15.4246911915, 15.4247239916, 15.4247567909, 15.4247895895, 15.4248223874, 15.4248551844, 15.4248879808, 15.4249207764, 15.4249535713, 15.4249863654, 15.4250191587, 15.4250519514, 15.4250847432, 15.4251175344, 15.4251503248, 15.4251831144, 15.4252159033, 15.4252486915, 15.4252814789, 15.4253142655, 15.4253470514, 15.4253798366, 15.425412621, 15.4254454047, 15.4254781876, 15.4255109698, 15.4255437513, 15.425576532, 15.4256093119, 15.4256420912, 15.4256748696, 15.4257076473, 15.4257404243, 15.4257732005, 15.425805976, 15.4258387508, 15.4258715248, 15.425904298, 15.4259370705, 15.4259698423, 15.4260026133, 15.4260353836, 15.4260681531, 15.4261009219, 15.42613369, 15.4261664573, 15.4261992238, 15.4262319896, 15.4262647547, 15.426297519, 15.4263302826, 15.4263630454, 15.4263958075, 15.4264285689, 15.4264613295, 15.4264940893, 15.4265268485, 15.4265596068, 15.4265923645, 15.4266251213, 15.4266578775, 15.4266906329, 15.4267233875, 15.4267561414, 15.4267888946, 15.426821647, 15.4268543987, 15.4268871496, 15.4269198998, 15.4269526493, 15.426985398, 15.4270181459, 15.4270508932, 15.4270836396, 15.4271163854, 15.4271491303, 15.4271818746, 15.4272146181, 15.4272473608, 15.4272801029, 15.4273128441, 15.4273455847, 15.4273783245, 15.4274110635, 15.4274438018, 15.4274765394, 15.4275092762, 15.4275420122, 15.4275747476, 15.4276074822, 15.427640216, 15.4276729491, 15.4277056815, 15.4277384131, 15.4277711439, 15.4278038741, 15.4278366035, 15.4278693321, 15.42790206, 15.4279347872, 15.4279675136, 15.4280002393, 15.4280329642, 15.4280656884, 15.4280984118, 15.4281311345, 15.4281638565, 15.4281965777, 15.4282292982, 15.4282620179, 15.4282947369, 15.4283274552, 15.4283601727, 15.4283928895, 15.4284256055, 15.4284583208, 15.4284910353, 15.4285237491, 15.4285564622, 15.4285891745, 15.4286218861, 15.4286545969, 15.428687307, 15.4287200164, 15.428752725, 15.4287854329, 15.42881814, 15.4288508464, 15.428883552, 15.4289162569, 15.4289489611, 15.4289816645, 15.4290143672, 15.4290470691, 15.4290797703, 15.4291124708, 15.4291451705, 15.4291778695, 15.4292105677, 15.4292432652, 15.4292759619, 15.4293086579, 15.4293413532, 15.4293740477, 15.4294067415, 15.4294394346, 15.4294721269, 15.4295048184, 15.4295375092, 15.4295701993, 15.4296028887, 15.4296355773, 15.4296682651, 15.4297009523, 15.4297336386, 15.4297663243, 15.4297990092, 15.4298316933, 15.4298643767, 15.4298970594, 15.4299297414, 15.4299624225, 15.429995103, 15.4300277827, 15.4300604617, 15.4300931399, 15.4301258174, 15.4301584942, 15.4301911702, 15.4302238455, 15.43025652, 15.4302891938, 15.4303218668, 15.4303545392, 15.4303872107, 15.4304198816, 15.4304525517, 15.430485221, 15.4305178896, 15.4305505575, 15.4305832246, 15.430615891, 15.4306485567, 15.4306812216, 15.4307138858, 15.4307465492, 15.4307792119, 15.4308118739, 15.4308445351, 15.4308771956, 15.4309098553, 15.4309425143, 15.4309751726, 15.4310078301, 15.4310404869, 15.4310731429, 15.4311057982, 15.4311384528, 15.4311711066, 15.4312037597, 15.4312364121, 15.4312690637, 15.4313017146, 15.4313343647, 15.4313670141, 15.4313996627, 15.4314323106, 15.4314649578, 15.4314976043, 15.43153025, 15.4315628949, 15.4315955391, 15.4316281826, 15.4316608254, 15.4316934674, 15.4317261086, 15.4317587492, 15.431791389, 15.431824028, 15.4318566663, 15.4318893039, 15.4319219407, 15.4319545768, 15.4319872122, 15.4320198468, 15.4320524807, 15.4320851138, 15.4321177462, 15.4321503779, 15.4321830088, 15.432215639, 15.4322482685, 15.4322808972, 15.4323135252, 15.4323461524, 15.4323787789, 15.4324114047, 15.4324440297, 15.432476654, 15.4325092776, 15.4325419004, 15.4325745225, 15.4326071438, 15.4326397644, 15.4326723843, 15.4327050034, 15.4327376218, 15.4327702394, 15.4328028564, 15.4328354725, 15.432868088, 15.4329007027, 15.4329333166, 15.4329659299, 15.4329985424, 15.4330311541, 15.4330637651, 15.4330963754, 15.4331289849, 15.4331615937, 15.4331942018, 15.4332268091, 15.4332594157, 15.4332920216, 15.4333246267, 15.4333572311, 15.4333898347, 15.4334224377, 15.4334550398, 15.4334876413, 15.433520242, 15.4335528419, 15.4335854412, 15.4336180396, 15.4336506374, 15.4336832344, 15.4337158307, 15.4337484262, 15.433781021, 15.4338136151, 15.4338462084, 15.433878801, 15.4339113929, 15.433943984, 15.4339765744, 15.4340091641, 15.434041753, 15.4340743412, 15.4341069286, 15.4341395153, 15.4341721013, 15.4342046865, 15.434237271, 15.4342698548, 15.4343024378, 15.4343350201, 15.4343676017, 15.4344001825, 15.4344327626, 15.4344653419, 15.4344979205, 15.4345304984, 15.4345630756, 15.434595652, 15.4346282276, 15.4346608026, 15.4346933768, 15.4347259502, 15.434758523, 15.434791095, 15.4348236662, 15.4348562367, 15.4348888065, 15.4349213756, 15.4349539439, 15.4349865115, 15.4350190783, 15.4350516444, 15.4350842098, 15.4351167745, 15.4351493384, 15.4351819015, 15.435214464, 15.4352470257, 15.4352795866, 15.4353121469, 15.4353447064, 15.4353772651, 15.4354098232, 15.4354423805, 15.435474937, 15.4355074928, 15.4355400479, 15.4355726023, 15.4356051559, 15.4356377088, 15.4356702609, 15.4357028124, 15.435735363, 15.435767913, 15.4358004622, 15.4358330107, 15.4358655584, 15.4358981054, 15.4359306517, 15.4359631972, 15.4359957421, 15.4360282861, 15.4360608295, 15.4360933721, 15.4361259139, 15.4361584551, 15.4361909955, 15.4362235352, 15.4362560741, 15.4362886123, 15.4363211498, 15.4363536865, 15.4363862225, 15.4364187578, 15.4364512923, 15.4364838261, 15.4365163592, 15.4365488915, 15.4365814231, 15.4366139539, 15.4366464841, 15.4366790135, 15.4367115421, 15.4367440701, 15.4367765973, 15.4368091237, 15.4368416495, 15.4368741745, 15.4369066987, 15.4369392223, 15.436971745, 15.4370042671, 15.4370367884, 15.437069309, 15.4371018289, 15.437134348, 15.4371668664, 15.4371993841, 15.437231901, 15.4372644172, 15.4372969327, 15.4373294474, 15.4373619614, 15.4373944747, 15.4374269873, 15.4374594991, 15.4374920101, 15.4375245205, 15.4375570301, 15.4375895389, 15.4376220471, 15.4376545545, 15.4376870612, 15.4377195671, 15.4377520723, 15.4377845768, 15.4378170805, 15.4378495836, 15.4378820858, 15.4379145874, 15.4379470882, 15.4379795883, 15.4380120877, 15.4380445863, 15.4380770842, 15.4381095813, 15.4381420777, 15.4381745734, 15.4382070684, 15.4382395626, 15.4382720561, 15.4383045489, 15.4383370409, 15.4383695322, 15.4384020228, 15.4384345126, 15.4384670017, 15.4384994901, 15.4385319778, 15.4385644647, 15.4385969509, 15.4386294363, 15.438661921, 15.438694405, 15.4387268883, 15.4387593708, 15.4387918526, 15.4388243336, 15.438856814, 15.4388892936, 15.4389217724, 15.4389542506, 15.438986728, 15.4390192046, 15.4390516806, 15.4390841558, 15.4391166303, 15.439149104, 15.4391815771, 15.4392140493, 15.4392465209, 15.4392789917, 15.4393114618, 15.4393439312, 15.4393763998, 15.4394088677, 15.4394413349, 15.4394738013, 15.439506267, 15.439538732, 15.4395711963, 15.4396036598, 15.4396361226, 15.4396685846, 15.439701046, 15.4397335066, 15.4397659664, 15.4397984256, 15.439830884, 15.4398633417, 15.4398957986, 15.4399282548, 15.4399607103, 15.4399931651, 15.4400256191, 15.4400580724, 15.440090525, 15.4401229768, 15.4401554279, 15.4401878783, 15.4402203279, 15.4402527768, 15.440285225, 15.4403176725, 15.4403501192, 15.4403825652, 15.4404150105, 15.440447455, 15.4404798988, 15.4405123419, 15.4405447842, 15.4405772259, 15.4406096667, 15.4406421069, 15.4406745463, 15.440706985, 15.440739423, 15.4407718603, 15.4408042968, 15.4408367326, 15.4408691676, 15.4409016019, 15.4409340355, 15.4409664684, 15.4409989005, 15.4410313319, 15.4410637626, 15.4410961926, 15.4411286218, 15.4411610503, 15.4411934781, 15.4412259051, 15.4412583314, 15.441290757, 15.4413231818, 15.441355606, 15.4413880293, 15.441420452, 15.4414528739, 15.4414852952, 15.4415177156, 15.4415501354, 15.4415825544, 15.4416149727, 15.4416473903, 15.4416798071, 15.4417122232, 15.4417446386, 15.4417770532, 15.4418094671, 15.4418418803, 15.4418742928, 15.4419067045, 15.4419391156, 15.4419715258, 15.4420039354, 15.4420363442, 15.4420687523, 15.4421011597, 15.4421335663, 15.4421659722, 15.4421983774, 15.4422307819, 15.4422631856, 15.4422955886, 15.4423279909, 15.4423603924, 15.4423927932, 15.4424251933, 15.4424575927, 15.4424899913, 15.4425223892, 15.4425547864, 15.4425871829, 15.4426195786, 15.4426519736, 15.4426843679, 15.4427167614, 15.4427491542, 15.4427815463, 15.4428139377, 15.4428463283, 15.4428787182, 15.4429111074, 15.4429434958, 15.4429758836, 15.4430082706, 15.4430406568, 15.4430730424, 15.4431054272, 15.4431378113, 15.4431701947, 15.4432025773, 15.4432349592, 15.4432673404, 15.4432997208, 15.4433321006, 15.4433644796, 15.4433968579, 15.4434292354, 15.4434616122, 15.4434939883, 15.4435263637, 15.4435587383, 15.4435911123, 15.4436234854, 15.4436558579, 15.4436882296, 15.4437206007, 15.4437529709, 15.4437853405, 15.4438177093, 15.4438500774, 15.4438824448, 15.4439148115, 15.4439471774, 15.4439795426, 15.4440119071, 15.4440442708, 15.4440766338, 15.4441089961, 15.4441413577, 15.4441737186, 15.4442060787, 15.4442384381, 15.4442707967, 15.4443031547, 15.4443355119, 15.4443678684, 15.4444002242, 15.4444325792, 15.4444649335, 15.4444972871, 15.44452964, 15.4445619921, 15.4445943435, 15.4446266942, 15.4446590442, 15.4446913934, 15.4447237419, 15.4447560897, 15.4447884368, 15.4448207831, 15.4448531287, 15.4448854736, 15.4449178177, 15.4449501612, 15.4449825039, 15.4450148459, 15.4450471871, 15.4450795277, 15.4451118675, 15.4451442066, 15.4451765449, 15.4452088825, 15.4452412195, 15.4452735556, 15.4453058911, 15.4453382258, 15.4453705598, 15.4454028931, 15.4454352257, 15.4454675575, 15.4454998886, 15.445532219, 15.4455645487, 15.4455968776, 15.4456292058, 15.4456615333, 15.4456938601, 15.4457261861, 15.4457585115, 15.445790836, 15.4458231599, 15.4458554831, 15.4458878055, 15.4459201272, 15.4459524481, 15.4459847684, 15.4460170879, 15.4460494067, 15.4460817248, 15.4461140421, 15.4461463588, 15.4461786747, 15.4462109899, 15.4462433043, 15.446275618, 15.4463079311, 15.4463402433, 15.4463725549, 15.4464048657, 15.4464371758, 15.4464694852, 15.4465017939, 15.4465341018, 15.4465664091, 15.4465987156, 15.4466310213, 15.4466633264, 15.4466956307, 15.4467279343, 15.4467602372, 15.4467925393, 15.4468248408, 15.4468571415, 15.4468894415, 15.4469217407, 15.4469540393, 15.4469863371, 15.4470186342, 15.4470509306, 15.4470832262, 15.4471155211, 15.4471478153, 15.4471801088, 15.4472124016, 15.4472446936, 15.4472769849, 15.4473092755, 15.4473415654, 15.4473738545, 15.4474061429, 15.4474384306, 15.4474707176, 15.4475030039, 15.4475352894, 15.4475675742, 15.4475998583, 15.4476321416, 15.4476644243, 15.4476967062, 15.4477289874, 15.4477612679, 15.4477935476, 15.4478258266, 15.447858105, 15.4478903825, 15.4479226594, 15.4479549355, 15.447987211, 15.4480194857, 15.4480517596, 15.4480840329, 15.4481163054, 15.4481485772, 15.4481808483, 15.4482131187, 15.4482453883, 15.4482776572, 15.4483099254, 15.4483421929, 15.4483744597, 15.4484067257, 15.448438991, 15.4484712556, 15.4485035195, 15.4485357826, 15.448568045, 15.4486003067, 15.4486325677, 15.448664828, 15.4486970875, 15.4487293464, 15.4487616045, 15.4487938618, 15.4488261185, 15.4488583744, 15.4488906296, 15.4489228841, 15.4489551379, 15.4489873909, 15.4490196433, 15.4490518949, 15.4490841458, 15.4491163959, 15.4491486454, 15.4491808941, 15.4492131421, 15.4492453894, 15.4492776359, 15.4493098818, 15.4493421269, 15.4493743713, 15.449406615, 15.4494388579, 15.4494711002, 15.4495033417, 15.4495355825, 15.4495678226, 15.4496000619, 15.4496323006, 15.4496645385, 15.4496967757, 15.4497290121, 15.4497612479, 15.4497934829, 15.4498257172, 15.4498579508, 15.4498901837, 15.4499224159, 15.4499546473, 15.449986878, 15.450019108, 15.4500513373, 15.4500835658, 15.4501157937, 15.4501480208, 15.4501802472, 15.4502124728, 15.4502446978, 15.450276922, 15.4503091455, 15.4503413683, 15.4503735904, 15.4504058118, 15.4504380324, 15.4504702523, 15.4505024715, 15.45053469, 15.4505669077, 15.4505991248, 15.4506313411, 15.4506635567, 15.4506957716, 15.4507279857, 15.4507601992, 15.4507924119, 15.4508246239, 15.4508568352, 15.4508890457, 15.4509212556, 15.4509534647, 15.4509856731, 15.4510178808, 15.4510500878, 15.451082294, 15.4511144996, 15.4511467044, 15.4511789085, 15.4512111118, 15.4512433145, 15.4512755164, 15.4513077176, 15.4513399181, 15.4513721179, 15.451404317, 15.4514365153, 15.4514687129, 15.4515009099, 15.451533106, 15.4515653015, 15.4515974963, 15.4516296903, 15.4516618836, 15.4516940762, 15.4517262681, 15.4517584592, 15.4517906497, 15.4518228394, 15.4518550284, 15.4518872167, 15.4519194043, 15.4519515911, 15.4519837772, 15.4520159626, 15.4520481473, 15.4520803313, 15.4521125146, 15.4521446971, 15.4521768789, 15.45220906, 15.4522412404, 15.4522734201, 15.4523055991, 15.4523377773, 15.4523699548, 15.4524021316, 15.4524343077, 15.452466483, 15.4524986577, 15.4525308316, 15.4525630048, 15.4525951773, 15.4526273491, 15.4526595202, 15.4526916905, 15.4527238601, 15.452756029, 15.4527881972, 15.4528203647, 15.4528525314, 15.4528846975, 15.4529168628, 15.4529490274, 15.4529811913, 15.4530133545, 15.4530455169, 15.4530776787, 15.4531098397, 15.453142, 15.4531741596, 15.4532063184, 15.4532384766, 15.453270634, 15.4533027907, 15.4533349467, 15.453367102, 15.4533992566, 15.4534314104, 15.4534635636, 15.453495716, 15.4535278677, 15.4535600187, 15.4535921689, 15.4536243185, 15.4536564673, 15.4536886154, 15.4537207628, 15.4537529095, 15.4537850555, 15.4538172007, 15.4538493453, 15.4538814891, 15.4539136322, 15.4539457746, 15.4539779163, 15.4540100572, 15.4540421975, 15.454074337, 15.4541064758, 15.4541386139, 15.4541707513, 15.4542028879, 15.4542350239, 15.4542671591, 15.4542992936, 15.4543314274, 15.4543635605, 15.4543956929, 15.4544278245, 15.4544599555, 15.4544920857, 15.4545242152, 15.454556344, 15.454588472, 15.4546205994, 15.454652726, 15.454684852, 15.4547169772, 15.4547491017, 15.4547812254, 15.4548133485, 15.4548454709, 15.4548775925, 15.4549097134, 15.4549418336, 15.4549739531, 15.4550060719, 15.4550381899, 15.4550703073, 15.4551024239, 15.4551345398, 15.455166655, 15.4551987695, 15.4552308833, 15.4552629963, 15.4552951087, 15.4553272203, 15.4553593312, 15.4553914414, 15.4554235509, 15.4554556597, 15.4554877677, 15.455519875, 15.4555519817, 15.4555840876, 15.4556161928, 15.4556482973, 15.455680401, 15.4557125041, 15.4557446064, 15.455776708, 15.4558088089, 15.4558409091, 15.4558730086, 15.4559051074, 15.4559372054, 15.4559693028, 15.4560013994, 15.4560334953, 15.4560655905, 15.456097685, 15.4561297787, 15.4561618718, 15.4561939641, 15.4562260557, 15.4562581467, 15.4562902369, 15.4563223263, 15.4563544151, 15.4563865032, 15.4564185905, 15.4564506771, 15.4564827631, 15.4565148483, 15.4565469327, 15.4565790165, 15.4566110996, 15.4566431819, 15.4566752636, 15.4567073445, 15.4567394247, 15.4567715042, 15.456803583, 15.456835661, 15.4568677384, 15.456899815, 15.4569318909, 15.4569639662, 15.4569960407, 15.4570281145, 15.4570601875, 15.4570922599, 15.4571243315, 15.4571564025, 15.4571884727, 15.4572205422, 15.457252611, 15.4572846791, 15.4573167465, 15.4573488131, 15.4573808791, 15.4574129443, 15.4574450088, 15.4574770726, 15.4575091357, 15.4575411981, 15.4575732598, 15.4576053207, 15.457637381, 15.4576694405, 15.4577014993, 15.4577335575, 15.4577656149, 15.4577976715, 15.4578297275, 15.4578617828, 15.4578938373, 15.4579258911, 15.4579579443, 15.4579899967, 15.4580220484, 15.4580540994, 15.4580861496, 15.4581181992, 15.4581502481, 15.4581822962, 15.4582143436, 15.4582463903, 15.4582784363, 15.4583104816, 15.4583425262, 15.4583745701, 15.4584066132, 15.4584386557, 15.4584706974, 15.4585027384, 15.4585347787, 15.4585668183, 15.4585988572, 15.4586308954, 15.4586629329, 15.4586949696, 15.4587270057, 15.458759041, 15.4587910756, 15.4588231095, 15.4588551427, 15.4588871752, 15.458919207, 15.458951238, 15.4589832684, 15.459015298, 15.4590473269, 15.4590793552, 15.4591113827, 15.4591434095, 15.4591754356, 15.4592074609, 15.4592394856, 15.4592715095, 15.4593035328, 15.4593355553, 15.4593675771, 15.4593995982, 15.4594316186, 15.4594636383, 15.4594956573, 15.4595276756, 15.4595596931, 15.45959171, 15.4596237261, 15.4596557415, 15.4596877562, 15.4597197702, 15.4597517835, 15.4597837961, 15.459815808, 15.4598478192, 15.4598798296, 15.4599118393, 15.4599438484, 15.4599758567, 15.4600078643, 15.4600398712, 15.4600718774, 15.4601038829, 15.4601358876, 15.4601678917, 15.4601998951, 15.4602318977, 15.4602638996, 15.4602959009, 15.4603279014, 15.4603599012, 15.4603919003, 15.4604238986, 15.4604558963, 15.4604878933, 15.4605198895, 15.4605518851, 15.4605838799, 15.460615874, 15.4606478674, 15.4606798601, 15.4607118521, 15.4607438434, 15.460775834, 15.4608078239, 15.460839813, 15.4608718015, 15.4609037892, 15.4609357762, 15.4609677626, 15.4609997482, 15.4610317331, 15.4610637173, 15.4610957008, 15.4611276835, 15.4611596656, 15.461191647, 15.4612236276, 15.4612556076, 15.4612875868, 15.4613195653, 15.4613515431, 15.4613835202, 15.4614154966, 15.4614474723, 15.4614794473, 15.4615114216, 15.4615433951, 15.461575368, 15.4616073401, 15.4616393115, 15.4616712823, 15.4617032523, 15.4617352216, 15.4617671902, 15.4617991581, 15.4618311253, 15.4618630918, 15.4618950575, 15.4619270226, 15.4619589869, 15.4619909506, 15.4620229135, 15.4620548757, 15.4620868373, 15.4621187981, 15.4621507582, 15.4621827176, 15.4622146763, 15.4622466342, 15.4622785915, 15.4623105481, 15.4623425039, 15.4623744591, 15.4624064135, 15.4624383673, 15.4624703203, 15.4625022726, 15.4625342242, 15.4625661751, 15.4625981253, 15.4626300748, 15.4626620236, 15.4626939716, 15.462725919, 15.4627578657, 15.4627898116, 15.4628217569, 15.4628537014, 15.4628856452, 15.4629175883, 15.4629495307, 15.4629814725, 15.4630134134, 15.4630453537, 15.4630772933, 15.4631092322, 15.4631411704, 15.4631731078, 15.4632050446, 15.4632369806, 15.463268916, 15.4633008506, 15.4633327845, 15.4633647178, 15.4633966503, 15.4634285821, 15.4634605132, 15.4634924436, 15.4635243733, 15.4635563023, 15.4635882305, 15.4636201581, 15.463652085, 15.4636840111, 15.4637159366, 15.4637478613, 15.4637797853, 15.4638117087, 15.4638436313, 15.4638755532, 15.4639074744, 15.4639393949, 15.4639713147, 15.4640032338, 15.4640351522, 15.4640670699, 15.4640989868, 15.4641309031, 15.4641628187, 15.4641947335, 15.4642266477, 15.4642585611, 15.4642904739, 15.4643223859, 15.4643542972, 15.4643862078, 15.4644181177, 15.4644500269, 15.4644819354, 15.4645138432, 15.4645457503, 15.4645776567, 15.4646095624, 15.4646414674, 15.4646733716, 15.4647052752, 15.4647371781, 15.4647690802, 15.4648009817, 15.4648328824, 15.4648647824, 15.4648966818, 15.4649285804, 15.4649604783, 15.4649923755, 15.465024272, 15.4650561678, 15.4650880629, 15.4651199573, 15.465151851, 15.465183744, 15.4652156363, 15.4652475278, 15.4652794187, 15.4653113089, 15.4653431983, 15.4653750871, 15.4654069751, 15.4654388625, 15.4654707491, 15.4655026351, 15.4655345203, 15.4655664048, 15.4655982886, 15.4656301717, 15.4656620542, 15.4656939359, 15.4657258169, 15.4657576972, 15.4657895768, 15.4658214556, 15.4658533338, 15.4658852113, 15.4659170881, 15.4659489642, 15.4659808395, 15.4660127142, 15.4660445881, 15.4660764614, 15.4661083339, 15.4661402058, 15.4661720769, 15.4662039474, 15.4662358171, 15.4662676861, 15.4662995545, 15.4663314221, 15.466363289, 15.4663951552, 15.4664270207, 15.4664588855, 15.4664907496, 15.466522613, 15.4665544757, 15.4665863377, 15.466618199, 15.4666500596, 15.4666819195, 15.4667137786, 15.4667456371, 15.4667774949, 15.466809352, 15.4668412083, 15.466873064, 15.4669049189, 15.4669367732, 15.4669686267, 15.4670004796, 15.4670323317, 15.4670641832, 15.4670960339, 15.4671278839, 15.4671597333, 15.4671915819, 15.4672234298, 15.467255277, 15.4672871236, 15.4673189694, 15.4673508145, 15.4673826589, 15.4674145026, 15.4674463456, 15.4674781879, 15.4675100295, 15.4675418704, 15.4675737106, 15.4676055501, 15.4676373889, 15.467669227, 15.4677010643, 15.467732901, 15.467764737, 15.4677965723, 15.4678284068, 15.4678602407, 15.4678920739, 15.4679239063, 15.4679557381, 15.4679875692, 15.4680193995, 15.4680512292, 15.4680830581, 15.4681148864, 15.4681467139, 15.4681785408, 15.4682103669, 15.4682421924, 15.4682740171, 15.4683058411, 15.4683376645, 15.4683694871, 15.468401309, 15.4684331303, 15.4684649508, 15.4684967706, 15.4685285898, 15.4685604082, 15.4685922259, 15.4686240429, 15.4686558592, 15.4686876749, 15.4687194898, 15.468751304, 15.4687831175, 15.4688149303, 15.4688467424, 15.4688785538, 15.4689103645, 15.4689421745, 15.4689739838, 15.4690057924, 15.4690376003, 15.4690694075, 15.469101214, 15.4691330198, 15.4691648249, 15.4691966293, 15.469228433, 15.469260236, 15.4692920383, 15.4693238399, 15.4693556408, 15.469387441, 15.4694192405, 15.4694510392, 15.4694828373, 15.4695146347, 15.4695464314, 15.4695782274, 15.4696100227, 15.4696418172, 15.4696736111, 15.4697054043, 15.4697371968, 15.4697689886, 15.4698007796, 15.46983257, 15.4698643597, 15.4698961487, 15.4699279369, 15.4699597245, 15.4699915114, 15.4700232976, 15.4700550831, 15.4700868678, 15.4701186519, 15.4701504353, 15.4701822179, 15.4702139999, 15.4702457812, 15.4702775618, 15.4703093416, 15.4703411208, 15.4703728993, 15.4704046771, 15.4704364541, 15.4704682305, 15.4705000062, 15.4705317812, 15.4705635554, 15.470595329, 15.4706271019, 15.4706588741, 15.4706906455, 15.4707224163, 15.4707541864, 15.4707859558, 15.4708177244, 15.4708494924, 15.4708812597, 15.4709130263, 15.4709447922, 15.4709765573, 15.4710083218, 15.4710400856, 15.4710718487, 15.4711036111, 15.4711353727, 15.4711671337, 15.471198894, 15.4712306536, 15.4712624125, 15.4712941707, 15.4713259282, 15.4713576849, 15.471389441, 15.4714211964, 15.4714529511, 15.4714847051, 15.4715164584, 15.471548211, 15.4715799629, 15.4716117141, 15.4716434646, 15.4716752144, 15.4717069635, 15.4717387119, 15.4717704596, 15.4718022066, 15.4718339529, 15.4718656985, 15.4718974434, 15.4719291876, 15.4719609312, 15.471992674, 15.4720244161, 15.4720561575, 15.4720878982, 15.4721196382, 15.4721513776, 15.4721831162, 15.4722148541, 15.4722465913, 15.4722783279, 15.4723100637, 15.4723417988, 15.4723735333, 15.472405267, 15.4724370001, 15.4724687324, 15.472500464, 15.472532195, 15.4725639252, 15.4725956548, 15.4726273836, 15.4726591118, 15.4726908392, 15.472722566, 15.4727542921, 15.4727860174, 15.4728177421, 15.4728494661, 15.4728811893, 15.4729129119, 15.4729446338, 15.472976355, 15.4730080754, 15.4730397952, 15.4730715143, 15.4731032327, 15.4731349504, 15.4731666674, 15.4731983837, 15.4732300993, 15.4732618142, 15.4732935284, 15.4733252419, 15.4733569547, 15.4733886668, 15.4734203782, 15.473452089, 15.473483799, 15.4735155083, 15.4735472169, 15.4735789249, 15.4736106321, 15.4736423386, 15.4736740445, 15.4737057496, 15.4737374541, 15.4737691578, 15.4738008609, 15.4738325632, 15.4738642649, 15.4738959659, 15.4739276661, 15.4739593657, 15.4739910646, 15.4740227627, 15.4740544602, 15.474086157, 15.4741178531, 15.4741495485, 15.4741812432, 15.4742129372, 15.4742446305, 15.4742763231, 15.474308015, 15.4743397062, 15.4743713968, 15.4744030866, 15.4744347757, 15.4744664641, 15.4744981519, 15.4745298389, 15.4745615252, 15.4745932109, 15.4746248958, 15.4746565801, 15.4746882637, 15.4747199465, 15.4747516287, 15.4747833102, 15.4748149909, 15.474846671, 15.4748783504, 15.4749100291, 15.4749417071, 15.4749733844, 15.475005061, 15.4750367369, 15.4750684121, 15.4751000866, 15.4751317605, 15.4751634336, 15.475195106, 15.4752267777, 15.4752584488, 15.4752901191, 15.4753217888, 15.4753534577, 15.475385126, 15.4754167936, 15.4754484604, 15.4754801266, 15.4755117921, 15.4755434569, 15.4755751209, 15.4756067843, 15.475638447, 15.475670109, 15.4757017704, 15.475733431, 15.4757650909, 15.4757967501, 15.4758284086, 15.4758600665, 15.4758917236, 15.4759233801, 15.4759550358, 15.4759866909, 15.4760183452, 15.4760499989, 15.4760816519, 15.4761133042, 15.4761449557, 15.4761766066, 15.4762082568, 15.4762399063, 15.4762715551, 15.4763032032, 15.4763348507, 15.4763664974, 15.4763981434, 15.4764297888, 15.4764614334, 15.4764930773, 15.4765247206, 15.4765563632, 15.476588005, 15.4766196462, 15.4766512867, 15.4766829265, 15.4767145655, 15.4767462039, 15.4767778416, 15.4768094787, 15.476841115, 15.4768727506, 15.4769043855, 15.4769360197, 15.4769676533, 15.4769992861, 15.4770309183, 15.4770625497, 15.4770941805, 15.4771258106, 15.47715744, 15.4771890686, 15.4772206966, 15.4772523239, 15.4772839505, 15.4773155765, 15.4773472017, 15.4773788262, 15.47741045, 15.4774420732, 15.4774736956, 15.4775053174, 15.4775369384, 15.4775685588, 15.4776001785, 15.4776317975, 15.4776634157, 15.4776950333, 15.4777266502, 15.4777582664, 15.477789882, 15.4778214968, 15.4778531109, 15.4778847244, 15.4779163371, 15.4779479491, 15.4779795605, 15.4780111712, 15.4780427812, 15.4780743904, 15.478105999, 15.4781376069, 15.4781692141, 15.4782008206, 15.4782324265, 15.4782640316, 15.478295636, 15.4783272398, 15.4783588428, 15.4783904452, 15.4784220468, 15.4784536478, 15.4784852481, 15.4785168477, 15.4785484466, 15.4785800448, 15.4786116423, 15.4786432391, 15.4786748352, 15.4787064307, 15.4787380254, 15.4787696195, 15.4788012128, 15.4788328055, 15.4788643975, 15.4788959888, 15.4789275794, 15.4789591693, 15.4789907585, 15.479022347, 15.4790539348, 15.479085522, 15.4791171084, 15.4791486942, 15.4791802792, 15.4792118636, 15.4792434473, 15.4792750303, 15.4793066125, 15.4793381941, 15.4793697751, 15.4794013553, 15.4794329348, 15.4794645137, 15.4794960918, 15.4795276693, 15.479559246, 15.4795908221, 15.4796223975, 15.4796539722, 15.4796855462, 15.4797171195, 15.4797486921, 15.479780264, 15.4798118353, 15.4798434058, 15.4798749757, 15.4799065448, 15.4799381133, 15.4799696811, 15.4800012482, 15.4800328146, 15.4800643803, 15.4800959453, 15.4801275096, 15.4801590733, 15.4801906362, 15.4802221985, 15.4802537601, 15.4802853209, 15.4803168811, 15.4803484406, 15.4803799994, 15.4804115575, 15.480443115, 15.4804746717, 15.4805062277, 15.4805377831, 15.4805693378, 15.4806008917, 15.480632445, 15.4806639976, 15.4806955495, 15.4807271007, 15.4807586513, 15.4807902011, 15.4808217502, 15.4808532987, 15.4808848465, 15.4809163935, 15.4809479399, 15.4809794856, 15.4810110306, 15.4810425749, 15.4810741186, 15.4811056615, 15.4811372037, 15.4811687453, 15.4812002862, 15.4812318263, 15.4812633658, 15.4812949046, 15.4813264427, 15.4813579802, 15.4813895169, 15.4814210529, 15.4814525883, 15.4814841229, 15.4815156569, 15.4815471902, 15.4815787228, 15.4816102547, 15.4816417859, 15.4816733164, 15.4817048463, 15.4817363754, 15.4817679039, 15.4817994317, 15.4818309587, 15.4818624851, 15.4818940108, 15.4819255359, 15.4819570602, 15.4819885838, 15.4820201068, 15.482051629, 15.4820831506, 15.4821146715, 15.4821461917, 15.4821777112, 15.48220923, 15.4822407481, 15.4822722656, 15.4823037823, 15.4823352984, 15.4823668138, 15.4823983284, 15.4824298424, 15.4824613558, 15.4824928684, 15.4825243803, 15.4825558915, 15.4825874021, 15.482618912, 15.4826504212, 15.4826819296, 15.4827134374, 15.4827449446, 15.482776451, 15.4828079567, 15.4828394618, 15.4828709661, 15.4829024698, 15.4829339728, 15.4829654751, 15.4829969767, 15.4830284776, 15.4830599779, 15.4830914774, 15.4831229763, 15.4831544745, 15.4831859719, 15.4832174687, 15.4832489648, 15.4832804603, 15.483311955, 15.483343449, 15.4833749424, 15.4834064351, 15.4834379271, 15.4834694184, 15.483500909, 15.4835323989, 15.4835638881, 15.4835953767, 15.4836268645, 15.4836583517, 15.4836898382, 15.483721324, 15.4837528091, 15.4837842935, 15.4838157773, 15.4838472603, 15.4838787427, 15.4839102244, 15.4839417053, 15.4839731856, 15.4840046653, 15.4840361442, 15.4840676224, 15.4840991, 15.4841305769, 15.484162053, 15.4841935285, 15.4842250033, 15.4842564775, 15.4842879509, 15.4843194236, 15.4843508957, 15.4843823671, 15.4844138378, 15.4844453078, 15.4844767771, 15.4845082457, 15.4845397137, 15.4845711809, 15.4846026475, 15.4846341134, 15.4846655786, 15.4846970431, 15.4847285069, 15.48475997, 15.4847914325, 15.4848228943, 15.4848543553, 15.4848858157, 15.4849172754, 15.4849487345, 15.4849801928, 15.4850116505, 15.4850431074, 15.4850745637, 15.4851060193, 15.4851374742, 15.4851689284, 15.485200382, 15.4852318348, 15.485263287, 15.4852947384, 15.4853261892, 15.4853576393, 15.4853890888, 15.4854205375, 15.4854519856, 15.4854834329, 15.4855148796, 15.4855463256, 15.4855777709, 15.4856092155, 15.4856406595, 15.4856721027, 15.4857035453, 15.4857349872, 15.4857664284, 15.4857978689, 15.4858293087, 15.4858607478, 15.4858921863, 15.4859236241, 15.4859550612, 15.4859864976, 15.4860179333, 15.4860493683, 15.4860808027, 15.4861122363, 15.4861436693, 15.4861751016, 15.4862065332, 15.4862379641, 15.4862693943, 15.4863008239, 15.4863322528, 15.486363681, 15.4863951085, 15.4864265353, 15.4864579614, 15.4864893868, 15.4865208116, 15.4865522357, 15.4865836591, 15.4866150818, 15.4866465038, 15.4866779251, 15.4867093458, 15.4867407658, 15.486772185, 15.4868036036, 15.4868350216, 15.4868664388, 15.4868978553, 15.4869292712, 15.4869606864, 15.4869921009, 15.4870235147, 15.4870549278, 15.4870863403, 15.487117752, 15.4871491631, 15.4871805735, 15.4872119832, 15.4872433922, 15.4872748006, 15.4873062082, 15.4873376152, 15.4873690215, 15.4874004271, 15.487431832, 15.4874632363, 15.4874946398, 15.4875260427, 15.4875574449, 15.4875888464, 15.4876202472, 15.4876516473, 15.4876830468, 15.4877144456, 15.4877458437, 15.4877772411, 15.4878086378, 15.4878400338, 15.4878714292, 15.4879028238, 15.4879342178, 15.4879656111, 15.4879970038, 15.4880283957, 15.488059787, 15.4880911775, 15.4881225674, 15.4881539566, 15.4881853452, 15.488216733, 15.4882481202, 15.4882795066, 15.4883108924, 15.4883422775, 15.488373662, 15.4884050457, 15.4884364288, 15.4884678111, 15.4884991928, 15.4885305739, 15.4885619542, 15.4885933338, 15.4886247128, 15.4886560911, 15.4886874687, 15.4887188456, 15.4887502218, 15.4887815974, 15.4888129723, 15.4888443465, 15.48887572, 15.4889070928, 15.4889384649, 15.4889698364, 15.4890012072, 15.4890325773, 15.4890639467, 15.4890953154, 15.4891266835, 15.4891580508, 15.4891894175, 15.4892207835, 15.4892521488, 15.4892835135, 15.4893148774, 15.4893462407, 15.4893776033, 15.4894089652, 15.4894403265, 15.489471687, 15.4895030469, 15.4895344061, 15.4895657646, 15.4895971224, 15.4896284795, 15.489659836, 15.4896911918, 15.4897225469, 15.4897539013, 15.489785255, 15.4898166081, 15.4898479604, 15.4898793121, 15.4899106631, 15.4899420135, 15.4899733631, 15.4900047121, 15.4900360604, 15.490067408, 15.4900987549, 15.4901301011, 15.4901614467, 15.4901927916, 15.4902241358, 15.4902554793, 15.4902868221, 15.4903181643, 15.4903495057, 15.4903808465, 15.4904121866, 15.4904435261, 15.4904748648, 15.4905062029, 15.4905375403, 15.490568877, 15.490600213, 15.4906315484, 15.490662883, 15.490694217, 15.4907255503, 15.4907568829, 15.4907882149, 15.4908195462, 15.4908508767, 15.4908822066, 15.4909135359, 15.4909448644, 15.4909761923, 15.4910075195, 15.491038846, 15.4910701718, 15.4911014969, 15.4911328214, 15.4911641452, 15.4911954683, 15.4912267907, 15.4912581124, 15.4912894335, 15.4913207539, 15.4913520736, 15.4913833926, 15.4914147109, 15.4914460286, 15.4914773456, 15.4915086619, 15.4915399775, 15.4915712924, 15.4916026067, 15.4916339203, 15.4916652332, 15.4916965454, 15.4917278569, 15.4917591678, 15.491790478, 15.4918217875, 15.4918530963, 15.4918844045, 15.4919157119, 15.4919470187, 15.4919783248, 15.4920096303, 15.492040935, 15.4920722391, 15.4921035425, 15.4921348452, 15.4921661472, 15.4921974486, 15.4922287493, 15.4922600492, 15.4922913486, 15.4923226472, 15.4923539452, 15.4923852424, 15.492416539, 15.492447835, 15.4924791302, 15.4925104248, 15.4925417187, 15.4925730119, 15.4926043044, 15.4926355962, 15.4926668874, 15.4926981779, 15.4927294677, 15.4927607568, 15.4927920453, 15.4928233331, 15.4928546202, 15.4928859066, 15.4929171923, 15.4929484774, 15.4929797618, 15.4930110455, 15.4930423285, 15.4930736109, 15.4931048925, 15.4931361735, 15.4931674538, 15.4931987335, 15.4932300124, 15.4932612907, 15.4932925683, 15.4933238452, 15.4933551215, 15.4933863971, 15.493417672, 15.4934489462, 15.4934802197, 15.4935114926, 15.4935427647, 15.4935740362, 15.4936053071, 15.4936365772, 15.4936678467, 15.4936991155, 15.4937303836, 15.493761651, 15.4937929178, 15.4938241838, 15.4938554492, 15.493886714, 15.493917978, 15.4939492414, 15.4939805041, 15.4940117661, 15.4940430274, 15.4940742881, 15.4941055481, 15.4941368074, 15.494168066, 15.4941993239, 15.4942305812, 15.4942618378, 15.4942930937, 15.494324349, 15.4943556035, 15.4943868574, 15.4944181106, 15.4944493632, 15.494480615, 15.4945118662, 15.4945431167, 15.4945743665, 15.4946056157, 15.4946368641, 15.4946681119, 15.4946993591, 15.4947306055, 15.4947618513, 15.4947930963, 15.4948243408, 15.4948555845, 15.4948868275, 15.4949180699, 15.4949493116, 15.4949805527, 15.495011793, 15.4950430327, 15.4950742717, 15.49510551, 15.4951367477, 15.4951679846, 15.4951992209, 15.4952304565, 15.4952616915, 15.4952929257, 15.4953241593, 15.4953553922, 15.4953866245, 15.495417856, 15.4954490869, 15.4954803171, 15.4955115467, 15.4955427755, 15.4955740037, 15.4956052312, 15.495636458, 15.4956676842, 15.4956989096, 15.4957301344, 15.4957613586, 15.495792582, 15.4958238048, 15.4958550269, 15.4958862483, 15.4959174691, 15.4959486891, 15.4959799085, 15.4960111272, 15.4960423453, 15.4960735626, 15.4961047793, 15.4961359954, 15.4961672107, 15.4961984254, 15.4962296394, 15.4962608527, 15.4962920653, 15.4963232773, 15.4963544886, 15.4963856992, 15.4964169091, 15.4964481184, 15.496479327, 15.4965105349, 15.4965417421, 15.4965729487, 15.4966041546, 15.4966353598, 15.4966665643, 15.4966977682, 15.4967289714, 15.4967601739, 15.4967913757, 15.4968225769, 15.4968537774, 15.4968849772, 15.4969161763, 15.4969473748, 15.4969785726, 15.4970097697, 15.4970409662, 15.4970721619, 15.497103357, 15.4971345514, 15.4971657452, 15.4971969382, 15.4972281306, 15.4972593224, 15.4972905134, 15.4973217038, 15.4973528935, 15.4973840825, 15.4974152708, 15.4974464585, 15.4974776455, 15.4975088318, 15.4975400175, 15.4975712025, 15.4976023868, 15.4976335704, 15.4976647534, 15.4976959357, 15.4977271173, 15.4977582982, 15.4977894785, 15.497820658, 15.497851837, 15.4978830152, 15.4979141928, 15.4979453696, 15.4979765459, 15.4980077214, 15.4980388963, 15.4980700705, 15.498101244, 15.4981324168, 15.498163589, 15.4981947605, 15.4982259313, 15.4982571015, 15.498288271, 15.4983194398, 15.4983506079, 15.4983817754, 15.4984129422, 15.4984441083, 15.4984752737, 15.4985064385, 15.4985376026, 15.498568766, 15.4985999288, 15.4986310908, 15.4986622522, 15.498693413, 15.498724573, 15.4987557324, 15.4987868911, 15.4988180492, 15.4988492065, 15.4988803632, 15.4989115192, 15.4989426746, 15.4989738293, 15.4990049833, 15.4990361366, 15.4990672892, 15.4990984412, 15.4991295925, 15.4991607432, 15.4991918931, 15.4992230424, 15.4992541911, 15.499285339, 15.4993164863, 15.4993476329, 15.4993787788, 15.4994099241, 15.4994410686, 15.4994722126, 15.4995033558, 15.4995344984, 15.4995656403, 15.4995967815, 15.499627922, 15.4996590619, 15.4996902011, 15.4997213397, 15.4997524775, 15.4997836147, 15.4998147512, 15.4998458871, 15.4998770223, 15.4999081568, 15.4999392906, 15.4999704238, 15.5000015562, 15.5000326881, 15.5000638192, 15.5000949497, 15.5001260795, 15.5001572086, 15.5001883371, 15.5002194648, 15.500250592, 15.5002817184, 15.5003128442, 15.5003439693, 15.5003750937, 15.5004062175, 15.5004373405, 15.500468463, 15.5004995847, 15.5005307058, 15.5005618262, 15.5005929459, 15.500624065, 15.5006551833, 15.5006863011, 15.5007174181, 15.5007485345, 15.5007796502, 15.5008107652, 15.5008418796, 15.5008729932, 15.5009041063, 15.5009352186, 15.5009663303, 15.5009974413, 15.5010285516, 15.5010596613, 15.5010907703, 15.5011218786, 15.5011529862, 15.5011840932, 15.5012151995, 15.5012463052, 15.5012774101, 15.5013085144, 15.5013396181, 15.501370721, 15.5014018233, 15.5014329249, 15.5014640259, 15.5014951261, 15.5015262257, 15.5015573247, 15.5015884229, 15.5016195205, 15.5016506174, 15.5016817137, 15.5017128093, 15.5017439042, 15.5017749984, 15.501806092, 15.5018371849, 15.5018682771, 15.5018993687, 15.5019304596, 15.5019615498, 15.5019926394, 15.5020237282, 15.5020548164, 15.502085904, 15.5021169909, 15.5021480771, 15.5021791626, 15.5022102474, 15.5022413316, 15.5022724152, 15.502303498, 15.5023345802, 15.5023656617, 15.5023967426, 15.5024278227, 15.5024589022, 15.5024899811, 15.5025210592, 15.5025521367, 15.5025832136, 15.5026142897, 15.5026453652, 15.50267644, 15.5027075142, 15.5027385876, 15.5027696605, 15.5028007326, 15.5028318041, 15.5028628749, 15.502893945, 15.5029250145, 15.5029560833, 15.5029871514, 15.5030182188, 15.5030492856, 15.5030803518, 15.5031114172, 15.503142482, 15.5031735461, 15.5032046095, 15.5032356723, 15.5032667344, 15.5032977959, 15.5033288566, 15.5033599167, 15.5033909762, 15.5034220349, 15.503453093, 15.5034841504, 15.5035152072, 15.5035462633, 15.5035773187, 15.5036083735, 15.5036394275, 15.503670481, 15.5037015337, 15.5037325858, 15.5037636372, 15.5037946879, 15.503825738, 15.5038567874, 15.5038878361, 15.5039188842, 15.5039499316, 15.5039809783, 15.5040120244, 15.5040430698, 15.5040741145, 15.5041051586, 15.504136202, 15.5041672447, 15.5041982867, 15.5042293281, 15.5042603689, 15.5042914089, 15.5043224483, 15.504353487, 15.5043845251, 15.5044155624, 15.5044465991, 15.5044776352, 15.5045086706, 15.5045397053, 15.5045707393, 15.5046017727, 15.5046328054, 15.5046638374, 15.5046948688, 15.5047258995, 15.5047569296, 15.5047879589, 15.5048189876, 15.5048500157, 15.504881043, 15.5049120697, 15.5049430958, 15.5049741211, 15.5050051458, 15.5050361699, 15.5050671932, 15.5050982159, 15.505129238, 15.5051602593, 15.50519128, 15.5052223, 15.5052533194, 15.5052843381, 15.5053153561, 15.5053463735, 15.5053773902, 15.5054084062, 15.5054394216, 15.5054704363, 15.5055014503, 15.5055324637, 15.5055634764, 15.5055944884, 15.5056254997, 15.5056565104, 15.5056875205, 15.5057185298, 15.5057495385, 15.5057805466, 15.5058115539, 15.5058425606, 15.5058735666, 15.505904572, 15.5059355767, 15.5059665807, 15.5059975841, 15.5060285868, 15.5060595888, 15.5060905902, 15.5061215909, 15.5061525909, 15.5061835903, 15.506214589, 15.506245587, 15.5062765844, 15.5063075811, 15.5063385771, 15.5063695725, 15.5064005672, 15.5064315613, 15.5064625546, 15.5064935473, 15.5065245394, 15.5065555308, 15.5065865215, 15.5066175115, 15.5066485009, 15.5066794896, 15.5067104776, 15.506741465, 15.5067724517, 15.5068034378, 15.5068344232, 15.5068654079, 15.506896392, 15.5069273753, 15.5069583581, 15.5069893401, 15.5070203215, 15.5070513022, 15.5070822823, 15.5071132617, 15.5071442404, 15.5071752185, 15.5072061959, 15.5072371726, 15.5072681487, 15.5072991241, 15.5073300989, 15.5073610729, 15.5073920464, 15.5074230191, 15.5074539912, 15.5074849626, 15.5075159333, 15.5075469034, 15.5075778729, 15.5076088416, 15.5076398097, 15.5076707771, 15.5077017439, 15.50773271, 15.5077636754, 15.5077946402, 15.5078256043, 15.5078565677, 15.5078875305, 15.5079184926, 15.5079494541, 15.5079804149, 15.508011375, 15.5080423344, 15.5080732932, 15.5081042513, 15.5081352088, 15.5081661656, 15.5081971217, 15.5082280772, 15.508259032, 15.5082899861, 15.5083209396, 15.5083518924, 15.5083828446, 15.5084137961, 15.5084447469, 15.508475697, 15.5085066465, 15.5085375953, 15.5085685435, 15.508599491, 15.5086304378, 15.508661384, 15.5086923295, 15.5087232744, 15.5087542185, 15.5087851621, 15.5088161049, 15.5088470471, 15.5088779886, 15.5089089295, 15.5089398697, 15.5089708092, 15.5090017481, 15.5090326863, 15.5090636239, 15.5090945607, 15.5091254969, 15.5091564325, 15.5091873674, 15.5092183016, 15.5092492352, 15.5092801681, 15.5093111003, 15.5093420319, 15.5093729628, 15.5094038931, 15.5094348226, 15.5094657516, 15.5094966798, 15.5095276074, 15.5095585344, 15.5095894606, 15.5096203862, 15.5096513112, 15.5096822355, 15.5097131591, 15.509744082, 15.5097750043, 15.509805926, 15.5098368469, 15.5098677672, 15.5098986869, 15.5099296059, 15.5099605242, 15.5099914418, 15.5100223588, 15.5100532751, 15.5100841908, 15.5101151058, 15.5101460202, 15.5101769338, 15.5102078469, 15.5102387592, 15.5102696709, 15.5103005819, 15.5103314923, 15.510362402, 15.510393311, 15.5104242194, 15.5104551271, 15.5104860342, 15.5105169406, 15.5105478463, 15.5105787514, 15.5106096558, 15.5106405596, 15.5106714626, 15.5107023651, 15.5107332668, 15.5107641679, 15.5107950684, 15.5108259681, 15.5108568672, 15.5108877657, 15.5109186635, 15.5109495606, 15.5109804571, 15.5110113529, 15.511042248, 15.5110731425, 15.5111040363, 15.5111349295, 15.511165822, 15.5111967138, 15.511227605, 15.5112584955, 15.5112893854, 15.5113202745, 15.5113511631, 15.5113820509, 15.5114129381, 15.5114438247, 15.5114747106, 15.5115055958, 15.5115364804, 15.5115673643, 15.5115982475, 15.5116291301, 15.511660012, 15.5116908932, 15.5117217738, 15.5117526538, 15.511783533, 15.5118144117, 15.5118452896, 15.5118761669, 15.5119070435, 15.5119379195, 15.5119687948, 15.5119996694, 15.5120305434, 15.5120614168, 15.5120922894, 15.5121231614, 15.5121540328, 15.5121849034, 15.5122157735, 15.5122466428, 15.5122775115, 15.5123083796, 15.512339247, 15.5123701137, 15.5124009797, 15.5124318451, 15.5124627099, 15.5124935739, 15.5125244374, 15.5125553001, 15.5125861622, 15.5126170237, 15.5126478844, 15.5126787445, 15.512709604, 15.5127404628, 15.5127713209, 15.5128021784, 15.5128330352, 15.5128638914, 15.5128947469, 15.5129256017, 15.5129564559, 15.5129873094, 15.5130181623, 15.5130490145, 15.513079866, 15.5131107169, 15.5131415671, 15.5131724167, 15.5132032656, 15.5132341138, 15.5132649614, 15.5132958083, 15.5133266546, 15.5133575002, 15.5133883451, 15.5134191894, 15.513450033, 15.513480876, 15.5135117183, 15.5135425599, 15.5135734009, 15.5136042412, 15.5136350809, 15.5136659199, 15.5136967583, 15.513727596, 15.513758433, 15.5137892694, 15.5138201051, 15.5138509401, 15.5138817745, 15.5139126082, 15.5139434413, 15.5139742737, 15.5140051055, 15.5140359366, 15.514066767, 15.5140975968, 15.5141284259, 15.5141592544, 15.5141900822, 15.5142209094, 15.5142517358, 15.5142825617, 15.5143133868, 15.5143442114, 15.5143750352, 15.5144058584, 15.5144366809, 15.5144675028, 15.514498324, 15.5145291446, 15.5145599645, 15.5145907837, 15.5146216023, 15.5146524203, 15.5146832375, 15.5147140541, 15.5147448701, 15.5147756854, 15.5148065, 15.514837314, 15.5148681273, 15.51489894, 15.514929752, 15.5149605633, 15.514991374, 15.515022184, 15.5150529934, 15.5150838021, 15.5151146102, 15.5151454176, 15.5151762243, 15.5152070304, 15.5152378358, 15.5152686406, 15.5152994447, 15.5153302482, 15.515361051, 15.5153918531, 15.5154226546, 15.5154534554, 15.5154842556, 15.5155150551, 15.5155458539, 15.5155766521, 15.5156074496, 15.5156382465, 15.5156690427, 15.5156998383, 15.5157306332, 15.5157614274, 15.515792221, 15.515823014, 15.5158538062, 15.5158845978, 15.5159153888, 15.5159461791, 15.5159769688, 15.5160077577, 15.5160385461, 15.5160693338, 15.5161001208, 15.5161309071, 15.5161616928, 15.5161924779, 15.5162232623, 15.516254046, 15.5162848291, 15.5163156115, 15.5163463933, 15.5163771744, 15.5164079548, 15.5164387346, 15.5164695137, 15.5165002922, 15.51653107, 15.5165618472, 15.5165926237, 15.5166233996, 15.5166541748, 15.5166849493, 15.5167157232, 15.5167464964, 15.516777269, 15.5168080409, 15.5168388122, 15.5168695828, 15.5169003527, 15.516931122, 15.5169618906, 15.5169926586, 15.5170234259, 15.5170541926, 15.5170849586, 15.517115724, 15.5171464886, 15.5171772527, 15.5172080161, 15.5172387788, 15.5172695409, 15.5173003023, 15.5173310631, 15.5173618232, 15.5173925826, 15.5174233414, 15.5174540995, 15.517484857, 15.5175156138, 15.51754637, 15.5175771255, 15.5176078804, 15.5176386346, 15.5176693881, 15.517700141, 15.5177308933, 15.5177616448, 15.5177923958, 15.517823146, 15.5178538957, 15.5178846446, 15.5179153929, 15.5179461406, 15.5179768876, 15.5180076339, 15.5180383796, 15.5180691246, 15.518099869, 15.5181306127, 15.5181613558, 15.5181920982, 15.5182228399, 15.518253581, 15.5182843215, 15.5183150612, 15.5183458004, 15.5183765388, 15.5184072767, 15.5184380138, 15.5184687504, 15.5184994862, 15.5185302214, 15.518560956, 15.5185916899, 15.5186224231, 15.5186531557, 15.5186838876, 15.5187146189, 15.5187453495, 15.5187760795, 15.5188068088, 15.5188375374, 15.5188682654, 15.5188989928, 15.5189297195, 15.5189604455, 15.5189911709, 15.5190218956, 15.5190526197, 15.5190833431, 15.5191140659, 15.519144788, 15.5191755095, 15.5192062303, 15.5192369504, 15.5192676699, 15.5192983887, 15.5193291069, 15.5193598245, 15.5193905413, 15.5194212576, 15.5194519731, 15.5194826881, 15.5195134023, 15.5195441159, 15.5195748289, 15.5196055412, 15.5196362528, 15.5196669638, 15.5196976742, 15.5197283839, 15.5197590929, 15.5197898013, 15.519820509, 15.5198512161, 15.5198819225, 15.5199126283, 15.5199433334, 15.5199740378, 15.5200047416, 15.5200354448, 15.5200661473, 15.5200968491, 15.5201275503, 15.5201582509, 15.5201889507, 15.52021965, 15.5202503486, 15.5202810465, 15.5203117438, 15.5203424404, 15.5203731363, 15.5204038317, 15.5204345263, 15.5204652203, 15.5204959137, 15.5205266064, 15.5205572984, 15.5205879898, 15.5206186806, 15.5206493706, 15.5206800601, 15.5207107489, 15.520741437, 15.5207721245, 15.5208028113, 15.5208334975, 15.520864183, 15.5208948679, 15.5209255521, 15.5209562356, 15.5209869185, 15.5210176008, 15.5210482824, 15.5210789634, 15.5211096437, 15.5211403233, 15.5211710023, 15.5212016806, 15.5212323583, 15.5212630354, 15.5212937117, 15.5213243875, 15.5213550626, 15.521385737, 15.5214164108, 15.5214470839, 15.5214777564, 15.5215084282, 15.5215390993, 15.5215697699, 15.5216004397, 15.5216311089, 15.5216617775, 15.5216924454, 15.5217231127, 15.5217537793, 15.5217844452, 15.5218151105, 15.5218457752, 15.5218764392, 15.5219071025, 15.5219377652, 15.5219684272, 15.5219990886, 15.5220297494, 15.5220604095, 15.5220910689, 15.5221217277, 15.5221523858, 15.5221830433, 15.5222137001, 15.5222443563, 15.5222750118, 15.5223056667, 15.5223363209, 15.5223669745, 15.5223976274, 15.5224282797, 15.5224589313, 15.5224895823, 15.5225202326, 15.5225508822, 15.5225815313, 15.5226121796, 15.5226428273, 15.5226734744, 15.5227041208, 15.5227347666, 15.5227654117, 15.5227960561, 15.5228266999, 15.5228573431, 15.5228879856, 15.5229186274, 15.5229492686, 15.5229799092, 15.5230105491, 15.5230411883, 15.5230718269, 15.5231024649, 15.5231331022, 15.5231637388, 15.5231943748, 15.5232250102, 15.5232556449, 15.5232862789, 15.5233169123, 15.5233475451, 15.5233781772, 15.5234088086, 15.5234394394, 15.5234700695, 15.523500699, 15.5235313279, 15.5235619561, 15.5235925836, 15.5236232105, 15.5236538367, 15.5236844623, 15.5237150873, 15.5237457116, 15.5237763352, 15.5238069582, 15.5238375805, 15.5238682022, 15.5238988233, 15.5239294437, 15.5239600634, 15.5239906825, 15.5240213009, 15.5240519187, 15.5240825359, 15.5241131524, 15.5241437682, 15.5241743834, 15.5242049979, 15.5242356118, 15.5242662251, 15.5242968377, 15.5243274496, 15.5243580609, 15.5243886715, 15.5244192815, 15.5244498909, 15.5244804996, 15.5245111076, 15.524541715, 15.5245723218, 15.5246029279, 15.5246335333, 15.5246641381, 15.5246947423, 15.5247253458, 15.5247559486, 15.5247865509, 15.5248171524, 15.5248477533, 15.5248783536, 15.5249089532, 15.5249395521, 15.5249701504, 15.5250007481, 15.5250313451, 15.5250619415, 15.5250925372, 15.5251231323, 15.5251537267, 15.5251843205, 15.5252149136, 15.525245506, 15.5252760979, 15.525306689, 15.5253372796, 15.5253678694, 15.5253984587, 15.5254290472, 15.5254596352, 15.5254902225, 15.5255208091, 15.5255513951, 15.5255819804, 15.5256125651, 15.5256431491, 15.5256737325, 15.5257043153, 15.5257348974, 15.5257654788, 15.5257960596, 15.5258266398, 15.5258572193, 15.5258877981, 15.5259183763, 15.5259489539, 15.5259795308, 15.5260101071, 15.5260406827, 15.5260712576, 15.526101832, 15.5261324056, 15.5261629787, 15.526193551, 15.5262241228, 15.5262546938, 15.5262852643, 15.526315834, 15.5263464032, 15.5263769717, 15.5264075395, 15.5264381067, 15.5264686732, 15.5264992391, 15.5265298044, 15.526560369, 15.5265909329, 15.5266214962, 15.5266520589, 15.5266826209, 15.5267131823, 15.526743743, 15.5267743031, 15.5268048625, 15.5268354213, 15.5268659794, 15.5268965369, 15.5269270937, 15.5269576499, 15.5269882054, 15.5270187603, 15.5270493146, 15.5270798682, 15.5271104211, 15.5271409734, 15.5271715251, 15.5272020761, 15.5272326264, 15.5272631762, 15.5272937252, 15.5273242737, 15.5273548214, 15.5273853686, 15.527415915, 15.5274464609, 15.5274770061, 15.5275075506, 15.5275380945, 15.5275686377, 15.5275991803, 15.5276297223, 15.5276602636, 15.5276908043, 15.5277213443, 15.5277518837, 15.5277824224, 15.5278129605, 15.5278434979, 15.5278740347, 15.5279045708, 15.5279351063, 15.5279656411, 15.5279961753, 15.5280267089, 15.5280572418, 15.528087774, 15.5281183057, 15.5281488366, 15.5281793669, 15.5282098966, 15.5282404257, 15.528270954, 15.5283014818, 15.5283320089, 15.5283625353, 15.5283930611, 15.5284235863, 15.5284541108, 15.5284846346, 15.5285151578, 15.5285456804, 15.5285762023, 15.5286067236, 15.5286372442, 15.5286677642, 15.5286982836, 15.5287288023, 15.5287593203, 15.5287898377, 15.5288203545, 15.5288508706, 15.5288813861, 15.5289119009, 15.5289424151, 15.5289729286, 15.5290034415, 15.5290339537, 15.5290644653, 15.5290949763, 15.5291254866, 15.5291559962, 15.5291865053, 15.5292170136, 15.5292475213, 15.5292780284, 15.5293085349, 15.5293390406, 15.5293695458, 15.5294000503, 15.5294305541, 15.5294610574, 15.5294915599, 15.5295220618, 15.5295525631, 15.5295830637, 15.5296135637, 15.5296440631, 15.5296745618, 15.5297050598, 15.5297355572, 15.529766054, 15.5297965501, 15.5298270456, 15.5298575404, 15.5298880346, 15.5299185281, 15.529949021, 15.5299795133, 15.5300100049, 15.5300404958, 15.5300709861, 15.5301014758, 15.5301319648, 15.5301624532, 15.530192941, 15.5302234281, 15.5302539145, 15.5302844003, 15.5303148855, 15.53034537, 15.5303758539, 15.5304063371, 15.5304368197, 15.5304673016, 15.5304977829, 15.5305282636, 15.5305587436, 15.530589223, 15.5306197017, 15.5306501798, 15.5306806572, 15.530711134, 15.5307416101, 15.5307720856, 15.5308025605, 15.5308330347, 15.5308635083, 15.5308939812, 15.5309244535, 15.5309549251, 15.5309853961, 15.5310158665, 15.5310463362, 15.5310768052, 15.5311072737, 15.5311377414, 15.5311682086, 15.5311986751, 15.5312291409, 15.5312596061, 15.5312900707, 15.5313205346, 15.5313509979, 15.5313814605, 15.5314119225, 15.5314423839, 15.5314728446, 15.5315033046, 15.531533764, 15.5315642228, 15.5315946809, 15.5316251384, 15.5316555953, 15.5316860515, 15.531716507, 15.5317469619, 15.5317774162, 15.5318078698, 15.5318383228, 15.5318687752, 15.5318992269, 15.5319296779, 15.5319601284, 15.5319905781, 15.5320210273, 15.5320514757, 15.5320819236, 15.5321123708, 15.5321428174, 15.5321732633, 15.5322037085, 15.5322341532, 15.5322645972, 15.5322950405, 15.5323254832, 15.5323559253, 15.5323863667, 15.5324168075, 15.5324472476, 15.5324776871, 15.532508126, 15.5325385642, 15.5325690017, 15.5325994387, 15.532629875, 15.5326603106, 15.5326907456, 15.53272118, 15.5327516137, 15.5327820467, 15.5328124792, 15.532842911, 15.5328733421, 15.5329037726, 15.5329342025, 15.5329646317, 15.5329950603, 15.5330254882, 15.5330559155, 15.5330863422, 15.5331167682, 15.5331471936, 15.5331776183, 15.5332080424, 15.5332384658, 15.5332688886, 15.5332993108, 15.5333297323, 15.5333601532, 15.5333905734, 15.533420993, 15.533451412, 15.5334818303, 15.533512248, 15.533542665, 15.5335730814, 15.5336034971, 15.5336339122, 15.5336643267, 15.5336947405, 15.5337251537, 15.5337555663, 15.5337859782, 15.5338163894, 15.5338468001, 15.53387721, 15.5339076194, 15.5339380281, 15.5339684361, 15.5339988435, 15.5340292503, 15.5340596565, 15.5340900619, 15.5341204668, 15.534150871, 15.5341812746, 15.5342116775, 15.5342420798, 15.5342724814, 15.5343028825, 15.5343332828, 15.5343636825, 15.5343940816, 15.5344244801, 15.5344548779, 15.5344852751, 15.5345156716, 15.5345460675, 15.5345764627, 15.5346068573, 15.5346372513, 15.5346676446, 15.5346980373, 15.5347284293, 15.5347588207, 15.5347892115, 15.5348196016, 15.5348499911, 15.5348803799, 15.5349107681, 15.5349411557, 15.5349715426, 15.5350019289, 15.5350323145, 15.5350626995, 15.5350930839, 15.5351234676, 15.5351538507, 15.5351842331, 15.5352146149, 15.5352449961, 15.5352753766, 15.5353057565, 15.5353361357, 15.5353665143, 15.5353968923, 15.5354272696, 15.5354576463, 15.5354880224, 15.5355183978, 15.5355487725, 15.5355791467, 15.5356095201, 15.535639893, 15.5356702652, 15.5357006368, 15.5357310077, 15.535761378, 15.5357917476, 15.5358221166, 15.535852485, 15.5358828528, 15.5359132198, 15.5359435863, 15.5359739521, 15.5360043173, 15.5360346818, 15.5360650457, 15.536095409, 15.5361257716, 15.5361561336, 15.5361864949, 15.5362168556, 15.5362472157, 15.5362775751, 15.5363079339, 15.536338292, 15.5363686496, 15.5363990064, 15.5364293627, 15.5364597182, 15.5364900732, 15.5365204275, 15.5365507812, 15.5365811342, 15.5366114866, 15.5366418384, 15.5366721895, 15.53670254, 15.5367328898, 15.536763239, 15.5367935876, 15.5368239355, 15.5368542828, 15.5368846295, 15.5369149755, 15.5369453209, 15.5369756656, 15.5370060097, 15.5370363532, 15.537066696, 15.5370970382, 15.5371273797, 15.5371577206, 15.5371880609, 15.5372184005, 15.5372487395, 15.5372790779, 15.5373094156, 15.5373397527, 15.5373700891, 15.5374004249, 15.5374307601, 15.5374610946, 15.5374914285, 15.5375217618, 15.5375520944, 15.5375824264, 15.5376127577, 15.5376430884, 15.5376734185, 15.5377037479, 15.5377340767, 15.5377644048, 15.5377947324, 15.5378250592, 15.5378553855, 15.5378857111, 15.537916036, 15.5379463604, 15.5379766841, 15.5380070071, 15.5380373295, 15.5380676513, 15.5380979725, 15.538128293, 15.5381586128, 15.5381889321, 15.5382192506, 15.5382495686, 15.5382798859, 15.5383102026, 15.5383405186, 15.538370834, 15.5384011488, 15.538431463, 15.5384617764, 15.5384920893, 15.5385224015, 15.5385527131, 15.5385830241, 15.5386133344, 15.538643644, 15.5386739531, 15.5387042615, 15.5387345692, 15.5387648764, 15.5387951829, 15.5388254887, 15.5388557939, 15.5388860985, 15.5389164025, 15.5389467058, 15.5389770084, 15.5390073105, 15.5390376119, 15.5390679126, 15.5390982128, 15.5391285123, 15.5391588111, 15.5391891093, 15.5392194069, 15.5392497038, 15.5392800002, 15.5393102958, 15.5393405909, 15.5393708853, 15.539401179, 15.5394314722, 15.5394617646, 15.5394920565, 15.5395223477, 15.5395526383, 15.5395829283, 15.5396132176, 15.5396435062, 15.5396737943, 15.5397040817, 15.5397343684, 15.5397646546, 15.5397949401, 15.5398252249, 15.5398555092, 15.5398857928, 15.5399160757, 15.539946358, 15.5399766397, 15.5400069208, 15.5400372012, 15.5400674809, 15.5400977601, 15.5401280386, 15.5401583165, 15.5401885937, 15.5402188703, 15.5402491462, 15.5402794216, 15.5403096963, 15.5403399703, 15.5403702437, 15.5404005165, 15.5404307887, 15.5404610602, 15.5404913311, 15.5405216013, 15.5405518709, 15.5405821399, 15.5406124082, 15.540642676, 15.540672943, 15.5407032095, 15.5407334753, 15.5407637404, 15.540794005, 15.5408242689, 15.5408545321, 15.5408847947, 15.5409150567, 15.5409453181, 15.5409755788, 15.5410058389, 15.5410360983, 15.5410663572, 15.5410966153, 15.5411268729, 15.5411571298, 15.5411873861, 15.5412176417, 15.5412478967, 15.5412781511, 15.5413084049, 15.541338658, 15.5413689104, 15.5413991623, 15.5414294135, 15.5414596641, 15.541489914, 15.5415201633, 15.541550412, 15.54158066, 15.5416109074, 15.5416411542, 15.5416714003, 15.5417016458, 15.5417318906, 15.5417621349, 15.5417923785, 15.5418226214, 15.5418528638, 15.5418831054, 15.5419133465, 15.5419435869, 15.5419738267, 15.5420040659, 15.5420343044, 15.5420645423, 15.5420947795, 15.5421250162, 15.5421552521, 15.5421854875, 15.5422157222, 15.5422459563, 15.5422761898, 15.5423064226, 15.5423366548, 15.5423668863, 15.5423971172, 15.5424273475, 15.5424575772, 15.5424878062, 15.5425180346, 15.5425482623, 15.5425784895, 15.5426087159, 15.5426389418, 15.542669167, 15.5426993916, 15.5427296155, 15.5427598389, 15.5427900616, 15.5428202836, 15.542850505, 15.5428807258, 15.542910946, 15.5429411655, 15.5429713844, 15.5430016026, 15.5430318203, 15.5430620372, 15.5430922536, 15.5431224693, 15.5431526844, 15.5431828989, 15.5432131127, 15.5432433259, 15.5432735384, 15.5433037504, 15.5433339617, 15.5433641723, 15.5433943824, 15.5434245918, 15.5434548005, 15.5434850087, 15.5435152162, 15.543545423, 15.5435756293, 15.5436058349, 15.5436360398, 15.5436662442, 15.5436964479, 15.5437266509, 15.5437568534, 15.5437870552, 15.5438172564, 15.5438474569, 15.5438776568, 15.5439078561, 15.5439380547, 15.5439682528, 15.5439984501, 15.5440286469, 15.544058843, 15.5440890385, 15.5441192333, 15.5441494276, 15.5441796212, 15.5442098141, 15.5442400064, 15.5442701981, 15.5443003892, 15.5443305796, 15.5443607694, 15.5443909586, 15.5444211471, 15.544451335, 15.5444815223, 15.544511709, 15.544541895, 15.5445720803, 15.5446022651, 15.5446324492, 15.5446626327, 15.5446928155, 15.5447229978, 15.5447531793, 15.5447833603, 15.5448135406, 15.5448437203, 15.5448738994, 15.5449040778, 15.5449342556, 15.5449644328, 15.5449946093, 15.5450247852, 15.5450549605, 15.5450851352, 15.5451153092, 15.5451454826, 15.5451756553, 15.5452058274, 15.5452359989, 15.5452661698, 15.54529634, 15.5453265096, 15.5453566786, 15.5453868469, 15.5454170146, 15.5454471817, 15.5454773481, 15.5455075139, 15.5455376791, 15.5455678437, 15.5455980076, 15.5456281709, 15.5456583335, 15.5456884956, 15.545718657, 15.5457488177, 15.5457789779, 15.5458091374, 15.5458392962, 15.5458694545, 15.5458996121, 15.5459297691, 15.5459599254, 15.5459900812, 15.5460202363, 15.5460503907, 15.5460805446, 15.5461106978, 15.5461408503, 15.5461710023, 15.5462011536, 15.5462313043, 15.5462614543, 15.5462916037, 15.5463217525, 15.5463519007, 15.5463820482, 15.5464121951, 15.5464423414, 15.546472487, 15.546502632, 15.5465327764, 15.5465629202, 15.5465930633, 15.5466232058, 15.5466533477, 15.5466834889, 15.5467136295, 15.5467437695, 15.5467739088, 15.5468040475, 15.5468341856, 15.5468643231, 15.5468944599, 15.5469245961, 15.5469547317, 15.5469848666, 15.5470150009, 15.5470451346, 15.5470752676, 15.5471054, 15.5471355318, 15.547165663, 15.5471957935, 15.5472259234, 15.5472560527, 15.5472861813, 15.5473163094, 15.5473464367, 15.5473765635, 15.5474066896, 15.5474368151, 15.54746694, 15.5474970642, 15.5475271878, 15.5475573108, 15.5475874332, 15.5476175549, 15.547647676, 15.5476777965, 15.5477079163, 15.5477380355, 15.5477681541, 15.547798272, 15.5478283894, 15.5478585061, 15.5478886221, 15.5479187376, 15.5479488524, 15.5479789665, 15.5480090801, 15.548039193, 15.5480693053, 15.548099417, 15.548129528, 15.5481596384, 15.5481897482, 15.5482198574, 15.5482499659, 15.5482800738, 15.548310181, 15.5483402877, 15.5483703937, 15.5484004991, 15.5484306038, 15.5484607079, 15.5484908114, 15.5485209143, 15.5485510166, 15.5485811182, 15.5486112191, 15.5486413195, 15.5486714192, 15.5487015183, 15.5487316168, 15.5487617147, 15.5487918119, 15.5488219085, 15.5488520044, 15.5488820998, 15.5489121945, 15.5489422885, 15.548972382, 15.5490024748, 15.549032567, 15.5490626586, 15.5490927495, 15.5491228398, 15.5491529295, 15.5491830186, 15.549213107, 15.5492431948, 15.549273282, 15.5493033685, 15.5493334544, 15.5493635397, 15.5493936244, 15.5494237084, 15.5494537918, 15.5494838746, 15.5495139568, 15.5495440383, 15.5495741192, 15.5496041995, 15.5496342791, 15.5496643581, 15.5496944365, 15.5497245143, 15.5497545914, 15.5497846679, 15.5498147438, 15.5498448191, 15.5498748937, 15.5499049677, 15.5499350411, 15.5499651138, 15.549995186, 15.5500252575, 15.5500553283, 15.5500853986, 15.5501154682, 15.5501455372, 15.5501756055, 15.5502056733, 15.5502357404, 15.5502658069, 15.5502958727, 15.550325938, 15.5503560026, 15.5503860665, 15.5504161299, 15.5504461926, 15.5504762547, 15.5505063162, 15.550536377, 15.5505664372, 15.5505964968, 15.5506265558, 15.5506566141, 15.5506866718, 15.5507167289, 15.5507467854, 15.5507768412, 15.5508068964, 15.550836951, 15.550867005, 15.5508970583, 15.550927111, 15.5509571631, 15.5509872145, 15.5510172653, 15.5510473155, 15.5510773651, 15.5511074141, 15.5511374624, 15.5511675101, 15.5511975572, 15.5512276036, 15.5512576494, 15.5512876946, 15.5513177392, 15.5513477831, 15.5513778264, 15.5514078691, 15.5514379112, 15.5514679526, 15.5514979934, 15.5515280336, 15.5515580732, 15.5515881121, 15.5516181504, 15.5516481881, 15.5516782252, 15.5517082616, 15.5517382974, 15.5517683326, 15.5517983672, 15.5518284011, 15.5518584344, 15.5518884671, 15.5519184992, 15.5519485306, 15.5519785614, 15.5520085916, 15.5520386211, 15.5520686501, 15.5520986784, 15.5521287061, 15.5521587331, 15.5521887596, 15.5522187854, 15.5522488105, 15.5522788351, 15.552308859, 15.5523388823, 15.552368905, 15.5523989271, 15.5524289485, 15.5524589693, 15.5524889895, 15.5525190091, 15.552549028, 15.5525790463, 15.552609064, 15.5526390811, 15.5526690975, 15.5526991133, 15.5527291285, 15.5527591431, 15.552789157, 15.5528191703, 15.552849183, 15.5528791951, 15.5529092065, 15.5529392174, 15.5529692275, 15.5529992371, 15.5530292461, 15.5530592544, 15.5530892621, 15.5531192692, 15.5531492756, 15.5531792814, 15.5532092866, 15.5532392912, 15.5532692952, 15.5532992985, 15.5533293012, 15.5533593033, 15.5533893047, 15.5534193056, 15.5534493058, 15.5534793053, 15.5535093043, 15.5535393026, 15.5535693004, 15.5535992975, 15.5536292939, 15.5536592898, 15.553689285, 15.5537192796, 15.5537492735, 15.5537792669, 15.5538092596, 15.5538392517, 15.5538692432, 15.5538992341, 15.5539292243, 15.5539592139, 15.5539892029, 15.5540191912, 15.554049179, 15.5540791661, 15.5541091526, 15.5541391384, 15.5541691237, 15.5541991083, 15.5542290923, 15.5542590757, 15.5542890584, 15.5543190406, 15.5543490221, 15.5543790029, 15.5544089832, 15.5544389628, 15.5544689419, 15.5544989202, 15.554528898, 15.5545588752, 15.5545888517, 15.5546188276, 15.5546488029, 15.5546787775, 15.5547087515, 15.5547387249, 15.5547686977, 15.5547986699, 15.5548286414, 15.5548586123, 15.5548885826, 15.5549185523, 15.5549485214, 15.5549784898, 15.5550084576, 15.5550384248, 15.5550683913, 15.5550983573, 15.5551283226, 15.5551582873, 15.5551882513, 15.5552182148, 15.5552481776, 15.5552781398, 15.5553081014, 15.5553380624, 15.5553680227, 15.5553979824, 15.5554279415, 15.5554579, 15.5554878578, 15.555517815, 15.5555477716, 15.5555777276, 15.555607683, 15.5556376377, 15.5556675918, 15.5556975453, 15.5557274982, 15.5557574505, 15.5557874021, 15.5558173531, 15.5558473035, 15.5558772532, 15.5559072024, 15.5559371509, 15.5559670988, 15.5559970461, 15.5560269927, 15.5560569388, 15.5560868842, 15.556116829, 15.5561467731, 15.5561767167, 15.5562066596, 15.5562366019, 15.5562665436, 15.5562964846, 15.5563264251, 15.5563563649, 15.5563863041, 15.5564162427, 15.5564461806, 15.556476118, 15.5565060547, 15.5565359908, 15.5565659262, 15.5565958611, 15.5566257953, 15.5566557289, 15.5566856619, 15.5567155943, 15.556745526, 15.5567754571, 15.5568053876, 15.5568353175, 15.5568652468, 15.5568951754, 15.5569251034, 15.5569550308, 15.5569849576, 15.5570148837, 15.5570448093, 15.5570747342, 15.5571046585, 15.5571345822, 15.5571645052, 15.5571944276, 15.5572243495, 15.5572542706, 15.5572841912, 15.5573141112, 15.5573440305, 15.5573739492, 15.5574038673, 15.5574337848, 15.5574637016, 15.5574936178, 15.5575235334, 15.5575534484, 15.5575833628, 15.5576132765, 15.5576431896, 15.5576731022, 15.557703014, 15.5577329253, 15.5577628359, 15.557792746, 15.5578226554, 15.5578525642, 15.5578824723, 15.5579123799, 15.5579422868, 15.5579721931, 15.5580020988, 15.5580320038, 15.5580619083, 15.5580918121, 15.5581217153, 15.5581516179, 15.5581815199, 15.5582114212, 15.5582413219, 15.558271222, 15.5583011215, 15.5583310204, 15.5583609186, 15.5583908163, 15.5584207133, 15.5584506097, 15.5584805054, 15.5585104006, 15.5585402951, 15.558570189, 15.5586000823, 15.558629975, 15.558659867, 15.5586897585, 15.5587196493, 15.5587495395, 15.558779429, 15.558809318, 15.5588392063, 15.558869094, 15.5588989811, 15.5589288676, 15.5589587535, 15.5589886387, 15.5590185233, 15.5590484073, 15.5590782907, 15.5591081735, 15.5591380556, 15.5591679372, 15.5591978181, 15.5592276984, 15.559257578, 15.5592874571, 15.5593173355, 15.5593472133, 15.5593770905, 15.5594069671, 15.5594368431, 15.5594667184, 15.5594965931, 15.5595264672, 15.5595563407, 15.5595862136, 15.5596160858, 15.5596459574, 15.5596758284, 15.5597056988, 15.5597355686, 15.5597654378, 15.5597953063, 15.5598251742, 15.5598550415, 15.5598849082, 15.5599147743, 15.5599446397, 15.5599745045, 15.5600043687, 15.5600342323, 15.5600640953, 15.5600939576, 15.5601238194, 15.5601536805, 15.560183541, 15.5602134009, 15.5602432601, 15.5602731188, 15.5603029768, 15.5603328342, 15.560362691, 15.5603925472, 15.5604224027, 15.5604522577, 15.560482112, 15.5605119657, 15.5605418188, 15.5605716712, 15.5606015231, 15.5606313743, 15.5606612249, 15.5606910749, 15.5607209243, 15.5607507731, 15.5607806212, 15.5608104687, 15.5608403156, 15.5608701619, 15.5609000076, 15.5609298527, 15.5609596971, 15.5609895409, 15.5610193841, 15.5610492267, 15.5610790687, 15.56110891, 15.5611387508, 15.5611685909, 15.5611984304, 15.5612282693, 15.5612581075, 15.5612879452, 15.5613177822, 15.5613476186, 15.5613774544, 15.5614072896, 15.5614371241, 15.5614669581, 15.5614967914, 15.5615266241, 15.5615564562, 15.5615862877, 15.5616161186, 15.5616459488, 15.5616757784, 15.5617056075, 15.5617354358, 15.5617652636, 15.5617950908, 15.5618249173, 15.5618547433, 15.5618845686, 15.5619143933, 15.5619442173, 15.5619740408, 15.5620038637, 15.5620336859, 15.5620635075, 15.5620933285, 15.5621231489, 15.5621529686, 15.5621827878, 15.5622126063, 15.5622424242, 15.5622722415, 15.5623020582, 15.5623318743, 15.5623616897, 15.5623915045, 15.5624213188, 15.5624511324, 15.5624809453, 15.5625107577, 15.5625405695, 15.5625703806, 15.5626001911, 15.562630001, 15.5626598103, 15.562689619, 15.562719427, 15.5627492345, 15.5627790413, 15.5628088475, 15.5628386531, 15.5628684581, 15.5628982625, 15.5629280662, 15.5629578693, 15.5629876718, 15.5630174737, 15.563047275, 15.5630770757, 15.5631068758, 15.5631366752, 15.563166474, 15.5631962722, 15.5632260698, 15.5632558668, 15.5632856631, 15.5633154589, 15.563345254, 15.5633750485, 15.5634048424, 15.5634346357, 15.5634644284, 15.5634942204, 15.5635240119, 15.5635538027, 15.5635835929, 15.5636133825, 15.5636431715, 15.5636729598, 15.5637027476, 15.5637325347, 15.5637623212, 15.5637921071, 15.5638218924, 15.5638516771, 15.5638814611, 15.5639112446, 15.5639410274, 15.5639708096, 15.5640005912, 15.5640303722, 15.5640601526, 15.5640899323, 15.5641197115, 15.56414949, 15.5641792679, 15.5642090452, 15.5642388219, 15.5642685979, 15.5642983734, 15.5643281482, 15.5643579224, 15.5643876961, 15.564417469, 15.5644472414, 15.5644770132, 15.5645067843, 15.5645365549, 15.5645663248, 15.5645960941, 15.5646258628, 15.5646556309, 15.5646853983, 15.5647151652, 15.5647449314, 15.564774697, 15.5648044621, 15.5648342264, 15.5648639902, 15.5648937534, 15.5649235159, 15.5649532779, 15.5649830392, 15.5650127999, 15.56504256, 15.5650723195, 15.5651020784, 15.5651318366, 15.5651615943, 15.5651913513, 15.5652211077, 15.5652508635, 15.5652806187, 15.5653103733, 15.5653401272, 15.5653698806, 15.5653996333, 15.5654293854, 15.5654591369, 15.5654888878, 15.5655186381, 15.5655483877, 15.5655781368, 15.5656078852, 15.565637633, 15.5656673803, 15.5656971268, 15.5657268728, 15.5657566182, 15.565786363, 15.5658161071, 15.5658458506, 15.5658755935, 15.5659053359, 15.5659350775, 15.5659648186, 15.5659945591, 15.5660242989, 15.5660540382, 15.5660837768, 15.5661135148, 15.5661432522, 15.566172989, 15.5662027252, 15.5662324607, 15.5662621957, 15.56629193, 15.5663216637, 15.5663513968, 15.5663811293, 15.5664108612, 15.5664405925, 15.5664703231, 15.5665000532, 15.5665297826, 15.5665595114, 15.5665892397, 15.5666189672, 15.5666486942, 15.5666784206, 15.5667081464, 15.5667378715, 15.566767596, 15.56679732, 15.5668270433, 15.566856766, 15.566886488, 15.5669162095, 15.5669459304, 15.5669756506, 15.5670053702, 15.5670350893, 15.5670648077, 15.5670945255, 15.5671242427, 15.5671539592, 15.5671836752, 15.5672133905, 15.5672431053, 15.5672728194, 15.5673025329, 15.5673322458, 15.5673619581, 15.5673916698, 15.5674213808, 15.5674510913, 15.5674808011, 15.5675105104, 15.567540219, 15.567569927, 15.5675996344, 15.5676293412, 15.5676590473, 15.5676887529, 15.5677184579, 15.5677481622, 15.5677778659, 15.567807569, 15.5678372715, 15.5678669734, 15.5678966747, 15.5679263754, 15.5679560754, 15.5679857749, 15.5680154737, 15.5680451719, 15.5680748695, 15.5681045665, 15.5681342629, 15.5681639587, 15.5681936539, 15.5682233484, 15.5682530423, 15.5682827357, 15.5683124284, 15.5683421205, 15.568371812, 15.5684015029, 15.5684311932, 15.5684608828, 15.5684905719, 15.5685202603, 15.5685499482, 15.5685796354, 15.568609322, 15.568639008, 15.5686686934, 15.5686983782, 15.5687280623, 15.5687577459, 15.5687874288, 15.5688171112, 15.5688467929, 15.568876474, 15.5689061545, 15.5689358344, 15.5689655137, 15.5689951923, 15.5690248704, 15.5690545479, 15.5690842247, 15.5691139009, 15.5691435765, 15.5691732516, 15.569202926, 15.5692325997, 15.5692622729, 15.5692919455, 15.5693216174, 15.5693512888, 15.5693809595, 15.5694106296, 15.5694402992, 15.5694699681, 15.5694996364, 15.5695293041, 15.5695589711, 15.5695886376, 15.5696183034, 15.5696479687, 15.5696776333, 15.5697072974, 15.5697369608, 15.5697666236, 15.5697962858, 15.5698259474, 15.5698556083, 15.5698852687, 15.5699149285, 15.5699445876, 15.5699742461, 15.5700039041, 15.5700335614, 15.5700632181, 15.5700928742, 15.5701225297, 15.5701521846, 15.5701818388, 15.5702114925, 15.5702411455, 15.570270798, 15.5703004498, 15.570330101, 15.5703597516, 15.5703894016, 15.570419051, 15.5704486998, 15.570478348, 15.5705079956, 15.5705376425, 15.5705672889, 15.5705969346, 15.5706265797, 15.5706562243, 15.5706858682, 15.5707155115, 15.5707451542, 15.5707747962, 15.5708044377, 15.5708340786, 15.5708637188, 15.5708933585, 15.5709229975, 15.570952636, 15.5709822738, 15.571011911, 15.5710415476, 15.5710711836, 15.571100819, 15.5711304538, 15.5711600879, 15.5711897215, 15.5712193544, 15.5712489868, 15.5712786185, 15.5713082496, 15.5713378802, 15.5713675101, 15.5713971394, 15.5714267681, 15.5714563961, 15.5714860236, 15.5715156505, 15.5715452767, 15.5715749024, 15.5716045274, 15.5716341519, 15.5716637757, 15.5716933989, 15.5717230215, 15.5717526435, 15.5717822649, 15.5718118857, 15.5718415059, 15.5718711254, 15.5719007444, 15.5719303627, 15.5719599805, 15.5719895976, 15.5720192141, 15.57204883, 15.5720784454, 15.5721080601, 15.5721376742, 15.5721672876, 15.5721969005, 15.5722265128, 15.5722561245, 15.5722857355, 15.572315346, 15.5723449558, 15.572374565, 15.5724041737, 15.5724337817, 15.5724633891, 15.5724929959, 15.5725226021, 15.5725522077, 15.5725818126, 15.572611417, 15.5726410208, 15.5726706239, 15.5727002265, 15.5727298284, 15.5727594298, 15.5727890305, 15.5728186306, 15.5728482301, 15.572877829, 15.5729074273, 15.572937025, 15.5729666221, 15.5729962186, 15.5730258144, 15.5730554097, 15.5730850044, 15.5731145984, 15.5731441919, 15.5731737847, 15.5732033769, 15.5732329685, 15.5732625595, 15.57329215, 15.5733217398, 15.5733513289, 15.5733809175, 15.5734105055, 15.5734400929, 15.5734696796, 15.5734992658, 15.5735288514, 15.5735584363, 15.5735880206, 15.5736176044, 15.5736471875, 15.57367677, 15.5737063519, 15.5737359332, 15.5737655139, 15.573795094, 15.5738246735, 15.5738542524, 15.5738838307, 15.5739134083, 15.5739429854, 15.5739725618, 15.5740021377, 15.5740317129, 15.5740612876, 15.5740908616, 15.574120435, 15.5741500078, 15.57417958, 15.5742091516, 15.5742387226, 15.574268293, 15.5742978628, 15.574327432, 15.5743570006, 15.5743865685, 15.5744161359, 15.5744457026, 15.5744752688, 15.5745048343, 15.5745343993, 15.5745639636, 15.5745935273, 15.5746230905, 15.574652653, 15.5746822149, 15.5747117762, 15.5747413369, 15.574770897, 15.5748004565, 15.5748300153, 15.5748595736, 15.5748891313, 15.5749186883, 15.5749482448, 15.5749778007, 15.5750073559, 15.5750369105, 15.5750664646, 15.575096018, 15.5751255708, 15.5751551231, 15.5751846747, 15.5752142257, 15.5752437761, 15.5752733259, 15.5753028751, 15.5753324237, 15.5753619716, 15.575391519, 15.5754210658, 15.575450612, 15.5754801575, 15.5755097025, 15.5755392468, 15.5755687906, 15.5755983337, 15.5756278763, 15.5756574182, 15.5756869595, 15.5757165002, 15.5757460404, 15.5757755799, 15.5758051188, 15.5758346571, 15.5758641948, 15.5758937319, 15.5759232684, 15.5759528043, 15.5759823395, 15.5760118742, 15.5760414083, 15.5760709417, 15.5761004746, 15.5761300069, 15.5761595385, 15.5761890696, 15.5762186, 15.5762481298, 15.5762776591, 15.5763071877, 15.5763367157, 15.5763662432, 15.57639577, 15.5764252962, 15.5764548218, 15.5764843468, 15.5765138712, 15.576543395, 15.5765729182, 15.5766024408, 15.5766319628, 15.5766614841, 15.5766910049, 15.5767205251, 15.5767500446, 15.5767795636, 15.576809082, 15.5768385997, 15.5768681169, 15.5768976334, 15.5769271494, 15.5769566647, 15.5769861794, 15.5770156936, 15.5770452071, 15.57707472, 15.5771042323, 15.5771337441, 15.5771632552, 15.5771927657, 15.5772222756, 15.5772517849, 15.5772812936, 15.5773108017, 15.5773403092, 15.5773698161, 15.5773993224, 15.577428828, 15.5774583331, 15.5774878376, 15.5775173415, 15.5775468447, 15.5775763474, 15.5776058495, 15.5776353509, 15.5776648518, 15.577694352, 15.5777238517, 15.5777533507, 15.5777828492, 15.577812347, 15.5778418442, 15.5778713409, 15.5779008369, 15.5779303323, 15.5779598271, 15.5779893214, 15.578018815, 15.578048308, 15.5780778004, 15.5781072922, 15.5781367834, 15.578166274, 15.578195764, 15.5782252534, 15.5782547422, 15.5782842304, 15.578313718, 15.578343205, 15.5783726914, 15.5784021771, 15.5784316623, 15.5784611469, 15.5784906309, 15.5785201142, 15.578549597, 15.5785790792, 15.5786085607, 15.5786380417, 15.5786675221, 15.5786970018, 15.578726481, 15.5787559595, 15.5787854375, 15.5788149148, 15.5788443916, 15.5788738677, 15.5789033432, 15.5789328182, 15.5789622925, 15.5789917662, 15.5790212394, 15.5790507119, 15.5790801838, 15.5791096552, 15.5791391259, 15.579168596, 15.5791980655, 15.5792275344, 15.5792570028, 15.5792864705, 15.5793159376, 15.5793454041, 15.57937487, 15.5794043353, 15.5794338, 15.5794632641, 15.5794927276, 15.5795221905, 15.5795516528, 15.5795811145, 15.5796105756, 15.5796400361, 15.579669496, 15.5796989553, 15.579728414, 15.579757872, 15.5797873295, 15.5798167864, 15.5798462427, 15.5798756984, 15.5799051535, 15.5799346079, 15.5799640618, 15.5799935151, 15.5800229678, 15.5800524198, 15.5800818713, 15.5801113222, 15.5801407724, 15.5801702221, 15.5801996712, 15.5802291196, 15.5802585675, 15.5802880148, 15.5803174614, 15.5803469075, 15.5803763529, 15.5804057978, 15.5804352421, 15.5804646857, 15.5804941288, 15.5805235712, 15.5805530131, 15.5805824543, 15.580611895, 15.580641335, 15.5806707745, 15.5807002133, 15.5807296516, 15.5807590892, 15.5807885263, 15.5808179627, 15.5808473986, 15.5808768338, 15.5809062685, 15.5809357025, 15.580965136, 15.5809945688, 15.5810240011, 15.5810534327, 15.5810828638, 15.5811122942, 15.581141724, 15.5811711533, 15.5812005819, 15.58123001, 15.5812594374, 15.5812888642, 15.5813182905, 15.5813477161, 15.5813771412, 15.5814065656, 15.5814359895, 15.5814654127, 15.5814948353, 15.5815242574, 15.5815536788, 15.5815830997, 15.5816125199, 15.5816419395, 15.5816713586, 15.581700777, 15.5817301949, 15.5817596121, 15.5817890287, 15.5818184448, 15.5818478602, 15.5818772751, 15.5819066893, 15.581936103, 15.581965516, 15.5819949284, 15.5820243403, 15.5820537515, 15.5820831622, 15.5821125722, 15.5821419817, 15.5821713905, 15.5822007988, 15.5822302064, 15.5822596134, 15.5822890199, 15.5823184257, 15.582347831, 15.5823772356, 15.5824066397, 15.5824360431, 15.582465446, 15.5824948482, 15.5825242499, 15.582553651, 15.5825830514, 15.5826124513, 15.5826418505, 15.5826712492, 15.5827006472, 15.5827300447, 15.5827594416, 15.5827888378, 15.5828182335, 15.5828476286, 15.582877023, 15.5829064169, 15.5829358101, 15.5829652028, 15.5829945949, 15.5830239864, 15.5830533772, 15.5830827675, 15.5831121572, 15.5831415463, 15.5831709347, 15.5832003226, 15.5832297099, 15.5832590966, 15.5832884827, 15.5833178681, 15.583347253, 15.5833766373, 15.583406021, 15.5834354041, 15.5834647866, 15.5834941685, 15.5835235498, 15.5835529305, 15.5835823106, 15.5836116901, 15.583641069, 15.5836704473, 15.583699825, 15.5837292021, 15.5837585786, 15.5837879545, 15.5838173298, 15.5838467045, 15.5838760786, 15.5839054522, 15.5839348251, 15.5839641974, 15.5839935691, 15.5840229403, 15.5840523108, 15.5840816807, 15.58411105, 15.5841404188, 15.5841697869, 15.5841991545, 15.5842285214, 15.5842578877, 15.5842872535, 15.5843166186, 15.5843459832, 15.5843753471, 15.5844047105, 15.5844340733, 15.5844634354, 15.584492797, 15.5845221579, 15.5845515183, 15.5845808781, 15.5846102372, 15.5846395958, 15.5846689538, 15.5846983112, 15.584727668, 15.5847570241, 15.5847863797, 15.5848157347, 15.5848450891, 15.5848744429, 15.5849037961, 15.5849331487, 15.5849625007, 15.5849918521, 15.5850212029, 15.5850505532, 15.5850799028, 15.5851092518, 15.5851386002, 15.585167948, 15.5851972953, 15.5852266419, 15.5852559879, 15.5852853334, 15.5853146782, 15.5853440224, 15.5853733661, 15.5854027091, 15.5854320516, 15.5854613934, 15.5854907347, 15.5855200754, 15.5855494154, 15.5855787549, 15.5856080938, 15.5856374321, 15.5856667697, 15.5856961068, 15.5857254433, 15.5857547792, 15.5857841145, 15.5858134492, 15.5858427833, 15.5858721168, 15.5859014497, 15.585930782, 15.5859601137, 15.5859894448, 15.5860187754, 15.5860481053, 15.5860774346, 15.5861067633, 15.5861360915, 15.586165419, 15.586194746, 15.5862240723, 15.5862533981, 15.5862827232, 15.5863120478, 15.5863413717, 15.5863706951, 15.5864000179, 15.5864293401, 15.5864586616, 15.5864879826, 15.586517303, 15.5865466228, 15.586575942, 15.5866052606, 15.5866345786, 15.586663896, 15.5866932128, 15.586722529, 15.5867518447, 15.5867811597, 15.5868104741, 15.586839788, 15.5868691012, 15.5868984138, 15.5869277259, 15.5869570373, 15.5869863482, 15.5870156585, 15.5870449681, 15.5870742772, 15.5871035857, 15.5871328936, 15.5871622008, 15.5871915075, 15.5872208136, 15.5872501191, 15.587279424, 15.5873087283, 15.587338032, 15.5873673352, 15.5873966377, 15.5874259396, 15.5874552409, 15.5874845417, 15.5875138418, 15.5875431414, 15.5875724403, 15.5876017387, 15.5876310364, 15.5876603336, 15.5876896302, 15.5877189262, 15.5877482215, 15.5877775163, 15.5878068105, 15.5878361041, 15.5878653971, 15.5878946895, 15.5879239813, 15.5879532726, 15.5879825632, 15.5880118532, 15.5880411426, 15.5880704315, 15.5880997197, 15.5881290074, 15.5881582944, 15.5881875809, 15.5882168668, 15.588246152, 15.5882754367, 15.5883047208, 15.5883340043, 15.5883632872, 15.5883925695, 15.5884218512, 15.5884511323, 15.5884804128, 15.5885096928, 15.5885389721, 15.5885682508, 15.588597529, 15.5886268065, 15.5886560835, 15.5886853598, 15.5887146356, 15.5887439108, 15.5887731853, 15.5888024593, 15.5888317327, 15.5888610055, 15.5888902777, 15.5889195493, 15.5889488203, 15.5889780907, 15.5890073606, 15.5890366298, 15.5890658984, 15.5890951665, 15.5891244339, 15.5891537008, 15.589182967, 15.5892122327, 15.5892414978, 15.5892707623, 15.5893000262, 15.5893292894, 15.5893585521, 15.5893878143, 15.5894170758, 15.5894463367, 15.589475597, 15.5895048567, 15.5895341159, 15.5895633744, 15.5895926324, 15.5896218897, 15.5896511465, 15.5896804027, 15.5897096583, 15.5897389133, 15.5897681676, 15.5897974214, 15.5898266747, 15.5898559273, 15.5898851793, 15.5899144307, 15.5899436816, 15.5899729318, 15.5900021814, 15.5900314305, 15.590060679, 15.5900899268, 15.5901191741, 15.5901484208, 15.5901776669, 15.5902069124, 15.5902361573, 15.5902654016, 15.5902946453, 15.5903238884, 15.590353131, 15.5903823729, 15.5904116143, 15.590440855, 15.5904700952, 15.5904993348, 15.5905285737, 15.5905578121, 15.5905870499, 15.5906162871, 15.5906455237, 15.5906747597, 15.5907039952, 15.59073323, 15.5907624642, 15.5907916979, 15.5908209309, 15.5908501634, 15.5908793953, 15.5909086265, 15.5909378572, 15.5909670873, 15.5909963168, 15.5910255457, 15.591054774, 15.5910840018, 15.5911132289, 15.5911424554, 15.5911716814, 15.5912009067, 15.5912301315, 15.5912593557, 15.5912885792, 15.5913178022, 15.5913470246, 15.5913762464, 15.5914054676, 15.5914346883, 15.5914639083, 15.5914931277, 15.5915223466, 15.5915515648, 15.5915807825, 15.5916099996, 15.591639216, 15.5916684319, 15.5916976472, 15.5917268619, 15.591756076, 15.5917852895, 15.5918145025, 15.5918437148, 15.5918729266, 15.5919021377, 15.5919313483, 15.5919605582, 15.5919897676, 15.5920189764, 15.5920481846, 15.5920773922, 15.5921065992, 15.5921358056, 15.5921650115, 15.5921942167, 15.5922234214, 15.5922526254, 15.5922818289, 15.5923110318, 15.592340234, 15.5923694357, 15.5923986368, 15.5924278373, 15.5924570373, 15.5924862366, 15.5925154353, 15.5925446335, 15.592573831, 15.592603028, 15.5926322244, 15.5926614202, 15.5926906154, 15.59271981, 15.592749004, 15.5927781974, 15.5928073902, 15.5928365825, 15.5928657741, 15.5928949652, 15.5929241556, 15.5929533455, 15.5929825348, 15.5930117235, 15.5930409116, 15.5930700991, 15.593099286, 15.5931284724, 15.5931576581, 15.5931868433, 15.5932160278, 15.5932452118, 15.5932743952, 15.593303578, 15.5933327602, 15.5933619418, 15.5933911228, 15.5934203032, 15.5934494831, 15.5934786623, 15.593507841, 15.593537019, 15.5935661965, 15.5935953734, 15.5936245497, 15.5936537254, 15.5936829005, 15.5937120751, 15.593741249, 15.5937704224, 15.5937995951, 15.5938287673, 15.5938579389, 15.5938871098, 15.5939162802, 15.5939454501, 15.5939746193, 15.5940037879, 15.5940329559, 15.5940621234, 15.5940912903, 15.5941204565, 15.5941496222, 15.5941787873, 15.5942079518, 15.5942371157, 15.594266279, 15.5942954418, 15.5943246039, 15.5943537655, 15.5943829264, 15.5944120868, 15.5944412466, 15.5944704058, 15.5944995644, 15.5945287224, 15.5945578799, 15.5945870367, 15.594616193, 15.5946453486, 15.5946745037, 15.5947036582, 15.5947328121, 15.5947619654, 15.5947911181, 15.5948202702, 15.5948494218, 15.5948785727, 15.5949077231, 15.5949368728, 15.594966022, 15.5949951706, 15.5950243186, 15.595053466, 15.5950826129, 15.5951117591, 15.5951409047, 15.5951700498, 15.5951991943, 15.5952283382, 15.5952574814, 15.5952866242, 15.5953157663, 15.5953449078, 15.5953740487, 15.5954031891, 15.5954323288, 15.595461468, 15.5954906066, 15.5955197446, 15.595548882, 15.5955780188, 15.5956071551, 15.5956362907, 15.5956654258, 15.5956945602, 15.5957236941, 15.5957528274, 15.5957819601, 15.5958110922, 15.5958402237, 15.5958693547, 15.595898485, 15.5959276148, 15.5959567439, 15.5959858725, 15.5960150005, 15.5960441279, 15.5960732547, 15.596102381, 15.5961315066, 15.5961606317, 15.5961897561, 15.59621888, 15.5962480033, 15.596277126, 15.5963062481, 15.5963353697, 15.5963644906, 15.596393611, 15.5964227307, 15.5964518499, 15.5964809685, 15.5965100865, 15.5965392039, 15.5965683207, 15.596597437, 15.5966265526, 15.5966556677, 15.5966847822, 15.596713896, 15.5967430093, 15.5967721221, 15.5968012342, 15.5968303457, 15.5968594567, 15.596888567, 15.5969176768, 15.596946786, 15.5969758946, 15.5970050026, 15.59703411, 15.5970632169, 15.5970923231, 15.5971214288, 15.5971505339, 15.5971796384, 15.5972087423, 15.5972378456, 15.5972669483, 15.5972960504, 15.597325152, 15.597354253, 15.5973833534, 15.5974124531, 15.5974415524, 15.597470651, 15.597499749, 15.5975288465, 15.5975579433, 15.5975870396, 15.5976161353, 15.5976452304, 15.5976743249, 15.5977034188, 15.5977325121, 15.5977616049, 15.5977906971, 15.5978197886, 15.5978488796, 15.59787797, 15.5979070599, 15.5979361491, 15.5979652377, 15.5979943258, 15.5980234133, 15.5980525002, 15.5980815865, 15.5981106722, 15.5981397573, 15.5981688418, 15.5981979258, 15.5982270092, 15.598256092, 15.5982851741, 15.5983142558, 15.5983433368, 15.5983724172, 15.5984014971, 15.5984305763, 15.598459655, 15.5984887331, 15.5985178106, 15.5985468875, 15.5985759639, 15.5986050396, 15.5986341148, 15.5986631894, 15.5986922633, 15.5987213368, 15.5987504096, 15.5987794818, 15.5988085535, 15.5988376245, 15.598866695, 15.5988957649, 15.5989248342, 15.5989539029, 15.598982971, 15.5990120386, 15.5990411055, 15.5990701719, 15.5990992377, 15.5991283029, 15.5991573675, 15.5991864316, 15.599215495, 15.5992445579, 15.5992736202, 15.5993026818, 15.599331743, 15.5993608035, 15.5993898634, 15.5994189228, 15.5994479815, 15.5994770397, 15.5995060973, 15.5995351543, 15.5995642107, 15.5995932666, 15.5996223218, 15.5996513765, 15.5996804306, 15.5997094841, 15.599738537, 15.5997675893, 15.5997966411, 15.5998256922, 15.5998547428, 15.5998837928, 15.5999128422, 15.599941891, 15.5999709392, 15.5999999869, 15.600029034, 15.6000580804, 15.6000871263, 15.6001161716, 15.6001452164, 15.6001742605, 15.6002033041, 15.600232347, 15.6002613894, 15.6002904312, 15.6003194724, 15.6003485131, 15.6003775531, 15.6004065926, 15.6004356314, 15.6004646697, 15.6004937075, 15.6005227446, 15.6005517811, 15.6005808171, 15.6006098524, 15.6006388872, 15.6006679214, 15.6006969551, 15.6007259881, 15.6007550205, 15.6007840524, 15.6008130837, 15.6008421144, 15.6008711445, 15.600900174, 15.600929203, 15.6009582313, 15.6009872591, 15.6010162863, 15.6010453129, 15.6010743389, 15.6011033644, 15.6011323892, 15.6011614135, 15.6011904372, 15.6012194603, 15.6012484828, 15.6012775048, 15.6013065261, 15.6013355469, 15.6013645671, 15.6013935867, 15.6014226057, 15.6014516241, 15.601480642, 15.6015096593, 15.6015386759, 15.601567692, 15.6015967076, 15.6016257225, 15.6016547368, 15.6016837506, 15.6017127638, 15.6017417764, 15.6017707884, 15.6017997998, 15.6018288107, 15.601857821, 15.6018868306, 15.6019158397, 15.6019448483, 15.6019738562, 15.6020028635, 15.6020318703, 15.6020608765, 15.6020898821, 15.6021188871, 15.6021478915, 15.6021768954, 15.6022058987, 15.6022349013, 15.6022639034, 15.602292905, 15.6023219059, 15.6023509062, 15.602379906, 15.6024089052, 15.6024379038, 15.6024669018, 15.6024958993, 15.6025248961, 15.6025538924, 15.6025828881, 15.6026118832, 15.6026408777, 15.6026698717, 15.602698865, 15.6027278578, 15.60275685, 15.6027858416, 15.6028148326, 15.6028438231, 15.6028728129, 15.6029018022, 15.6029307909, 15.602959779, 15.6029887666, 15.6030177535, 15.6030467399, 15.6030757257, 15.6031047109, 15.6031336955, 15.6031626795, 15.603191663, 15.6032206459, 15.6032496282, 15.6032786099, 15.603307591, 15.6033365715, 15.6033655515, 15.6033945309, 15.6034235097, 15.6034524879, 15.6034814655, 15.6035104426, 15.6035394191, 15.603568395, 15.6035973703, 15.603626345, 15.6036553191, 15.6036842927, 15.6037132657, 15.6037422381, 15.6037712099, 15.6038001811, 15.6038291518, 15.6038581218, 15.6038870913, 15.6039160602, 15.6039450286, 15.6039739963, 15.6040029635, 15.6040319301, 15.6040608961, 15.6040898615, 15.6041188263, 15.6041477906, 15.6041767542, 15.6042057173, 15.6042346798, 15.6042636418, 15.6042926031, 15.6043215639, 15.6043505241, 15.6043794837, 15.6044084427, 15.6044374011, 15.604466359, 15.6044953163, 15.604524273, 15.6045532291, 15.6045821846, 15.6046111396, 15.6046400939, 15.6046690477, 15.6046980009, 15.6047269536, 15.6047559056, 15.6047848571, 15.604813808, 15.6048427583, 15.604871708, 15.6049006571, 15.6049296057, 15.6049585537, 15.6049875011, 15.6050164479, 15.6050453942, 15.6050743398, 15.6051032849, 15.6051322294, 15.6051611733, 15.6051901166, 15.6052190594, 15.6052480016, 15.6052769432, 15.6053058842, 15.6053348246, 15.6053637645, 15.6053927037, 15.6054216424, 15.6054505805, 15.6054795181, 15.605508455, 15.6055373914, 15.6055663272, 15.6055952624, 15.605624197, 15.6056531311, 15.6056820645, 15.6057109974, 15.6057399297, 15.6057688614, 15.6057977926, 15.6058267232, 15.6058556531, 15.6058845826, 15.6059135114, 15.6059424396, 15.6059713673, 15.6060002944, 15.6060292209, 15.6060581468, 15.6060870722, 15.6061159969, 15.6061449211, 15.6061738447, 15.6062027677, 15.6062316902, 15.6062606121, 15.6062895333, 15.6063184541, 15.6063473742, 15.6063762937, 15.6064052127, 15.6064341311, 15.6064630489, 15.6064919661, 15.6065208828, 15.6065497988, 15.6065787143, 15.6066076292, 15.6066365436, 15.6066654573, 15.6066943705, 15.6067232831, 15.6067521951, 15.6067811065, 15.6068100174, 15.6068389277, 15.6068678374, 15.6068967465, 15.606925655, 15.606954563, 15.6069834704, 15.6070123772, 15.6070412834, 15.607070189, 15.6070990941, 15.6071279986, 15.6071569025, 15.6071858058, 15.6072147086, 15.6072436107, 15.6072725123, 15.6073014133, 15.6073303137, 15.6073592136, 15.6073881129, 15.6074170116, 15.6074459097, 15.6074748072, 15.6075037042, 15.6075326006, 15.6075614964, 15.6075903916, 15.6076192862, 15.6076481803, 15.6076770738, 15.6077059667, 15.607734859, 15.6077637507, 15.6077926419, 15.6078215325, 15.6078504225, 15.607879312, 15.6079082008, 15.6079370891, 15.6079659768, 15.6079948639, 15.6080237505, 15.6080526364, 15.6080815218, 15.6081104066, 15.6081392908, 15.6081681745, 15.6081970576, 15.6082259401, 15.608254822, 15.6082837033, 15.6083125841, 15.6083414643, 15.6083703439, 15.6083992229, 15.6084281013, 15.6084569792, 15.6084858565, 15.6085147332, 15.6085436093, 15.6085724849, 15.6086013599, 15.6086302343, 15.6086591081, 15.6086879814, 15.608716854, 15.6087457261, 15.6087745976, 15.6088034686, 15.6088323389, 15.6088612087, 15.6088900779, 15.6089189465, 15.6089478146, 15.608976682, 15.6090055489, 15.6090344152, 15.609063281, 15.6090921461, 15.6091210107, 15.6091498747, 15.6091787381, 15.609207601, 15.6092364633, 15.609265325, 15.6092941861, 15.6093230466, 15.6093519066, 15.609380766, 15.6094096248, 15.609438483, 15.6094673406, 15.6094961977, 15.6095250542, 15.6095539101, 15.6095827655, 15.6096116202, 15.6096404744, 15.609669328, 15.6096981811, 15.6097270335, 15.6097558854, 15.6097847367, 15.6098135875, 15.6098424376, 15.6098712872, 15.6099001362, 15.6099289846, 15.6099578324, 15.6099866797, 15.6100155264, 15.6100443725, 15.610073218, 15.610102063, 15.6101309074, 15.6101597512, 15.6101885944, 15.6102174371, 15.6102462791, 15.6102751206, 15.6103039616, 15.6103328019, 15.6103616417, 15.6103904809, 15.6104193195, 15.6104481575, 15.610476995, 15.6105058319, 15.6105346682, 15.6105635039, 15.6105923391, 15.6106211737, 15.6106500077, 15.6106788411, 15.610707674, 15.6107365062, 15.6107653379, 15.6107941691, 15.6108229996, 15.6108518296, 15.610880659, 15.6109094878, 15.610938316, 15.6109671437, 15.6109959708, 15.6110247973, 15.6110536232, 15.6110824486, 15.6111112734, 15.6111400976, 15.6111689212, 15.6111977443, 15.6112265668, 15.6112553887, 15.61128421, 15.6113130308, 15.611341851, 15.6113706706, 15.6113994896, 15.6114283081, 15.6114571259, 15.6114859432, 15.61151476, 15.6115435761, 15.6115723917, 15.6116012067, 15.6116300211, 15.611658835, 15.6116876482, 15.6117164609, 15.6117452731, 15.6117740846, 15.6118028956, 15.611831706, 15.6118605158, 15.6118893251, 15.6119181337, 15.6119469418, 15.6119757493, 15.6120045563, 15.6120333627, 15.6120621685, 15.6120909737, 15.6121197783, 15.6121485824, 15.6121773859, 15.6122061888, 15.6122349911, 15.6122637929, 15.6122925941, 15.6123213947, 15.6123501948, 15.6123789942, 15.6124077931, 15.6124365915, 15.6124653892, 15.6124941864, 15.612522983, 15.612551779, 15.6125805744, 15.6126093693, 15.6126381636, 15.6126669573, 15.6126957505, 15.612724543, 15.612753335, 15.6127821265, 15.6128109173, 15.6128397076, 15.6128684973, 15.6128972864, 15.612926075, 15.6129548629, 15.6129836503, 15.6130124372, 15.6130412234, 15.6130700091, 15.6130987942, 15.6131275787, 15.6131563627, 15.6131851461, 15.6132139289, 15.6132427111, 15.6132714928, 15.6133002739, 15.6133290544, 15.6133578343, 15.6133866137, 15.6134153925, 15.6134441707, 15.6134729483, 15.6135017254, 15.6135305019, 15.6135592778, 15.6135880531, 15.6136168279, 15.6136456021, 15.6136743757, 15.6137031488, 15.6137319212, 15.6137606931, 15.6137894645, 15.6138182352, 15.6138470054, 15.613875775, 15.613904544, 15.6139333125, 15.6139620804, 15.6139908477, 15.6140196144, 15.6140483806, 15.6140771462, 15.6141059112, 15.6141346757, 15.6141634395, 15.6141922028, 15.6142209655, 15.6142497277, 15.6142784893, 15.6143072503, 15.6143360107, 15.6143647706, 15.6143935298, 15.6144222885, 15.6144510467, 15.6144798042, 15.6145085612, 15.6145373177, 15.6145660735, 15.6145948288, 15.6146235835, 15.6146523376, 15.6146810911, 15.6147098441, 15.6147385965, 15.6147673484, 15.6147960996, 15.6148248503, 15.6148536004, 15.6148823499, 15.6149110989, 15.6149398473, 15.6149685951, 15.6149973424, 15.6150260891, 15.6150548352, 15.6150835807, 15.6151123256, 15.61514107, 15.6151698138, 15.6151985571, 15.6152272997, 15.6152560418, 15.6152847834, 15.6153135243, 15.6153422647, 15.6153710045, 15.6153997437, 15.6154284824, 15.6154572205, 15.615485958, 15.6155146949, 15.6155434313, 15.6155721671, 15.6156009023, 15.615629637, 15.615658371, 15.6156871046, 15.6157158375, 15.6157445699, 15.6157733016, 15.6158020329, 15.6158307635, 15.6158594936, 15.6158882231, 15.615916952, 15.6159456804, 15.6159744082, 15.6160031354, 15.616031862, 15.6160605881, 15.6160893136, 15.6161180385, 15.6161467629, 15.6161754866, 15.6162042099, 15.6162329325, 15.6162616546, 15.6162903761, 15.616319097, 15.6163478173, 15.6163765371, 15.6164052563, 15.616433975, 15.616462693, 15.6164914105, 15.6165201274, 15.6165488438, 15.6165775596, 15.6166062748, 15.6166349894, 15.6166637035, 15.616692417, 15.6167211299, 15.6167498422, 15.616778554, 15.6168072652, 15.6168359758, 15.6168646859, 15.6168933954, 15.6169221043, 15.6169508127, 15.6169795204, 15.6170082277, 15.6170369343, 15.6170656404, 15.6170943458, 15.6171230508, 15.6171517551, 15.6171804589, 15.6172091621, 15.6172378647, 15.6172665668, 15.6172952683, 15.6173239692, 15.6173526696, 15.6173813694, 15.6174100686, 15.6174387672, 15.6174674653, 15.6174961628, 15.6175248597, 15.6175535561, 15.6175822519, 15.6176109471, 15.6176396417, 15.6176683358, 15.6176970293, 15.6177257222, 15.6177544146, 15.6177831064, 15.6178117976, 15.6178404883, 15.6178691783, 15.6178978679, 15.6179265568, 15.6179552452, 15.617983933, 15.6180126202, 15.6180413069, 15.6180699929, 15.6180986785, 15.6181273634, 15.6181560478, 15.6181847316, 15.6182134148, 15.6182420975, 15.6182707796, 15.6182994611, 15.6183281421, 15.6183568224, 15.6183855023, 15.6184141815, 15.6184428602, 15.6184715383, 15.6185002158, 15.6185288928, 15.6185575692, 15.618586245, 15.6186149203, 15.6186435949, 15.618672269, 15.6187009426, 15.6187296156, 15.618758288, 15.6187869598, 15.6188156311, 15.6188443018, 15.6188729719, 15.6189016414, 15.6189303104, 15.6189589788, 15.6189876467, 15.619016314, 15.6190449807, 15.6190736468, 15.6191023124, 15.6191309774, 15.6191596418, 15.6191883057, 15.619216969, 15.6192456317, 15.6192742938, 15.6193029554, 15.6193316164, 15.6193602769, 15.6193889367, 15.619417596, 15.6194462548, 15.6194749129, 15.6195035705, 15.6195322276, 15.619560884, 15.6195895399, 15.6196181952, 15.61964685, 15.6196755042, 15.6197041578, 15.6197328108, 15.6197614633, 15.6197901152, 15.6198187665, 15.6198474173, 15.6198760675, 15.6199047171, 15.6199333662, 15.6199620147, 15.6199906626, 15.62001931, 15.6200479567, 15.620076603, 15.6201052486, 15.6201338937, 15.6201625382, 15.6201911821, 15.6202198255, 15.6202484683, 15.6202771105, 15.6203057522, 15.6203343933, 15.6203630338, 15.6203916738, 15.6204203132, 15.620448952, 15.6204775903, 15.620506228, 15.6205348651, 15.6205635016, 15.6205921376, 15.620620773, 15.6206494079, 15.6206780421, 15.6207066758, 15.620735309, 15.6207639416, 15.6207925736, 15.620821205, 15.6208498359, 15.6208784662, 15.6209070959, 15.620935725, 15.6209643536, 15.6209929817, 15.6210216091, 15.621050236, 15.6210788623, 15.6211074881, 15.6211361133, 15.6211647379, 15.6211933619, 15.6212219854, 15.6212506083, 15.6212792307, 15.6213078525, 15.6213364737, 15.6213650943, 15.6213937144, 15.6214223339, 15.6214509528, 15.6214795712, 15.621508189, 15.6215368062, 15.6215654229, 15.621594039, 15.6216226546, 15.6216512695, 15.6216798839, 15.6217084977, 15.621737111, 15.6217657237, 15.6217943358, 15.6218229474, 15.6218515584, 15.6218801688, 15.6219087787, 15.621937388, 15.6219659967, 15.6219946048, 15.6220232124, 15.6220518195, 15.6220804259, 15.6221090318, 15.6221376371, 15.6221662419, 15.6221948461, 15.6222234497, 15.6222520527, 15.6222806552, 15.6223092571, 15.6223378585, 15.6223664593, 15.6223950595, 15.6224236591, 15.6224522582, 15.6224808567, 15.6225094547, 15.6225380521, 15.6225666489, 15.6225952451, 15.6226238408, 15.6226524359, 15.6226810305, 15.6227096245, 15.6227382179, 15.6227668107, 15.622795403, 15.6228239947, 15.6228525859, 15.6228811764, 15.6229097665, 15.6229383559, 15.6229669448, 15.6229955331, 15.6230241209, 15.623052708, 15.6230812947, 15.6231098807, 15.6231384662, 15.6231670511, 15.6231956355, 15.6232242192, 15.6232528025, 15.6232813851, 15.6233099672, 15.6233385487, 15.6233671297, 15.62339571, 15.6234242899, 15.6234528691, 15.6234814478, 15.6235100259, 15.6235386035, 15.6235671805, 15.6235957569, 15.6236243328, 15.6236529081, 15.6236814828, 15.6237100569, 15.6237386305, 15.6237672036, 15.623795776, 15.6238243479, 15.6238529192, 15.62388149, 15.6239100602, 15.6239386298, 15.6239671989, 15.6239957674, 15.6240243353, 15.6240529027, 15.6240814695, 15.6241100358, 15.6241386014, 15.6241671665, 15.6241957311, 15.6242242951, 15.6242528585, 15.6242814213, 15.6243099836, 15.6243385453, 15.6243671065, 15.624395667, 15.6244242271, 15.6244527865, 15.6244813454, 15.6245099037, 15.6245384615, 15.6245670187, 15.6245955753, 15.6246241314, 15.6246526869, 15.6246812418, 15.6247097962, 15.62473835, 15.6247669032, 15.6247954559, 15.624824008, 15.6248525595, 15.6248811105, 15.6249096609, 15.6249382107, 15.62496676, 15.6249953087, 15.6250238569, 15.6250524045, 15.6250809515, 15.6251094979, 15.6251380438, 15.6251665892, 15.6251951339, 15.6252236781, 15.6252522217, 15.6252807648, 15.6253093073, 15.6253378493, 15.6253663906, 15.6253949314, 15.6254234717, 15.6254520114, 15.6254805505, 15.625509089, 15.625537627, 15.6255661644, 15.6255947013, 15.6256232376, 15.6256517733, 15.6256803085, 15.6257088431, 15.6257373771, 15.6257659106, 15.6257944435, 15.6258229758, 15.6258515076, 15.6258800388, 15.6259085695, 15.6259370995, 15.6259656291, 15.625994158, 15.6260226864, 15.6260512142, 15.6260797415, 15.6261082682, 15.6261367943, 15.6261653199, 15.6261938449, 15.6262223694, 15.6262508932, 15.6262794166, 15.6263079393, 15.6263364615, 15.6263649831, 15.6263935042, 15.6264220247, 15.6264505446, 15.626479064, 15.6265075828, 15.626536101, 15.6265646187, 15.6265931358, 15.6266216524, 15.6266501683, 15.6266786838, 15.6267071986, 15.6267357129, 15.6267642267, 15.6267927398, 15.6268212524, 15.6268497645, 15.6268782759, 15.6269067869, 15.6269352972, 15.626963807, 15.6269923162, 15.6270208249, 15.627049333, 15.6270778405, 15.6271063475, 15.6271348539, 15.6271633597, 15.627191865, 15.6272203697, 15.6272488739, 15.6272773775, 15.6273058805, 15.627334383, 15.6273628849, 15.6273913862, 15.627419887, 15.6274483872, 15.6274768869, 15.6275053859, 15.6275338845, 15.6275623824, 15.6275908798, 15.6276193767, 15.6276478729, 15.6276763687, 15.6277048638, 15.6277333584, 15.6277618524, 15.6277903459, 15.6278188388, 15.6278473311, 15.6278758229, 15.6279043141, 15.6279328047, 15.6279612948, 15.6279897843, 15.6280182733, 15.6280467617, 15.6280752495, 15.6281037368, 15.6281322235, 15.6281607096, 15.6281891952, 15.6282176802, 15.6282461647, 15.6282746486, 15.6283031319, 15.6283316147, 15.6283600969, 15.6283885785, 15.6284170596, 15.6284455401, 15.6284740201, 15.6285024995, 15.6285309783, 15.6285594566, 15.6285879343, 15.6286164115, 15.628644888, 15.6286733641, 15.6287018395, 15.6287303144, 15.6287587888, 15.6287872625, 15.6288157358, 15.6288442084, 15.6288726805, 15.628901152, 15.628929623, 15.6289580934, 15.6289865632, 15.6290150325, 15.6290435012, 15.6290719694, 15.629100437, 15.629128904, 15.6291573705, 15.6291858364, 15.6292143018, 15.6292427665, 15.6292712308, 15.6292996944, 15.6293281575, 15.6293566201, 15.6293850821, 15.6294135435, 15.6294420043, 15.6294704646, 15.6294989244, 15.6295273835, 15.6295558421, 15.6295843002, 15.6296127577, 15.6296412146, 15.629669671, 15.6296981268, 15.629726582, 15.6297550367, 15.6297834908, 15.6298119444, 15.6298403974, 15.6298688498, 15.6298973017, 15.629925753, 15.6299542038, 15.629982654, 15.6300111036, 15.6300395527, 15.6300680012, 15.6300964491, 15.6301248965, 15.6301533433, 15.6301817896, 15.6302102353, 15.6302386804, 15.630267125, 15.630295569, 15.6303240125, 15.6303524554, 15.6303808978, 15.6304093395, 15.6304377808, 15.6304662214, 15.6304946615, 15.630523101, 15.63055154, 15.6305799784, 15.6306084163, 15.6306368536, 15.6306652903, 15.6306937265, 15.6307221621, 15.6307505972, 15.6307790316, 15.6308074656, 15.630835899, 15.6308643318, 15.630892764, 15.6309211957, 15.6309496268, 15.6309780574, 15.6310064874, 15.6310349169, 15.6310633457, 15.6310917741, 15.6311202018, 15.6311486291, 15.6311770557, 15.6312054818, 15.6312339073, 15.6312623323, 15.6312907567, 15.6313191805, 15.6313476038, 15.6313760266, 15.6314044487, 15.6314328703, 15.6314612914, 15.6314897119, 15.6315181318, 15.6315465512, 15.63157497, 15.6316033882, 15.6316318059, 15.631660223, 15.6316886396, 15.6317170556, 15.6317454711, 15.631773886, 15.6318023003, 15.6318307141, 15.6318591273, 15.6318875399, 15.631915952, 15.6319443636, 15.6319727745, 15.6320011849, 15.6320295948, 15.6320580041, 15.6320864128, 15.632114821, 15.6321432286, 15.6321716357, 15.6322000422, 15.6322284481, 15.6322568535, 15.6322852583, 15.6323136626, 15.6323420663, 15.6323704694, 15.632398872, 15.632427274, 15.6324556755, 15.6324840764, 15.6325124768, 15.6325408765, 15.6325692758, 15.6325976744, 15.6326260726, 15.6326544701, 15.6326828671, 15.6327112635, 15.6327396594, 15.6327680547, 15.6327964495, 15.6328248437, 15.6328532373, 15.6328816304, 15.6329100229, 15.6329384149, 15.6329668063, 15.6329951971, 15.6330235874, 15.6330519772, 15.6330803663, 15.6331087549, 15.633137143, 15.6331655305, 15.6331939174, 15.6332223038, 15.6332506896, 15.6332790749, 15.6333074596, 15.6333358437, 15.6333642273, 15.6333926103, 15.6334209928, 15.6334493747, 15.6334777561, 15.6335061369, 15.6335345171, 15.6335628968, 15.6335912759, 15.6336196544, 15.6336480324, 15.6336764099, 15.6337047868, 15.6337331631, 15.6337615389, 15.6337899141, 15.6338182887, 15.6338466628, 15.6338750364, 15.6339034093, 15.6339317818, 15.6339601536, 15.6339885249, 15.6340168957, 15.6340452659, 15.6340736355, 15.6341020046, 15.6341303731, 15.6341587411, 15.6341871085, 15.6342154753, 15.6342438416, 15.6342722073, 15.6343005725, 15.6343289371, 15.6343573011, 15.6343856646, 15.6344140276, 15.63444239, 15.6344707518, 15.634499113, 15.6345274737, 15.6345558339, 15.6345841935, 15.6346125525, 15.634640911, 15.6346692689, 15.6346976263, 15.6347259831, 15.6347543393, 15.634782695, 15.6348110502, 15.6348394047, 15.6348677588, 15.6348961122, 15.6349244651, 15.6349528175, 15.6349811693, 15.6350095205, 15.6350378712, 15.6350662213, 15.6350945709, 15.6351229199, 15.6351512683, 15.6351796162, 15.6352079635, 15.6352363103, 15.6352646565, 15.6352930022, 15.6353213473, 15.6353496919, 15.6353780359, 15.6354063793, 15.6354347222, 15.6354630645, 15.6354914063, 15.6355197475, 15.6355480881, 15.6355764282, 15.6356047677, 15.6356331067, 15.6356614452, 15.635689783, 15.6357181203, 15.6357464571, 15.6357747933, 15.6358031289, 15.635831464, 15.6358597985, 15.6358881325, 15.6359164659, 15.6359447988, 15.6359731311, 15.6360014628, 15.636029794, 15.6360581247, 15.6360864547, 15.6361147843, 15.6361431132, 15.6361714416, 15.6361997695, 15.6362280968, 15.6362564235, 15.6362847497, 15.6363130753, 15.6363414004, 15.6363697249, 15.6363980489, 15.6364263723, 15.6364546951, 15.6364830174, 15.6365113392, 15.6365396603, 15.636567981, 15.636596301, 15.6366246205, 15.6366529395, 15.6366812579, 15.6367095757, 15.636737893, 15.6367662098, 15.6367945259, 15.6368228416, 15.6368511566, 15.6368794711, 15.6369077851, 15.6369360985, 15.6369644113, 15.6369927236, 15.6370210353, 15.6370493465, 15.6370776571, 15.6371059672, 15.6371342767, 15.6371625857, 15.6371908941, 15.6372192019, 15.6372475092, 15.6372758159, 15.6373041221, 15.6373324277, 15.6373607328, 15.6373890373, 15.6374173413, 15.6374456447, 15.6374739475, 15.6375022498, 15.6375305515, 15.6375588527, 15.6375871533, 15.6376154534, 15.6376437529, 15.6376720519, 15.6377003503, 15.6377286481, 15.6377569454, 15.6377852422, 15.6378135383, 15.637841834, 15.637870129, 15.6378984236, 15.6379267175, 15.6379550109, 15.6379833038, 15.6380115961, 15.6380398878, 15.638068179, 15.6380964696, 15.6381247597, 15.6381530492, 15.6381813382, 15.6382096266, 15.6382379145, 15.6382662018, 15.6382944886, 15.6383227747, 15.6383510604, 15.6383793455, 15.63840763, 15.638435914, 15.6384641974, 15.6384924803, 15.6385207626, 15.6385490444, 15.6385773256, 15.6386056062, 15.6386338863, 15.6386621659, 15.6386904448, 15.6387187233, 15.6387470012, 15.6387752785, 15.6388035553, 15.6388318315, 15.6388601071, 15.6388883823, 15.6389166568, 15.6389449308, 15.6389732043, 15.6390014771, 15.6390297495, 15.6390580213, 15.6390862925, 15.6391145632, 15.6391428333, 15.6391711029, 15.6391993719, 15.6392276403, 15.6392559083, 15.6392841756, 15.6393124424, 15.6393407087, 15.6393689743, 15.6393972395, 15.6394255041, 15.6394537681, 15.6394820316, 15.6395102945, 15.6395385569, 15.6395668187, 15.6395950799, 15.6396233407, 15.6396516008, 15.6396798604, 15.6397081195, 15.639736378, 15.6397646359, 15.6397928933, 15.6398211501, 15.6398494064, 15.6398776621, 15.6399059173, 15.6399341719, 15.639962426, 15.6399906795, 15.6400189325, 15.6400471849, 15.6400754367, 15.640103688, 15.6401319388, 15.640160189, 15.6401884386, 15.6402166877, 15.6402449362, 15.6402731842, 15.6403014316, 15.6403296785, 15.6403579248, 15.6403861706, 15.6404144158, 15.6404426605, 15.6404709046, 15.6404991481, 15.6405273912, 15.6405556336, 15.6405838755, 15.6406121168, 15.6406403576, 15.6406685979, 15.6406968376, 15.6407250767, 15.6407533153, 15.6407815533, 15.6408097908, 15.6408380277, 15.6408662641, 15.6408944999, 15.6409227352, 15.6409509699, 15.640979204, 15.6410074377, 15.6410356707, 15.6410639032, 15.6410921352, 15.6411203666, 15.6411485974, 15.6411768277, 15.6412050574, 15.6412332866, 15.6412615153, 15.6412897434, 15.6413179709, 15.6413461979, 15.6413744243, 15.6414026502, 15.6414308755, 15.6414591003, 15.6414873245, 15.6415155481, 15.6415437713, 15.6415719938, 15.6416002158, 15.6416284373, 15.6416566582, 15.6416848786, 15.6417130984, 15.6417413176, 15.6417695363, 15.6417977544, 15.641825972, 15.6418541891, 15.6418824056, 15.6419106215, 15.6419388369, 15.6419670517, 15.641995266, 15.6420234797, 15.6420516929, 15.6420799056, 15.6421081176, 15.6421363292, 15.6421645401, 15.6421927506, 15.6422209604, 15.6422491697, 15.6422773785, 15.6423055867, 15.6423337944, 15.6423620015, 15.6423902081, 15.6424184141, 15.6424466195, 15.6424748244, 15.6425030288, 15.6425312326, 15.6425594358, 15.6425876385, 15.6426158407, 15.6426440423, 15.6426722433, 15.6427004438, 15.6427286438, 15.6427568432, 15.642785042, 15.6428132403, 15.642841438, 15.6428696352, 15.6428978319, 15.6429260279, 15.6429542235, 15.6429824185, 15.6430106129, 15.6430388068, 15.6430670001, 15.6430951929, 15.6431233851, 15.6431515768, 15.6431797679, 15.6432079585, 15.6432361485, 15.643264338, 15.6432925269, 15.6433207153, 15.6433489031, 15.6433770904, 15.6434052771, 15.6434334633, 15.6434616489, 15.643489834, 15.6435180185, 15.6435462025, 15.6435743859, 15.6436025687, 15.6436307511, 15.6436589328, 15.643687114, 15.6437152947, 15.6437434748, 15.6437716544, 15.6437998334, 15.6438280119, 15.6438561898, 15.6438843671, 15.6439125439, 15.6439407202, 15.6439688959, 15.6439970711, 15.6440252457, 15.6440534198, 15.6440815933, 15.6441097662, 15.6441379386, 15.6441661105, 15.6441942818, 15.6442224526, 15.6442506228, 15.6442787924, 15.6443069615, 15.6443351301, 15.6443632981, 15.6443914656, 15.6444196325, 15.6444477988, 15.6444759647, 15.6445041299, 15.6445322946, 15.6445604588, 15.6445886224, 15.6446167855, 15.644644948, 15.6446731099, 15.6447012713, 15.6447294322, 15.6447575925, 15.6447857523, 15.6448139115, 15.6448420702, 15.6448702283, 15.6448983858, 15.6449265428, 15.6449546993, 15.6449828552, 15.6450110106, 15.6450391654, 15.6450673197, 15.6450954734, 15.6451236266, 15.6451517792, 15.6451799313, 15.6452080828, 15.6452362337, 15.6452643842, 15.645292534, 15.6453206834, 15.6453488321, 15.6453769804, 15.645405128, 15.6454332752, 15.6454614217, 15.6454895678, 15.6455177132, 15.6455458582, 15.6455740026, 15.6456021464, 15.6456302897, 15.6456584324, 15.6456865746, 15.6457147162, 15.6457428573, 15.6457709979, 15.6457991378, 15.6458272773, 15.6458554162, 15.6458835545, 15.6459116923, 15.6459398296, 15.6459679663, 15.6459961024, 15.646024238, 15.6460523731, 15.6460805076, 15.6461086415, 15.6461367749, 15.6461649078, 15.6461930401, 15.6462211718, 15.646249303, 15.6462774337, 15.6463055638, 15.6463336934, 15.6463618224, 15.6463899509, 15.6464180788, 15.6464462062, 15.646474333, 15.6465024593, 15.646530585, 15.6465587102, 15.6465868348, 15.6466149589, 15.6466430824, 15.6466712054, 15.6466993278, 15.6467274497, 15.646755571, 15.6467836918, 15.6468118121, 15.6468399318, 15.6468680509, 15.6468961695, 15.6469242876, 15.6469524051, 15.646980522, 15.6470086384, 15.6470367543, 15.6470648696, 15.6470929844, 15.6471210986, 15.6471492123, 15.6471773254, 15.647205438, 15.64723355, 15.6472616615, 15.6472897724, 15.6473178828, 15.6473459926, 15.6473741019, 15.6474022106, 15.6474303188, 15.6474584265, 15.6474865336, 15.6475146401, 15.6475427461, 15.6475708516, 15.6475989565, 15.6476270608, 15.6476551646, 15.6476832679, 15.6477113706, 15.6477394728, 15.6477675744, 15.6477956755, 15.647823776, 15.647851876, 15.6478799754, 15.6479080743, 15.6479361726, 15.6479642704, 15.6479923676, 15.6480204643, 15.6480485605, 15.6480766561, 15.6481047511, 15.6481328457, 15.6481609396, 15.648189033, 15.6482171259, 15.6482452182, 15.64827331, 15.6483014012, 15.6483294919, 15.648357582, 15.6483856716, 15.6484137606, 15.6484418491, 15.6484699371, 15.6484980245, 15.6485261113, 15.6485541976, 15.6485822834, 15.6486103686, 15.6486384532, 15.6486665373, 15.6486946209, 15.6487227039, 15.6487507864, 15.6487788683, 15.6488069497, 15.6488350306, 15.6488631109, 15.6488911906, 15.6489192698, 15.6489473484, 15.6489754265, 15.6490035041, 15.6490315811, 15.6490596576, 15.6490877335, 15.6491158089, 15.6491438837, 15.649171958, 15.6492000317, 15.6492281049, 15.6492561775, 15.6492842496, 15.6493123212, 15.6493403922, 15.6493684626, 15.6493965325, 15.6494246019, 15.6494526707, 15.649480739, 15.6495088067, 15.6495368739, 15.6495649405, 15.6495930066, 15.6496210721, 15.6496491371, 15.6496772016, 15.6497052655, 15.6497333288, 15.6497613916, 15.6497894539, 15.6498175156, 15.6498455768, 15.6498736374, 15.6499016975, 15.649929757, 15.649957816, 15.6499858745, 15.6500139324, 15.6500419897, 15.6500700465, 15.6500981028, 15.6501261585, 15.6501542137, 15.6501822683, 15.6502103224, 15.6502383759, 15.6502664289, 15.6502944813, 15.6503225332, 15.6503505846, 15.6503786354, 15.6504066857, 15.6504347354, 15.6504627845, 15.6504908332, 15.6505188812, 15.6505469288, 15.6505749758, 15.6506030222, 15.6506310681, 15.6506591135, 15.6506871583, 15.6507152025, 15.6507432463, 15.6507712894, 15.6507993321, 15.6508273741, 15.6508554157, 15.6508834567, 15.6509114971, 15.650939537, 15.6509675764, 15.6509956152, 15.6510236535, 15.6510516912, 15.6510797284, 15.651107765, 15.6511358011, 15.6511638366, 15.6511918716, 15.6512199061, 15.65124794, 15.6512759733, 15.6513040062, 15.6513320384, 15.6513600702, 15.6513881014, 15.651416132, 15.6514441621, 15.6514721916, 15.6515002207, 15.6515282491, 15.651556277, 15.6515843044, 15.6516123312, 15.6516403575, 15.6516683833, 15.6516964085, 15.6517244331, 15.6517524572, 15.6517804808, 15.6518085038, 15.6518365263, 15.6518645482, 15.6518925696, 15.6519205904, 15.6519486107, 15.6519766305, 15.6520046497, 15.6520326683, 15.6520606865, 15.652088704, 15.6521167211, 15.6521447376, 15.6521727535, 15.6522007689, 15.6522287838, 15.6522567981, 15.6522848118, 15.6523128251, 15.6523408377, 15.6523688499, 15.6523968615, 15.6524248725, 15.652452883, 15.652480893, 15.6525089024, 15.6525369113, 15.6525649196, 15.6525929274, 15.6526209346, 15.6526489413, 15.6526769475, 15.6527049531, 15.6527329582, 15.6527609627, 15.6527889667, 15.6528169701, 15.652844973, 15.6528729754, 15.6529009772, 15.6529289784, 15.6529569791, 15.6529849793, 15.6530129789, 15.653040978, 15.6530689766, 15.6530969746, 15.653124972, 15.653152969, 15.6531809653, 15.6532089612, 15.6532369564, 15.6532649512, 15.6532929454, 15.653320939, 15.6533489322, 15.6533769247, 15.6534049167, 15.6534329082, 15.6534608992, 15.6534888896, 15.6535168794, 15.6535448687, 15.6535728575, 15.6536008457, 15.6536288334, 15.6536568205, 15.6536848071, 15.6537127932, 15.6537407787, 15.6537687637, 15.6537967481, 15.653824732, 15.6538527153, 15.6538806981, 15.6539086804, 15.6539366621, 15.6539646432, 15.6539926239, 15.654020604, 15.6540485835, 15.6540765625, 15.654104541, 15.6541325189, 15.6541604962, 15.6541884731, 15.6542164493, 15.6542444251, 15.6542724003, 15.6543003749, 15.6543283491, 15.6543563226, 15.6543842957, 15.6544122681, 15.6544402401, 15.6544682115, 15.6544961824, 15.6545241527, 15.6545521225, 15.6545800917, 15.6546080604, 15.6546360285, 15.6546639961, 15.6546919632, 15.6547199297, 15.6547478957, 15.6547758611, 15.654803826, 15.6548317904, 15.6548597542, 15.6548877175, 15.6549156802, 15.6549436424, 15.654971604, 15.6549995651, 15.6550275257, 15.6550554857, 15.6550834452, 15.6551114041, 15.6551393625, 15.6551673204, 15.6551952777, 15.6552232345, 15.6552511907, 15.6552791464, 15.6553071015, 15.6553350561, 15.6553630102, 15.6553909637, 15.6554189167, 15.6554468691, 15.655474821, 15.6555027723, 15.6555307232, 15.6555586734, 15.6555866232, 15.6556145723, 15.655642521, 15.6556704691, 15.6556984166, 15.6557263637, 15.6557543101, 15.6557822561, 15.6558102015, 15.6558381463, 15.6558660906, 15.6558940344, 15.6559219776, 15.6559499203, 15.6559778625, 15.6560058041, 15.6560337452, 15.6560616857, 15.6560896257, 15.6561175651, 15.656145504, 15.6561734424, 15.6562013802, 15.6562293175, 15.6562572542, 15.6562851904, 15.6563131261, 15.6563410612, 15.6563689958, 15.6563969298, 15.6564248633, 15.6564527962, 15.6564807286, 15.6565086605, 15.6565365918, 15.6565645226, 15.6565924529, 15.6566203826, 15.6566483117, 15.6566762404, 15.6567041685, 15.656732096, 15.656760023, 15.6567879495, 15.6568158754, 15.6568438008, 15.6568717256, 15.6568996499, 15.6569275737, 15.6569554969, 15.6569834196, 15.6570113417, 15.6570392633, 15.6570671844, 15.6570951049, 15.6571230249, 15.6571509443, 15.6571788632, 15.6572067816, 15.6572346994, 15.6572626166, 15.6572905334, 15.6573184496, 15.6573463652, 15.6573742804, 15.6574021949, 15.657430109, 15.6574580225, 15.6574859354, 15.6575138478, 15.6575417597, 15.657569671, 15.6575975818, 15.6576254921, 15.6576534018, 15.657681311, 15.6577092196, 15.6577371277, 15.6577650353, 15.6577929423, 15.6578208488, 15.6578487547, 15.6578766601, 15.6579045649, 15.6579324693, 15.657960373, 15.6579882763, 15.658016179, 15.6580440811, 15.6580719828, 15.6580998838, 15.6581277844, 15.6581556844, 15.6581835838, 15.6582114828, 15.6582393811, 15.658267279, 15.6582951763, 15.658323073, 15.6583509693, 15.6583788649, 15.6584067601, 15.6584346547, 15.6584625488, 15.6584904423, 15.6585183353, 15.6585462277, 15.6585741196, 15.658602011, 15.6586299018, 15.6586577921, 15.6586856819, 15.6587135711, 15.6587414598, 15.6587693479, 15.6587972355, 15.6588251226, 15.6588530091, 15.658880895, 15.6589087805, 15.6589366654, 15.6589645497, 15.6589924336, 15.6590203169, 15.6590481996, 15.6590760818, 15.6591039635, 15.6591318446, 15.6591597252, 15.6591876052, 15.6592154848, 15.6592433637, 15.6592712422, 15.6592991201, 15.6593269974, 15.6593548742, 15.6593827505, 15.6594106263, 15.6594385015, 15.6594663761, 15.6594942502, 15.6595221238, 15.6595499969, 15.6595778694, 15.6596057414, 15.6596336128, 15.6596614837, 15.659689354, 15.6597172239, 15.6597450931, 15.6597729619, 15.6598008301, 15.6598286977, 15.6598565649, 15.6598844315, 15.6599122975, 15.659940163, 15.659968028, 15.6599958924, 15.6600237563, 15.6600516197, 15.6600794825, 15.6601073448, 15.6601352065, 15.6601630677, 15.6601909284, 15.6602187885, 15.6602466481, 15.6602745072, 15.6603023657, 15.6603302237, 15.6603580811, 15.660385938, 15.6604137944, 15.6604416502, 15.6604695055, 15.6604973602, 15.6605252145, 15.6605530681, 15.6605809213, 15.6606087739, 15.6606366259, 15.6606644775, 15.6606923284, 15.6607201789, 15.6607480288, 15.6607758782, 15.660803727, 15.6608315753, 15.6608594231, 15.6608872703, 15.660915117, 15.6609429631, 15.6609708087, 15.6609986538, 15.6610264984, 15.6610543424, 15.6610821858, 15.6611100287, 15.6611378711, 15.661165713, 15.6611935543, 15.6612213951, 15.6612492353, 15.661277075, 15.6613049142, 15.6613327528, 15.6613605909, 15.6613884284, 15.6614162655, 15.6614441019, 15.6614719379, 15.6614997733, 15.6615276081, 15.6615554425, 15.6615832763, 15.6616111095, 15.6616389422, 15.6616667744, 15.6616946061, 15.6617224372, 15.6617502677, 15.6617780978, 15.6618059273, 15.6618337562, 15.6618615847, 15.6618894125, 15.6619172399, 15.6619450667, 15.661972893, 15.6620007187, 15.6620285439, 15.6620563686, 15.6620841927, 15.6621120163, 15.6621398394, 15.6621676619, 15.6621954839, 15.6622233053, 15.6622511262, 15.6622789466, 15.6623067664, 15.6623345857, 15.6623624045, 15.6623902227, 15.6624180404, 15.6624458576, 15.6624736742, 15.6625014903, 15.6625293058, 15.6625571208, 15.6625849353, 15.6626127493, 15.6626405627, 15.6626683755, 15.6626961878, 15.6627239996, 15.6627518109, 15.6627796216, 15.6628074318, 15.6628352415, 15.6628630506, 15.6628908591, 15.6629186672, 15.6629464747, 15.6629742817, 15.6630020881, 15.663029894, 15.6630576993, 15.6630855042, 15.6631133085, 15.6631411122, 15.6631689154, 15.6631967181, 15.6632245203, 15.6632523219, 15.6632801229, 15.6633079235, 15.6633357235, 15.6633635229, 15.6633913219, 15.6634191203, 15.6634469181, 15.6634747155, 15.6635025122, 15.6635303085, 15.6635581042, 15.6635858994, 15.663613694, 15.6636414882, 15.6636692817, 15.6636970748, 15.6637248673, 15.6637526592, 15.6637804507, 15.6638082416, 15.6638360319, 15.6638638218, 15.6638916111, 15.6639193998, 15.663947188, 15.6639749757, 15.6640027629, 15.6640305495, 15.6640583356, 15.6640861211, 15.6641139061, 15.6641416906, 15.6641694746, 15.664197258, 15.6642250408, 15.6642528232, 15.664280605, 15.6643083862, 15.664336167, 15.6643639472, 15.6643917268, 15.664419506, 15.6644472845, 15.6644750626, 15.6645028401, 15.6645306171, 15.6645583936, 15.6645861695, 15.6646139449, 15.6646417197, 15.664669494, 15.6646972678, 15.664725041, 15.6647528138, 15.6647805859, 15.6648083576, 15.6648361287, 15.6648638992, 15.6648916693, 15.6649194388, 15.6649472078, 15.6649749762, 15.6650027441, 15.6650305115, 15.6650582783, 15.6650860446, 15.6651138103, 15.6651415756, 15.6651693403, 15.6651971044, 15.665224868, 15.6652526311, 15.6652803937, 15.6653081557, 15.6653359172, 15.6653636781, 15.6653914386, 15.6654191984, 15.6654469578, 15.6654747166, 15.6655024749, 15.6655302326, 15.6655579898, 15.6655857465, 15.6656135027, 15.6656412583, 15.6656690134, 15.6656967679, 15.6657245219, 15.6657522754, 15.6657800283, 15.6658077807, 15.6658355326, 15.665863284, 15.6658910348, 15.665918785, 15.6659465348, 15.665974284, 15.6660020326, 15.6660297808, 15.6660575284, 15.6660852755, 15.666113022, 15.666140768, 15.6661685135, 15.6661962584, 15.6662240028, 15.6662517467, 15.66627949, 15.6663072328, 15.6663349751, 15.6663627168, 15.666390458, 15.6664181987, 15.6664459388, 15.6664736784, 15.6665014175, 15.666529156, 15.666556894, 15.6665846315, 15.6666123684, 15.6666401048, 15.6666678407, 15.666695576, 15.6667233108, 15.6667510451, 15.6667787788, 15.666806512, 15.6668342447, 15.6668619768, 15.6668897084, 15.6669174395, 15.66694517, 15.6669729001, 15.6670006295, 15.6670283585, 15.6670560869, 15.6670838147, 15.6671115421, 15.6671392689, 15.6671669952, 15.6671947209, 15.6672224461, 15.6672501708, 15.6672778949, 15.6673056185, 15.6673333416, 15.6673610641, 15.6673887862, 15.6674165076, 15.6674442286, 15.667471949, 15.6674996689, 15.6675273882, 15.667555107, 15.6675828253, 15.6676105431, 15.6676382603, 15.667665977, 15.6676936931, 15.6677214088, 15.6677491238, 15.6677768384, 15.6678045524, 15.6678322659, 15.6678599789, 15.6678876913, 15.6679154032, 15.6679431145, 15.6679708254, 15.6679985357, 15.6680262454, 15.6680539547, 15.6680816634, 15.6681093715, 15.6681370792, 15.6681647863, 15.6681924928, 15.6682201989, 15.6682479044, 15.6682756094, 15.6683033138, 15.6683310177, 15.6683587211, 15.668386424, 15.6684141263, 15.6684418281, 15.6684695293, 15.66849723, 15.6685249302, 15.6685526299, 15.668580329, 15.6686080276, 15.6686357256, 15.6686634232, 15.6686911202, 15.6687188166, 15.6687465126, 15.668774208, 15.6688019028, 15.6688295972, 15.668857291, 15.6688849843, 15.668912677, 15.6689403692, 15.6689680609, 15.6689957521, 15.6690234427, 15.6690511328, 15.6690788223, 15.6691065113, 15.6691341998, 15.6691618878, 15.6691895752, 15.6692172621, 15.6692449485, 15.6692726343, 15.6693003196, 15.6693280044, 15.6693556886, 15.6693833723, 15.6694110555, 15.6694387382, 15.6694664203, 15.6694941019, 15.6695217829, 15.6695494635, 15.6695771434, 15.6696048229, 15.6696325018, 15.6696601802, 15.6696878581, 15.6697155354, 15.6697432123, 15.6697708885, 15.6697985643, 15.6698262395, 15.6698539142, 15.6698815883, 15.6699092619, 15.669936935, 15.6699646076, 15.6699922796, 15.6700199511, 15.6700476221, 15.6700752925, 15.6701029624, 15.6701306318, 15.6701583006, 15.670185969, 15.6702136367, 15.670241304, 15.6702689707, 15.6702966369, 15.6703243026, 15.6703519677, 15.6703796323, 15.6704072964, 15.6704349599, 15.6704626229, 15.6704902854, 15.6705179473, 15.6705456088, 15.6705732696, 15.67060093, 15.6706285898, 15.6706562491, 15.6706839079, 15.6707115661, 15.6707392238, 15.670766881, 15.6707945376, 15.6708221938, 15.6708498493, 15.6708775044, 15.6709051589, 15.6709328129, 15.6709604664, 15.6709881193, 15.6710157717, 15.6710434236, 15.6710710749, 15.6710987257, 15.671126376, 15.6711540258, 15.671181675, 15.6712093237, 15.6712369719, 15.6712646195, 15.6712922666, 15.6713199132, 15.6713475592, 15.6713752047, 15.6714028497, 15.6714304942, 15.6714581381, 15.6714857815, 15.6715134244, 15.6715410667, 15.6715687085, 15.6715963498, 15.6716239905, 15.6716516308, 15.6716792705, 15.6717069096, 15.6717345482, 15.6717621863, 15.6717898239, 15.671817461, 15.6718450975, 15.6718727335, 15.6719003689, 15.6719280038, 15.6719556382, 15.6719832721, 15.6720109054, 15.6720385382, 15.6720661705, 15.6720938023, 15.6721214335, 15.6721490642, 15.6721766943, 15.672204324, 15.6722319531, 15.6722595816, 15.6722872097, 15.6723148372, 15.6723424642, 15.6723700906, 15.6723977166, 15.672425342, 15.6724529668, 15.6724805912, 15.672508215, 15.6725358383, 15.672563461, 15.6725910833, 15.672618705, 15.6726463261, 15.6726739468, 15.6727015669, 15.6727291865, 15.6727568055, 15.672784424, 15.672812042, 15.6728396595, 15.6728672764, 15.6728948928, 15.6729225087, 15.6729501241, 15.6729777389, 15.6730053532, 15.673032967, 15.6730605802, 15.6730881929, 15.6731158051, 15.6731434167, 15.6731710279, 15.6731986385, 15.6732262485, 15.6732538581, 15.6732814671, 15.6733090756, 15.6733366835, 15.6733642909, 15.6733918978, 15.6734195042, 15.67344711, 15.6734747154, 15.6735023201, 15.6735299244, 15.6735575281, 15.6735851313, 15.673612734, 15.6736403361, 15.6736679378, 15.6736955388, 15.6737231394, 15.6737507394, 15.6737783389, 15.6738059379, 15.6738335364, 15.6738611343, 15.6738887317, 15.6739163285, 15.6739439249, 15.6739715207, 15.673999116, 15.6740267107, 15.6740543049, 15.6740818986, 15.6741094918, 15.6741370844, 15.6741646766, 15.6741922681, 15.6742198592, 15.6742474497, 15.6742750397, 15.6743026292, 15.6743302182, 15.6743578066, 15.6743853945, 15.6744129818, 15.6744405687, 15.674468155, 15.6744957408, 15.674523326, 15.6745509107, 15.6745784949, 15.6746060786, 15.6746336618, 15.6746612444, 15.6746888265, 15.674716408, 15.6747439891, 15.6747715696, 15.6747991496, 15.674826729, 15.6748543079, 15.6748818863, 15.6749094642, 15.6749370416, 15.6749646184, 15.6749921947, 15.6750197704, 15.6750473457, 15.6750749204, 15.6751024946, 15.6751300682, 15.6751576414, 15.675185214, 15.675212786, 15.6752403576, 15.6752679286, 15.6752954991, 15.6753230691, 15.6753506385, 15.6753782074, 15.6754057758, 15.6754333437, 15.675460911, 15.6754884778, 15.6755160441, 15.6755436098, 15.6755711751, 15.6755987398, 15.6756263039, 15.6756538676, 15.6756814307, 15.6757089933, 15.6757365554, 15.6757641169, 15.6757916779, 15.6758192384, 15.6758467984, 15.6758743578, 15.6759019167, 15.6759294751, 15.6759570329, 15.6759845903, 15.6760121471, 15.6760397033, 15.6760672591, 15.6760948143, 15.676122369, 15.6761499232, 15.6761774768, 15.67620503, 15.6762325825, 15.6762601346, 15.6762876861, 15.6763152372, 15.6763427876, 15.6763703376, 15.676397887, 15.676425436, 15.6764529843, 15.6764805322, 15.6765080795, 15.6765356263, 15.6765631726, 15.6765907184, 15.6766182636, 15.6766458083, 15.6766733525, 15.6767008961, 15.6767284392, 15.6767559818, 15.6767835239, 15.6768110655, 15.6768386065, 15.676866147, 15.6768936869, 15.6769212264, 15.6769487653, 15.6769763037, 15.6770038416, 15.6770313789, 15.6770589157, 15.677086452, 15.6771139878, 15.677141523, 15.6771690577, 15.6771965919, 15.6772241256, 15.6772516587, 15.6772791913, 15.6773067234, 15.677334255, 15.677361786, 15.6773893165, 15.6774168465, 15.6774443759, 15.6774719049, 15.6774994333, 15.6775269612, 15.6775544885, 15.6775820154, 15.6776095417, 15.6776370674, 15.6776645927, 15.6776921174, 15.6777196416, 15.6777471653, 15.6777746885, 15.6778022111, 15.6778297332, 15.6778572548, 15.6778847759, 15.6779122964, 15.6779398164, 15.6779673359, 15.6779948548, 15.6780223733, 15.6780498912, 15.6780774085, 15.6781049254, 15.6781324417, 15.6781599575, 15.6781874728, 15.6782149876, 15.6782425018, 15.6782700155, 15.6782975287, 15.6783250414, 15.6783525535, 15.6783800651, 15.6784075762, 15.6784350868, 15.6784625968, 15.6784901063, 15.6785176153, 15.6785451237, 15.6785726317, 15.6786001391, 15.678627646, 15.6786551524, 15.6786826582, 15.6787101635, 15.6787376683, 15.6787651726, 15.6787926763, 15.6788201795, 15.6788476822, 15.6788751844, 15.678902686, 15.6789301872, 15.6789576877, 15.6789851878, 15.6790126874, 15.6790401864, 15.6790676849, 15.6790951829, 15.6791226803, 15.6791501772, 15.6791776737, 15.6792051695, 15.6792326649, 15.6792601597, 15.679287654, 15.6793151478, 15.6793426411, 15.6793701338, 15.679397626, 15.6794251177, 15.6794526089, 15.6794800995, 15.6795075896, 15.6795350792, 15.6795625683, 15.6795900568, 15.6796175448, 15.6796450323, 15.6796725193, 15.6797000058, 15.6797274917, 15.6797549771, 15.679782462, 15.6798099463, 15.6798374302, 15.6798649135, 15.6798923963, 15.6799198785, 15.6799473603, 15.6799748415, 15.6800023222, 15.6800298023, 15.680057282, 15.6800847611, 15.6801122397, 15.6801397178, 15.6801671953, 15.6801946723, 15.6802221488, 15.6802496248, 15.6802771003, 15.6803045752, 15.6803320496, 15.6803595235, 15.6803869969, 15.6804144697, 15.680441942, 15.6804694138, 15.6804968851, 15.6805243559, 15.6805518261, 15.6805792958, 15.680606765, 15.6806342336, 15.6806617017, 15.6806891694, 15.6807166364, 15.680744103, 15.6807715691, 15.6807990346, 15.6808264996, 15.680853964, 15.680881428, 15.6809088914, 15.6809363543, 15.6809638167, 15.6809912786, 15.6810187399, 15.6810462007, 15.681073661, 15.6811011208, 15.68112858, 15.6811560387, 15.6811834969, 15.6812109546, 15.6812384118, 15.6812658684, 15.6812933245, 15.6813207801, 15.6813482352, 15.6813756897, 15.6814031437, 15.6814305972, 15.6814580502, 15.6814855027, 15.6815129546, 15.681540406, 15.6815678569, 15.6815953073, 15.6816227571, 15.6816502064, 15.6816776552, 15.6817051035, 15.6817325512, 15.6817599985, 15.6817874452, 15.6818148914, 15.681842337, 15.6818697822, 15.6818972268, 15.6819246709, 15.6819521145, 15.6819795575, 15.682007, 15.6820344421, 15.6820618835, 15.6820893245, 15.682116765, 15.6821442049, 15.6821716443, 15.6821990831, 15.6822265215, 15.6822539593, 15.6822813967, 15.6823088334, 15.6823362697, 15.6823637055, 15.6823911407, 15.6824185754, 15.6824460096, 15.6824734432, 15.6825008764, 15.682528309, 15.6825557411, 15.6825831727, 15.6826106037, 15.6826380342, 15.6826654642, 15.6826928937, 15.6827203227, 15.6827477511, 15.6827751791, 15.6828026065, 15.6828300333, 15.6828574597, 15.6828848855, 15.6829123109, 15.6829397357, 15.6829671599, 15.6829945837, 15.6830220069, 15.6830494296, 15.6830768518, 15.6831042735, 15.6831316946, 15.6831591152, 15.6831865354, 15.6832139549, 15.683241374, 15.6832687925, 15.6832962106, 15.6833236281, 15.683351045, 15.6833784615, 15.6834058774, 15.6834332928, 15.6834607077, 15.6834881221, 15.683515536, 15.6835429493, 15.6835703621, 15.6835977744, 15.6836251861, 15.6836525974, 15.6836800081, 15.6837074183, 15.683734828, 15.6837622372, 15.6837896458, 15.6838170539, 15.6838444615, 15.6838718686, 15.6838992752, 15.6839266812, 15.6839540867, 15.6839814917, 15.6840088962, 15.6840363002, 15.6840637036, 15.6840911065, 15.6841185089, 15.6841459108, 15.6841733122, 15.684200713, 15.6842281133, 15.6842555131, 15.6842829124, 15.6843103111, 15.6843377094, 15.6843651071, 15.6843925043, 15.6844199009, 15.6844472971, 15.6844746927, 15.6845020878, 15.6845294824, 15.6845568765, 15.68458427, 15.6846116631, 15.6846390556, 15.6846664476, 15.684693839, 15.68472123, 15.6847486204, 15.6847760103, 15.6848033997, 15.6848307886, 15.6848581769, 15.6848855648, 15.6849129521, 15.6849403389, 15.6849677251, 15.6849951109, 15.6850224961, 15.6850498808, 15.685077265, 15.6851046487, 15.6851320319, 15.6851594145, 15.6851867966, 15.6852141782, 15.6852415593, 15.6852689398, 15.6852963198, 15.6853236994, 15.6853510784, 15.6853784568, 15.6854058348, 15.6854332122, 15.6854605891, 15.6854879655, 15.6855153414, 15.6855427168, 15.6855700916, 15.6855974659, 15.6856248397, 15.685652213, 15.6856795858, 15.685706958, 15.6857343297, 15.6857617009, 15.6857890716, 15.6858164418, 15.6858438114, 15.6858711806, 15.6858985492, 15.6859259172, 15.6859532848, 15.6859806519, 15.6860080184, 15.6860353844, 15.6860627499, 15.6860901149, 15.6861174793, 15.6861448433, 15.6861722067, 15.6861995696, 15.6862269319, 15.6862542938, 15.6862816551, 15.686309016, 15.6863363763, 15.6863637361, 15.6863910953, 15.6864184541, 15.6864458123, 15.68647317, 15.6865005272, 15.6865278839, 15.68655524, 15.6865825956, 15.6866099508, 15.6866373053, 15.6866646594, 15.686692013, 15.686719366, 15.6867467185, 15.6867740705, 15.686801422, 15.686828773, 15.6868561234, 15.6868834734, 15.6869108228, 15.6869381717, 15.68696552, 15.6869928679, 15.6870202152, 15.6870475621, 15.6870749084, 15.6871022541, 15.6871295994, 15.6871569441, 15.6871842884, 15.6872116321, 15.6872389753, 15.6872663179, 15.6872936601, 15.6873210017, 15.6873483428, 15.6873756834, 15.6874030235, 15.6874303631, 15.6874577021, 15.6874850407, 15.6875123787, 15.6875397161, 15.6875670531, 15.6875943896, 15.6876217255, 15.6876490609, 15.6876763958, 15.6877037302, 15.6877310641, 15.6877583974, 15.6877857303, 15.6878130626, 15.6878403944, 15.6878677256, 15.6878950564, 15.6879223866, 15.6879497164, 15.6879770456, 15.6880043742, 15.6880317024, 15.6880590301, 15.6880863572, 15.6881136838, 15.6881410099, 15.6881683355, 15.6881956606, 15.6882229851, 15.6882503091, 15.6882776326, 15.6883049556, 15.6883322781, 15.6883596001, 15.6883869215, 15.6884142424, 15.6884415628, 15.6884688827, 15.6884962021, 15.688523521, 15.6885508393, 15.6885781571, 15.6886054744, 15.6886327912, 15.6886601075, 15.6886874232, 15.6887147385, 15.6887420532, 15.6887693674, 15.6887966811, 15.6888239942, 15.6888513069, 15.688878619, 15.6889059306, 15.6889332417, 15.6889605523, 15.6889878624, 15.6890151719, 15.6890424809, 15.6890697894, 15.6890970974, 15.6891244049, 15.6891517119, 15.6891790183, 15.6892063242, 15.6892336297, 15.6892609346, 15.6892882389, 15.6893155428, 15.6893428461, 15.689370149, 15.6893974513, 15.6894247531, 15.6894520543, 15.6894793551, 15.6895066553, 15.6895339551, 15.6895612543, 15.689588553, 15.6896158512, 15.6896431488, 15.689670446, 15.6896977426, 15.6897250387, 15.6897523343, 15.6897796294, 15.6898069239, 15.689834218, 15.6898615115, 15.6898888045, 15.689916097, 15.689943389, 15.6899706805, 15.6899979714, 15.6900252619, 15.6900525518, 15.6900798412, 15.6901071301, 15.6901344184, 15.6901617063, 15.6901889936, 15.6902162804, 15.6902435667, 15.6902708525, 15.6902981378, 15.6903254225, 15.6903527068, 15.6903799905, 15.6904072737, 15.6904345564, 15.6904618386, 15.6904891202, 15.6905164014, 15.690543682, 15.6905709621, 15.6905982417, 15.6906255208, 15.6906527993, 15.6906800774, 15.6907073549, 15.6907346319, 15.6907619084, 15.6907891844, 15.6908164599, 15.6908437349, 15.6908710093, 15.6908982832, 15.6909255566, 15.6909528295, 15.6909801019, 15.6910073737, 15.6910346451, 15.6910619159, 15.6910891862, 15.691116456, 15.6911437253, 15.6911709941, 15.6911982623, 15.6912255301, 15.6912527973, 15.691280064, 15.6913073302, 15.6913345959, 15.691361861, 15.6913891257, 15.6914163898, 15.6914436534, 15.6914709165, 15.6914981791, 15.6915254412, 15.6915527027, 15.6915799638, 15.6916072243, 15.6916344843, 15.6916617438, 15.6916890028, 15.6917162612, 15.6917435192, 15.6917707766, 15.6917980335, 15.6918252899, 15.6918525458, 15.6918798012, 15.691907056, 15.6919343104, 15.6919615642, 15.6919888175, 15.6920160703, 15.6920433226, 15.6920705744, 15.6920978256, 15.6921250764, 15.6921523266, 15.6921795763, 15.6922068255, 15.6922340742, 15.6922613224, 15.69228857, 15.6923158171, 15.6923430638, 15.6923703099, 15.6923975555, 15.6924248005, 15.6924520451, 15.6924792892, 15.6925065327, 15.6925337757, 15.6925610182, 15.6925882602, 15.6926155017, 15.6926427427, 15.6926699831, 15.692697223, 15.6927244625, 15.6927517014, 15.6927789398, 15.6928061776, 15.692833415, 15.6928606518, 15.6928878882, 15.692915124, 15.6929423593, 15.6929695941, 15.6929968284, 15.6930240621, 15.6930512954, 15.6930785281, 15.6931057604, 15.6931329921, 15.6931602233, 15.6931874539, 15.6932146841, 15.6932419138, 15.6932691429, 15.6932963715, 15.6933235996, 15.6933508272, 15.6933780543, 15.6934052809, 15.6934325069, 15.6934597325, 15.6934869575, 15.693514182, 15.693541406, 15.6935686295, 15.6935958525, 15.6936230749, 15.6936502969, 15.6936775183, 15.6937047392, 15.6937319596, 15.6937591795, 15.6937863989, 15.6938136178, 15.6938408361, 15.6938680539, 15.6938952713, 15.6939224881, 15.6939497044, 15.6939769202, 15.6940041354, 15.6940313502, 15.6940585644, 15.6940857782, 15.6941129914, 15.6941402041, 15.6941674163, 15.6941946279, 15.6942218391, 15.6942490498, 15.6942762599, 15.6943034695, 15.6943306786, 15.6943578872, 15.6943850953, 15.6944123029, 15.6944395099, 15.6944667165, 15.6944939225, 15.694521128, 15.694548333, 15.6945755375, 15.6946027415, 15.694629945, 15.6946571479, 15.6946843504, 15.6947115523, 15.6947387537, 15.6947659546, 15.694793155, 15.6948203549, 15.6948475542, 15.6948747531, 15.6949019514, 15.6949291493, 15.6949563466, 15.6949835434, 15.6950107397, 15.6950379354, 15.6950651307, 15.6950923254, 15.6951195197, 15.6951467134, 15.6951739066, 15.6952010993, 15.6952282915, 15.6952554832, 15.6952826743, 15.695309865, 15.6953370551, 15.6953642447, 15.6953914339, 15.6954186225, 15.6954458105, 15.6954729981, 15.6955001852, 15.6955273717, 15.6955545578, 15.6955817433, 15.6956089283, 15.6956361128, 15.6956632968, 15.6956904803, 15.6957176632, 15.6957448457, 15.6957720276, 15.695799209, 15.69582639, 15.6958535704, 15.6958807503, 15.6959079296, 15.6959351085, 15.6959622869, 15.6959894647, 15.696016642, 15.6960438189, 15.6960709952, 15.696098171, 15.6961253462, 15.696152521, 15.6961796953, 15.696206869, 15.6962340423, 15.696261215, 15.6962883872, 15.6963155589, 15.6963427301, 15.6963699008, 15.6963970709, 15.6964242406, 15.6964514097, 15.6964785784, 15.6965057465, 15.6965329141, 15.6965600812, 15.6965872478, 15.6966144138, 15.6966415794, 15.6966687444, 15.696695909, 15.696723073, 15.6967502365, 15.6967773995, 15.696804562, 15.696831724, 15.6968588855, 15.6968860464, 15.6969132069, 15.6969403668, 15.6969675262, 15.6969946851, 15.6970218435, 15.6970490014, 15.6970761588, 15.6971033157, 15.697130472, 15.6971576279, 15.6971847832, 15.697211938, 15.6972390924, 15.6972662462, 15.6972933995, 15.6973205522, 15.6973477045, 15.6973748563, 15.6974020075, 15.6974291582, 15.6974563085, 15.6974834582, 15.6975106074, 15.6975377561, 15.6975649043, 15.6975920519, 15.6976191991, 15.6976463457, 15.6976734919, 15.6977006375, 15.6977277826, 15.6977549272, 15.6977820713, 15.6978092149, 15.697836358, 15.6978635005, 15.6978906426, 15.6979177841, 15.6979449251, 15.6979720657, 15.6979992057, 15.6980263452, 15.6980534842, 15.6980806226, 15.6981077606, 15.6981348981, 15.698162035, 15.6981891714, 15.6982163074, 15.6982434428, 15.6982705777, 15.6982977121, 15.698324846, 15.6983519793, 15.6983791122, 15.6984062446, 15.6984333764, 15.6984605077, 15.6984876386, 15.6985147689, 15.6985418987, 15.698569028, 15.6985961567, 15.698623285, 15.6986504128, 15.69867754, 15.6987046668, 15.698731793, 15.6987589187, 15.6987860439, 15.6988131686, 15.6988402928, 15.6988674165, 15.6988945397, 15.6989216623, 15.6989487845, 15.6989759061, 15.6990030273, 15.6990301479, 15.699057268, 15.6990843876, 15.6991115067, 15.6991386253, 15.6991657433, 15.6991928609, 15.699219978, 15.6992470945, 15.6992742105, 15.6993013261, 15.6993284411, 15.6993555556, 15.6993826696, 15.6994097831, 15.699436896, 15.6994640085, 15.6994911205, 15.6995182319, 15.6995453429, 15.6995724533, 15.6995995632, 15.6996266726, 15.6996537815, 15.6996808899, 15.6997079978, 15.6997351052, 15.699762212, 15.6997893184, 15.6998164242, 15.6998435296, 15.6998706344, 15.6998977387, 15.6999248425, 15.6999519458, 15.6999790486, 15.7000061509, 15.7000332527, 15.7000603539, 15.7000874547, 15.7001145549, 15.7001416546, 15.7001687539, 15.7001958526, 15.7002229508, 15.7002500485, 15.7002771457, 15.7003042424, 15.7003313385, 15.7003584342, 15.7003855294, 15.700412624, 15.7004397181, 15.7004668118, 15.7004939049, 15.7005209975, 15.7005480896, 15.7005751812, 15.7006022723, 15.7006293629, 15.7006564529, 15.7006835425, 15.7007106315, 15.7007377201, 15.7007648081, 15.7007918956, 15.7008189826, 15.7008460691, 15.7008731551, 15.7009002406, 15.7009273256, 15.7009544101, 15.700981494, 15.7010085775, 15.7010356604, 15.7010627429, 15.7010898248, 15.7011169062, 15.7011439872, 15.7011710676, 15.7011981475, 15.7012252268, 15.7012523057, 15.7012793841, 15.701306462, 15.7013335393, 15.7013606162, 15.7013876925, 15.7014147683, 15.7014418437, 15.7014689185, 15.7014959928, 15.7015230666, 15.7015501399, 15.7015772126, 15.7016042849, 15.7016313567, 15.7016584279, 15.7016854987, 15.7017125689, 15.7017396387, 15.7017667079, 15.7017937766, 15.7018208448, 15.7018479125, 15.7018749797, 15.7019020464, 15.7019291126, 15.7019561783, 15.7019832434, 15.7020103081, 15.7020373722, 15.7020644359, 15.702091499, 15.7021185616, 15.7021456238, 15.7021726854, 15.7021997465, 15.7022268071, 15.7022538672, 15.7022809267, 15.7023079858, 15.7023350444, 15.7023621024, 15.70238916, 15.702416217, 15.7024432736, 15.7024703296, 15.7024973851, 15.7025244401, 15.7025514946, 15.7025785486, 15.7026056021, 15.7026326551, 15.7026597076, 15.7026867595, 15.702713811, 15.702740862, 15.7027679124, 15.7027949623, 15.7028220118, 15.7028490607, 15.7028761091, 15.702903157, 15.7029302044, 15.7029572513, 15.7029842977, 15.7030113436, 15.703038389, 15.7030654339, 15.7030924782, 15.7031195221, 15.7031465654, 15.7031736083, 15.7032006506, 15.7032276924, 15.7032547337, 15.7032817746, 15.7033088149, 15.7033358547, 15.703362894, 15.7033899328, 15.703416971, 15.7034440088, 15.7034710461, 15.7034980828, 15.7035251191, 15.7035521548, 15.7035791901, 15.7036062248, 15.703633259, 15.7036602928, 15.703687326, 15.7037143587, 15.7037413909, 15.7037684226, 15.7037954538, 15.7038224844, 15.7038495146, 15.7038765443, 15.7039035734, 15.7039306021, 15.7039576302, 15.7039846579, 15.704011685, 15.7040387117, 15.7040657378, 15.7040927634, 15.7041197885, 15.7041468131, 15.7041738372, 15.7042008608, 15.7042278839, 15.7042549065, 15.7042819286, 15.7043089501, 15.7043359712, 15.7043629917, 15.7043900118, 15.7044170313, 15.7044440504, 15.7044710689, 15.7044980869, 15.7045251044, 15.7045521215, 15.704579138, 15.704606154, 15.7046331695, 15.7046601845, 15.7046871989, 15.7047142129, 15.7047412264, 15.7047682394, 15.7047952518, 15.7048222638, 15.7048492752, 15.7048762862, 15.7049032966, 15.7049303065, 15.704957316, 15.7049843249, 15.7050113333, 15.7050383412, 15.7050653486, 15.7050923555, 15.7051193619, 15.7051463678, 15.7051733732, 15.7052003781, 15.7052273824, 15.7052543863, 15.7052813897, 15.7053083925, 15.7053353949, 15.7053623967, 15.705389398, 15.7054163989, 15.7054433992, 15.705470399, 15.7054973984, 15.7055243972, 15.7055513955, 15.7055783933, 15.7056053906, 15.7056323874, 15.7056593836, 15.7056863794, 15.7057133747, 15.7057403695, 15.7057673637, 15.7057943575, 15.7058213508, 15.7058483435, 15.7058753358, 15.7059023275, 15.7059293187, 15.7059563095, 15.7059832997, 15.7060102894, 15.7060372786, 15.7060642673, 15.7060912555, 15.7061182432, 15.7061452304, 15.7061722171, 15.7061992033, 15.706226189, 15.7062531742, 15.7062801588, 15.706307143, 15.7063341267, 15.7063611098, 15.7063880925, 15.7064150746, 15.7064420563, 15.7064690374, 15.7064960181, 15.7065229982, 15.7065499778, 15.7065769569, 15.7066039356, 15.7066309137, 15.7066578913, 15.7066848684, 15.706711845, 15.7067388211, 15.7067657967, 15.7067927718, 15.7068197463, 15.7068467204, 15.706873694, 15.7069006671, 15.7069276396, 15.7069546117, 15.7069815832, 15.7070085543, 15.7070355248, 15.7070624949, 15.7070894644, 15.7071164335, 15.707143402, 15.70717037, 15.7071973375, 15.7072243045, 15.7072512711, 15.7072782371, 15.7073052026, 15.7073321676, 15.7073591321, 15.7073860961, 15.7074130596, 15.7074400226, 15.707466985, 15.707493947, 15.7075209085, 15.7075478695, 15.7075748299, 15.7076017899, 15.7076287493, 15.7076557083, 15.7076826668, 15.7077096247, 15.7077365822, 15.7077635391, 15.7077904955, 15.7078174515, 15.7078444069, 15.7078713618, 15.7078983162, 15.7079252702, 15.7079522236, 15.7079791765, 15.7080061289, 15.7080330808, 15.7080600322, 15.7080869831, 15.7081139335, 15.7081408834, 15.7081678328, 15.7081947817, 15.70822173, 15.7082486779, 15.7082756253, 15.7083025722, 15.7083295185, 15.7083564644, 15.7083834098, 15.7084103546, 15.708437299, 15.7084642428, 15.7084911862, 15.708518129, 15.7085450714, 15.7085720132, 15.7085989545, 15.7086258954, 15.7086528357, 15.7086797755, 15.7087067148, 15.7087336537, 15.708760592, 15.7087875298, 15.7088144671, 15.7088414039, 15.7088683402, 15.708895276, 15.7089222113, 15.7089491461, 15.7089760804, 15.7090030142, 15.7090299475, 15.7090568803, 15.7090838126, 15.7091107443, 15.7091376756, 15.7091646064, 15.7091915367, 15.7092184664, 15.7092453957, 15.7092723245, 15.7092992527, 15.7093261805, 15.7093531077, 15.7093800345, 15.7094069607, 15.7094338865, 15.7094608117, 15.7094877365, 15.7095146607, 15.7095415844, 15.7095685077, 15.7095954304, 15.7096223526, 15.7096492744, 15.7096761956, 15.7097031163, 15.7097300365, 15.7097569563, 15.7097838755, 15.7098107942, 15.7098377124, 15.7098646301, 15.7098915473, 15.709918464, 15.7099453802, 15.7099722959, 15.7099992111, 15.7100261258, 15.71005304, 15.7100799537, 15.7101068669, 15.7101337796, 15.7101606918, 15.7101876035, 15.7102145147, 15.7102414253, 15.7102683355, 15.7102952452, 15.7103221544, 15.710349063, 15.7103759712, 15.7104028789, 15.710429786, 15.7104566927, 15.7104835989, 15.7105105045, 15.7105374097, 15.7105643144, 15.7105912185, 15.7106181222, 15.7106450253, 15.710671928, 15.7106988301, 15.7107257318, 15.7107526329, 15.7107795336, 15.7108064337, 15.7108333333, 15.7108602325, 15.7108871311, 15.7109140293, 15.7109409269, 15.710967824, 15.7109947207, 15.7110216168, 15.7110485124, 15.7110754076, 15.7111023022, 15.7111291963, 15.7111560899, 15.7111829831, 15.7112098757, 15.7112367678, 15.7112636594, 15.7112905505, 15.7113174411, 15.7113443313, 15.7113712209, 15.71139811, 15.7114249986, 15.7114518867, 15.7114787743, 15.7115056614, 15.711532548, 15.7115594341, 15.7115863198, 15.7116132049, 15.7116400895, 15.7116669736, 15.7116938572, 15.7117207403, 15.7117476229, 15.711774505, 15.7118013866, 15.7118282677, 15.7118551483, 15.7118820284, 15.7119089079, 15.711935787, 15.7119626656, 15.7119895437, 15.7120164213, 15.7120432984, 15.712070175, 15.7120970511, 15.7121239267, 15.7121508018, 15.7121776764, 15.7122045504, 15.712231424, 15.7122582971, 15.7122851697, 15.7123120418, 15.7123389134, 15.7123657844, 15.712392655, 15.7124195251, 15.7124463947, 15.7124732638, 15.7125001324, 15.7125270004, 15.712553868, 15.7125807351, 15.7126076017, 15.7126344678, 15.7126613333, 15.7126881984, 15.712715063, 15.7127419271, 15.7127687907, 15.7127956537, 15.7128225163, 15.7128493784, 15.71287624, 15.712903101, 15.7129299616, 15.7129568217, 15.7129836813, 15.7130105404, 15.7130373989, 15.713064257, 15.7130911146, 15.7131179717, 15.7131448282, 15.7131716843, 15.7131985399, 15.713225395, 15.7132522495, 15.7132791036, 15.7133059572, 15.7133328103, 15.7133596629, 15.7133865149, 15.7134133665, 15.7134402176, 15.7134670682, 15.7134939183, 15.7135207678, 15.7135476169, 15.7135744655, 15.7136013136, 15.7136281612, 15.7136550082, 15.7136818548, 15.7137087009, 15.7137355465, 15.7137623916, 15.7137892362, 15.7138160802, 15.7138429238, 15.7138697669, 15.7138966095, 15.7139234516, 15.7139502932, 15.7139771343, 15.7140039748, 15.7140308149, 15.7140576545, 15.7140844936, 15.7141113322, 15.7141381703, 15.7141650079, 15.714191845, 15.7142186816, 15.7142455177, 15.7142723533, 15.7142991884, 15.714326023, 15.7143528571, 15.7143796907, 15.7144065238, 15.7144333564, 15.7144601885, 15.7144870201, 15.7145138512, 15.7145406818, 15.7145675119, 15.7145943415, 15.7146211706, 15.7146479992, 15.7146748273, 15.7147016549, 15.714728482, 15.7147553086, 15.7147821348, 15.7148089604, 15.7148357855, 15.7148626101, 15.7148894342, 15.7149162579, 15.714943081, 15.7149699036, 15.7149967257, 15.7150235473, 15.7150503685, 15.7150771891, 15.7151040092, 15.7151308289, 15.715157648, 15.7151844666, 15.7152112848, 15.7152381024, 15.7152649195, 15.7152917362, 15.7153185523, 15.715345368, 15.7153721831, 15.7153989978, 15.7154258119, 15.7154526256, 15.7154794387, 15.7155062514, 15.7155330635, 15.7155598752, 15.7155866863, 15.715613497, 15.7156403072, 15.7156671168, 15.715693926, 15.7157207347, 15.7157475428, 15.7157743505, 15.7158011577, 15.7158279644, 15.7158547705, 15.7158815762, 15.7159083814, 15.7159351861, 15.7159619903, 15.7159887939, 15.7160155971, 15.7160423998, 15.716069202, 15.7160960037, 15.7161228049, 15.7161496056, 15.7161764058, 15.7162032055, 15.7162300047, 15.7162568034, 15.7162836016, 15.7163103993, 15.7163371966, 15.7163639933, 15.7163907895, 15.7164175852, 15.7164443804, 15.7164711752, 15.7164979694, 15.7165247631, 15.7165515564, 15.7165783491, 15.7166051413, 15.7166319331, 15.7166587243, 15.7166855151, 15.7167123053, 15.7167390951, 15.7167658843, 15.7167926731, 15.7168194613, 15.7168462491, 15.7168730364, 15.7168998231, 15.7169266094, 15.7169533952, 15.7169801804, 15.7170069652, 15.7170337495, 15.7170605333, 15.7170873166, 15.7171140993, 15.7171408816, 15.7171676634, 15.7171944447, 15.7172212255, 15.7172480058, 15.7172747856, 15.7173015649, 15.7173283438, 15.7173551221, 15.7173818999, 15.7174086772, 15.717435454, 15.7174622303, 15.7174890062, 15.7175157815, 15.7175425563, 15.7175693307, 15.7175961045, 15.7176228779, 15.7176496507, 15.7176764231, 15.7177031949, 15.7177299663, 15.7177567371, 15.7177835075, 15.7178102774, 15.7178370467, 15.7178638156, 15.717890584, 15.7179173519, 15.7179441193, 15.7179708861, 15.7179976525, 15.7180244184, 15.7180511838, 15.7180779487, 15.7181047131, 15.718131477, 15.7181582404, 15.7181850034, 15.7182117658, 15.7182385277, 15.7182652891, 15.71829205, 15.7183188105, 15.7183455704, 15.7183723299, 15.7183990888, 15.7184258472, 15.7184526052, 15.7184793626, 15.7185061196, 15.7185328761, 15.718559632, 15.7185863875, 15.7186131425, 15.718639897, 15.7186666509, 15.7186934044, 15.7187201574, 15.7187469099, 15.7187736619, 15.7188004134, 15.7188271644, 15.7188539149, 15.7188806649, 15.7189074144, 15.7189341635, 15.718960912, 15.71898766, 15.7190144075, 15.7190411546, 15.7190679011, 15.7190946472, 15.7191213927, 15.7191481378, 15.7191748823, 15.7192016264, 15.71922837, 15.719255113, 15.7192818556, 15.7193085977, 15.7193353393, 15.7193620804, 15.7193888209, 15.719415561, 15.7194423006, 15.7194690397, 15.7194957784, 15.7195225165, 15.7195492541, 15.7195759912, 15.7196027278, 15.719629464, 15.7196561996, 15.7196829347, 15.7197096694, 15.7197364035, 15.7197631372, 15.7197898704, 15.719816603, 15.7198433352, 15.7198700669, 15.719896798, 15.7199235287, 15.7199502589, 15.7199769886, 15.7200037178, 15.7200304465, 15.7200571747, 15.7200839024, 15.7201106296, 15.7201373564, 15.7201640826, 15.7201908083, 15.7202175335, 15.7202442583, 15.7202709825, 15.7202977063, 15.7203244295, 15.7203511523, 15.7203778746, 15.7204045963, 15.7204313176, 15.7204580384, 15.7204847587, 15.7205114785, 15.7205381978, 15.7205649166, 15.7205916349, 15.7206183527, 15.72064507, 15.7206717868, 15.7206985032, 15.720725219, 15.7207519343, 15.7207786492, 15.7208053635, 15.7208320774, 15.7208587907, 15.7208855036, 15.720912216, 15.7209389278, 15.7209656392, 15.7209923501, 15.7210190605, 15.7210457704, 15.7210724798, 15.7210991887, 15.7211258971, 15.721152605, 15.7211793125, 15.7212060194, 15.7212327258, 15.7212594318, 15.7212861372, 15.7213128422, 15.7213395466, 15.7213662506, 15.7213929541, 15.721419657, 15.7214463595, 15.7214730615, 15.721499763, 15.721526464, 15.7215531645, 15.7215798645, 15.721606564, 15.7216332631, 15.7216599616, 15.7216866596, 15.7217133572, 15.7217400542, 15.7217667508, 15.7217934468, 15.7218201424, 15.7218468375, 15.721873532, 15.7219002261, 15.7219269197, 15.7219536128, 15.7219803054, 15.7220069975, 15.7220336891, 15.7220603802, 15.7220870709, 15.722113761, 15.7221404506, 15.7221671398, 15.7221938284, 15.7222205166, 15.7222472043, 15.7222738914, 15.7223005781, 15.7223272643, 15.72235395, 15.7223806352, 15.7224073199, 15.7224340041, 15.7224606878, 15.722487371, 15.7225140537, 15.722540736, 15.7225674177, 15.722594099, 15.7226207797, 15.72264746, 15.7226741397, 15.722700819, 15.7227274978, 15.7227541761, 15.7227808539, 15.7228075312, 15.722834208, 15.7228608843, 15.7228875601, 15.7229142354, 15.7229409103, 15.7229675846, 15.7229942585, 15.7230209318, 15.7230476047, 15.723074277, 15.7231009489, 15.7231276203, 15.7231542912, 15.7231809616, 15.7232076315, 15.7232343009, 15.7232609698, 15.7232876382, 15.7233143062, 15.7233409736, 15.7233676405, 15.723394307, 15.723420973, 15.7234476384, 15.7234743034, 15.7235009679, 15.7235276319, 15.7235542954, 15.7235809584, 15.7236076209, 15.7236342829, 15.7236609444, 15.7236876054, 15.723714266, 15.723740926, 15.7237675856, 15.7237942446, 15.7238209032, 15.7238475613, 15.7238742189, 15.723900876, 15.7239275326, 15.7239541887, 15.7239808443, 15.7240074994, 15.724034154, 15.7240608082, 15.7240874618, 15.7241141149, 15.7241407676, 15.7241674198, 15.7241940714, 15.7242207226, 15.7242473733, 15.7242740235, 15.7243006732, 15.7243273224, 15.7243539711, 15.7243806194, 15.7244072671, 15.7244339143, 15.7244605611, 15.7244872074, 15.7245138531, 15.7245404984, 15.7245671432, 15.7245937875, 15.7246204313, 15.7246470746, 15.7246737174, 15.7247003597, 15.7247270015, 15.7247536429, 15.7247802837, 15.7248069241, 15.7248335639, 15.7248602033, 15.7248868422, 15.7249134806, 15.7249401185, 15.7249667559, 15.7249933928, 15.7250200292, 15.7250466651, 15.7250733006, 15.7250999355, 15.72512657, 15.7251532039, 15.7251798374, 15.7252064704, 15.7252331028, 15.7252597348, 15.7252863663, 15.7253129973, 15.7253396279, 15.7253662579, 15.7253928874, 15.7254195165, 15.725446145, 15.7254727731, 15.7254994007, 15.7255260277, 15.7255526543, 15.7255792804, 15.725605906, 15.7256325311, 15.7256591558, 15.7256857799, 15.7257124035, 15.7257390267, 15.7257656493, 15.7257922715, 15.7258188932, 15.7258455143, 15.725872135, 15.7258987552, 15.7259253749, 15.7259519942, 15.7259786129, 15.7260052311, 15.7260318489, 15.7260584661, 15.7260850829, 15.7261116992, 15.7261383149, 15.7261649302, 15.726191545, 15.7262181593, 15.7262447731, 15.7262713865, 15.7262979993, 15.7263246117, 15.7263512235, 15.7263778349, 15.7264044457, 15.7264310561, 15.726457666, 15.7264842754, 15.7265108843, 15.7265374927, 15.7265641007, 15.7265907081, 15.726617315, 15.7266439215, 15.7266705274, 15.7266971329, 15.7267237379, 15.7267503424, 15.7267769464, 15.7268035499, 15.7268301529, 15.7268567555, 15.7268833575, 15.726909959, 15.7269365601, 15.7269631607, 15.7269897607, 15.7270163603, 15.7270429594, 15.727069558, 15.7270961561, 15.7271227538, 15.7271493509, 15.7271759475, 15.7272025437, 15.7272291394, 15.7272557345, 15.7272823292, 15.7273089234, 15.7273355171, 15.7273621103, 15.727388703, 15.7274152953, 15.727441887, 15.7274684783, 15.727495069, 15.7275216593, 15.7275482491, 15.7275748384, 15.7276014272, 15.7276280155, 15.7276546033, 15.7276811906, 15.7277077775, 15.7277343638, 15.7277609497, 15.7277875351, 15.7278141199, 15.7278407043, 15.7278672882, 15.7278938716, 15.7279204546, 15.727947037, 15.7279736189, 15.7280002004, 15.7280267814, 15.7280533618, 15.7280799418, 15.7281065213, 15.7281331003, 15.7281596788, 15.7281862568, 15.7282128344, 15.7282394114, 15.728265988, 15.728292564, 15.7283191396, 15.7283457147, 15.7283722893, 15.7283988634, 15.728425437, 15.7284520102, 15.7284785828, 15.728505155, 15.7285317266, 15.7285582978, 15.7285848685, 15.7286114387, 15.7286380084, 15.7286645776, 15.7286911463, 15.7287177145, 15.7287442823, 15.7287708495, 15.7287974163, 15.7288239826, 15.7288505484, 15.7288771137, 15.7289036785, 15.7289302428, 15.7289568066, 15.72898337, 15.7290099328, 15.7290364952, 15.7290630571, 15.7290896185, 15.7291161794, 15.7291427398, 15.7291692997, 15.7291958591, 15.7292224181, 15.7292489765, 15.7292755345, 15.729302092, 15.729328649, 15.7293552055, 15.7293817615, 15.729408317, 15.729434872, 15.7294614266, 15.7294879806, 15.7295145342, 15.7295410873, 15.7295676398, 15.7295941919, 15.7296207436, 15.7296472947, 15.7296738453, 15.7297003955, 15.7297269451, 15.7297534943, 15.729780043, 15.7298065911, 15.7298331388, 15.7298596861, 15.7298862328, 15.729912779, 15.7299393248, 15.72996587, 15.7299924148, 15.7300189591, 15.7300455029, 15.7300720462, 15.730098589, 15.7301251313, 15.7301516732, 15.7301782145, 15.7302047554, 15.7302312958, 15.7302578357, 15.7302843751, 15.730310914, 15.7303374524, 15.7303639903, 15.7303905278, 15.7304170647, 15.7304436012, 15.7304701372, 15.7304966727, 15.7305232077, 15.7305497422, 15.7305762762, 15.7306028098, 15.7306293428, 15.7306558754, 15.7306824075, 15.7307089391, 15.7307354702, 15.7307620008, 15.7307885309, 15.7308150606, 15.7308415897, 15.7308681184, 15.7308946465, 15.7309211742, 15.7309477014, 15.7309742281, 15.7310007544, 15.7310272801, 15.7310538054, 15.7310803301, 15.7311068544, 15.7311333782, 15.7311599015, 15.7311864243, 15.7312129466, 15.7312394684, 15.7312659898, 15.7312925107, 15.731319031, 15.7313455509, 15.7313720703, 15.7313985892, 15.7314251076, 15.7314516256, 15.731478143, 15.73150466, 15.7315311765, 15.7315576924, 15.7315842079, 15.731610723, 15.7316372375, 15.7316637515, 15.7316902651, 15.7317167781, 15.7317432907, 15.7317698028, 15.7317963144, 15.7318228255, 15.7318493361, 15.7318758463, 15.7319023559, 15.7319288651, 15.7319553738, 15.731981882, 15.7320083897, 15.7320348969, 15.7320614036, 15.7320879099, 15.7321144156, 15.7321409209, 15.7321674257, 15.73219393, 15.7322204338, 15.7322469371, 15.7322734399, 15.7322999423, 15.7323264441, 15.7323529455, 15.7323794464, 15.7324059468, 15.7324324467, 15.7324589461, 15.7324854451, 15.7325119435, 15.7325384415, 15.732564939, 15.732591436, 15.7326179325, 15.7326444285, 15.732670924, 15.7326974191, 15.7327239136, 15.7327504077, 15.7327769013, 15.7328033944, 15.732829887, 15.7328563791, 15.7328828708, 15.7329093619, 15.7329358526, 15.7329623428, 15.7329888325, 15.7330153217, 15.7330418104, 15.7330682986, 15.7330947864, 15.7331212737, 15.7331477604, 15.7331742467, 15.7332007325, 15.7332272179, 15.7332537027, 15.733280187, 15.7333066709, 15.7333331543, 15.7333596372, 15.7333861196, 15.7334126015, 15.7334390829, 15.7334655638, 15.7334920443, 15.7335185243, 15.7335450038, 15.7335714828, 15.7335979613, 15.7336244393, 15.7336509168, 15.7336773939, 15.7337038705, 15.7337303465, 15.7337568221, 15.7337832973, 15.7338097719, 15.733836246, 15.7338627197, 15.7338891928, 15.7339156655, 15.7339421377, 15.7339686094, 15.7339950807, 15.7340215514, 15.7340480217, 15.7340744914, 15.7341009607, 15.7341274295, 15.7341538978, 15.7341803656, 15.734206833, 15.7342332998, 15.7342597662, 15.7342862321, 15.7343126975, 15.7343391624, 15.7343656268, 15.7343920908, 15.7344185542, 15.7344450172, 15.7344714797, 15.7344979417, 15.7345244032, 15.7345508642, 15.7345773248, 15.7346037848, 15.7346302444, 15.7346567035, 15.7346831621, 15.7347096202, 15.7347360779, 15.734762535, 15.7347889917, 15.7348154478, 15.7348419035, 15.7348683587, 15.7348948135, 15.7349212677, 15.7349477215, 15.7349741747, 15.7350006275, 15.7350270798, 15.7350535316, 15.7350799829, 15.7351064338, 15.7351328841, 15.735159334, 15.7351857834, 15.7352122323, 15.7352386807, 15.7352651287, 15.7352915761, 15.7353180231, 15.7353444695, 15.7353709155, 15.735397361, 15.7354238061, 15.7354502506, 15.7354766947, 15.7355031382, 15.7355295813, 15.7355560239, 15.735582466, 15.7356089077, 15.7356353488, 15.7356617895, 15.7356882296, 15.7357146693, 15.7357411085, 15.7357675473, 15.7357939855, 15.7358204233, 15.7358468605, 15.7358732973, 15.7358997336, 15.7359261694, 15.7359526048, 15.7359790396, 15.736005474, 15.7360319079, 15.7360583413, 15.7360847742, 15.7361112066, 15.7361376385, 15.73616407, 15.736190501, 15.7362169315, 15.7362433615, 15.736269791, 15.73629622, 15.7363226486, 15.7363490766, 15.7363755042, 15.7364019313, 15.7364283579, 15.7364547841, 15.7364812097, 15.7365076349, 15.7365340596, 15.7365604838, 15.7365869075, 15.7366133307, 15.7366397534, 15.7366661757, 15.7366925975, 15.7367190188, 15.7367454396, 15.7367718599, 15.7367982797, 15.7368246991, 15.736851118, 15.7368775364, 15.7369039543, 15.7369303717, 15.7369567886, 15.7369832051, 15.7370096211, 15.7370360365, 15.7370624515, 15.7370888661, 15.7371152801, 15.7371416937, 15.7371681067, 15.7371945193, 15.7372209314, 15.737247343, 15.7372737542, 15.7373001648, 15.737326575, 15.7373529847, 15.7373793939, 15.7374058026, 15.7374322108, 15.7374586186, 15.7374850258, 15.7375114326, 15.7375378389, 15.7375642447, 15.7375906501, 15.7376170549, 15.7376434593, 15.7376698632, 15.7376962666, 15.7377226695, 15.7377490719, 15.7377754739, 15.7378018754, 15.7378282763, 15.7378546768, 15.7378810769, 15.7379074764, 15.7379338754, 15.737960274, 15.7379866721, 15.7380130697, 15.7380394668, 15.7380658635, 15.7380922596, 15.7381186553, 15.7381450505, 15.7381714452, 15.7381978394, 15.7382242332, 15.7382506264, 15.7382770192, 15.7383034115, 15.7383298033, 15.7383561946, 15.7383825855, 15.7384089758, 15.7384353657, 15.7384617551, 15.738488144, 15.7385145324, 15.7385409204, 15.7385673078, 15.7385936948, 15.7386200813, 15.7386464673, 15.7386728529, 15.7386992379, 15.7387256225, 15.7387520066, 15.7387783902, 15.7388047733, 15.7388311559, 15.7388575381, 15.7388839198, 15.738910301, 15.7389366817, 15.7389630619, 15.7389894416, 15.7390158209, 15.7390421997, 15.739068578, 15.7390949558, 15.7391213331, 15.73914771, 15.7391740864, 15.7392004622, 15.7392268376, 15.7392532126, 15.739279587, 15.739305961, 15.7393323344, 15.7393587074, 15.7393850799, 15.739411452, 15.7394378235, 15.7394641946, 15.7394905652, 15.7395169353, 15.7395433049, 15.739569674, 15.7395960427, 15.7396224109, 15.7396487785, 15.7396751458, 15.7397015125, 15.7397278787, 15.7397542445, 15.7397806098, 15.7398069746, 15.7398333389, 15.7398597027, 15.7398860661, 15.739912429, 15.7399387913, 15.7399651533, 15.7399915147, 15.7400178756, 15.7400442361, 15.7400705961, 15.7400969556, 15.7401233146, 15.7401496731, 15.7401760312, 15.7402023888, 15.7402287459, 15.7402551025, 15.7402814586, 15.7403078143, 15.7403341694, 15.7403605241, 15.7403868783, 15.740413232, 15.7404395853, 15.740465938, 15.7404922903, 15.7405186421, 15.7405449934, 15.7405713443, 15.7405976946, 15.7406240445, 15.7406503939, 15.7406767428, 15.7407030912, 15.7407294392, 15.7407557866, 15.7407821336, 15.7408084801, 15.7408348261, 15.7408611717, 15.7408875167, 15.7409138613, 15.7409402054, 15.740966549, 15.7409928922, 15.7410192348, 15.741045577, 15.7410719187, 15.7410982599, 15.7411246006, 15.7411509409, 15.7411772807, 15.74120362, 15.7412299588, 15.7412562971, 15.7412826349, 15.7413089723, 15.7413353092, 15.7413616456, 15.7413879815, 15.741414317, 15.7414406519, 15.7414669864, 15.7414933204, 15.7415196539, 15.741545987, 15.7415723195, 15.7415986516, 15.7416249832, 15.7416513143, 15.7416776449, 15.7417039751, 15.7417303048, 15.741756634, 15.7417829627, 15.7418092909, 15.7418356187, 15.7418619459, 15.7418882727, 15.741914599, 15.7419409249, 15.7419672502, 15.7419935751, 15.7420198995, 15.7420462234, 15.7420725468, 15.7420988698, 15.7421251922, 15.7421515142, 15.7421778357, 15.7422041568, 15.7422304773, 15.7422567974, 15.742283117, 15.7423094361, 15.7423357547, 15.7423620729, 15.7423883905, 15.7424147077, 15.7424410244, 15.7424673406, 15.7424936564, 15.7425199717, 15.7425462864, 15.7425726008, 15.7425989146, 15.7426252279, 15.7426515408, 15.7426778532, 15.7427041651, 15.7427304765, 15.7427567875, 15.7427830979, 15.7428094079, 15.7428357174, 15.7428620265, 15.742888335, 15.7429146431, 15.7429409507, 15.7429672578, 15.7429935644, 15.7430198706, 15.7430461762, 15.7430724814, 15.7430987861, 15.7431250904, 15.7431513941, 15.7431776974, 15.7432040002, 15.7432303025, 15.7432566043, 15.7432829057, 15.7433092066, 15.7433355069, 15.7433618069, 15.7433881063, 15.7434144053, 15.7434407037, 15.7434670017, 15.7434932993, 15.7435195963, 15.7435458929, 15.7435721889, 15.7435984845, 15.7436247797, 15.7436510743, 15.7436773685, 15.7437036622, 15.7437299554, 15.7437562481, 15.7437825403, 15.7438088321, 15.7438351234, 15.7438614142, 15.7438877045, 15.7439139944, 15.7439402838, 15.7439665726, 15.7439928611, 15.744019149, 15.7440454365, 15.7440717234, 15.7440980099, 15.7441242959, 15.7441505815, 15.7441768665, 15.7442031511, 15.7442294352, 15.7442557189, 15.744282002, 15.7443082847, 15.7443345669, 15.7443608486, 15.7443871298, 15.7444134106, 15.7444396908, 15.7444659706, 15.7444922499, 15.7445185288, 15.7445448071, 15.744571085, 15.7445973624, 15.7446236393, 15.7446499158, 15.7446761918, 15.7447024672, 15.7447287422, 15.7447550168, 15.7447812908, 15.7448075644, 15.7448338375, 15.7448601101, 15.7448863823, 15.7449126539, 15.7449389251, 15.7449651958, 15.744991466, 15.7450177358, 15.745044005, 15.7450702738, 15.7450965421, 15.74512281, 15.7451490773, 15.7451753442, 15.7452016106, 15.7452278765, 15.745254142, 15.7452804069, 15.7453066714, 15.7453329354, 15.7453591989, 15.745385462, 15.7454117246, 15.7454379867, 15.7454642483, 15.7454905094, 15.7455167701, 15.7455430303, 15.74556929, 15.7455955492, 15.7456218079, 15.7456480662, 15.745674324, 15.7457005813, 15.7457268382, 15.7457530945, 15.7457793504, 15.7458056058, 15.7458318607, 15.7458581152, 15.7458843691, 15.7459106226, 15.7459368756, 15.7459631282, 15.7459893802, 15.7460156318, 15.7460418829, 15.7460681336, 15.7460943837, 15.7461206334, 15.7461468826, 15.7461731313, 15.7461993795, 15.7462256273, 15.7462518746, 15.7462781214, 15.7463043677, 15.7463306136, 15.7463568589, 15.7463831038, 15.7464093482, 15.7464355922, 15.7464618356, 15.7464880786, 15.7465143211, 15.7465405632, 15.7465668047, 15.7465930458, 15.7466192864, 15.7466455265, 15.7466717662, 15.7466980053, 15.746724244, 15.7467504822, 15.74677672, 15.7468029572, 15.746829194, 15.7468554303, 15.7468816661, 15.7469079015, 15.7469341364, 15.7469603708, 15.7469866047, 15.7470128381, 15.7470390711, 15.7470653036, 15.7470915356, 15.7471177671, 15.7471439982, 15.7471702288, 15.7471964589, 15.7472226885, 15.7472489176, 15.7472751463, 15.7473013745, 15.7473276022, 15.7473538295, 15.7473800562, 15.7474062825, 15.7474325083, 15.7474587337, 15.7474849585, 15.7475111829, 15.7475374068, 15.7475636303, 15.7475898532, 15.7476160757, 15.7476422977, 15.7476685192, 15.7476947402, 15.7477209608, 15.7477471809, 15.7477734005, 15.7477996197, 15.7478258383, 15.7478520565, 15.7478782742, 15.7479044915, 15.7479307082, 15.7479569245, 15.7479831403, 15.7480093556, 15.7480355705, 15.7480617849, 15.7480879988, 15.7481142122, 15.7481404251, 15.7481666376, 15.7481928496, 15.7482190611, 15.7482452721, 15.7482714827, 15.7482976928, 15.7483239024, 15.7483501116, 15.7483763202, 15.7484025284, 15.7484287361, 15.7484549433, 15.7484811501, 15.7485073564, 15.7485335622, 15.7485597675, 15.7485859724, 15.7486121767, 15.7486383806, 15.7486645841, 15.748690787, 15.7487169895, 15.7487431915, 15.748769393, 15.748795594, 15.7488217946, 15.7488479947, 15.7488741943, 15.7489003935, 15.7489265921, 15.7489527903, 15.748978988, 15.7490051853, 15.749031382, 15.7490575783, 15.7490837741, 15.7491099695, 15.7491361643, 15.7491623587, 15.7491885526, 15.7492147461, 15.749240939, 15.7492671315, 15.7492933235, 15.749319515, 15.7493457061, 15.7493718967, 15.7493980868, 15.7494242764, 15.7494504656, 15.7494766542, 15.7495028425, 15.7495290302, 15.7495552174, 15.7495814042, 15.7496075905, 15.7496337763, 15.7496599617, 15.7496861466, 15.749712331, 15.7497385149, 15.7497646983, 15.7497908813, 15.7498170638, 15.7498432458, 15.7498694274, 15.7498956085, 15.7499217891, 15.7499479692, 15.7499741488, 15.750000328, 15.7500265067, 15.7500526849, 15.7500788627, 15.75010504, 15.7501312168, 15.7501573931, 15.7501835689, 15.7502097443, 15.7502359192, 15.7502620936, 15.7502882676, 15.7503144411, 15.7503406141, 15.7503667866, 15.7503929586, 15.7504191302, 15.7504453013, 15.7504714719, 15.7504976421, 15.7505238118, 15.750549981, 15.7505761497, 15.750602318, 15.7506284857, 15.750654653, 15.7506808199, 15.7507069862, 15.7507331521, 15.7507593175, 15.7507854824, 15.7508116469, 15.7508378109, 15.7508639744, 15.7508901374, 15.7509163, 15.7509424621, 15.7509686237, 15.7509947848, 15.7510209455, 15.7510471057, 15.7510732654, 15.7510994246, 15.7511255834, 15.7511517417, 15.7511778995, 15.7512040568, 15.7512302137, 15.7512563701, 15.751282526, 15.7513086814, 15.7513348364, 15.7513609909, 15.7513871449, 15.7514132985, 15.7514394515, 15.7514656041, 15.7514917563, 15.7515179079, 15.7515440591, 15.7515702098, 15.75159636, 15.7516225098, 15.7516486591, 15.7516748079, 15.7517009562, 15.7517271041, 15.7517532514, 15.7517793984, 15.7518055448, 15.7518316908, 15.7518578362, 15.7518839813, 15.7519101258, 15.7519362699, 15.7519624135, 15.7519885566, 15.7520146992, 15.7520408414, 15.7520669831, 15.7520931243, 15.7521192651, 15.7521454054, 15.7521715452, 15.7521976845, 15.7522238234, 15.7522499617, 15.7522760996, 15.7523022371, 15.752328374, 15.7523545105, 15.7523806466, 15.7524067821, 15.7524329172, 15.7524590518, 15.7524851859, 15.7525113195, 15.7525374527, 15.7525635854, 15.7525897176, 15.7526158494, 15.7526419807, 15.7526681115, 15.7526942418, 15.7527203717, 15.7527465011, 15.75277263, 15.7527987584, 15.7528248864, 15.7528510139, 15.7528771409, 15.7529032675, 15.7529293936, 15.7529555192, 15.7529816443, 15.7530077689, 15.7530338931, 15.7530600168, 15.7530861401, 15.7531122628, 15.7531383851, 15.753164507, 15.7531906283, 15.7532167492, 15.7532428696, 15.7532689895, 15.753295109, 15.7533212279, 15.7533473465, 15.7533734645, 15.7533995821, 15.7534256991, 15.7534518158, 15.7534779319, 15.7535040476, 15.7535301628, 15.7535562775, 15.7535823918, 15.7536085055, 15.7536346189, 15.7536607317, 15.7536868441, 15.7537129559, 15.7537390674, 15.7537651783, 15.7537912888, 15.7538173988, 15.7538435083, 15.7538696174, 15.753895726, 15.7539218341, 15.7539479417, 15.7539740489, 15.7540001556, 15.7540262618, 15.7540523675, 15.7540784728, 15.7541045776, 15.7541306819, 15.7541567858, 15.7541828892, 15.7542089921, 15.7542350945, 15.7542611965, 15.754287298, 15.754313399, 15.7543394996, 15.7543655997, 15.7543916993, 15.7544177984, 15.7544438971, 15.7544699953, 15.754496093, 15.7545221902, 15.754548287, 15.7545743833, 15.7546004792, 15.7546265745, 15.7546526694, 15.7546787638, 15.7547048578, 15.7547309512, 15.7547570442, 15.7547831368, 15.7548092288, 15.7548353204, 15.7548614115, 15.7548875022, 15.7549135923, 15.754939682, 15.7549657713, 15.75499186, 15.7550179483, 15.7550440361, 15.7550701234, 15.7550962103, 15.7551222967, 15.7551483826, 15.7551744681, 15.7552005531, 15.7552266376, 15.7552527216, 15.7552788052, 15.7553048883, 15.7553309709, 15.755357053, 15.7553831347, 15.7554092159, 15.7554352967, 15.7554613769, 15.7554874567, 15.755513536, 15.7555396149, 15.7555656933, 15.7555917712, 15.7556178486, 15.7556439256, 15.7556700021, 15.7556960781, 15.7557221536, 15.7557482287, 15.7557743033, 15.7558003775, 15.7558264511, 15.7558525243, 15.7558785971, 15.7559046693, 15.7559307411, 15.7559568124, 15.7559828832, 15.7560089536, 15.7560350235, 15.7560610929, 15.7560871619, 15.7561132304, 15.7561392984, 15.7561653659, 15.756191433, 15.7562174996, 15.7562435657, 15.7562696314, 15.7562956966, 15.7563217613, 15.7563478255, 15.7563738893, 15.7563999526, 15.7564260154, 15.7564520778, 15.7564781397, 15.7565042011, 15.756530262, 15.7565563225, 15.7565823825, 15.7566084421, 15.7566345011, 15.7566605597, 15.7566866179, 15.7567126755, 15.7567387327, 15.7567647894, 15.7567908456, 15.7568169014, 15.7568429567, 15.7568690115, 15.7568950659, 15.7569211198, 15.7569471732, 15.7569732262, 15.7569992786, 15.7570253307, 15.7570513822, 15.7570774333, 15.7571034839, 15.757129534, 15.7571555836, 15.7571816328, 15.7572076815, 15.7572337298, 15.7572597775, 15.7572858249, 15.7573118717, 15.7573379181, 15.7573639639, 15.7573900094, 15.7574160543, 15.7574420988, 15.7574681428, 15.7574941864, 15.7575202294, 15.757546272, 15.7575723142, 15.7575983558, 15.757624397, 15.7576504377, 15.757676478, 15.7577025178, 15.7577285571, 15.7577545959, 15.7577806343, 15.7578066722, 15.7578327096, 15.7578587466, 15.7578847831, 15.7579108191, 15.7579368547, 15.7579628897, 15.7579889244, 15.7580149585, 15.7580409922, 15.7580670254, 15.7580930581, 15.7581190904, 15.7581451222, 15.7581711535, 15.7581971843, 15.7582232147, 15.7582492446, 15.7582752741, 15.7583013031, 15.7583273316, 15.7583533596, 15.7583793872, 15.7584054143, 15.7584314409, 15.7584574671, 15.7584834927, 15.758509518, 15.7585355427, 15.758561567, 15.7585875908, 15.7586136142, 15.758639637, 15.7586656594, 15.7586916814, 15.7587177028, 15.7587437238, 15.7587697443, 15.7587957644, 15.758821784, 15.7588478031, 15.7588738218, 15.7588998399, 15.7589258576, 15.7589518749, 15.7589778917, 15.759003908, 15.7590299238, 15.7590559392, 15.7590819541, 15.7591079685, 15.7591339824, 15.7591599959, 15.7591860089, 15.7592120215, 15.7592380336, 15.7592640452, 15.7592900563, 15.759316067, 15.7593420772, 15.7593680869, 15.7593940962, 15.759420105, 15.7594461133, 15.7594721212, 15.7594981286, 15.7595241355, 15.759550142, 15.759576148, 15.7596021535, 15.7596281585, 15.7596541631, 15.7596801672, 15.7597061709, 15.759732174, 15.7597581767, 15.759784179, 15.7598101807, 15.759836182, 15.7598621829, 15.7598881832, 15.7599141831, 15.7599401825, 15.7599661815, 15.75999218, 15.760018178, 15.7600441755, 15.7600701726, 15.7600961692, 15.7601221654, 15.7601481611, 15.7601741563, 15.760200151, 15.7602261453, 15.7602521391, 15.7602781324, 15.7603041253, 15.7603301177, 15.7603561096, 15.7603821011, 15.7604080921, 15.7604340826, 15.7604600726, 15.7604860622, 15.7605120514, 15.76053804, 15.7605640282, 15.7605900159, 15.7606160032, 15.7606419899, 15.7606679762, 15.7606939621, 15.7607199475, 15.7607459324, 15.7607719168, 15.7607979008, 15.7608238843, 15.7608498673, 15.7608758499, 15.760901832, 15.7609278136, 15.7609537948, 15.7609797755, 15.7610057557, 15.7610317355, 15.7610577148, 15.7610836936, 15.7611096719, 15.7611356498, 15.7611616272, 15.7611876042, 15.7612135807, 15.7612395567, 15.7612655323, 15.7612915073, 15.761317482, 15.7613434561, 15.7613694298, 15.761395403, 15.7614213757, 15.761447348, 15.7614733198, 15.7614992912, 15.761525262, 15.7615512324, 15.7615772024, 15.7616031719, 15.7616291409, 15.7616551094, 15.7616810775, 15.7617070451, 15.7617330122, 15.7617589789, 15.7617849451, 15.7618109108, 15.7618368761, 15.7618628409, 15.7618888052, 15.7619147691, 15.7619407325, 15.7619666954, 15.7619926578, 15.7620186198, 15.7620445814, 15.7620705424, 15.762096503, 15.7621224631, 15.7621484228, 15.762174382, 15.7622003407, 15.762226299, 15.7622522568, 15.7622782141, 15.7623041709, 15.7623301273, 15.7623560833, 15.7623820387, 15.7624079937, 15.7624339482, 15.7624599023, 15.7624858559, 15.762511809, 15.7625377616, 15.7625637138, 15.7625896655, 15.7626156168, 15.7626415676, 15.7626675179, 15.7626934678, 15.7627194171, 15.7627453661, 15.7627713145, 15.7627972625, 15.76282321, 15.7628491571, 15.7628751037, 15.7629010498, 15.7629269954, 15.7629529406, 15.7629788853, 15.7630048296, 15.7630307734, 15.7630567167, 15.7630826595, 15.7631086019, 15.7631345439, 15.7631604853, 15.7631864263, 15.7632123668, 15.7632383069, 15.7632642465, 15.7632901856, 15.7633161242, 15.7633420624, 15.7633680001, 15.7633939374, 15.7634198742, 15.7634458105, 15.7634717464, 15.7634976818, 15.7635236167, 15.7635495511, 15.7635754851, 15.7636014187, 15.7636273517, 15.7636532843, 15.7636792164, 15.7637051481, 15.7637310793, 15.76375701, 15.7637829403, 15.7638088701, 15.7638347994, 15.7638607283, 15.7638866567, 15.7639125846, 15.7639385121, 15.7639644391, 15.7639903656, 15.7640162917, 15.7640422173, 15.7640681424, 15.7640940671, 15.7641199913, 15.7641459151, 15.7641718383, 15.7641977611, 15.7642236835, 15.7642496054, 15.7642755268, 15.7643014477, 15.7643273682, 15.7643532882, 15.7643792078, 15.7644051269, 15.7644310455, 15.7644569636, 15.7644828813, 15.7645087985, 15.7645347153, 15.7645606316, 15.7645865474, 15.7646124628, 15.7646383776, 15.7646642921, 15.764690206, 15.7647161195, 15.7647420326, 15.7647679451, 15.7647938572, 15.7648197689, 15.76484568, 15.7648715907, 15.764897501, 15.7649234107, 15.7649493201, 15.7649752289, 15.7650011373, 15.7650270452, 15.7650529526, 15.7650788596, 15.7651047661, 15.7651306722, 15.7651565778, 15.7651824829, 15.7652083875, 15.7652342917, 15.7652601955, 15.7652860987, 15.7653120015, 15.7653379038, 15.7653638057, 15.7653897071, 15.765415608, 15.7654415085, 15.7654674085, 15.7654933081, 15.7655192071, 15.7655451058, 15.7655710039, 15.7655969016, 15.7656227988, 15.7656486955, 15.7656745918, 15.7657004877, 15.765726383, 15.7657522779, 15.7657781723, 15.7658040663, 15.7658299598, 15.7658558528, 15.7658817454, 15.7659076375, 15.7659335291, 15.7659594203, 15.765985311, 15.7660112013, 15.766037091, 15.7660629803, 15.7660888692, 15.7661147576, 15.7661406455, 15.766166533, 15.76619242, 15.7662183065, 15.7662441925, 15.7662700781, 15.7662959633, 15.766321848, 15.7663477322, 15.7663736159, 15.7663994992, 15.766425382, 15.7664512643, 15.7664771462, 15.7665030276, 15.7665289086, 15.7665547891, 15.7665806691, 15.7666065487, 15.7666324278, 15.7666583064, 15.7666841846, 15.7667100623, 15.7667359395, 15.7667618163, 15.7667876926, 15.7668135685, 15.7668394439, 15.7668653188, 15.7668911932, 15.7669170672, 15.7669429408, 15.7669688138, 15.7669946864, 15.7670205586, 15.7670464302, 15.7670723014, 15.7670981722, 15.7671240425, 15.7671499123, 15.7671757816, 15.7672016505, 15.767227519, 15.7672533869, 15.7672792544, 15.7673051214, 15.767330988, 15.7673568541, 15.7673827198, 15.7674085849, 15.7674344497, 15.7674603139, 15.7674861777, 15.767512041, 15.7675379039, 15.7675637663, 15.7675896282, 15.7676154897, 15.7676413507, 15.7676672112, 15.7676930713, 15.7677189309, 15.7677447901, 15.7677706488, 15.767796507, 15.7678223648, 15.7678482221, 15.7678740789, 15.7678999353, 15.7679257912, 15.7679516466, 15.7679775016, 15.7680033561, 15.7680292102, 15.7680550638, 15.7680809169, 15.7681067696, 15.7681326218, 15.7681584735, 15.7681843248, 15.7682101756, 15.7682360259, 15.7682618758, 15.7682877252, 15.7683135742, 15.7683394227, 15.7683652707, 15.7683911183, 15.7684169654, 15.7684428121, 15.7684686582, 15.768494504, 15.7685203492, 15.768546194, 15.7685720383, 15.7685978822, 15.7686237256, 15.7686495685, 15.768675411, 15.768701253, 15.7687270946, 15.7687529357, 15.7687787763, 15.7688046165, 15.7688304562, 15.7688562954, 15.7688821342, 15.7689079725, 15.7689338103, 15.7689596477, 15.7689854846, 15.7690113211, 15.7690371571, 15.7690629926, 15.7690888277, 15.7691146623, 15.7691404965, 15.7691663301, 15.7691921634, 15.7692179961, 15.7692438284, 15.7692696603, 15.7692954916, 15.7693213225, 15.769347153, 15.769372983, 15.7693988125, 15.7694246416, 15.7694504701, 15.7694762983, 15.769502126, 15.7695279532, 15.7695537799, 15.7695796062, 15.769605432, 15.7696312574, 15.7696570823, 15.7696829067, 15.7697087307, 15.7697345542, 15.7697603773, 15.7697861998, 15.769812022, 15.7698378436, 15.7698636648, 15.7698894856, 15.7699153058, 15.7699411257, 15.769966945, 15.7699927639, 15.7700185823, 15.7700444003, 15.7700702178, 15.7700960348, 15.7701218514, 15.7701476675, 15.7701734832, 15.7701992984, 15.7702251131, 15.7702509274, 15.7702767412, 15.7703025546, 15.7703283674, 15.7703541799, 15.7703799918, 15.7704058033, 15.7704316144, 15.7704574249, 15.770483235, 15.7705090447, 15.7705348539, 15.7705606626, 15.7705864709, 15.7706122787, 15.770638086, 15.7706638929, 15.7706896993, 15.7707155053, 15.7707413108, 15.7707671158, 15.7707929204, 15.7708187245, 15.7708445282, 15.7708703314, 15.7708961341, 15.7709219364, 15.7709477382, 15.7709735395, 15.7709993404, 15.7710251408, 15.7710509408, 15.7710767403, 15.7711025393, 15.7711283379, 15.771154136, 15.7711799336, 15.7712057308, 15.7712315276, 15.7712573238, 15.7712831196, 15.771308915, 15.7713347099, 15.7713605043, 15.7713862983, 15.7714120918, 15.7714378848, 15.7714636774, 15.7714894695, 15.7715152612, 15.7715410524, 15.7715668431, 15.7715926334, 15.7716184232, 15.7716442125, 15.7716700014, 15.7716957899, 15.7717215778, 15.7717473653, 15.7717731524, 15.771798939, 15.7718247251, 15.7718505108, 15.771876296, 15.7719020807, 15.771927865, 15.7719536488, 15.7719794322, 15.7720052151, 15.7720309975, 15.7720567795, 15.772082561, 15.7721083421, 15.7721341226, 15.7721599028, 15.7721856825, 15.7722114617, 15.7722372404, 15.7722630187, 15.7722887966, 15.7723145739, 15.7723403508, 15.7723661273, 15.7723919033, 15.7724176788, 15.7724434539, 15.7724692285, 15.7724950026, 15.7725207763, 15.7725465495, 15.7725723223, 15.7725980946, 15.7726238665, 15.7726496378, 15.7726754088, 15.7727011792, 15.7727269492, 15.7727527188, 15.7727784879, 15.7728042565, 15.7728300247, 15.7728557924, 15.7728815596, 15.7729073264, 15.7729330927, 15.7729588586, 15.772984624, 15.7730103889, 15.7730361534, 15.7730619174, 15.773087681, 15.7731134441, 15.7731392067, 15.7731649689, 15.7731907306, 15.7732164919, 15.7732422527, 15.773268013, 15.7732937729, 15.7733195323, 15.7733452913, 15.7733710498, 15.7733968078, 15.7734225654, 15.7734483225, 15.7734740792, 15.7734998354, 15.7735255911, 15.7735513464, 15.7735771013, 15.7736028556, 15.7736286095, 15.773654363, 15.7736801159, 15.7737058685, 15.7737316205, 15.7737573721, 15.7737831233, 15.773808874, 15.7738346242, 15.773860374, 15.7738861233, 15.7739118721, 15.7739376205, 15.7739633684, 15.7739891159, 15.7740148629, 15.7740406095, 15.7740663556, 15.7740921012, 15.7741178464, 15.7741435911, 15.7741693353, 15.7741950791, 15.7742208224, 15.7742465653, 15.7742723077, 15.7742980497, 15.7743237912, 15.7743495322, 15.7743752728, 15.7744010129, 15.7744267526, 15.7744524918, 15.7744782305, 15.7745039688, 15.7745297066, 15.774555444, 15.7745811809, 15.7746069173, 15.7746326533, 15.7746583889, 15.7746841239, 15.7747098585, 15.7747355927, 15.7747613264, 15.7747870596, 15.7748127924, 15.7748385247, 15.7748642565, 15.7748899879, 15.7749157189, 15.7749414494, 15.7749671794, 15.7749929089, 15.775018638, 15.7750443667, 15.7750700949, 15.7750958226, 15.7751215499, 15.7751472767, 15.775173003, 15.7751987289, 15.7752244543, 15.7752501793, 15.7752759038, 15.7753016279, 15.7753273515, 15.7753530746, 15.7753787973, 15.7754045195, 15.7754302413, 15.7754559626, 15.7754816834, 15.7755074038, 15.7755331237, 15.7755588432, 15.7755845622, 15.7756102808, 15.7756359989, 15.7756617165, 15.7756874337, 15.7757131504, 15.7757388666, 15.7757645824, 15.7757902978, 15.7758160127, 15.7758417271, 15.7758674411, 15.7758931546, 15.7759188676, 15.7759445802, 15.7759702924, 15.775996004, 15.7760217153, 15.776047426, 15.7760731363, 15.7760988462, 15.7761245555, 15.7761502645, 15.7761759729, 15.776201681, 15.7762273885, 15.7762530956, 15.7762788022, 15.7763045084, 15.7763302141, 15.7763559194, 15.7763816242, 15.7764073286, 15.7764330324, 15.7764587359, 15.7764844388, 15.7765101414, 15.7765358434, 15.776561545, 15.7765872462, 15.7766129468, 15.7766386471, 15.7766643468, 15.7766900462, 15.776715745, 15.7767414434, 15.7767671413, 15.7767928388, 15.7768185358, 15.7768442324, 15.7768699285, 15.7768956242, 15.7769213193, 15.7769470141, 15.7769727084, 15.7769984022, 15.7770240955, 15.7770497884, 15.7770754809, 15.7771011729, 15.7771268644, 15.7771525555, 15.7771782461, 15.7772039362, 15.7772296259, 15.7772553152, 15.777281004, 15.7773066923, 15.7773323802, 15.7773580676, 15.7773837545, 15.777409441, 15.7774351271, 15.7774608127, 15.7774864978, 15.7775121825, 15.7775378667, 15.7775635504, 15.7775892337, 15.7776149166, 15.777640599, 15.7776662809, 15.7776919623, 15.7777176434, 15.7777433239, 15.777769004, 15.7777946837, 15.7778203628, 15.7778460416, 15.7778717198, 15.7778973976, 15.777923075, 15.7779487519, 15.7779744283, 15.7780001043, 15.7780257799, 15.7780514549, 15.7780771295, 15.7781028037, 15.7781284774, 15.7781541506, 15.7781798234, 15.7782054957, 15.7782311676, 15.778256839, 15.77828251, 15.7783081805, 15.7783338505, 15.7783595201, 15.7783851893, 15.7784108579, 15.7784365262, 15.7784621939, 15.7784878612, 15.7785135281, 15.7785391945, 15.7785648604, 15.7785905259, 15.7786161909, 15.7786418555, 15.7786675196, 15.7786931832, 15.7787188464, 15.7787445092, 15.7787701714, 15.7787958333, 15.7788214946, 15.7788471556, 15.778872816, 15.778898476, 15.7789241356, 15.7789497946, 15.7789754533, 15.7790011114, 15.7790267692, 15.7790524264, 15.7790780832, 15.7791037396, 15.7791293955, 15.7791550509, 15.7791807059, 15.7792063604, 15.7792320145, 15.7792576681, 15.7792833213, 15.779308974, 15.7793346262, 15.779360278, 15.7793859293, 15.7794115802, 15.7794372306, 15.7794628806, 15.7794885301, 15.7795141791, 15.7795398277, 15.7795654759, 15.7795911236, 15.7796167708, 15.7796424176, 15.7796680639, 15.7796937097, 15.7797193551, 15.7797450001, 15.7797706446, 15.7797962886, 15.7798219322, 15.7798475753, 15.779873218, 15.7798988602, 15.779924502, 15.7799501433, 15.7799757841, 15.7800014245, 15.7800270644, 15.7800527039, 15.7800783429, 15.7801039815, 15.7801296196, 15.7801552573, 15.7801808945, 15.7802065312, 15.7802321675, 15.7802578034, 15.7802834387, 15.7803090737, 15.7803347081, 15.7803603421, 15.7803859757, 15.7804116088, 15.7804372414, 15.7804628736, 15.7804885054, 15.7805141366, 15.7805397675, 15.7805653978, 15.7805910278, 15.7806166572, 15.7806422862, 15.7806679148, 15.7806935429, 15.7807191705, 15.7807447977, 15.7807704244, 15.7807960507, 15.7808216765, 15.7808473019, 15.7808729268, 15.7808985512, 15.7809241752, 15.7809497987, 15.7809754218, 15.7810010445, 15.7810266666, 15.7810522884, 15.7810779096, 15.7811035304, 15.7811291508, 15.7811547707, 15.7811803901, 15.7812060091, 15.7812316277, 15.7812572457, 15.7812828634, 15.7813084805, 15.7813340973, 15.7813597135, 15.7813853293, 15.7814109447, 15.7814365596, 15.781462174, 15.781487788, 15.7815134015, 15.7815390146, 15.7815646272, 15.7815902394, 15.7816158511, 15.7816414624, 15.7816670732, 15.7816926835, 15.7817182934, 15.7817439029, 15.7817695119, 15.7817951204, 15.7818207285, 15.7818463361, 15.7818719433, 15.78189755, 15.7819231562, 15.781948762, 15.7819743674, 15.7819999723, 15.7820255767, 15.7820511807, 15.7820767842, 15.7821023873, 15.7821279899, 15.7821535921, 15.7821791938, 15.7822047951, 15.7822303959, 15.7822559963, 15.7822815961, 15.7823071956, 15.7823327946, 15.7823583931, 15.7823839912, 15.7824095888, 15.782435186, 15.7824607827, 15.782486379, 15.7825119748, 15.7825375701, 15.782563165, 15.7825887595, 15.7826143535, 15.782639947, 15.7826655401, 15.7826911327, 15.7827167249, 15.7827423166, 15.7827679079, 15.7827934987, 15.7828190891, 15.782844679, 15.7828702685, 15.7828958575, 15.782921446, 15.7829470341, 15.7829726217, 15.7829982089, 15.7830237957, 15.7830493819, 15.7830749678, 15.7831005531, 15.783126138, 15.7831517225, 15.7831773065, 15.7832028901, 15.7832284732, 15.7832540558, 15.783279638, 15.7833052197, 15.783330801, 15.7833563819, 15.7833819622, 15.7834075422, 15.7834331216, 15.7834587007, 15.7834842792, 15.7835098573, 15.783535435, 15.7835610122, 15.783586589, 15.7836121653, 15.7836377411, 15.7836633165, 15.7836888914, 15.7837144659, 15.7837400399, 15.7837656135, 15.7837911866, 15.7838167593, 15.7838423315, 15.7838679033, 15.7838934746, 15.7839190455, 15.7839446159, 15.7839701858, 15.7839957553, 15.7840213244, 15.784046893, 15.7840724611, 15.7840980288, 15.784123596, 15.7841491628, 15.7841747291, 15.784200295, 15.7842258604, 15.7842514254, 15.7842769899, 15.784302554, 15.7843281176, 15.7843536807, 15.7843792434, 15.7844048057, 15.7844303675, 15.7844559288, 15.7844814897, 15.7845070502, 15.7845326101, 15.7845581697, 15.7845837288, 15.7846092874, 15.7846348456, 15.7846604033, 15.7846859605, 15.7847115174, 15.7847370737, 15.7847626296, 15.7847881851, 15.7848137401, 15.7848392947, 15.7848648488, 15.7848904024, 15.7849159556, 15.7849415083, 15.7849670606, 15.7849926125, 15.7850181638, 15.7850437148, 15.7850692653, 15.7850948153, 15.7851203649, 15.785145914, 15.7851714627, 15.7851970109, 15.7852225586, 15.7852481059, 15.7852736528, 15.7852991992, 15.7853247452, 15.7853502907, 15.7853758357, 15.7854013803, 15.7854269245, 15.7854524682, 15.7854780114, 15.7855035542, 15.7855290965, 15.7855546384, 15.7855801798, 15.7856057208, 15.7856312614, 15.7856568014, 15.7856823411, 15.7857078802, 15.7857334189, 15.7857589572, 15.785784495, 15.7858100324, 15.7858355693, 15.7858611058, 15.7858866418, 15.7859121773, 15.7859377124, 15.7859632471, 15.7859887813, 15.786014315, 15.7860398483, 15.7860653812, 15.7860909136, 15.7861164455, 15.786141977, 15.786167508, 15.7861930386, 15.7862185687, 15.7862440984, 15.7862696276, 15.7862951564, 15.7863206848, 15.7863462126, 15.78637174, 15.786397267, 15.7864227935, 15.7864483196, 15.7864738452, 15.7864993704, 15.7865248951, 15.7865504194, 15.7865759432, 15.7866014665, 15.7866269894, 15.7866525119, 15.7866780339, 15.7867035554, 15.7867290765, 15.7867545972, 15.7867801174, 15.7868056371, 15.7868311564, 15.7868566753, 15.7868821937, 15.7869077116, 15.7869332291, 15.7869587461, 15.7869842627, 15.7870097789, 15.7870352945, 15.7870608098, 15.7870863246, 15.7871118389, 15.7871373528, 15.7871628662, 15.7871883792, 15.7872138917, 15.7872394038, 15.7872649154, 15.7872904266, 15.7873159373, 15.7873414476, 15.7873669574, 15.7873924667, 15.7874179757, 15.7874434841, 15.7874689921, 15.7874944997, 15.7875200068, 15.7875455135, 15.7875710197, 15.7875965254, 15.7876220308, 15.7876475356, 15.78767304, 15.787698544, 15.7877240475, 15.7877495505, 15.7877750531, 15.7878005553, 15.787826057, 15.7878515582, 15.787877059, 15.7879025594, 15.7879280593, 15.7879535587, 15.7879790577, 15.7880045563, 15.7880300544, 15.788055552, 15.7880810492, 15.788106546, 15.7881320423, 15.7881575381, 15.7881830335, 15.7882085284, 15.7882340229, 15.788259517, 15.7882850106, 15.7883105037, 15.7883359964, 15.7883614886, 15.7883869804, 15.7884124718, 15.7884379626, 15.7884634531, 15.7884889431, 15.7885144326, 15.7885399217, 15.7885654103, 15.7885908985, 15.7886163863, 15.7886418735, 15.7886673604, 15.7886928468, 15.7887183327, 15.7887438182, 15.7887693032, 15.7887947878, 15.7888202719, 15.7888457556, 15.7888712388, 15.7888967216, 15.788922204, 15.7889476858, 15.7889731673, 15.7889986483, 15.7890241288, 15.7890496089, 15.7890750885, 15.7891005677, 15.7891260464, 15.7891515247, 15.7891770025, 15.7892024799, 15.7892279569, 15.7892534333, 15.7892789094, 15.789304385, 15.7893298601, 15.7893553348, 15.789380809, 15.7894062828, 15.7894317561, 15.789457229, 15.7894827014, 15.7895081734, 15.789533645, 15.7895591161, 15.7895845867, 15.7896100569, 15.7896355266, 15.7896609959, 15.7896864647, 15.7897119331, 15.7897374011, 15.7897628686, 15.7897883356, 15.7898138022, 15.7898392683, 15.789864734, 15.7898901993, 15.789915664, 15.7899411284, 15.7899665923, 15.7899920557, 15.7900175187, 15.7900429813, 15.7900684434, 15.790093905, 15.7901193662, 15.7901448269, 15.7901702872, 15.7901957471, 15.7902212065, 15.7902466654, 15.7902721239, 15.790297582, 15.7903230396, 15.7903484968, 15.7903739535, 15.7903994097, 15.7904248655, 15.7904503209, 15.7904757758, 15.7905012302, 15.7905266842, 15.7905521378, 15.7905775909, 15.7906030436, 15.7906284958, 15.7906539476, 15.7906793989, 15.7907048497, 15.7907303002, 15.7907557501, 15.7907811996, 15.7908066487, 15.7908320973, 15.7908575455, 15.7908829932, 15.7909084405, 15.7909338873, 15.7909593337, 15.7909847796, 15.7910102251, 15.7910356701, 15.7910611147, 15.7910865588, 15.7911120025, 15.7911374458, 15.7911628886, 15.7911883309, 15.7912137728, 15.7912392142, 15.7912646552, 15.7912900958, 15.7913155359, 15.7913409755, 15.7913664147, 15.7913918534, 15.7914172917, 15.7914427296, 15.791468167, 15.791493604, 15.7915190405, 15.7915444765, 15.7915699121, 15.7915953473, 15.791620782, 15.7916462163, 15.7916716501, 15.7916970834, 15.7917225164, 15.7917479488, 15.7917733809, 15.7917988124, 15.7918242436, 15.7918496742, 15.7918751045, 15.7919005342, 15.7919259636, 15.7919513925, 15.7919768209, 15.7920022489, 15.7920276764, 15.7920531035, 15.7920785302, 15.7921039564, 15.7921293821, 15.7921548074, 15.7921802323, 15.7922056567, 15.7922310806, 15.7922565041, 15.7922819272, 15.7923073498, 15.792332772, 15.7923581937, 15.7923836149, 15.7924090358, 15.7924344561, 15.792459876, 15.7924852955, 15.7925107146, 15.7925361331, 15.7925615513, 15.7925869689, 15.7926123862, 15.792637803, 15.7926632193, 15.7926886352, 15.7927140507, 15.7927394656, 15.7927648802, 15.7927902943, 15.792815708, 15.7928411212, 15.7928665339, 15.7928919462, 15.7929173581, 15.7929427695, 15.7929681805, 15.792993591, 15.7930190011, 15.7930444107, 15.7930698199, 15.7930952286, 15.7931206369, 15.7931460447, 15.7931714521, 15.7931968591, 15.7932222656, 15.7932476716, 15.7932730772, 15.7932984824, 15.7933238871, 15.7933492913, 15.7933746951, 15.7934000985, 15.7934255014, 15.7934509039, 15.7934763059, 15.7935017075, 15.7935271086, 15.7935525093, 15.7935779095, 15.7936033093, 15.7936287086, 15.7936541075, 15.7936795059, 15.7937049039, 15.7937303015, 15.7937556986, 15.7937810952, 15.7938064915, 15.7938318872, 15.7938572825, 15.7938826774, 15.7939080718, 15.7939334658, 15.7939588593, 15.7939842524, 15.794009645, 15.7940350372, 15.7940604289, 15.7940858202, 15.7941112111, 15.7941366015, 15.7941619914, 15.7941873809, 15.79421277, 15.7942381586, 15.7942635468, 15.7942889345, 15.7943143217, 15.7943397086, 15.7943650949, 15.7943904809, 15.7944158664, 15.7944412514, 15.794466636, 15.7944920201, 15.7945174038, 15.7945427871, 15.7945681699, 15.7945935522, 15.7946189341, 15.7946443156, 15.7946696966, 15.7946950772, 15.7947204573, 15.794745837, 15.7947712162, 15.794796595, 15.7948219733, 15.7948473512, 15.7948727287, 15.7948981057, 15.7949234822, 15.7949488583, 15.794974234, 15.7949996092, 15.795024984, 15.7950503583, 15.7950757322, 15.7951011056, 15.7951264786, 15.7951518511, 15.7951772232, 15.7952025948, 15.795227966, 15.7952533368, 15.7952787071, 15.7953040769, 15.7953294464, 15.7953548153, 15.7953801838, 15.7954055519, 15.7954309195, 15.7954562867, 15.7954816535, 15.7955070197, 15.7955323856, 15.795557751, 15.7955831159, 15.7956084804, 15.7956338445, 15.7956592081, 15.7956845713, 15.795709934, 15.7957352963, 15.7957606581, 15.7957860195, 15.7958113804, 15.7958367409, 15.795862101, 15.7958874606, 15.7959128197, 15.7959381784, 15.7959635367, 15.7959888945, 15.7960142519, 15.7960396088, 15.7960649653, 15.7960903213, 15.7961156769, 15.7961410321, 15.7961663868, 15.796191741, 15.7962170948, 15.7962424482, 15.7962678011, 15.7962931536, 15.7963185056, 15.7963438572, 15.7963692083, 15.796394559, 15.7964199093, 15.7964452591, 15.7964706084, 15.7964959573, 15.7965213058, 15.7965466538, 15.7965720014, 15.7965973485, 15.7966226952, 15.7966480414, 15.7966733872, 15.7966987325, 15.7967240774, 15.7967494219, 15.7967747659, 15.7968001095, 15.7968254526, 15.7968507953, 15.7968761375, 15.7969014793, 15.7969268206, 15.7969521615, 15.796977502, 15.797002842, 15.7970281815, 15.7970535206, 15.7970788593, 15.7971041975, 15.7971295353, 15.7971548726, 15.7971802095, 15.797205546, 15.797230882, 15.7972562175, 15.7972815526, 15.7973068873, 15.7973322215, 15.7973575553, 15.7973828886, 15.7974082215, 15.7974335539, 15.7974588859, 15.7974842175, 15.7975095486, 15.7975348792, 15.7975602094, 15.7975855392, 15.7976108685, 15.7976361974, 15.7976615259, 15.7976868538, 15.7977121814, 15.7977375085, 15.7977628352, 15.7977881614, 15.7978134871, 15.7978388125, 15.7978641373, 15.7978894618, 15.7979147858, 15.7979401093, 15.7979654324, 15.7979907551, 15.7980160773, 15.798041399, 15.7980667204, 15.7980920412, 15.7981173617, 15.7981426817, 15.7981680012, 15.7981933203, 15.798218639, 15.7982439572, 15.7982692749, 15.7982945923, 15.7983199092, 15.7983452256, 15.7983705416, 15.7983958571, 15.7984211722, 15.7984464869, 15.7984718011, 15.7984971149, 15.7985224282, 15.7985477411, 15.7985730535, 15.7985983655, 15.7986236771, 15.7986489882, 15.7986742988, 15.798699609, 15.7987249188, 15.7987502281, 15.798775537, 15.7988008455, 15.7988261535, 15.798851461, 15.7988767681, 15.7989020748, 15.798927381, 15.7989526868, 15.7989779921, 15.799003297, 15.7990286015, 15.7990539055, 15.799079209, 15.7991045121, 15.7991298148, 15.799155117, 15.7991804188, 15.7992057202, 15.7992310211, 15.7992563215, 15.7992816215, 15.7993069211, 15.7993322202, 15.7993575189, 15.7993828171, 15.7994081149, 15.7994334123, 15.7994587092, 15.7994840056, 15.7995093016, 15.7995345972, 15.7995598923, 15.799585187, 15.7996104813, 15.7996357751, 15.7996610684, 15.7996863613, 15.7997116538, 15.7997369458, 15.7997622374, 15.7997875285, 15.7998128192, 15.7998381095, 15.7998633993, 15.7998886887, 15.7999139776, 15.7999392661, 15.7999645541, 15.7999898417, 15.8000151288, 15.8000404155, 15.8000657018, 15.8000909876, 15.800116273, 15.8001415579, 15.8001668424, 15.8001921265, 15.8002174101, 15.8002426932, 15.8002679759, 15.8002932582, 15.8003185401, 15.8003438214, 15.8003691024, 15.8003943829, 15.8004196629, 15.8004449426, 15.8004702217, 15.8004955005, 15.8005207788, 15.8005460566, 15.800571334, 15.800596611, 15.8006218875, 15.8006471635, 15.8006724392, 15.8006977144, 15.8007229891, 15.8007482634, 15.8007735373, 15.8007988107, 15.8008240837, 15.8008493562, 15.8008746283, 15.8008998999, 15.8009251711, 15.8009504419, 15.8009757122, 15.8010009821, 15.8010262515, 15.8010515205, 15.801076789, 15.8011020571, 15.8011273248, 15.801152592, 15.8011778588, 15.8012031251, 15.801228391, 15.8012536565, 15.8012789215, 15.801304186, 15.8013294502, 15.8013547139, 15.8013799771, 15.8014052399, 15.8014305022, 15.8014557641, 15.8014810256, 15.8015062866, 15.8015315472, 15.8015568074, 15.8015820671, 15.8016073263, 15.8016325851, 15.8016578435, 15.8016831014, 15.8017083589, 15.801733616, 15.8017588726, 15.8017841287, 15.8018093844, 15.8018346397, 15.8018598946, 15.8018851489, 15.8019104029, 15.8019356564, 15.8019609095, 15.8019861621, 15.8020114143, 15.802036666, 15.8020619173, 15.8020871682, 15.8021124186, 15.8021376686, 15.8021629181, 15.8021881672, 15.8022134158, 15.802238664, 15.8022639118, 15.8022891591, 15.802314406, 15.8023396524, 15.8023648984, 15.802390144, 15.8024153891, 15.8024406338, 15.802465878, 15.8024911218, 15.8025163651, 15.802541608, 15.8025668505, 15.8025920925, 15.8026173341, 15.8026425752, 15.8026678159, 15.8026930562, 15.802718296, 15.8027435354, 15.8027687743, 15.8027940128, 15.8028192508, 15.8028444884, 15.8028697256, 15.8028949623, 15.8029201986, 15.8029454344, 15.8029706698, 15.8029959048, 15.8030211393, 15.8030463734, 15.803071607, 15.8030968402, 15.8031220729, 15.8031473052, 15.8031725371, 15.8031977685, 15.8032229995, 15.8032482301, 15.8032734602, 15.8032986898, 15.803323919, 15.8033491478, 15.8033743762, 15.8033996041, 15.8034248315, 15.8034500585, 15.8034752851, 15.8035005112, 15.8035257369, 15.8035509622, 15.803576187, 15.8036014113, 15.8036266353, 15.8036518587, 15.8036770818, 15.8037023044, 15.8037275266, 15.8037527483, 15.8037779696, 15.8038031904, 15.8038284108, 15.8038536307, 15.8038788503, 15.8039040693, 15.803929288, 15.8039545062, 15.8039797239, 15.8040049412, 15.8040301581, 15.8040553745, 15.8040805905, 15.8041058061, 15.8041310212, 15.8041562359, 15.8041814501, 15.8042066639, 15.8042318772, 15.8042570901, 15.8042823026, 15.8043075146, 15.8043327262, 15.8043579373, 15.804383148, 15.8044083583, 15.8044335681, 15.8044587775, 15.8044839864, 15.8045091949, 15.804534403, 15.8045596106, 15.8045848178, 15.8046100245, 15.8046352308, 15.8046604367, 15.8046856421, 15.8047108471, 15.8047360516, 15.8047612557, 15.8047864594, 15.8048116626, 15.8048368654, 15.8048620677, 15.8048872696, 15.804912471, 15.8049376721, 15.8049628726, 15.8049880728, 15.8050132725, 15.8050384717, 15.8050636705, 15.8050888689, 15.8051140668, 15.8051392643, 15.8051644614, 15.805189658, 15.8052148542, 15.8052400499, 15.8052652452, 15.80529044, 15.8053156344, 15.8053408284, 15.8053660219, 15.805391215, 15.8054164077, 15.8054415999, 15.8054667917, 15.805491983, 15.8055171739, 15.8055423644, 15.8055675544, 15.8055927439, 15.8056179331, 15.8056431218, 15.80566831, 15.8056934978, 15.8057186852, 15.8057438722, 15.8057690586, 15.8057942447, 15.8058194303, 15.8058446155, 15.8058698002, 15.8058949845, 15.8059201684, 15.8059453518, 15.8059705348, 15.8059957173, 15.8060208994, 15.8060460811, 15.8060712623, 15.8060964431, 15.8061216234, 15.8061468033, 15.8061719828, 15.8061971618, 15.8062223404, 15.8062475185, 15.8062726962, 15.8062978735, 15.8063230503, 15.8063482267, 15.8063734027, 15.8063985782, 15.8064237532, 15.8064489279, 15.8064741021, 15.8064992758, 15.8065244491, 15.806549622, 15.8065747944, 15.8065999664, 15.806625138, 15.8066503091, 15.8066754798, 15.80670065, 15.8067258198, 15.8067509891, 15.8067761581, 15.8068013265, 15.8068264946, 15.8068516622, 15.8068768294, 15.8069019961, 15.8069271624, 15.8069523282, 15.8069774936, 15.8070026586, 15.8070278231, 15.8070529872, 15.8070781509, 15.8071033141, 15.8071284768, 15.8071536392, 15.8071788011, 15.8072039625, 15.8072291235, 15.8072542841, 15.8072794443, 15.807304604, 15.8073297632, 15.8073549221, 15.8073800804, 15.8074052384, 15.8074303959, 15.807455553, 15.8074807096, 15.8075058658, 15.8075310215, 15.8075561769, 15.8075813317, 15.8076064862, 15.8076316402, 15.8076567937, 15.8076819469, 15.8077070995, 15.8077322518, 15.8077574036, 15.807782555, 15.8078077059, 15.8078328564, 15.8078580064, 15.807883156, 15.8079083052, 15.807933454, 15.8079586023, 15.8079837501, 15.8080088975, 15.8080340445, 15.8080591911, 15.8080843372, 15.8081094828, 15.8081346281, 15.8081597729, 15.8081849172, 15.8082100611, 15.8082352046, 15.8082603477, 15.8082854903, 15.8083106324, 15.8083357741, 15.8083609154, 15.8083860563, 15.8084111967, 15.8084363367, 15.8084614762, 15.8084866153, 15.808511754, 15.8085368922, 15.80856203, 15.8085871673, 15.8086123042, 15.8086374407, 15.8086625767, 15.8086877123, 15.8087128475, 15.8087379822, 15.8087631165, 15.8087882503, 15.8088133837, 15.8088385167, 15.8088636492, 15.8088887813, 15.8089139129, 15.8089390441, 15.8089641749, 15.8089893053, 15.8090144352, 15.8090395646, 15.8090646936, 15.8090898222, 15.8091149504, 15.8091400781, 15.8091652054, 15.8091903322, 15.8092154586, 15.8092405846, 15.8092657101, 15.8092908352, 15.8093159598, 15.809341084, 15.8093662078, 15.8093913312, 15.8094164541, 15.8094415765, 15.8094666985, 15.8094918201, 15.8095169413, 15.809542062, 15.8095671823, 15.8095923021, 15.8096174215, 15.8096425405, 15.809667659, 15.8096927771, 15.8097178947, 15.8097430119, 15.8097681287, 15.809793245, 15.809818361, 15.8098434764, 15.8098685914, 15.809893706, 15.8099188202, 15.8099439339, 15.8099690472, 15.80999416, 15.8100192724, 15.8100443844, 15.8100694959, 15.810094607, 15.8101197177, 15.8101448279, 15.8101699377, 15.810195047, 15.8102201559, 15.8102452644, 15.8102703724, 15.81029548, 15.8103205872, 15.8103456939, 15.8103708002, 15.810395906, 15.8104210114, 15.8104461164, 15.810471221, 15.8104963251, 15.8105214287, 15.810546532, 15.8105716347, 15.8105967371, 15.810621839, 15.8106469405, 15.8106720415, 15.8106971421, 15.8107222423, 15.810747342, 15.8107724413, 15.8107975402, 15.8108226386, 15.8108477366, 15.8108728342, 15.8108979313, 15.810923028, 15.8109481242, 15.81097322, 15.8109983154, 15.8110234103, 15.8110485048, 15.8110735989, 15.8110986925, 15.8111237857, 15.8111488784, 15.8111739707, 15.8111990626, 15.811224154, 15.811249245, 15.8112743356, 15.8112994257, 15.8113245154, 15.8113496047, 15.8113746935, 15.8113997819, 15.8114248698, 15.8114499574, 15.8114750444, 15.8115001311, 15.8115252173, 15.811550303, 15.8115753884, 15.8116004733, 15.8116255577, 15.8116506418, 15.8116757253, 15.8117008085, 15.8117258912, 15.8117509735, 15.8117760553, 15.8118011367, 15.8118262177, 15.8118512982, 15.8118763783, 15.811901458, 15.8119265372, 15.811951616, 15.8119766944, 15.8120017723, 15.8120268498, 15.8120519268, 15.8120770034, 15.8121020796, 15.8121271553, 15.8121522306, 15.8121773055, 15.8122023799, 15.8122274539, 15.8122525275, 15.8122776006, 15.8123026733, 15.8123277456, 15.8123528174, 15.8123778888, 15.8124029597, 15.8124280302, 15.8124531003, 15.8124781699, 15.8125032391, 15.8125283079, 15.8125533762, 15.8125784441, 15.8126035116, 15.8126285786, 15.8126536452, 15.8126787114, 15.8127037771, 15.8127288424, 15.8127539072, 15.8127789716, 15.8128040356, 15.8128290991, 15.8128541623, 15.8128792249, 15.8129042872, 15.812929349, 15.8129544103, 15.8129794713, 15.8130045317, 15.8130295918, 15.8130546514, 15.8130797106, 15.8131047694, 15.8131298277, 15.8131548856, 15.813179943, 15.813205, 15.8132300566, 15.8132551127, 15.8132801685, 15.8133052237, 15.8133302786, 15.813355333, 15.8133803869, 15.8134054405, 15.8134304936, 15.8134555462, 15.8134805984, 15.8135056502, 15.8135307016, 15.8135557525, 15.813580803, 15.813605853, 15.8136309027, 15.8136559518, 15.8136810006, 15.8137060489, 15.8137310968, 15.8137561442, 15.8137811912, 15.8138062378, 15.8138312839, 15.8138563296, 15.8138813749, 15.8139064197, 15.8139314641, 15.8139565081, 15.8139815516, 15.8140065947, 15.8140316374, 15.8140566796, 15.8140817214, 15.8141067627, 15.8141318037, 15.8141568441, 15.8141818842, 15.8142069238, 15.814231963, 15.8142570017, 15.81428204, 15.8143070779, 15.8143321154, 15.8143571524, 15.814382189, 15.8144072251, 15.8144322608, 15.8144572961, 15.8144823309, 15.8145073653, 15.8145323993, 15.8145574328, 15.8145824659, 15.8146074986, 15.8146325308, 15.8146575626, 15.814682594, 15.8147076249, 15.8147326554, 15.8147576854, 15.8147827151, 15.8148077443, 15.814832773, 15.8148578013, 15.8148828292, 15.8149078567, 15.8149328837, 15.8149579103, 15.8149829364, 15.8150079621, 15.8150329874, 15.8150580123, 15.8150830367, 15.8151080607, 15.8151330842, 15.8151581073, 15.81518313, 15.8152081523, 15.8152331741, 15.8152581954, 15.8152832164, 15.8153082369, 15.815333257, 15.8153582766, 15.8153832958, 15.8154083146, 15.8154333329, 15.8154583508, 15.8154833683, 15.8155083853, 15.8155334019, 15.8155584181, 15.8155834339, 15.8156084492, 15.815633464, 15.8156584785, 15.8156834925, 15.815708506, 15.8157335192, 15.8157585319, 15.8157835441, 15.815808556, 15.8158335674, 15.8158585783, 15.8158835889, 15.815908599, 15.8159336086, 15.8159586179, 15.8159836267, 15.816008635, 15.8160336429, 15.8160586504, 15.8160836575, 15.8161086641, 15.8161336703, 15.8161586761, 15.8161836814, 15.8162086863, 15.8162336908, 15.8162586948, 15.8162836984, 15.8163087016, 15.8163337043, 15.8163587066, 15.8163837085, 15.8164087099, 15.8164337109, 15.8164587115, 15.8164837116, 15.8165087113, 15.8165337106, 15.8165587094, 15.8165837078, 15.8166087058, 15.8166337033, 15.8166587004, 15.816683697, 15.8167086933, 15.8167336891, 15.8167586844, 15.8167836794, 15.8168086739, 15.8168336679, 15.8168586616, 15.8168836548, 15.8169086475, 15.8169336399, 15.8169586318, 15.8169836233, 15.8170086143, 15.8170336049, 15.8170585951, 15.8170835848, 15.8171085741, 15.817133563, 15.8171585514, 15.8171835394, 15.817208527, 15.8172335141, 15.8172585008, 15.8172834871, 15.817308473, 15.8173334584, 15.8173584434, 15.8173834279, 15.817408412, 15.8174333957, 15.8174583789, 15.8174833617, 15.8175083441, 15.8175333261, 15.8175583076, 15.8175832887, 15.8176082693, 15.8176332495, 15.8176582293, 15.8176832087, 15.8177081876, 15.8177331661, 15.8177581442, 15.8177831218, 15.817808099, 15.8178330757, 15.8178580521, 15.8178830279, 15.8179080034, 15.8179329784, 15.817957953, 15.8179829272, 15.8180079009, 15.8180328742, 15.8180578471, 15.8180828195, 15.8181077915, 15.8181327631, 15.8181577342, 15.8181827049, 15.8182076752, 15.8182326451, 15.8182576145, 15.8182825835, 15.818307552, 15.8183325201, 15.8183574878, 15.818382455, 15.8184074219, 15.8184323882, 15.8184573542, 15.8184823197, 15.8185072848, 15.8185322495, 15.8185572137, 15.8185821775, 15.8186071408, 15.8186321038, 15.8186570663, 15.8186820283, 15.81870699, 15.8187319512, 15.8187569119, 15.8187818723, 15.8188068322, 15.8188317917, 15.8188567507, 15.8188817093, 15.8189066675, 15.8189316252, 15.8189565825, 15.8189815394, 15.8190064959, 15.8190314519, 15.8190564075, 15.8190813626, 15.8191063174, 15.8191312717, 15.8191562255, 15.819181179, 15.819206132, 15.8192310845, 15.8192560367, 15.8192809884, 15.8193059396, 15.8193308905, 15.8193558409, 15.8193807909, 15.8194057404, 15.8194306895, 15.8194556382, 15.8194805865, 15.8195055343, 15.8195304817, 15.8195554286, 15.8195803752, 15.8196053213, 15.8196302669, 15.8196552121, 15.8196801569, 15.8197051013, 15.8197300453, 15.8197549888, 15.8197799318, 15.8198048745, 15.8198298167, 15.8198547585, 15.8198796998, 15.8199046407, 15.8199295812, 15.8199545213, 15.8199794609, 15.8200044001, 15.8200293389, 15.8200542772, 15.8200792151, 15.8201041526, 15.8201290896, 15.8201540262, 15.8201789624, 15.8202038982, 15.8202288335, 15.8202537684, 15.8202787028, 15.8203036368, 15.8203285704, 15.8203535036, 15.8203784363, 15.8204033686, 15.8204283005, 15.8204532319, 15.8204781629, 15.8205030935, 15.8205280237, 15.8205529534, 15.8205778827, 15.8206028115, 15.8206277399, 15.8206526679, 15.8206775955, 15.8207025226, 15.8207274493, 15.8207523756, 15.8207773014, 15.8208022268, 15.8208271518, 15.8208520763, 15.8208770005, 15.8209019241, 15.8209268474, 15.8209517702, 15.8209766926, 15.8210016146, 15.8210265361, 15.8210514572, 15.8210763779, 15.8211012981, 15.8211262179, 15.8211511373, 15.8211760563, 15.8212009748, 15.8212258929, 15.8212508105, 15.8212757278, 15.8213006446, 15.8213255609, 15.8213504769, 15.8213753924, 15.8214003074, 15.8214252221, 15.8214501363, 15.8214750501, 15.8214999635, 15.8215248764, 15.8215497889, 15.8215747009, 15.8215996126, 15.8216245238, 15.8216494346, 15.8216743449, 15.8216992548, 15.8217241643, 15.8217490733, 15.821773982, 15.8217988902, 15.8218237979, 15.8218487053, 15.8218736122, 15.8218985186, 15.8219234247, 15.8219483303, 15.8219732355, 15.8219981402, 15.8220230446, 15.8220479485, 15.8220728519, 15.822097755, 15.8221226576, 15.8221475597, 15.8221724615, 15.8221973628, 15.8222222637, 15.8222471641, 15.8222720642, 15.8222969638, 15.8223218629, 15.8223467617, 15.82237166, 15.8223965578, 15.8224214553, 15.8224463523, 15.8224712489, 15.8224961451, 15.8225210408, 15.8225459361, 15.822570831, 15.8225957254, 15.8226206194, 15.822645513, 15.8226704061, 15.8226952989, 15.8227201911, 15.822745083, 15.8227699744, 15.8227948654, 15.822819756, 15.8228446462, 15.8228695359, 15.8228944252, 15.822919314, 15.8229442025, 15.8229690905, 15.822993978, 15.8230188652, 15.8230437519, 15.8230686382, 15.823093524, 15.8231184094, 15.8231432944, 15.823168179, 15.8231930631, 15.8232179468, 15.8232428301, 15.8232677129, 15.8232925954, 15.8233174774, 15.8233423589, 15.82336724, 15.8233921207, 15.823417001, 15.8234418809, 15.8234667603, 15.8234916393, 15.8235165178, 15.8235413959, 15.8235662736, 15.8235911509, 15.8236160278, 15.8236409042, 15.8236657801, 15.8236906557, 15.8237155308, 15.8237404055, 15.8237652798, 15.8237901536, 15.823815027, 15.8238399, 15.8238647726, 15.8238896447, 15.8239145164, 15.8239393877, 15.8239642585, 15.8239891289, 15.8240139989, 15.8240388684, 15.8240637375, 15.8240886062, 15.8241134745, 15.8241383423, 15.8241632097, 15.8241880767, 15.8242129433, 15.8242378094, 15.8242626751, 15.8242875403, 15.8243124052, 15.8243372696, 15.8243621336, 15.8243869971, 15.8244118602, 15.8244367229, 15.8244615852, 15.824486447, 15.8245113084, 15.8245361694, 15.82456103, 15.8245858901, 15.8246107498, 15.8246356091, 15.8246604679, 15.8246853263, 15.8247101843, 15.8247350418, 15.824759899, 15.8247847556, 15.8248096119, 15.8248344678, 15.8248593232, 15.8248841781, 15.8249090327, 15.8249338868, 15.8249587405, 15.8249835938, 15.8250084466, 15.8250332991, 15.825058151, 15.8250830026, 15.8251078537, 15.8251327044, 15.8251575547, 15.8251824045, 15.825207254, 15.825232103, 15.8252569515, 15.8252817996, 15.8253066474, 15.8253314946, 15.8253563415, 15.8253811879, 15.8254060339, 15.8254308795, 15.8254557246, 15.8254805693, 15.8255054136, 15.8255302574, 15.8255551009, 15.8255799439, 15.8256047864, 15.8256296286, 15.8256544703, 15.8256793116, 15.8257041524, 15.8257289929, 15.8257538329, 15.8257786725, 15.8258035116, 15.8258283503, 15.8258531886, 15.8258780265, 15.8259028639, 15.8259277009, 15.8259525375, 15.8259773737, 15.8260022094, 15.8260270447, 15.8260518796, 15.826076714, 15.826101548, 15.8261263816, 15.8261512148, 15.8261760475, 15.8262008798, 15.8262257117, 15.8262505432, 15.8262753742, 15.8263002048, 15.826325035, 15.8263498647, 15.826374694, 15.8263995229, 15.8264243514, 15.8264491794, 15.826474007, 15.8264988342, 15.826523661, 15.8265484873, 15.8265733132, 15.8265981387, 15.8266229637, 15.8266477883, 15.8266726125, 15.8266974363, 15.8267222596, 15.8267470825, 15.826771905, 15.8267967271, 15.8268215487, 15.8268463699, 15.8268711907, 15.826896011, 15.8269208309, 15.8269456504, 15.8269704695, 15.8269952881, 15.8270201063, 15.8270449241, 15.8270697415, 15.8270945584, 15.8271193749, 15.827144191, 15.8271690066, 15.8271938219, 15.8272186367, 15.827243451, 15.827268265, 15.8272930785, 15.8273178916, 15.8273427042, 15.8273675165, 15.8273923283, 15.8274171397, 15.8274419506, 15.8274667611, 15.8274915712, 15.8275163809, 15.8275411902, 15.827565999, 15.8275908074, 15.8276156154, 15.8276404229, 15.82766523, 15.8276900367, 15.827714843, 15.8277396488, 15.8277644542, 15.8277892592, 15.8278140638, 15.8278388679, 15.8278636716, 15.8278884749, 15.8279132777, 15.8279380801, 15.8279628821, 15.8279876837, 15.8280124849, 15.8280372856, 15.8280620859, 15.8280868857, 15.8281116852, 15.8281364842, 15.8281612828, 15.8281860809, 15.8282108787, 15.828235676, 15.8282604729, 15.8282852693, 15.8283100654, 15.828334861, 15.8283596561, 15.8283844509, 15.8284092452, 15.8284340391, 15.8284588326, 15.8284836256, 15.8285084183, 15.8285332105, 15.8285580022, 15.8285827936, 15.8286075845, 15.828632375, 15.828657165, 15.8286819547, 15.8287067439, 15.8287315327, 15.828756321, 15.828781109, 15.8288058965, 15.8288306836, 15.8288554702, 15.8288802565, 15.8289050423, 15.8289298277, 15.8289546126, 15.8289793971, 15.8290041812, 15.8290289649, 15.8290537482, 15.829078531, 15.8291033134, 15.8291280954, 15.8291528769, 15.829177658, 15.8292024387, 15.829227219, 15.8292519989, 15.8292767783, 15.8293015573, 15.8293263358, 15.829351114, 15.8293758917, 15.829400669, 15.8294254459, 15.8294502223, 15.8294749983, 15.8294997739, 15.8295245491, 15.8295493238, 15.8295740981, 15.829598872, 15.8296236455, 15.8296484185, 15.8296731911, 15.8296979633, 15.8297227351, 15.8297475064, 15.8297722773, 15.8297970478, 15.8298218179, 15.8298465875, 15.8298713567, 15.8298961255, 15.8299208939, 15.8299456618, 15.8299704293, 15.8299951964, 15.8300199631, 15.8300447293, 15.8300694951, 15.8300942605, 15.8301190254, 15.83014379, 15.8301685541, 15.8301933178, 15.830218081, 15.8302428439, 15.8302676063, 15.8302923683, 15.8303171298, 15.8303418909, 15.8303666517, 15.8303914119, 15.8304161718, 15.8304409312, 15.8304656902, 15.8304904488, 15.830515207, 15.8305399647, 15.830564722, 15.8305894789, 15.8306142354, 15.8306389914, 15.830663747, 15.8306885022, 15.830713257, 15.8307380113, 15.8307627652, 15.8307875187, 15.8308122717, 15.8308370244, 15.8308617766, 15.8308865284, 15.8309112797, 15.8309360307, 15.8309607812, 15.8309855313, 15.8310102809, 15.8310350302, 15.831059779, 15.8310845274, 15.8311092754, 15.8311340229, 15.83115877, 15.8311835167, 15.831208263, 15.8312330088, 15.8312577542, 15.8312824992, 15.8313072438, 15.8313319879, 15.8313567317, 15.831381475, 15.8314062178, 15.8314309603, 15.8314557023, 15.8314804439, 15.8315051851, 15.8315299258, 15.8315546662, 15.8315794061, 15.8316041455, 15.8316288846, 15.8316536232, 15.8316783614, 15.8317030992, 15.8317278366, 15.8317525735, 15.83177731, 15.8318020461, 15.8318267818, 15.831851517, 15.8318762518, 15.8319009862, 15.8319257202, 15.8319504537, 15.8319751868, 15.8319999195, 15.8320246518, 15.8320493836, 15.832074115, 15.832098846, 15.8321235766, 15.8321483068, 15.8321730365, 15.8321977658, 15.8322224947, 15.8322472231, 15.8322719511, 15.8322966787, 15.8323214059, 15.8323461327, 15.832370859, 15.8323955849, 15.8324203104, 15.8324450355, 15.8324697601, 15.8324944843, 15.8325192081, 15.8325439315, 15.8325686544, 15.832593377, 15.8326180991, 15.8326428207, 15.832667542, 15.8326922628, 15.8327169832, 15.8327417032, 15.8327664227, 15.8327911419, 15.8328158606, 15.8328405789, 15.8328652967, 15.8328900142, 15.8329147312, 15.8329394478, 15.8329641639, 15.8329888797, 15.833013595, 15.8330383099, 15.8330630244, 15.8330877384, 15.833112452, 15.8331371653, 15.833161878, 15.8331865904, 15.8332113023, 15.8332360138, 15.8332607249, 15.8332854356, 15.8333101458, 15.8333348556, 15.833359565, 15.833384274, 15.8334089826, 15.8334336907, 15.8334583984, 15.8334831057, 15.8335078125, 15.8335325189, 15.833557225, 15.8335819305, 15.8336066357, 15.8336313404, 15.8336560448, 15.8336807487, 15.8337054521, 15.8337301552, 15.8337548578, 15.83377956, 15.8338042618, 15.8338289631, 15.8338536641, 15.8338783646, 15.8339030647, 15.8339277643, 15.8339524636, 15.8339771624, 15.8340018608, 15.8340265588, 15.8340512563, 15.8340759534, 15.8341006501, 15.8341253464, 15.8341500423, 15.8341747377, 15.8341994327, 15.8342241273, 15.8342488215, 15.8342735152, 15.8342982086, 15.8343229015, 15.8343475939, 15.834372286, 15.8343969776, 15.8344216688, 15.8344463596, 15.83447105, 15.8344957399, 15.8345204294, 15.8345451185, 15.8345698072, 15.8345944955, 15.8346191833, 15.8346438707, 15.8346685577, 15.8346932443, 15.8347179304, 15.8347426161, 15.8347673014, 15.8347919863, 15.8348166707, 15.8348413548, 15.8348660384, 15.8348907215, 15.8349154043, 15.8349400866, 15.8349647686, 15.8349894501, 15.8350141311, 15.8350388118, 15.835063492, 15.8350881718, 15.8351128512, 15.8351375302, 15.8351622087, 15.8351868868, 15.8352115645, 15.8352362418, 15.8352609186, 15.8352855951, 15.8353102711, 15.8353349466, 15.8353596218, 15.8353842965, 15.8354089709, 15.8354336448, 15.8354583182, 15.8354829913, 15.8355076639, 15.8355323361, 15.8355570079, 15.8355816793, 15.8356063502, 15.8356310207, 15.8356556908, 15.8356803605, 15.8357050298, 15.8357296986, 15.835754367, 15.835779035, 15.8358037026, 15.8358283697, 15.8358530364, 15.8358777027, 15.8359023686, 15.8359270341, 15.8359516991, 15.8359763637, 15.8360010279, 15.8360256917, 15.8360503551, 15.836075018, 15.8360996805, 15.8361243426, 15.8361490042, 15.8361736655, 15.8361983263, 15.8362229867, 15.8362476467, 15.8362723062, 15.8362969654, 15.8363216241, 15.8363462824, 15.8363709403, 15.8363955977, 15.8364202547, 15.8364449113, 15.8364695675, 15.8364942233, 15.8365188786, 15.8365435336, 15.8365681881, 15.8365928421, 15.8366174958, 15.836642149, 15.8366668018, 15.8366914542, 15.8367161062, 15.8367407578, 15.8367654089, 15.8367900596, 15.8368147099, 15.8368393597, 15.8368640092, 15.8368886582, 15.8369133068, 15.836937955, 15.8369626028, 15.8369872501, 15.837011897, 15.8370365435, 15.8370611896, 15.8370858352, 15.8371104805, 15.8371351253, 15.8371597697, 15.8371844137, 15.8372090572, 15.8372337003, 15.837258343, 15.8372829853, 15.8373076272, 15.8373322686, 15.8373569097, 15.8373815503, 15.8374061905, 15.8374308302, 15.8374554696, 15.8374801085, 15.837504747, 15.8375293851, 15.8375540227, 15.83757866, 15.8376032968, 15.8376279332, 15.8376525691, 15.8376772047, 15.8377018398, 15.8377264745, 15.8377511088, 15.8377757427, 15.8378003762, 15.8378250092, 15.8378496418, 15.837874274, 15.8378989058, 15.8379235371, 15.837948168, 15.8379727986, 15.8379974286, 15.8380220583, 15.8380466876, 15.8380713164, 15.8380959448, 15.8381205728, 15.8381452003, 15.8381698275, 15.8381944542, 15.8382190805, 15.8382437064, 15.8382683318, 15.8382929569, 15.8383175815, 15.8383422057, 15.8383668295, 15.8383914529, 15.8384160758, 15.8384406983, 15.8384653204, 15.8384899421, 15.8385145634, 15.8385391842, 15.8385638046, 15.8385884246, 15.8386130442, 15.8386376634, 15.8386622821, 15.8386869004, 15.8387115183, 15.8387361358, 15.8387607529, 15.8387853695, 15.8388099857, 15.8388346015, 15.8388592169, 15.8388838318, 15.8389084464, 15.8389330605, 15.8389576742, 15.8389822875, 15.8390069003, 15.8390315128, 15.8390561248, 15.8390807364, 15.8391053476, 15.8391299583, 15.8391545687, 15.8391791786, 15.8392037881, 15.8392283972, 15.8392530058, 15.8392776141, 15.8393022219, 15.8393268293, 15.8393514363, 15.8393760428, 15.839400649, 15.8394252547, 15.83944986, 15.8394744649, 15.8394990694, 15.8395236734, 15.839548277, 15.8395728802, 15.839597483, 15.8396220854, 15.8396466873, 15.8396712889, 15.83969589, 15.8397204907, 15.8397450909, 15.8397696908, 15.8397942902, 15.8398188892, 15.8398434878, 15.839868086, 15.8398926837, 15.8399172811, 15.839941878, 15.8399664745, 15.8399910705, 15.8400156662, 15.8400402614, 15.8400648562, 15.8400894506, 15.8401140446, 15.8401386382, 15.8401632313, 15.840187824, 15.8402124163, 15.8402370082, 15.8402615997, 15.8402861907, 15.8403107814, 15.8403353716, 15.8403599613, 15.8403845507, 15.8404091397, 15.8404337282, 15.8404583163, 15.840482904, 15.8405074913, 15.8405320781, 15.8405566645, 15.8405812506, 15.8406058362, 15.8406304213, 15.8406550061, 15.8406795904, 15.8407041743, 15.8407287578, 15.8407533409, 15.8407779236, 15.8408025058, 15.8408270877, 15.8408516691, 15.8408762501, 15.8409008306, 15.8409254108, 15.8409499905, 15.8409745698, 15.8409991487, 15.8410237272, 15.8410483052, 15.8410728829, 15.8410974601, 15.8411220369, 15.8411466133, 15.8411711892, 15.8411957648, 15.8412203399, 15.8412449146, 15.8412694889, 15.8412940628, 15.8413186362, 15.8413432093, 15.8413677819, 15.8413923541, 15.8414169259, 15.8414414972, 15.8414660682, 15.8414906387, 15.8415152088, 15.8415397785, 15.8415643477, 15.8415889166, 15.841613485, 15.841638053, 15.8416626206, 15.8416871878, 15.8417117545, 15.8417363209, 15.8417608868, 15.8417854523, 15.8418100174, 15.841834582, 15.8418591463, 15.8418837101, 15.8419082735, 15.8419328365, 15.8419573991, 15.8419819613, 15.842006523, 15.8420310843, 15.8420556452, 15.8420802057, 15.8421047658, 15.8421293254, 15.8421538846, 15.8421784434, 15.8422030018, 15.8422275598, 15.8422521174, 15.8422766745, 15.8423012312, 15.8423257875, 15.8423503434, 15.8423748989, 15.8423994539, 15.8424240086, 15.8424485628, 15.8424731166, 15.8424976699, 15.8425222229, 15.8425467754, 15.8425713276, 15.8425958793, 15.8426204306, 15.8426449814, 15.8426695319, 15.8426940819, 15.8427186315, 15.8427431807, 15.8427677295, 15.8427922779, 15.8428168258, 15.8428413733, 15.8428659205, 15.8428904672, 15.8429150134, 15.8429395593, 15.8429641047, 15.8429886497, 15.8430131944, 15.8430377385, 15.8430622823, 15.8430868257, 15.8431113686, 15.8431359111, 15.8431604532, 15.8431849949, 15.8432095362, 15.843234077, 15.8432586174, 15.8432831574, 15.843307697, 15.8433322362, 15.843356775, 15.8433813133, 15.8434058512, 15.8434303888, 15.8434549258, 15.8434794625, 15.8435039988, 15.8435285346, 15.84355307, 15.843577605, 15.8436021396, 15.8436266738, 15.8436512075, 15.8436757409, 15.8437002738, 15.8437248063, 15.8437493384, 15.84377387, 15.8437984013, 15.8438229321, 15.8438474625, 15.8438719925, 15.8438965221, 15.8439210513, 15.84394558, 15.8439701084, 15.8439946363, 15.8440191638, 15.8440436909, 15.8440682175, 15.8440927438, 15.8441172696, 15.844141795, 15.84416632, 15.8441908446, 15.8442153687, 15.8442398925, 15.8442644158, 15.8442889387, 15.8443134612, 15.8443379833, 15.8443625049, 15.8443870262, 15.844411547, 15.8444360674, 15.8444605874, 15.844485107, 15.8445096261, 15.8445341449, 15.8445586632, 15.8445831811, 15.8446076986, 15.8446322157, 15.8446567323, 15.8446812486, 15.8447057644, 15.8447302798, 15.8447547948, 15.8447793094, 15.8448038235, 15.8448283373, 15.8448528506, 15.8448773635, 15.844901876, 15.8449263881, 15.8449508998, 15.844975411, 15.8449999218, 15.8450244322, 15.8450489422, 15.8450734518, 15.845097961, 15.8451224697, 15.845146978, 15.845171486, 15.8451959935, 15.8452205005, 15.8452450072, 15.8452695134, 15.8452940193, 15.8453185247, 15.8453430297, 15.8453675343, 15.8453920384, 15.8454165422, 15.8454410455, 15.8454655484, 15.8454900509, 15.845514553, 15.8455390547, 15.845563556, 15.8455880568, 15.8456125572, 15.8456370572, 15.8456615568, 15.845686056, 15.8457105547, 15.8457350531, 15.845759551, 15.8457840485, 15.8458085456, 15.8458330423, 15.8458575385, 15.8458820344, 15.8459065298, 15.8459310248, 15.8459555194, 15.8459800136, 15.8460045074, 15.8460290007, 15.8460534937, 15.8460779862, 15.8461024783, 15.84612697, 15.8461514612, 15.8461759521, 15.8462004425, 15.8462249325, 15.8462494222, 15.8462739113, 15.8462984001, 15.8463228885, 15.8463473764, 15.846371864, 15.8463963511, 15.8464208378, 15.8464453241, 15.8464698099, 15.8464942954, 15.8465187804, 15.846543265, 15.8465677492, 15.846592233, 15.8466167164, 15.8466411994, 15.8466656819, 15.846690164, 15.8467146457, 15.846739127, 15.8467636079, 15.8467880884, 15.8468125684, 15.8468370481, 15.8468615273, 15.8468860061, 15.8469104845, 15.8469349625, 15.84695944, 15.8469839172, 15.8470083939, 15.8470328702, 15.8470573461, 15.8470818216, 15.8471062966, 15.8471307713, 15.8471552455, 15.8471797193, 15.8472041928, 15.8472286657, 15.8472531383, 15.8472776105, 15.8473020822, 15.8473265536, 15.8473510245, 15.847375495, 15.8473999651, 15.8474244347, 15.847448904, 15.8474733728, 15.8474978412, 15.8475223093, 15.8475467769, 15.847571244, 15.8475957108, 15.8476201771, 15.8476446431, 15.8476691086, 15.8476935737, 15.8477180384, 15.8477425027, 15.8477669665, 15.84779143, 15.847815893, 15.8478403556, 15.8478648178, 15.8478892796, 15.847913741, 15.8479382019, 15.8479626625, 15.8479871226, 15.8480115823, 15.8480360416, 15.8480605005, 15.848084959, 15.848109417, 15.8481338747, 15.8481583319, 15.8481827887, 15.8482072451, 15.8482317011, 15.8482561567, 15.8482806118, 15.8483050666, 15.8483295209, 15.8483539748, 15.8483784283, 15.8484028814, 15.848427334, 15.8484517863, 15.8484762381, 15.8485006895, 15.8485251405, 15.8485495911, 15.8485740413, 15.8485984911, 15.8486229404, 15.8486473894, 15.8486718379, 15.848696286, 15.8487207337, 15.848745181, 15.8487696278, 15.8487940743, 15.8488185203, 15.8488429659, 15.8488674111, 15.8488918559, 15.8489163003, 15.8489407443, 15.8489651878, 15.848989631, 15.8490140737, 15.849038516, 15.8490629579, 15.8490873994, 15.8491118404, 15.8491362811, 15.8491607213, 15.8491851612, 15.8492096006, 15.8492340396, 15.8492584781, 15.8492829163, 15.8493073541, 15.8493317914, 15.8493562283, 15.8493806648, 15.8494051009, 15.8494295366, 15.8494539719, 15.8494784068, 15.8495028412, 15.8495272752, 15.8495517088, 15.849576142, 15.8496005748, 15.8496250072, 15.8496494392, 15.8496738707, 15.8496983019, 15.8497227326, 15.8497471629, 15.8497715928, 15.8497960222, 15.8498204513, 15.84984488, 15.8498693082, 15.849893736, 15.8499181634, 15.8499425904, 15.849967017, 15.8499914432, 15.8500158689, 15.8500402943, 15.8500647192, 15.8500891437, 15.8501135678, 15.8501379915, 15.8501624148, 15.8501868376, 15.8502112601, 15.8502356821, 15.8502601037, 15.850284525, 15.8503089458, 15.8503333661, 15.8503577861, 15.8503822057, 15.8504066248, 15.8504310435, 15.8504554618, 15.8504798797, 15.8505042972, 15.8505287143, 15.850553131, 15.8505775472, 15.850601963, 15.8506263785, 15.8506507935, 15.8506752081, 15.8506996222, 15.850724036, 15.8507484494, 15.8507728623, 15.8507972748, 15.850821687, 15.8508460987, 15.85087051, 15.8508949208, 15.8509193313, 15.8509437413, 15.850968151, 15.8509925602, 15.851016969, 15.8510413774, 15.8510657854, 15.851090193, 15.8511146001, 15.8511390069, 15.8511634132, 15.8511878191, 15.8512122247, 15.8512366297, 15.8512610344, 15.8512854387, 15.8513098426, 15.851334246, 15.851358649, 15.8513830517, 15.8514074539, 15.8514318557, 15.851456257, 15.851480658, 15.8515050586, 15.8515294587, 15.8515538584, 15.8515782577, 15.8516026567, 15.8516270551, 15.8516514532, 15.8516758509, 15.8517002481, 15.851724645, 15.8517490414, 15.8517734374, 15.851797833, 15.8518222282, 15.851846623, 15.8518710174, 15.8518954113, 15.8519198049, 15.851944198, 15.8519685907, 15.851992983, 15.8520173749, 15.8520417664, 15.8520661575, 15.8520905481, 15.8521149384, 15.8521393282, 15.8521637176, 15.8521881066, 15.8522124952, 15.8522368834, 15.8522612712, 15.8522856585, 15.8523100455, 15.852334432, 15.8523588181, 15.8523832038, 15.8524075891, 15.852431974, 15.8524563585, 15.8524807425, 15.8525051262, 15.8525295094, 15.8525538922, 15.8525782746, 15.8526026566, 15.8526270382, 15.8526514194, 15.8526758002, 15.8527001805, 15.8527245604, 15.85274894, 15.8527733191, 15.8527976978, 15.8528220761, 15.852846454, 15.8528708314, 15.8528952085, 15.8529195851, 15.8529439614, 15.8529683372, 15.8529927126, 15.8530170876, 15.8530414622, 15.8530658363, 15.8530902101, 15.8531145834, 15.8531389564, 15.8531633289, 15.853187701, 15.8532120727, 15.853236444, 15.8532608149, 15.8532851853, 15.8533095554, 15.853333925, 15.8533582943, 15.8533826631, 15.8534070315, 15.8534313995, 15.8534557671, 15.8534801343, 15.853504501, 15.8535288674, 15.8535532333, 15.8535775988, 15.853601964, 15.8536263287, 15.8536506929, 15.8536750568, 15.8536994203, 15.8537237834, 15.853748146, 15.8537725082, 15.8537968701, 15.8538212315, 15.8538455925, 15.8538699531, 15.8538943132, 15.853918673, 15.8539430324, 15.8539673913, 15.8539917498, 15.854016108, 15.8540404657, 15.854064823, 15.8540891799, 15.8541135363, 15.8541378924, 15.8541622481, 15.8541866033, 15.8542109581, 15.8542353126, 15.8542596666, 15.8542840202, 15.8543083734, 15.8543327261, 15.8543570785, 15.8543814305, 15.854405782, 15.8544301331, 15.8544544839, 15.8544788342, 15.8545031841, 15.8545275336, 15.8545518826, 15.8545762313, 15.8546005796, 15.8546249274, 15.8546492748, 15.8546736219, 15.8546979685, 15.8547223147, 15.8547466605, 15.8547710058, 15.8547953508, 15.8548196954, 15.8548440395, 15.8548683833, 15.8548927266, 15.8549170695, 15.854941412, 15.8549657541, 15.8549900958, 15.8550144371, 15.8550387779, 15.8550631184, 15.8550874584, 15.855111798, 15.8551361373, 15.8551604761, 15.8551848145, 15.8552091525, 15.85523349, 15.8552578272, 15.8552821639, 15.8553065003, 15.8553308362, 15.8553551718, 15.8553795069, 15.8554038416, 15.8554281759, 15.8554525097, 15.8554768432, 15.8555011763, 15.8555255089, 15.8555498412, 15.855574173, 15.8555985044, 15.8556228354, 15.855647166, 15.8556714962, 15.855695826, 15.8557201554, 15.8557444843, 15.8557688129, 15.855793141, 15.8558174687, 15.855841796, 15.855866123, 15.8558904495, 15.8559147755, 15.8559391012, 15.8559634265, 15.8559877513, 15.8560120758, 15.8560363998, 15.8560607234, 15.8560850467, 15.8561093695, 15.8561336919, 15.8561580138, 15.8561823354, 15.8562066566, 15.8562309773, 15.8562552977, 15.8562796176, 15.8563039371, 15.8563282563, 15.856352575, 15.8563768933, 15.8564012111, 15.8564255286, 15.8564498457, 15.8564741623, 15.8564984786, 15.8565227944, 15.8565471099, 15.8565714249, 15.8565957395, 15.8566200537, 15.8566443675, 15.8566686808, 15.8566929938, 15.8567173064, 15.8567416185, 15.8567659303, 15.8567902416, 15.8568145525, 15.856838863, 15.8568631731, 15.8568874828, 15.8569117921, 15.856936101, 15.8569604094, 15.8569847175, 15.8570090251, 15.8570333323, 15.8570576392, 15.8570819456, 15.8571062516, 15.8571305572, 15.8571548624, 15.8571791671, 15.8572034715, 15.8572277755, 15.857252079, 15.8572763822, 15.8573006849, 15.8573249872, 15.8573492891, 15.8573735906, 15.8573978917, 15.8574221924, 15.8574464927, 15.8574707925, 15.857495092, 15.857519391, 15.8575436897, 15.8575679879, 15.8575922857, 15.8576165831, 15.8576408801, 15.8576651767, 15.8576894729, 15.8577137686, 15.857738064, 15.857762359, 15.8577866535, 15.8578109476, 15.8578352414, 15.8578595347, 15.8578838276, 15.8579081201, 15.8579324122, 15.8579567039, 15.8579809951, 15.858005286, 15.8580295764, 15.8580538665, 15.8580781561, 15.8581024453, 15.8581267342, 15.8581510226, 15.8581753106, 15.8581995982, 15.8582238853, 15.8582481721, 15.8582724585, 15.8582967444, 15.85832103, 15.8583453151, 15.8583695999, 15.8583938842, 15.8584181681, 15.8584424516, 15.8584667347, 15.8584910174, 15.8585152996, 15.8585395815, 15.858563863, 15.858588144, 15.8586124247, 15.8586367049, 15.8586609847, 15.8586852641, 15.8587095431, 15.8587338217, 15.8587580999, 15.8587823777, 15.8588066551, 15.8588309321, 15.8588552086, 15.8588794848, 15.8589037605, 15.8589280358, 15.8589523108, 15.8589765853, 15.8590008594, 15.8590251331, 15.8590494064, 15.8590736792, 15.8590979517, 15.8591222238, 15.8591464954, 15.8591707667, 15.8591950375, 15.8592193079, 15.859243578, 15.8592678476, 15.8592921168, 15.8593163856, 15.859340654, 15.8593649219, 15.8593891895, 15.8594134567, 15.8594377234, 15.8594619898, 15.8594862557, 15.8595105213, 15.8595347864, 15.8595590511, 15.8595833154, 15.8596075793, 15.8596318428, 15.8596561059, 15.8596803686, 15.8597046308, 15.8597288927, 15.8597531541, 15.8597774152, 15.8598016758, 15.859825936, 15.8598501959, 15.8598744553, 15.8598987143, 15.8599229729, 15.859947231, 15.8599714888, 15.8599957462, 15.8600200032, 15.8600442597, 15.8600685159, 15.8600927716, 15.8601170269, 15.8601412819, 15.8601655364, 15.8601897905, 15.8602140442, 15.8602382975, 15.8602625504, 15.8602868028, 15.8603110549, 15.8603353066, 15.8603595578, 15.8603838087, 15.8604080591, 15.8604323092, 15.8604565588, 15.860480808, 15.8605050568, 15.8605293052, 15.8605535532, 15.8605778008, 15.860602048, 15.8606262947, 15.8606505411, 15.8606747871, 15.8606990326, 15.8607232778, 15.8607475225, 15.8607717668, 15.8607960107, 15.8608202542, 15.8608444974, 15.86086874, 15.8608929823, 15.8609172242, 15.8609414657, 15.8609657068, 15.8609899474, 15.8610141877, 15.8610384275, 15.861062667, 15.861086906, 15.8611111446, 15.8611353828, 15.8611596206, 15.861183858, 15.861208095, 15.8612323316, 15.8612565678, 15.8612808036, 15.861305039, 15.8613292739, 15.8613535085, 15.8613777426, 15.8614019764, 15.8614262097, 15.8614504426, 15.8614746751, 15.8614989072, 15.8615231389, 15.8615473702, 15.8615716011, 15.8615958316, 15.8616200617, 15.8616442914, 15.8616685206, 15.8616927495, 15.8617169779, 15.861741206, 15.8617654336, 15.8617896608, 15.8618138876, 15.8618381141, 15.8618623401, 15.8618865657, 15.8619107909, 15.8619350156, 15.86195924, 15.861983464, 15.8620076876, 15.8620319107, 15.8620561335, 15.8620803558, 15.8621045778, 15.8621287993, 15.8621530204, 15.8621772411, 15.8622014614, 15.8622256814, 15.8622499009, 15.8622741199, 15.8622983386, 15.8623225569, 15.8623467748, 15.8623709923, 15.8623952093, 15.862419426, 15.8624436422, 15.8624678581, 15.8624920735, 15.8625162885, 15.8625405031, 15.8625647174, 15.8625889312, 15.8626131446, 15.8626373576, 15.8626615701, 15.8626857823, 15.8627099941, 15.8627342055, 15.8627584164, 15.862782627, 15.8628068372, 15.8628310469, 15.8628552562, 15.8628794652, 15.8629036737, 15.8629278818, 15.8629520895, 15.8629762968, 15.8630005037, 15.8630247102, 15.8630489163, 15.863073122, 15.8630973273, 15.8631215322, 15.8631457366, 15.8631699407, 15.8631941443, 15.8632183476, 15.8632425504, 15.8632667529, 15.8632909549, 15.8633151565, 15.8633393577, 15.8633635585, 15.8633877589, 15.8634119589, 15.8634361585, 15.8634603577, 15.8634845565, 15.8635087549, 15.8635329528, 15.8635571504, 15.8635813476, 15.8636055443, 15.8636297407, 15.8636539366, 15.8636781321, 15.8637023273, 15.863726522, 15.8637507163, 15.8637749102, 15.8637991037, 15.8638232968, 15.8638474895, 15.8638716818, 15.8638958737, 15.8639200652, 15.8639442562, 15.8639684469, 15.8639926372, 15.864016827, 15.8640410165, 15.8640652055, 15.8640893942, 15.8641135824, 15.8641377702, 15.8641619576, 15.8641861447, 15.8642103313, 15.8642345175, 15.8642587033, 15.8642828887, 15.8643070737, 15.8643312582, 15.8643554424, 15.8643796262, 15.8644038096, 15.8644279925, 15.8644521751, 15.8644763572, 15.864500539, 15.8645247203, 15.8645489012, 15.8645730818, 15.8645972619, 15.8646214416, 15.8646456209, 15.8646697998, 15.8646939783, 15.8647181564, 15.8647423341, 15.8647665114, 15.8647906883, 15.8648148648, 15.8648390409, 15.8648632165, 15.8648873918, 15.8649115666, 15.8649357411, 15.8649599151, 15.8649840888, 15.865008262, 15.8650324349, 15.8650566073, 15.8650807793, 15.8651049509, 15.8651291221, 15.8651532929, 15.8651774633, 15.8652016333, 15.8652258029, 15.8652499721, 15.8652741409, 15.8652983093, 15.8653224772, 15.8653466448, 15.865370812, 15.8653949787, 15.8654191451, 15.865443311, 15.8654674766, 15.8654916417, 15.8655158065, 15.8655399708, 15.8655641347, 15.8655882982, 15.8656124613, 15.8656366241, 15.8656607864, 15.8656849483, 15.8657091098, 15.8657332709, 15.8657574315, 15.8657815918, 15.8658057517, 15.8658299112, 15.8658540702, 15.8658782289, 15.8659023872, 15.865926545, 15.8659507025, 15.8659748595, 15.8659990162, 15.8660231724, 15.8660473282, 15.8660714837, 15.8660956387, 15.8661197933, 15.8661439475, 15.8661681013, 15.8661922547, 15.8662164077, 15.8662405603, 15.8662647125, 15.8662888643, 15.8663130157, 15.8663371667, 15.8663613173, 15.8663854674, 15.8664096172, 15.8664337666, 15.8664579155, 15.8664820641, 15.8665062122, 15.86653036, 15.8665545073, 15.8665786543, 15.8666028008, 15.8666269469, 15.8666510926, 15.866675238, 15.8666993829, 15.8667235274, 15.8667476715, 15.8667718152, 15.8667959585, 15.8668201014, 15.8668442439, 15.866868386, 15.8668925277, 15.866916669, 15.8669408098, 15.8669649503, 15.8669890904, 15.86701323, 15.8670373693, 15.8670615082, 15.8670856466, 15.8671097847, 15.8671339223, 15.8671580596, 15.8671821964, 15.8672063328, 15.8672304689, 15.8672546045, 15.8672787397, 15.8673028745, 15.8673270089, 15.867351143, 15.8673752766, 15.8673994098, 15.8674235426, 15.867447675, 15.867471807, 15.8674959386, 15.8675200697, 15.8675442005, 15.8675683309, 15.8675924609, 15.8676165904, 15.8676407196, 15.8676648484, 15.8676889767, 15.8677131047, 15.8677372323, 15.8677613594, 15.8677854862, 15.8678096125, 15.8678337384, 15.867857864, 15.8678819891, 15.8679061138, 15.8679302382, 15.8679543621, 15.8679784856, 15.8680026087, 15.8680267314, 15.8680508537, 15.8680749757, 15.8680990972, 15.8681232183, 15.868147339, 15.8681714592, 15.8681955791, 15.8682196986, 15.8682438177, 15.8682679364, 15.8682920547, 15.8683161725, 15.86834029, 15.8683644071, 15.8683885237, 15.86841264, 15.8684367559, 15.8684608713, 15.8684849864, 15.868509101, 15.8685332153, 15.8685573291, 15.8685814425, 15.8686055556, 15.8686296682, 15.8686537804, 15.8686778923, 15.8687020037, 15.8687261147, 15.8687502253, 15.8687743356, 15.8687984454, 15.8688225548, 15.8688466638, 15.8688707724, 15.8688948806, 15.8689189884, 15.8689430958, 15.8689672028, 15.8689913094, 15.8690154156, 15.8690395213, 15.8690636267, 15.8690877317, 15.8691118363, 15.8691359404, 15.8691600442, 15.8691841476, 15.8692082506, 15.8692323531, 15.8692564553, 15.869280557, 15.8693046584, 15.8693287593, 15.8693528599, 15.86937696, 15.8694010598, 15.8694251591, 15.8694492581, 15.8694733566, 15.8694974547, 15.8695215525, 15.8695456498, 15.8695697467, 15.8695938432, 15.8696179394, 15.8696420351, 15.8696661304, 15.8696902253, 15.8697143198, 15.8697384139, 15.8697625076, 15.8697866009, 15.8698106938, 15.8698347863, 15.8698588784, 15.8698829701, 15.8699070614, 15.8699311523, 15.8699552428, 15.8699793329, 15.8700034226, 15.8700275119, 15.8700516007, 15.8700756892, 15.8700997773, 15.870123865, 15.8701479522, 15.8701720391, 15.8701961256, 15.8702202116, 15.8702442973, 15.8702683826, 15.8702924674, 15.8703165519, 15.8703406359, 15.8703647196, 15.8703888028, 15.8704128857, 15.8704369681, 15.8704610502, 15.8704851318, 15.8705092131, 15.8705332939, 15.8705573743, 15.8705814544, 15.870605534, 15.8706296132, 15.8706536921, 15.8706777705, 15.8707018485, 15.8707259261, 15.8707500033, 15.8707740802, 15.8707981566, 15.8708222326, 15.8708463082, 15.8708703834, 15.8708944582, 15.8709185326, 15.8709426066, 15.8709666803, 15.8709907535, 15.8710148263, 15.8710388987, 15.8710629707, 15.8710870423, 15.8711111134, 15.8711351842, 15.8711592546, 15.8711833246, 15.8712073942, 15.8712314634, 15.8712555322, 15.8712796006, 15.8713036686, 15.8713277361, 15.8713518033, 15.8713758701, 15.8713999365, 15.8714240024, 15.871448068, 15.8714721332, 15.871496198, 15.8715202623, 15.8715443263, 15.8715683899, 15.871592453, 15.8716165158, 15.8716405782, 15.8716646401, 15.8716887017, 15.8717127628, 15.8717368236, 15.8717608839, 15.8717849439, 15.8718090035, 15.8718330626, 15.8718571214, 15.8718811797, 15.8719052377, 15.8719292952, 15.8719533524, 15.8719774091, 15.8720014654, 15.8720255214, 15.8720495769, 15.8720736321, 15.8720976868, 15.8721217411, 15.8721457951, 15.8721698486, 15.8721939018, 15.8722179545, 15.8722420068, 15.8722660588, 15.8722901103, 15.8723141614, 15.8723382121, 15.8723622625, 15.8723863124, 15.8724103619, 15.8724344111, 15.8724584598, 15.8724825081, 15.872506556, 15.8725306036, 15.8725546507, 15.8725786974, 15.8726027437, 15.8726267896, 15.8726508352, 15.8726748803, 15.872698925, 15.8727229693, 15.8727470132, 15.8727710567, 15.8727950998, 15.8728191426, 15.8728431849, 15.8728672268, 15.8728912683, 15.8729153094, 15.8729393501, 15.8729633904, 15.8729874303, 15.8730114698, 15.873035509, 15.8730595477, 15.873083586, 15.8731076239, 15.8731316614, 15.8731556985, 15.8731797352, 15.8732037715, 15.8732278074, 15.8732518429, 15.873275878, 15.8732999127, 15.873323947, 15.8733479809, 15.8733720144, 15.8733960475, 15.8734200802, 15.8734441125, 15.8734681444, 15.8734921759, 15.873516207, 15.8735402377, 15.873564268, 15.8735882979, 15.8736123274, 15.8736363565, 15.8736603852, 15.8736844135, 15.8737084414, 15.8737324689, 15.873756496, 15.8737805227, 15.873804549, 15.8738285749, 15.8738526004, 15.8738766255, 15.8739006502, 15.8739246745, 15.8739486984, 15.8739727219, 15.873996745, 15.8740207677, 15.87404479, 15.8740688119, 15.8740928333, 15.8741168544, 15.8741408751, 15.8741648954, 15.8741889153, 15.8742129348, 15.8742369539, 15.8742609726, 15.8742849909, 15.8743090088, 15.8743330263, 15.8743570434, 15.8743810601, 15.8744050764, 15.8744290923, 15.8744531078, 15.8744771229, 15.8745011376, 15.8745251519, 15.8745491658, 15.8745731793, 15.8745971924, 15.8746212051, 15.8746452174, 15.8746692293, 15.8746932408, 15.8747172519, 15.8747412626, 15.8747652729, 15.8747892828, 15.8748132923, 15.8748373014, 15.8748613101, 15.8748853184, 15.8749093263, 15.8749333338, 15.8749573409, 15.8749813477, 15.875005354, 15.8750293599, 15.8750533654, 15.8750773705, 15.8751013752, 15.8751253795, 15.8751493834, 15.8751733869, 15.87519739, 15.8752213928, 15.8752453951, 15.875269397, 15.8752933985, 15.8753173996, 15.8753414003, 15.8753654006, 15.8753894006, 15.8754134001, 15.8754373992, 15.8754613979, 15.8754853962, 15.8755093942, 15.8755333917, 15.8755573888, 15.8755813855, 15.8756053819, 15.8756293778, 15.8756533733, 15.8756773684, 15.8757013632, 15.8757253575, 15.8757493514, 15.875773345, 15.8757973381, 15.8758213308, 15.8758453232, 15.8758693151, 15.8758933066, 15.8759172978, 15.8759412885, 15.8759652788, 15.8759892688, 15.8760132583, 15.8760372475, 15.8760612362, 15.8760852245, 15.8761092125, 15.8761332, 15.8761571872, 15.8761811739, 15.8762051603, 15.8762291462, 15.8762531318, 15.876277117, 15.8763011017, 15.8763250861, 15.87634907, 15.8763730536, 15.8763970367, 15.8764210195, 15.8764450019, 15.8764689838, 15.8764929654, 15.8765169466, 15.8765409273, 15.8765649077, 15.8765888877, 15.8766128672, 15.8766368464, 15.8766608252, 15.8766848036, 15.8767087816, 15.8767327591, 15.8767567363, 15.8767807131, 15.8768046895, 15.8768286655, 15.8768526411, 15.8768766162, 15.876900591, 15.8769245654, 15.8769485394, 15.876972513, 15.8769964862, 15.877020459, 15.8770444314, 15.8770684034, 15.877092375, 15.8771163462, 15.877140317, 15.8771642875, 15.8771882575, 15.8772122271, 15.8772361963, 15.8772601651, 15.8772841335, 15.8773081015, 15.8773320692, 15.8773560364, 15.8773800032, 15.8774039696, 15.8774279357, 15.8774519013, 15.8774758665, 15.8774998314, 15.8775237958, 15.8775477598, 15.8775717235, 15.8775956867, 15.8776196496, 15.877643612, 15.8776675741, 15.8776915357, 15.877715497, 15.8777394578, 15.8777634183, 15.8777873783, 15.877811338, 15.8778352973, 15.8778592561, 15.8778832146, 15.8779071727, 15.8779311303, 15.8779550876, 15.8779790445, 15.878003001, 15.878026957, 15.8780509127, 15.878074868, 15.8780988229, 15.8781227774, 15.8781467315, 15.8781706852, 15.8781946385, 15.8782185914, 15.8782425439, 15.878266496, 15.8782904477, 15.878314399, 15.8783383499, 15.8783623004, 15.8783862505, 15.8784102002, 15.8784341496, 15.8784580985, 15.878482047, 15.8785059951, 15.8785299429, 15.8785538902, 15.8785778371, 15.8786017837, 15.8786257298, 15.8786496755, 15.8786736209, 15.8786975658, 15.8787215104, 15.8787454545, 15.8787693983, 15.8787933417, 15.8788172846, 15.8788412272, 15.8788651693, 15.8788891111, 15.8789130525, 15.8789369935, 15.878960934, 15.8789848742, 15.879008814, 15.8790327534, 15.8790566924, 15.879080631, 15.8791045691, 15.8791285069, 15.8791524443, 15.8791763813, 15.8792003179, 15.8792242542, 15.87924819, 15.8792721254, 15.8792960604, 15.879319995, 15.8793439292, 15.8793678631, 15.8793917965, 15.8794157295, 15.8794396621, 15.8794635944, 15.8794875262, 15.8795114577, 15.8795353887, 15.8795593194, 15.8795832496, 15.8796071795, 15.8796311089, 15.879655038, 15.8796789666, 15.8797028949, 15.8797268228, 15.8797507503, 15.8797746773, 15.879798604, 15.8798225303, 15.8798464562, 15.8798703817, 15.8798943068, 15.8799182315, 15.8799421558, 15.8799660797, 15.8799900032, 15.8800139263, 15.880037849, 15.8800617713, 15.8800856932, 15.8801096147, 15.8801335359, 15.8801574566, 15.8801813769, 15.8802052969, 15.8802292164, 15.8802531356, 15.8802770543, 15.8803009726, 15.8803248906, 15.8803488082, 15.8803727253, 15.8803966421, 15.8804205584, 15.8804444744, 15.88046839, 15.8804923052, 15.8805162199, 15.8805401343, 15.8805640483, 15.8805879619, 15.8806118751, 15.8806357879, 15.8806597003, 15.8806836123, 15.8807075239, 15.8807314351, 15.880755346, 15.8807792564, 15.8808031664, 15.880827076, 15.8808509853, 15.8808748941, 15.8808988025, 15.8809227106, 15.8809466182, 15.8809705255, 15.8809944323, 15.8810183388, 15.8810422449, 15.8810661505, 15.8810900558, 15.8811139607, 15.8811378652, 15.8811617692, 15.8811856729, 15.8812095762, 15.8812334791, 15.8812573816, 15.8812812837, 15.8813051854, 15.8813290867, 15.8813529876, 15.8813768882, 15.8814007883, 15.881424688, 15.8814485873, 15.8814724863, 15.8814963848, 15.881520283, 15.8815441807, 15.8815680781, 15.881591975, 15.8816158716, 15.8816397677, 15.8816636635, 15.8816875589, 15.8817114538, 15.8817353484, 15.8817592426, 15.8817831364, 15.8818070298, 15.8818309228, 15.8818548154, 15.8818787076, 15.8819025994, 15.8819264908, 15.8819503818, 15.8819742725, 15.8819981627, 15.8820220525, 15.882045942, 15.882069831, 15.8820937197, 15.8821176079, 15.8821414958, 15.8821653832, 15.8821892703, 15.8822131569, 15.8822370432, 15.8822609291, 15.8822848146, 15.8823086997, 15.8823325844, 15.8823564687, 15.8823803526, 15.8824042361, 15.8824281192, 15.8824520019, 15.8824758842, 15.8824997661, 15.8825236477, 15.8825475288, 15.8825714095, 15.8825952899, 15.8826191698, 15.8826430494, 15.8826669285, 15.8826908073, 15.8827146856, 15.8827385636, 15.8827624412, 15.8827863184, 15.8828101952, 15.8828340715, 15.8828579475, 15.8828818231, 15.8829056983, 15.8829295732, 15.8829534476, 15.8829773216, 15.8830011952, 15.8830250684, 15.8830489413, 15.8830728137, 15.8830966858, 15.8831205574, 15.8831444287, 15.8831682995, 15.88319217, 15.8832160401, 15.8832399097, 15.883263779, 15.8832876479, 15.8833115164, 15.8833353845, 15.8833592522, 15.8833831195, 15.8834069864, 15.8834308529, 15.883454719, 15.8834785847, 15.8835024501, 15.883526315, 15.8835501796, 15.8835740437, 15.8835979075, 15.8836217708, 15.8836456338, 15.8836694963, 15.8836933585, 15.8837172203, 15.8837410817, 15.8837649427, 15.8837888033, 15.8838126635, 15.8838365233, 15.8838603827, 15.8838842417, 15.8839081003, 15.8839319585, 15.8839558164, 15.8839796738, 15.8840035309, 15.8840273875, 15.8840512438, 15.8840750996, 15.8840989551, 15.8841228102, 15.8841466648, 15.8841705191, 15.884194373, 15.8842182265, 15.8842420796, 15.8842659323, 15.8842897846, 15.8843136365, 15.884337488, 15.8843613392, 15.8843851899, 15.8844090402, 15.8844328902, 15.8844567397, 15.8844805889, 15.8845044376, 15.884528286, 15.884552134, 15.8845759816, 15.8845998288, 15.8846236755, 15.8846475219, 15.8846713679, 15.8846952135, 15.8847190588, 15.8847429036, 15.884766748, 15.884790592, 15.8848144357, 15.8848382789, 15.8848621218, 15.8848859642, 15.8849098063, 15.8849336479, 15.8849574892, 15.8849813301, 15.8850051706, 15.8850290107, 15.8850528504, 15.8850766897, 15.8851005286, 15.8851243671, 15.8851482052, 15.885172043, 15.8851958803, 15.8852197172, 15.8852435538, 15.8852673899, 15.8852912257, 15.885315061, 15.885338896, 15.8853627306, 15.8853865648, 15.8854103986, 15.885434232, 15.885458065, 15.8854818976, 15.8855057298, 15.8855295616, 15.885553393, 15.8855772241, 15.8856010547, 15.885624885, 15.8856487148, 15.8856725443, 15.8856963733, 15.885720202, 15.8857440303, 15.8857678582, 15.8857916857, 15.8858155128, 15.8858393395, 15.8858631658, 15.8858869917, 15.8859108172, 15.8859346424, 15.8859584671, 15.8859822914, 15.8860061154, 15.8860299389, 15.8860537621, 15.8860775849, 15.8861014072, 15.8861252292, 15.8861490508, 15.886172872, 15.8861966928, 15.8862205132, 15.8862443332, 15.8862681529, 15.8862919721, 15.8863157909, 15.8863396094, 15.8863634274, 15.8863872451, 15.8864110624, 15.8864348792, 15.8864586957, 15.8864825118, 15.8865063275, 15.8865301428, 15.8865539577, 15.8865777722, 15.8866015863, 15.8866254, 15.8866492134, 15.8866730263, 15.8866968389, 15.886720651, 15.8867444628, 15.8867682741, 15.8867920851, 15.8868158957, 15.8868397059, 15.8868635157, 15.8868873251, 15.8869111341, 15.8869349427, 15.8869587509, 15.8869825588, 15.8870063662, 15.8870301732, 15.8870539799, 15.8870777862, 15.887101592, 15.8871253975, 15.8871492026, 15.8871730073, 15.8871968116, 15.8872206155, 15.887244419, 15.8872682221, 15.8872920248, 15.8873158272, 15.8873396291, 15.8873634306, 15.8873872318, 15.8874110326, 15.8874348329, 15.8874586329, 15.8874824325, 15.8875062317, 15.8875300305, 15.8875538289, 15.8875776269, 15.8876014245, 15.8876252217, 15.8876490186, 15.887672815, 15.8876966111, 15.8877204067, 15.887744202, 15.8877679969, 15.8877917913, 15.8878155854, 15.8878393791, 15.8878631724, 15.8878869653, 15.8879107579, 15.88793455, 15.8879583417, 15.8879821331, 15.888005924, 15.8880297146, 15.8880535047, 15.8880772945, 15.8881010839, 15.8881248729, 15.8881486615, 15.8881724497, 15.8881962375, 15.8882200249, 15.8882438119, 15.8882675986, 15.8882913848, 15.8883151706, 15.8883389561, 15.8883627412, 15.8883865258, 15.8884103101, 15.888434094, 15.8884578775, 15.8884816606, 15.8885054433, 15.8885292257, 15.8885530076, 15.8885767891, 15.8886005703, 15.888624351, 15.8886481314, 15.8886719113, 15.8886956909, 15.8887194701, 15.8887432489, 15.8887670273, 15.8887908053, 15.8888145829, 15.8888383602, 15.888862137, 15.8888859134, 15.8889096895, 15.8889334651, 15.8889572404, 15.8889810153, 15.8890047898, 15.8890285638, 15.8890523375, 15.8890761109, 15.8890998838, 15.8891236563, 15.8891474284, 15.8891712002, 15.8891949715, 15.8892187425, 15.889242513, 15.8892662832, 15.889290053, 15.8893138224, 15.8893375914, 15.88936136, 15.8893851282, 15.889408896, 15.8894326635, 15.8894564305, 15.8894801972, 15.8895039634, 15.8895277293, 15.8895514948, 15.8895752598, 15.8895990245, 15.8896227888, 15.8896465527, 15.8896703163, 15.8896940794, 15.8897178421, 15.8897416045, 15.8897653664, 15.889789128, 15.8898128891, 15.8898366499, 15.8898604103, 15.8898841703, 15.8899079299, 15.8899316891, 15.8899554479, 15.8899792064, 15.8900029644, 15.8900267221, 15.8900504793, 15.8900742362, 15.8900979927, 15.8901217487, 15.8901455044, 15.8901692597, 15.8901930146, 15.8902167692, 15.8902405233, 15.890264277, 15.8902880304, 15.8903117833, 15.8903355359, 15.8903592881, 15.8903830398, 15.8904067912, 15.8904305422, 15.8904542928, 15.890478043, 15.8905017929, 15.8905255423, 15.8905492914, 15.89057304, 15.8905967883, 15.8906205361, 15.8906442836, 15.8906680307, 15.8906917774, 15.8907155237, 15.8907392696, 15.8907630152, 15.8907867603, 15.890810505, 15.8908342494, 15.8908579934, 15.8908817369, 15.8909054801, 15.8909292229, 15.8909529653, 15.8909767073, 15.8910004489, 15.8910241901, 15.891047931, 15.8910716714, 15.8910954115, 15.8911191512, 15.8911428904, 15.8911666293, 15.8911903678, 15.8912141059, 15.8912378436, 15.8912615809, 15.8912853179, 15.8913090544, 15.8913327906, 15.8913565263, 15.8913802617, 15.8914039967, 15.8914277313, 15.8914514654, 15.8914751993, 15.8914989327, 15.8915226657, 15.8915463983, 15.8915701306, 15.8915938624, 15.8916175939, 15.891641325, 15.8916650557, 15.8916887859, 15.8917125159, 15.8917362454, 15.8917599745, 15.8917837032, 15.8918074316, 15.8918311595, 15.8918548871, 15.8918786142, 15.891902341, 15.8919260674, 15.8919497934, 15.891973519, 15.8919972442, 15.8920209691, 15.8920446935, 15.8920684176, 15.8920921412, 15.8921158645, 15.8921395874, 15.8921633099, 15.892187032, 15.8922107537, 15.892234475, 15.8922581959, 15.8922819165, 15.8923056366, 15.8923293564, 15.8923530757, 15.8923767947, 15.8924005133, 15.8924242315, 15.8924479493, 15.8924716667, 15.8924953838, 15.8925191004, 15.8925428166, 15.8925665325, 15.892590248, 15.8926139631, 15.8926376777, 15.892661392, 15.892685106, 15.8927088195, 15.8927325326, 15.8927562454, 15.8927799577, 15.8928036697, 15.8928273812, 15.8928510924, 15.8928748032, 15.8928985136, 15.8929222236, 15.8929459333, 15.8929696425, 15.8929933513, 15.8930170598, 15.8930407679, 15.8930644755, 15.8930881828, 15.8931118897, 15.8931355962, 15.8931593023, 15.8931830081, 15.8932067134, 15.8932304184, 15.8932541229, 15.8932778271, 15.8933015309, 15.8933252343, 15.8933489373, 15.8933726399, 15.8933963421, 15.8934200439, 15.8934437454, 15.8934674464, 15.8934911471, 15.8935148474, 15.8935385472, 15.8935622467, 15.8935859459, 15.8936096446, 15.8936333429, 15.8936570408, 15.8936807384, 15.8937044356, 15.8937281323, 15.8937518287, 15.8937755247, 15.8937992203, 15.8938229155, 15.8938466103, 15.8938703048, 15.8938939988, 15.8939176925, 15.8939413858, 15.8939650786, 15.8939887711, 15.8940124632, 15.8940361549, 15.8940598463, 15.8940835372, 15.8941072278, 15.8941309179, 15.8941546077, 15.8941782971, 15.8942019861, 15.8942256747, 15.8942493629, 15.8942730507, 15.8942967381, 15.8943204252, 15.8943441118, 15.8943677981, 15.894391484, 15.8944151695, 15.8944388546, 15.8944625393, 15.8944862236, 15.8945099075, 15.8945335911, 15.8945572742, 15.894580957, 15.8946046394, 15.8946283214, 15.894652003, 15.8946756842, 15.894699365, 15.8947230455, 15.8947467255, 15.8947704052, 15.8947940844, 15.8948177633, 15.8948414418, 15.8948651199, 15.8948887976, 15.8949124749, 15.8949361519, 15.8949598284, 15.8949835046, 15.8950071804, 15.8950308558, 15.8950545307, 15.8950782054, 15.8951018796, 15.8951255534, 15.8951492268, 15.8951728999, 15.8951965726, 15.8952202448, 15.8952439167, 15.8952675882, 15.8952912593, 15.8953149301, 15.8953386004, 15.8953622703, 15.8953859399, 15.8954096091, 15.8954332778, 15.8954569462, 15.8954806142, 15.8955042819, 15.8955279491, 15.8955516159, 15.8955752824, 15.8955989484, 15.8956226141, 15.8956462794, 15.8956699443, 15.8956936088, 15.8957172729, 15.8957409367, 15.8957646, 15.895788263, 15.8958119255, 15.8958355877, 15.8958592495, 15.8958829109, 15.8959065719, 15.8959302326, 15.8959538928, 15.8959775527, 15.8960012121, 15.8960248712, 15.8960485299, 15.8960721882, 15.8960958461, 15.8961195036, 15.8961431608, 15.8961668175, 15.8961904739, 15.8962141299, 15.8962377854, 15.8962614406, 15.8962850955, 15.8963087499, 15.8963324039, 15.8963560576, 15.8963797108, 15.8964033637, 15.8964270162, 15.8964506683, 15.89647432, 15.8964979713, 15.8965216222, 15.8965452728, 15.8965689229, 15.8965925727, 15.8966162221, 15.8966398711, 15.8966635197, 15.8966871679, 15.8967108157, 15.8967344632, 15.8967581102, 15.8967817569, 15.8968054032, 15.8968290491, 15.8968526946, 15.8968763397, 15.8968999844, 15.8969236288, 15.8969472727, 15.8969709163, 15.8969945595, 15.8970182023, 15.8970418447, 15.8970654867, 15.8970891283, 15.8971127696, 15.8971364104, 15.8971600509, 15.897183691, 15.8972073307, 15.89723097, 15.8972546089, 15.8972782474, 15.8973018856, 15.8973255233, 15.8973491607, 15.8973727977, 15.8973964343, 15.8974200705, 15.8974437063, 15.8974673417, 15.8974909768, 15.8975146114, 15.8975382457, 15.8975618796, 15.8975855131, 15.8976091462, 15.8976327789, 15.8976564113, 15.8976800432, 15.8977036748, 15.8977273059, 15.8977509367, 15.8977745671, 15.8977981971, 15.8978218268, 15.897845456, 15.8978690849, 15.8978927133, 15.8979163414, 15.8979399691, 15.8979635964, 15.8979872233, 15.8980108498, 15.898034476, 15.8980581017, 15.8980817271, 15.8981053521, 15.8981289767, 15.8981526009, 15.8981762247, 15.8981998482, 15.8982234712, 15.8982470939, 15.8982707162, 15.898294338, 15.8983179595, 15.8983415807, 15.8983652014, 15.8983888217, 15.8984124417, 15.8984360613, 15.8984596804, 15.8984832992, 15.8985069176, 15.8985305357, 15.8985541533, 15.8985777705, 15.8986013874, 15.8986250039, 15.89864862, 15.8986722357, 15.898695851, 15.8987194659, 15.8987430805, 15.8987666946, 15.8987903084, 15.8988139218, 15.8988375348, 15.8988611474, 15.8988847596, 15.8989083714, 15.8989319829, 15.8989555939, 15.8989792046, 15.8990028149, 15.8990264248, 15.8990500343, 15.8990736435, 15.8990972522, 15.8991208606, 15.8991444685, 15.8991680761, 15.8991916833, 15.8992152901, 15.8992388966, 15.8992625026, 15.8992861083, 15.8993097135, 15.8993333184, 15.8993569229, 15.899380527, 15.8994041308, 15.8994277341, 15.899451337, 15.8994749396, 15.8994985418, 15.8995221436, 15.899545745, 15.899569346, 15.8995929467, 15.8996165469, 15.8996401468, 15.8996637462, 15.8996873453, 15.899710944, 15.8997345424, 15.8997581403, 15.8997817378, 15.899805335, 15.8998289318, 15.8998525282, 15.8998761242, 15.8998997198, 15.899923315, 15.8999469099, 15.8999705043, 15.8999940984, 15.9000176921, 15.9000412854, 15.9000648783, 15.9000884708, 15.900112063, 15.9001356547, 15.9001592461, 15.9001828371, 15.9002064277, 15.9002300179, 15.9002536077, 15.9002771972, 15.9003007862, 15.9003243749, 15.9003479632, 15.9003715511, 15.9003951386, 15.9004187258, 15.9004423125, 15.9004658989, 15.9004894848, 15.9005130704, 15.9005366556, 15.9005602404, 15.9005838249, 15.9006074089, 15.9006309926, 15.9006545759, 15.9006781587, 15.9007017412, 15.9007253234, 15.9007489051, 15.9007724864, 15.9007960674, 15.900819648, 15.9008432282, 15.900866808, 15.9008903874, 15.9009139664, 15.9009375451, 15.9009611233, 15.9009847012, 15.9010082787, 15.9010318558, 15.9010554326, 15.9010790089, 15.9011025848, 15.9011261604, 15.9011497356, 15.9011733104, 15.9011968848, 15.9012204588, 15.9012440325, 15.9012676057, 15.9012911786, 15.9013147511, 15.9013383232, 15.9013618949, 15.9013854662, 15.9014090372, 15.9014326077, 15.9014561779, 15.9014797477, 15.9015033171, 15.9015268861, 15.9015504548, 15.901574023, 15.9015975909, 15.9016211583, 15.9016447254, 15.9016682922, 15.9016918585, 15.9017154244, 15.90173899, 15.9017625551, 15.9017861199, 15.9018096843, 15.9018332483, 15.901856812, 15.9018803752, 15.9019039381, 15.9019275006, 15.9019510626, 15.9019746243, 15.9019981857, 15.9020217466, 15.9020453072, 15.9020688673, 15.9020924271, 15.9021159865, 15.9021395455, 15.9021631041, 15.9021866624, 15.9022102202, 15.9022337777, 15.9022573348, 15.9022808915, 15.9023044478, 15.9023280038, 15.9023515593, 15.9023751145, 15.9023986693, 15.9024222237, 15.9024457777, 15.9024693313, 15.9024928845, 15.9025164374, 15.9025399899, 15.902563542, 15.9025870937, 15.902610645, 15.9026341959, 15.9026577465, 15.9026812967, 15.9027048464, 15.9027283958, 15.9027519449, 15.9027754935, 15.9027990417, 15.9028225896, 15.9028461371, 15.9028696842, 15.9028932309, 15.9029167772, 15.9029403231, 15.9029638687, 15.9029874139, 15.9030109586, 15.903034503, 15.9030580471, 15.9030815907, 15.9031051339, 15.9031286768, 15.9031522193, 15.9031757614, 15.9031993031, 15.9032228444, 15.9032463854, 15.9032699259, 15.9032934661, 15.9033170059, 15.9033405453, 15.9033640843, 15.903387623, 15.9034111612, 15.9034346991, 15.9034582366, 15.9034817737, 15.9035053104, 15.9035288468, 15.9035523827, 15.9035759183, 15.9035994535, 15.9036229883, 15.9036465227, 15.9036700567, 15.9036935904, 15.9037171236, 15.9037406565, 15.903764189, 15.9037877211, 15.9038112529, 15.9038347842, 15.9038583152, 15.9038818457, 15.9039053759, 15.9039289057, 15.9039524352, 15.9039759642, 15.9039994929, 15.9040230211, 15.904046549, 15.9040700765, 15.9040936037, 15.9041171304, 15.9041406568, 15.9041641827, 15.9041877083, 15.9042112335, 15.9042347584, 15.9042582828, 15.9042818069, 15.9043053305, 15.9043288538, 15.9043523767, 15.9043758992, 15.9043994214, 15.9044229431, 15.9044464645, 15.9044699855, 15.9044935061, 15.9045170263, 15.9045405462, 15.9045640656, 15.9045875847, 15.9046111034, 15.9046346217, 15.9046581396, 15.9046816571, 15.9047051743, 15.904728691, 15.9047522074, 15.9047757234, 15.9047992391, 15.9048227543, 15.9048462691, 15.9048697836, 15.9048932977, 15.9049168114, 15.9049403247, 15.9049638377, 15.9049873502, 15.9050108624, 15.9050343742, 15.9050578856, 15.9050813966, 15.9051049072, 15.9051284175, 15.9051519274, 15.9051754369, 15.905198946, 15.9052224547, 15.905245963, 15.905269471, 15.9052929786, 15.9053164857, 15.9053399926, 15.905363499, 15.905387005, 15.9054105107, 15.905434016, 15.9054575208, 15.9054810254, 15.9055045295, 15.9055280332, 15.9055515366, 15.9055750396, 15.9055985422, 15.9056220444, 15.9056455462, 15.9056690476, 15.9056925487, 15.9057160494, 15.9057395497, 15.9057630496, 15.9057865491, 15.9058100483, 15.9058335471, 15.9058570454, 15.9058805434, 15.9059040411, 15.9059275383, 15.9059510351, 15.9059745316, 15.9059980277, 15.9060215234, 15.9060450187, 15.9060685137, 15.9060920082, 15.9061155024, 15.9061389962, 15.9061624896, 15.9061859826, 15.9062094753, 15.9062329675, 15.9062564594, 15.9062799509, 15.906303442, 15.9063269328, 15.9063504231, 15.9063739131, 15.9063974027, 15.9064208919, 15.9064443807, 15.9064678691, 15.9064913572, 15.9065148448, 15.9065383321, 15.906561819, 15.9065853056, 15.9066087917, 15.9066322775, 15.9066557629, 15.9066792478, 15.9067027325, 15.9067262167, 15.9067497005, 15.906773184, 15.9067966671, 15.9068201498, 15.9068436321, 15.9068671141, 15.9068905956, 15.9069140768, 15.9069375576, 15.906961038, 15.906984518, 15.9070079977, 15.9070314769, 15.9070549558, 15.9070784343, 15.9071019124, 15.9071253901, 15.9071488675, 15.9071723445, 15.9071958211, 15.9072192973, 15.9072427731, 15.9072662485, 15.9072897236, 15.9073131983, 15.9073366726, 15.9073601465, 15.90738362, 15.9074070932, 15.9074305659, 15.9074540383, 15.9074775103, 15.9075009819, 15.9075244532, 15.907547924, 15.9075713945, 15.9075948646, 15.9076183343, 15.9076418037, 15.9076652726, 15.9076887412, 15.9077122094, 15.9077356772, 15.9077591446, 15.9077826116, 15.9078060783, 15.9078295446, 15.9078530105, 15.907876476, 15.9078999411, 15.9079234059, 15.9079468702, 15.9079703342, 15.9079937978, 15.9080172611, 15.9080407239, 15.9080641864, 15.9080876484, 15.9081111101, 15.9081345715, 15.9081580324, 15.908181493, 15.9082049531, 15.9082284129, 15.9082518723, 15.9082753314, 15.90829879, 15.9083222483, 15.9083457062, 15.9083691637, 15.9083926208, 15.9084160775, 15.9084395339, 15.9084629898, 15.9084864454, 15.9085099007, 15.9085333555, 15.9085568099, 15.908580264, 15.9086037177, 15.908627171, 15.9086506239, 15.9086740765, 15.9086975286, 15.9087209804, 15.9087444318, 15.9087678828, 15.9087913335, 15.9088147837, 15.9088382336, 15.9088616831, 15.9088851322, 15.908908581, 15.9089320293, 15.9089554773, 15.9089789249, 15.9090023721, 15.9090258189, 15.9090492654, 15.9090727114, 15.9090961571, 15.9091196024, 15.9091430473, 15.9091664919, 15.909189936, 15.9092133798, 15.9092368232, 15.9092602662, 15.9092837089, 15.9093071511, 15.909330593, 15.9093540345, 15.9093774756, 15.9094009163, 15.9094243567, 15.9094477967, 15.9094712363, 15.9094946755, 15.9095181143, 15.9095415527, 15.9095649908, 15.9095884285, 15.9096118658, 15.9096353027, 15.9096587393, 15.9096821754, 15.9097056112, 15.9097290466, 15.9097524816, 15.9097759163, 15.9097993505, 15.9098227844, 15.9098462179, 15.909869651, 15.9098930838, 15.9099165161, 15.9099399481, 15.9099633797, 15.9099868109, 15.9100102417, 15.9100336722, 15.9100571023, 15.910080532, 15.9101039613, 15.9101273902, 15.9101508188, 15.9101742469, 15.9101976747, 15.9102211021, 15.9102445292, 15.9102679558, 15.9102913821, 15.910314808, 15.9103382335, 15.9103616586, 15.9103850834, 15.9104085077, 15.9104319317, 15.9104553553, 15.9104787785, 15.9105022014, 15.9105256238, 15.9105490459, 15.9105724676, 15.910595889, 15.9106193099, 15.9106427305, 15.9106661507, 15.9106895705, 15.9107129899, 15.9107364089, 15.9107598276, 15.9107832459, 15.9108066638, 15.9108300813, 15.9108534984, 15.9108769152, 15.9109003316, 15.9109237476, 15.9109471632, 15.9109705785, 15.9109939933, 15.9110174078, 15.9110408219, 15.9110642356, 15.911087649, 15.9111110619, 15.9111344745, 15.9111578867, 15.9111812985, 15.91120471, 15.911228121, 15.9112515317, 15.911274942, 15.9112983519, 15.9113217615, 15.9113451707, 15.9113685794, 15.9113919878, 15.9114153959, 15.9114388035, 15.9114622108, 15.9114856177, 15.9115090242, 15.9115324303, 15.911555836, 15.9115792414, 15.9116026464, 15.911626051, 15.9116494552, 15.9116728591, 15.9116962625, 15.9117196656, 15.9117430683, 15.9117664707, 15.9117898726, 15.9118132742, 15.9118366754, 15.9118600762, 15.9118834766, 15.9119068767, 15.9119302763, 15.9119536756, 15.9119770745, 15.9120004731, 15.9120238712, 15.912047269, 15.9120706664, 15.9120940634, 15.91211746, 15.9121408563, 15.9121642522, 15.9121876477, 15.9122110428, 15.9122344375, 15.9122578319, 15.9122812259, 15.9123046195, 15.9123280127, 15.9123514055, 15.912374798, 15.9123981901, 15.9124215818, 15.9124449731, 15.912468364, 15.9124917546, 15.9125151448, 15.9125385346, 15.912561924, 15.9125853131, 15.9126087018, 15.91263209, 15.912655478, 15.9126788655, 15.9127022526, 15.9127256394, 15.9127490258, 15.9127724118, 15.9127957975, 15.9128191827, 15.9128425676, 15.9128659521, 15.9128893362, 15.91291272, 15.9129361033, 15.9129594863, 15.9129828689, 15.9130062512, 15.913029633, 15.9130530145, 15.9130763956, 15.9130997763, 15.9131231566, 15.9131465365, 15.9131699161, 15.9131932953, 15.9132166741, 15.9132400526, 15.9132634306, 15.9132868083, 15.9133101856, 15.9133335625, 15.9133569391, 15.9133803152, 15.913403691, 15.9134270664, 15.9134504415, 15.9134738161, 15.9134971904, 15.9135205643, 15.9135439378, 15.9135673109, 15.9135906837, 15.9136140561, 15.913637428, 15.9136607997, 15.9136841709, 15.9137075418, 15.9137309123, 15.9137542824, 15.9137776521, 15.9138010214, 15.9138243904, 15.913847759, 15.9138711272, 15.913894495, 15.9139178625, 15.9139412296, 15.9139645963, 15.9139879626, 15.9140113285, 15.9140346941, 15.9140580593, 15.9140814241, 15.9141047885, 15.9141281526, 15.9141515162, 15.9141748795, 15.9141982425, 15.914221605, 15.9142449671, 15.9142683289, 15.9142916903, 15.9143150514, 15.914338412, 15.9143617723, 15.9143851322, 15.9144084917, 15.9144318508, 15.9144552096, 15.9144785679, 15.9145019259, 15.9145252835, 15.9145486408, 15.9145719976, 15.9145953541, 15.9146187102, 15.914642066, 15.9146654213, 15.9146887763, 15.9147121309, 15.9147354851, 15.9147588389, 15.9147821924, 15.9148055455, 15.9148288982, 15.9148522505, 15.9148756025, 15.914898954, 15.9149223052, 15.914945656, 15.9149690065, 15.9149923565, 15.9150157062, 15.9150390555, 15.9150624044, 15.915085753, 15.9151091012, 15.915132449, 15.9151557964, 15.9151791434, 15.9152024901, 15.9152258363, 15.9152491822, 15.9152725278, 15.9152958729, 15.9153192177, 15.9153425621, 15.9153659061, 15.9153892497, 15.915412593, 15.9154359359, 15.9154592784, 15.9154826205, 15.9155059622, 15.9155293036, 15.9155526446, 15.9155759852, 15.9155993254, 15.9156226653, 15.9156460048, 15.9156693439, 15.9156926826, 15.915716021, 15.9157393589, 15.9157626965, 15.9157860337, 15.9158093706, 15.915832707, 15.9158560431, 15.9158793788, 15.9159027142, 15.9159260491, 15.9159493837, 15.9159727179, 15.9159960517, 15.9160193851, 15.9160427182, 15.9160660509, 15.9160893832, 15.9161127151, 15.9161360467, 15.9161593779, 15.9161827087, 15.9162060391, 15.9162293691, 15.9162526988, 15.9162760281, 15.916299357, 15.9163226856, 15.9163460137, 15.9163693415, 15.9163926689, 15.9164159959, 15.9164393226, 15.9164626489, 15.9164859748, 15.9165093003, 15.9165326254, 15.9165559502, 15.9165792746, 15.9166025986, 15.9166259222, 15.9166492455, 15.9166725683, 15.9166958909, 15.916719213, 15.9167425347, 15.9167658561, 15.9167891771, 15.9168124977, 15.916835818, 15.9168591378, 15.9168824573, 15.9169057764, 15.9169290951, 15.9169524135, 15.9169757315, 15.9169990491, 15.9170223663, 15.9170456832, 15.9170689996, 15.9170923157, 15.9171156314, 15.9171389468, 15.9171622617, 15.9171855763, 15.9172088905, 15.9172322044, 15.9172555178, 15.9172788309, 15.9173021436, 15.917325456, 15.9173487679, 15.9173720795, 15.9173953907, 15.9174187015, 15.9174420119, 15.917465322, 15.9174886317, 15.917511941, 15.9175352499, 15.9175585585, 15.9175818667, 15.9176051745, 15.9176284819, 15.917651789, 15.9176750957, 15.917698402, 15.9177217079, 15.9177450134, 15.9177683186, 15.9177916234, 15.9178149278, 15.9178382319, 15.9178615355, 15.9178848388, 15.9179081417, 15.9179314443, 15.9179547464, 15.9179780482, 15.9180013496, 15.9180246507, 15.9180479513, 15.9180712516, 15.9180945515, 15.918117851, 15.9181411502, 15.918164449, 15.9181877474, 15.9182110454, 15.918234343, 15.9182576403, 15.9182809372, 15.9183042337, 15.9183275298, 15.9183508256, 15.918374121, 15.918397416, 15.9184207106, 15.9184440049, 15.9184672988, 15.9184905923, 15.9185138854, 15.9185371782, 15.9185604706, 15.9185837626, 15.9186070542, 15.9186303454, 15.9186536363, 15.9186769268, 15.9187002169, 15.9187235067, 15.9187467961, 15.9187700851, 15.9187933737, 15.9188166619, 15.9188399498, 15.9188632373, 15.9188865244, 15.9189098111, 15.9189330975, 15.9189563835, 15.9189796691, 15.9190029543, 15.9190262392, 15.9190495237, 15.9190728078, 15.9190960915, 15.9191193749, 15.9191426579, 15.9191659405, 15.9191892227, 15.9192125045, 15.919235786, 15.9192590671, 15.9192823479, 15.9193056282, 15.9193289082, 15.9193521878, 15.919375467, 15.9193987459, 15.9194220243, 15.9194453024, 15.9194685802, 15.9194918575, 15.9195151345, 15.9195384111, 15.9195616873, 15.9195849631, 15.9196082386, 15.9196315137, 15.9196547884, 15.9196780628, 15.9197013367, 15.9197246103, 15.9197478835, 15.9197711564, 15.9197944288, 15.9198177009, 15.9198409726, 15.919864244, 15.9198875149, 15.9199107855, 15.9199340557, 15.9199573256, 15.919980595, 15.9200038641, 15.9200271328, 15.9200504012, 15.9200736691, 15.9200969367, 15.9201202039, 15.9201434708, 15.9201667372, 15.9201900033, 15.920213269, 15.9202365344, 15.9202597993, 15.9202830639, 15.9203063281, 15.920329592, 15.9203528554, 15.9203761185, 15.9203993812, 15.9204226435, 15.9204459055, 15.9204691671, 15.9204924283, 15.9205156891, 15.9205389496, 15.9205622097, 15.9205854694, 15.9206087287, 15.9206319877, 15.9206552463, 15.9206785045, 15.9207017623, 15.9207250198, 15.9207482768, 15.9207715335, 15.9207947899, 15.9208180458, 15.9208413014, 15.9208645566, 15.9208878115, 15.9209110659, 15.92093432, 15.9209575737, 15.9209808271, 15.92100408, 15.9210273326, 15.9210505848, 15.9210738366, 15.9210970881, 15.9211203392, 15.9211435899, 15.9211668402, 15.9211900902, 15.9212133398, 15.921236589, 15.9212598378, 15.9212830863, 15.9213063344, 15.9213295821, 15.9213528295, 15.9213760764, 15.921399323, 15.9214225692, 15.9214458151, 15.9214690605, 15.9214923056, 15.9215155503, 15.9215387947, 15.9215620387, 15.9215852822, 15.9216085255, 15.9216317683, 15.9216550108, 15.9216782529, 15.9217014946, 15.921724736, 15.9217479769, 15.9217712175, 15.9217944577, 15.9218176976, 15.9218409371, 15.9218641762, 15.9218874149, 15.9219106533, 15.9219338912, 15.9219571288, 15.9219803661, 15.9220036029, 15.9220268394, 15.9220500755, 15.9220733112, 15.9220965466, 15.9221197816, 15.9221430162, 15.9221662504, 15.9221894843, 15.9222127178, 15.9222359509, 15.9222591836, 15.922282416, 15.922305648, 15.9223288796, 15.9223521109, 15.9223753417, 15.9223985722, 15.9224218023, 15.9224450321, 15.9224682615, 15.9224914905, 15.9225147191, 15.9225379473, 15.9225611752, 15.9225844027, 15.9226076298, 15.9226308566, 15.922654083, 15.922677309, 15.9227005346, 15.9227237599, 15.9227469848, 15.9227702093, 15.9227934334, 15.9228166572, 15.9228398806, 15.9228631036, 15.9228863262, 15.9229095485, 15.9229327704, 15.9229559919, 15.9229792131, 15.9230024338, 15.9230256542, 15.9230488743, 15.9230720939, 15.9230953132, 15.9231185321, 15.9231417506, 15.9231649688, 15.9231881866, 15.923211404, 15.923234621, 15.9232578377, 15.923281054, 15.9233042699, 15.9233274854, 15.9233507006, 15.9233739154, 15.9233971298, 15.9234203439, 15.9234435575, 15.9234667708, 15.9234899838, 15.9235131963, 15.9235364085, 15.9235596203, 15.9235828317, 15.9236060428, 15.9236292535, 15.9236524638, 15.9236756737, 15.9236988833, 15.9237220925, 15.9237453013, 15.9237685098, 15.9237917178, 15.9238149255, 15.9238381329, 15.9238613398, 15.9238845464, 15.9239077526, 15.9239309584, 15.9239541639, 15.923977369, 15.9240005737, 15.924023778, 15.924046982, 15.9240701856, 15.9240933888, 15.9241165917, 15.9241397941, 15.9241629962, 15.924186198, 15.9242093993, 15.9242326003, 15.9242558009, 15.9242790011, 15.924302201, 15.9243254005, 15.9243485996, 15.9243717983, 15.9243949967, 15.9244181947, 15.9244413923, 15.9244645896, 15.9244877865, 15.924510983, 15.9245341791, 15.9245573749, 15.9245805703, 15.9246037653, 15.9246269599, 15.9246501542, 15.9246733481, 15.9246965416, 15.9247197347, 15.9247429275, 15.9247661199, 15.9247893119, 15.9248125036, 15.9248356949, 15.9248588858, 15.9248820763, 15.9249052665, 15.9249284563, 15.9249516457, 15.9249748348, 15.9249980234, 15.9250212117, 15.9250443997, 15.9250675872, 15.9250907744, 15.9251139612, 15.9251371477, 15.9251603337, 15.9251835194, 15.9252067048, 15.9252298897, 15.9252530743, 15.9252762585, 15.9252994423, 15.9253226258, 15.9253458089, 15.9253689916, 15.9253921739, 15.9254153559, 15.9254385375, 15.9254617187, 15.9254848996, 15.92550808, 15.9255312601, 15.9255544399, 15.9255776192, 15.9256007982, 15.9256239768, 15.9256471551, 15.925670333, 15.9256935105, 15.9257166876, 15.9257398643, 15.9257630407, 15.9257862167, 15.9258093924, 15.9258325676, 15.9258557425, 15.925878917, 15.9259020912, 15.925925265, 15.9259484384, 15.9259716114, 15.9259947841, 15.9260179564, 15.9260411283, 15.9260642998, 15.926087471, 15.9261106418, 15.9261338122, 15.9261569823, 15.9261801519, 15.9262033213, 15.9262264902, 15.9262496588, 15.926272827, 15.9262959948, 15.9263191622, 15.9263423293, 15.926365496, 15.9263886623, 15.9264118283, 15.9264349939, 15.9264581591, 15.926481324, 15.9265044884, 15.9265276525, 15.9265508163, 15.9265739796, 15.9265971426, 15.9266203052, 15.9266434675, 15.9266666293, 15.9266897908, 15.926712952, 15.9267361127, 15.9267592731, 15.9267824331, 15.9268055928, 15.926828752, 15.9268519109, 15.9268750695, 15.9268982276, 15.9269213854, 15.9269445428, 15.9269676998, 15.9269908565, 15.9270140128, 15.9270371687, 15.9270603243, 15.9270834795, 15.9271066343, 15.9271297887, 15.9271529428, 15.9271760965, 15.9271992498, 15.9272224027, 15.9272455553, 15.9272687075, 15.9272918593, 15.9273150108, 15.9273381619, 15.9273613126, 15.927384463, 15.9274076129, 15.9274307626, 15.9274539118, 15.9274770607, 15.9275002091, 15.9275233573, 15.927546505, 15.9275696524, 15.9275927994, 15.927615946, 15.9276390923, 15.9276622382, 15.9276853837, 15.9277085289, 15.9277316736, 15.927754818, 15.9277779621, 15.9278011057, 15.927824249, 15.927847392, 15.9278705345, 15.9278936767, 15.9279168185, 15.9279399599, 15.927963101, 15.9279862417, 15.928009382, 15.928032522, 15.9280556616, 15.9280788008, 15.9281019396, 15.9281250781, 15.9281482162, 15.9281713539, 15.9281944912, 15.9282176282, 15.9282407648, 15.9282639011, 15.928287037, 15.9283101725, 15.9283333076, 15.9283564423, 15.9283795767, 15.9284027107, 15.9284258444, 15.9284489777, 15.9284721106, 15.9284952431, 15.9285183753, 15.928541507, 15.9285646385, 15.9285877695, 15.9286109002, 15.9286340305, 15.9286571604, 15.92868029, 15.9287034192, 15.928726548, 15.9287496765, 15.9287728046, 15.9287959323, 15.9288190596, 15.9288421866, 15.9288653132, 15.9288884394, 15.9289115653, 15.9289346907, 15.9289578159, 15.9289809406, 15.929004065, 15.929027189, 15.9290503126, 15.9290734359, 15.9290965588, 15.9291196813, 15.9291428034, 15.9291659252, 15.9291890466, 15.9292121677, 15.9292352883, 15.9292584086, 15.9292815286, 15.9293046481, 15.9293277673, 15.9293508861, 15.9293740046, 15.9293971226, 15.9294202403, 15.9294433577, 15.9294664746, 15.9294895912, 15.9295127075, 15.9295358233, 15.9295589388, 15.9295820539, 15.9296051687, 15.929628283, 15.929651397, 15.9296745107, 15.9296976239, 15.9297207368, 15.9297438493, 15.9297669615, 15.9297900733, 15.9298131847, 15.9298362957, 15.9298594064, 15.9298825167, 15.9299056266, 15.9299287362, 15.9299518453, 15.9299749542, 15.9299980626, 15.9300211707, 15.9300442784, 15.9300673857, 15.9300904927, 15.9301135993, 15.9301367055, 15.9301598114, 15.9301829169, 15.930206022, 15.9302291267, 15.9302522311, 15.9302753351, 15.9302984387, 15.930321542, 15.9303446449, 15.9303677474, 15.9303908496, 15.9304139514, 15.9304370528, 15.9304601538, 15.9304832545, 15.9305063548, 15.9305294548, 15.9305525543, 15.9305756535, 15.9305987524, 15.9306218508, 15.9306449489, 15.9306680466, 15.930691144, 15.930714241, 15.9307373376, 15.9307604338, 15.9307835297, 15.9308066252, 15.9308297203, 15.9308528151, 15.9308759095, 15.9308990035, 15.9309220971, 15.9309451904, 15.9309682833, 15.9309913759, 15.931014468, 15.9310375598, 15.9310606513, 15.9310837423, 15.931106833, 15.9311299234, 15.9311530133, 15.9311761029, 15.9311991921, 15.931222281, 15.9312453694, 15.9312684575, 15.9312915453, 15.9313146326, 15.9313377196, 15.9313608063, 15.9313838925, 15.9314069784, 15.931430064, 15.9314531491, 15.9314762339, 15.9314993183, 15.9315224023, 15.931545486, 15.9315685693, 15.9315916523, 15.9316147348, 15.931637817, 15.9316608989, 15.9316839803, 15.9317070614, 15.9317301421, 15.9317532225, 15.9317763025, 15.9317993821, 15.9318224613, 15.9318455402, 15.9318686187, 15.9318916968, 15.9319147746, 15.931937852, 15.931960929, 15.9319840057, 15.932007082, 15.9320301579, 15.9320532334, 15.9320763086, 15.9320993834, 15.9321224579, 15.932145532, 15.9321686057, 15.932191679, 15.932214752, 15.9322378246, 15.9322608968, 15.9322839687, 15.9323070402, 15.9323301113, 15.932353182, 15.9323762524, 15.9323993224, 15.9324223921, 15.9324454614, 15.9324685303, 15.9324915988, 15.932514667, 15.9325377348, 15.9325608022, 15.9325838693, 15.932606936, 15.9326300023, 15.9326530683, 15.9326761339, 15.9326991991, 15.9327222639, 15.9327453284, 15.9327683925, 15.9327914563, 15.9328145197, 15.9328375827, 15.9328606453, 15.9328837076, 15.9329067695, 15.932929831, 15.9329528922, 15.932975953, 15.9329990134, 15.9330220735, 15.9330451332, 15.9330681925, 15.9330912515, 15.93311431, 15.9331373683, 15.9331604261, 15.9331834836, 15.9332065407, 15.9332295974, 15.9332526538, 15.9332757098, 15.9332987655, 15.9333218207, 15.9333448756, 15.9333679302, 15.9333909843, 15.9334140381, 15.9334370916, 15.9334601446, 15.9334831973, 15.9335062496, 15.9335293016, 15.9335523532, 15.9335754044, 15.9335984552, 15.9336215057, 15.9336445558, 15.9336676056, 15.933690655, 15.933713704, 15.9337367526, 15.9337598009, 15.9337828488, 15.9338058963, 15.9338289435, 15.9338519903, 15.9338750367, 15.9338980828, 15.9339211285, 15.9339441738, 15.9339672187, 15.9339902633, 15.9340133076, 15.9340363514, 15.9340593949, 15.934082438, 15.9341054808, 15.9341285232, 15.9341515652, 15.9341746068, 15.9341976481, 15.934220689, 15.9342437295, 15.9342667697, 15.9342898095, 15.934312849, 15.934335888, 15.9343589267, 15.9343819651, 15.934405003, 15.9344280406, 15.9344510779, 15.9344741147, 15.9344971512, 15.9345201873, 15.9345432231, 15.9345662585, 15.9345892935, 15.9346123282, 15.9346353625, 15.9346583964, 15.9346814299, 15.9347044631, 15.9347274959, 15.9347505284, 15.9347735605, 15.9347965922, 15.9348196235, 15.9348426545, 15.9348656851, 15.9348887154, 15.9349117452, 15.9349347747, 15.9349578039, 15.9349808327, 15.9350038611, 15.9350268891, 15.9350499168, 15.9350729441, 15.935095971, 15.9351189976, 15.9351420238, 15.9351650496, 15.9351880751, 15.9352111002, 15.9352341249, 15.9352571493, 15.9352801733, 15.9353031969, 15.9353262201, 15.935349243, 15.9353722656, 15.9353952877, 15.9354183095, 15.9354413309, 15.935464352, 15.9354873727, 15.935510393, 15.935533413, 15.9355564325, 15.9355794518, 15.9356024706, 15.9356254891, 15.9356485072, 15.935671525, 15.9356945423, 15.9357175594, 15.935740576, 15.9357635923, 15.9357866082, 15.9358096238, 15.9358326389, 15.9358556537, 15.9358786682, 15.9359016823, 15.935924696, 15.9359477093, 15.9359707223, 15.9359937349, 15.9360167472, 15.936039759, 15.9360627705, 15.9360857817, 15.9361087925, 15.9361318029, 15.9361548129, 15.9361778226, 15.9362008319, 15.9362238408, 15.9362468494, 15.9362698576, 15.9362928654, 15.9363158729, 15.93633888, 15.9363618868, 15.9363848931, 15.9364078991, 15.9364309048, 15.93645391, 15.9364769149, 15.9364999195, 15.9365229237, 15.9365459275, 15.9365689309, 15.936591934, 15.9366149367, 15.936637939, 15.936660941, 15.9366839426, 15.9367069438, 15.9367299447, 15.9367529452, 15.9367759453, 15.9367989451, 15.9368219445, 15.9368449435, 15.9368679422, 15.9368909405, 15.9369139384, 15.936936936, 15.9369599332, 15.93698293, 15.9370059265, 15.9370289226, 15.9370519184, 15.9370749137, 15.9370979087, 15.9371209034, 15.9371438976, 15.9371668915, 15.9371898851, 15.9372128783, 15.9372358711, 15.9372588635, 15.9372818556, 15.9373048473, 15.9373278386, 15.9373508296, 15.9373738202, 15.9373968104, 15.9374198003, 15.9374427898, 15.937465779, 15.9374887677, 15.9375117561, 15.9375347442, 15.9375577319, 15.9375807192, 15.9376037061, 15.9376266927, 15.9376496789, 15.9376726647, 15.9376956502, 15.9377186353, 15.9377416201, 15.9377646045, 15.9377875885, 15.9378105721, 15.9378335554, 15.9378565383, 15.9378795209, 15.937902503, 15.9379254849, 15.9379484663, 15.9379714474, 15.9379944281, 15.9380174085, 15.9380403885, 15.9380633681, 15.9380863473, 15.9381093262, 15.9381323047, 15.9381552829, 15.9381782607, 15.9382012381, 15.9382242152, 15.9382471919, 15.9382701682, 15.9382931442, 15.9383161197, 15.938339095, 15.9383620698, 15.9383850443, 15.9384080185, 15.9384309922, 15.9384539656, 15.9384769387, 15.9384999113, 15.9385228836, 15.9385458556, 15.9385688271, 15.9385917983, 15.9386147692, 15.9386377397, 15.9386607098, 15.9386836795, 15.9387066489, 15.9387296179, 15.9387525865, 15.9387755548, 15.9387985227, 15.9388214903, 15.9388444575, 15.9388674243, 15.9388903907, 15.9389133568, 15.9389363225, 15.9389592879, 15.9389822529, 15.9390052175, 15.9390281818, 15.9390511457, 15.9390741092, 15.9390970723, 15.9391200351, 15.9391429976, 15.9391659596, 15.9391889213, 15.9392118827, 15.9392348436, 15.9392578042, 15.9392807645, 15.9393037243, 15.9393266839, 15.939349643, 15.9393726018, 15.9393955602, 15.9394185182, 15.9394414759, 15.9394644332, 15.9394873902, 15.9395103468, 15.939533303, 15.9395562588, 15.9395792143, 15.9396021694, 15.9396251242, 15.9396480786, 15.9396710326, 15.9396939863, 15.9397169396, 15.9397398925, 15.9397628451, 15.9397857973, 15.9398087491, 15.9398317006, 15.9398546517, 15.9398776024, 15.9399005528, 15.9399235028, 15.9399464525, 15.9399694017, 15.9399923507, 15.9400152992, 15.9400382474, 15.9400611952, 15.9400841427, 15.9401070898, 15.9401300365, 15.9401529828, 15.9401759288, 15.9401988745, 15.9402218197, 15.9402447646, 15.9402677092, 15.9402906533, 15.9403135971, 15.9403365406, 15.9403594837, 15.9403824264, 15.9404053687, 15.9404283107, 15.9404512523, 15.9404741936, 15.9404971345, 15.940520075, 15.9405430151, 15.9405659549, 15.9405888944, 15.9406118334, 15.9406347721, 15.9406577105, 15.9406806484, 15.940703586, 15.9407265233, 15.9407494601, 15.9407723967, 15.9407953328, 15.9408182686, 15.940841204, 15.940864139, 15.9408870737, 15.9409100081, 15.940932942, 15.9409558756, 15.9409788088, 15.9410017417, 15.9410246742, 15.9410476063, 15.9410705381, 15.9410934695, 15.9411164006, 15.9411393312, 15.9411622616, 15.9411851915, 15.9412081211, 15.9412310503, 15.9412539792, 15.9412769076, 15.9412998358, 15.9413227635, 15.9413456909, 15.941368618, 15.9413915446, 15.9414144709, 15.9414373969, 15.9414603225, 15.9414832477, 15.9415061725, 15.941529097, 15.9415520211, 15.9415749449, 15.9415978683, 15.9416207913, 15.941643714, 15.9416666363, 15.9416895582, 15.9417124798, 15.941735401, 15.9417583218, 15.9417812423, 15.9418041624, 15.9418270821, 15.9418500015, 15.9418729205, 15.9418958392, 15.9419187575, 15.9419416754, 15.941964593, 15.9419875102, 15.942010427, 15.9420333435, 15.9420562596, 15.9420791753, 15.9421020907, 15.9421250057, 15.9421479204, 15.9421708347, 15.9421937486, 15.9422166622, 15.9422395754, 15.9422624882, 15.9422854007, 15.9423083128, 15.9423312245, 15.9423541359, 15.9423770469, 15.9423999575, 15.9424228678, 15.9424457778, 15.9424686873, 15.9424915965, 15.9425145053, 15.9425374138, 15.9425603219, 15.9425832296, 15.942606137, 15.942629044, 15.9426519507, 15.942674857, 15.9426977629, 15.9427206684, 15.9427435736, 15.9427664785, 15.9427893829, 15.942812287, 15.9428351908, 15.9428580941, 15.9428809972, 15.9429038998, 15.9429268021, 15.942949704, 15.9429726056, 15.9429955068, 15.9430184076, 15.9430413081, 15.9430642082, 15.9430871079, 15.9431100073, 15.9431329063, 15.9431558049, 15.9431787032, 15.9432016011, 15.9432244987, 15.9432473959, 15.9432702927, 15.9432931892, 15.9433160853, 15.943338981, 15.9433618764, 15.9433847714, 15.9434076661, 15.9434305604, 15.9434534543, 15.9434763479, 15.9434992411, 15.9435221339, 15.9435450264, 15.9435679185, 15.9435908102, 15.9436137016, 15.9436365926, 15.9436594833, 15.9436823736, 15.9437052635, 15.9437281531, 15.9437510423, 15.9437739311, 15.9437968196, 15.9438197077, 15.9438425955, 15.9438654829, 15.9438883699, 15.9439112565, 15.9439341428, 15.9439570288, 15.9439799143, 15.9440027996, 15.9440256844, 15.9440485689, 15.944071453, 15.9440943368, 15.9441172202, 15.9441401032, 15.9441629859, 15.9441858682, 15.9442087501, 15.9442316317, 15.9442545129, 15.9442773938, 15.9443002742, 15.9443231544, 15.9443460341, 15.9443689135, 15.9443917926, 15.9444146713, 15.9444375496, 15.9444604275, 15.9444833051, 15.9445061823, 15.9445290592, 15.9445519357, 15.9445748118, 15.9445976876, 15.944620563, 15.9446434381, 15.9446663128, 15.9446891871, 15.944712061, 15.9447349346, 15.9447578079, 15.9447806808, 15.9448035533, 15.9448264254, 15.9448492972, 15.9448721686, 15.9448950397, 15.9449179104, 15.9449407807, 15.9449636507, 15.9449865203, 15.9450093895, 15.9450322584, 15.9450551269, 15.9450779951, 15.9451008629, 15.9451237303, 15.9451465974, 15.9451694641, 15.9451923305, 15.9452151965, 15.9452380621, 15.9452609273, 15.9452837922, 15.9453066568, 15.9453295209, 15.9453523848, 15.9453752482, 15.9453981113, 15.945420974, 15.9454438364, 15.9454666984, 15.94548956, 15.9455124213, 15.9455352822, 15.9455581428, 15.9455810029, 15.9456038628, 15.9456267222, 15.9456495813, 15.9456724401, 15.9456952984, 15.9457181565, 15.9457410141, 15.9457638714, 15.9457867283, 15.9458095849, 15.9458324411, 15.9458552969, 15.9458781524, 15.9459010075, 15.9459238623, 15.9459467167, 15.9459695707, 15.9459924244, 15.9460152777, 15.9460381307, 15.9460609832, 15.9460838355, 15.9461066873, 15.9461295388, 15.9461523899, 15.9461752407, 15.9461980911, 15.9462209412, 15.9462437909, 15.9462666402, 15.9462894892, 15.9463123378, 15.946335186, 15.9463580339, 15.9463808814, 15.9464037286, 15.9464265754, 15.9464494218, 15.9464722679, 15.9464951136, 15.9465179589, 15.9465408039, 15.9465636485, 15.9465864928, 15.9466093367, 15.9466321802, 15.9466550234, 15.9466778662, 15.9467007087, 15.9467235507, 15.9467463925, 15.9467692338, 15.9467920749, 15.9468149155, 15.9468377558, 15.9468605957, 15.9468834353, 15.9469062745, 15.9469291133, 15.9469519518, 15.9469747899, 15.9469976276, 15.947020465, 15.9470433021, 15.9470661387, 15.947088975, 15.947111811, 15.9471346466, 15.9471574818, 15.9471803166, 15.9472031511, 15.9472259853, 15.947248819, 15.9472716525, 15.9472944855, 15.9473173182, 15.9473401505, 15.9473629825, 15.9473858141, 15.9474086454, 15.9474314762, 15.9474543068, 15.9474771369, 15.9474999667, 15.9475227962, 15.9475456252, 15.947568454, 15.9475912823, 15.9476141103, 15.947636938, 15.9476597652, 15.9476825921, 15.9477054187, 15.9477282449, 15.9477510707, 15.9477738962, 15.9477967213, 15.947819546, 15.9478423704, 15.9478651944, 15.9478880181, 15.9479108414, 15.9479336643, 15.9479564869, 15.9479793091, 15.948002131, 15.9480249525, 15.9480477736, 15.9480705944, 15.9480934148, 15.9481162348, 15.9481390545, 15.9481618739, 15.9481846928, 15.9482075114, 15.9482303297, 15.9482531476, 15.9482759651, 15.9482987823, 15.9483215991, 15.9483444155, 15.9483672316, 15.9483900473, 15.9484128627, 15.9484356777, 15.9484584923, 15.9484813066, 15.9485041205, 15.9485269341, 15.9485497472, 15.9485725601, 15.9485953726, 15.9486181847, 15.9486409964, 15.9486638078, 15.9486866188, 15.9487094295, 15.9487322398, 15.9487550498, 15.9487778594, 15.9488006686, 15.9488234775, 15.948846286, 15.9488690941, 15.9488919019, 15.9489147093, 15.9489375164, 15.9489603231, 15.9489831294, 15.9490059354, 15.949028741, 15.9490515463, 15.9490743512, 15.9490971557, 15.9491199599, 15.9491427637, 15.9491655672, 15.9491883703, 15.949211173, 15.9492339754, 15.9492567774, 15.9492795791, 15.9493023804, 15.9493251813, 15.9493479819, 15.9493707821, 15.949393582, 15.9494163815, 15.9494391806, 15.9494619794, 15.9494847778, 15.9495075758, 15.9495303735, 15.9495531709, 15.9495759678, 15.9495987644, 15.9496215607, 15.9496443566, 15.9496671521, 15.9496899473, 15.9497127421, 15.9497355366, 15.9497583306, 15.9497811244, 15.9498039177, 15.9498267108, 15.9498495034, 15.9498722957, 15.9498950876, 15.9499178792, 15.9499406704, 15.9499634613, 15.9499862518, 15.9500090419, 15.9500318317, 15.9500546211, 15.9500774101, 15.9501001988, 15.9501229871, 15.9501457751, 15.9501685627, 15.95019135, 15.9502141369, 15.9502369234, 15.9502597096, 15.9502824954, 15.9503052808, 15.9503280659, 15.9503508507, 15.950373635, 15.950396419, 15.9504192027, 15.950441986, 15.9504647689, 15.9504875515, 15.9505103337, 15.9505331156, 15.950555897, 15.9505786782, 15.950601459, 15.9506242394, 15.9506470194, 15.9506697991, 15.9506925785, 15.9507153574, 15.950738136, 15.9507609143, 15.9507836922, 15.9508064697, 15.9508292469, 15.9508520237, 15.9508748002, 15.9508975763, 15.950920352, 15.9509431274, 15.9509659024, 15.9509886771, 15.9510114514, 15.9510342253, 15.9510569989, 15.9510797721, 15.951102545, 15.9511253175, 15.9511480896, 15.9511708614, 15.9511936329, 15.9512164039, 15.9512391746, 15.951261945, 15.951284715, 15.9513074846, 15.9513302539, 15.9513530228, 15.9513757913, 15.9513985595, 15.9514213273, 15.9514440948, 15.9514668619, 15.9514896287, 15.9515123951, 15.9515351611, 15.9515579268, 15.9515806921, 15.9516034571, 15.9516262217, 15.9516489859, 15.9516717498, 15.9516945133, 15.9517172765, 15.9517400393, 15.9517628017, 15.9517855638, 15.9518083255, 15.9518310869, 15.9518538479, 15.9518766085, 15.9518993688, 15.9519221288, 15.9519448883, 15.9519676475, 15.9519904064, 15.9520131649, 15.952035923, 15.9520586808, 15.9520814382, 15.9521041953, 15.952126952, 15.9521497083, 15.9521724643, 15.9521952199, 15.9522179752, 15.9522407301, 15.9522634846, 15.9522862388, 15.9523089926, 15.9523317461, 15.9523544992, 15.952377252, 15.9524000044, 15.9524227564, 15.9524455081, 15.9524682594, 15.9524910103, 15.9525137609, 15.9525365112, 15.9525592611, 15.9525820106, 15.9526047597, 15.9526275085, 15.952650257, 15.9526730051, 15.9526957528, 15.9527185002, 15.9527412472, 15.9527639938, 15.9527867401, 15.9528094861, 15.9528322316, 15.9528549769, 15.9528777217, 15.9529004662, 15.9529232104, 15.9529459541, 15.9529686976, 15.9529914406, 15.9530141833, 15.9530369257, 15.9530596677, 15.9530824093, 15.9531051506, 15.9531278915, 15.9531506321, 15.9531733723, 15.9531961121, 15.9532188516, 15.9532415907, 15.9532643295, 15.9532870679, 15.9533098059, 15.9533325436, 15.9533552809, 15.9533780179, 15.9534007545, 15.9534234908, 15.9534462267, 15.9534689622, 15.9534916974, 15.9535144322, 15.9535371667, 15.9535599008, 15.9535826346, 15.9536053679, 15.953628101, 15.9536508336, 15.953673566, 15.9536962979, 15.9537190295, 15.9537417608, 15.9537644916, 15.9537872222, 15.9538099523, 15.9538326821, 15.9538554116, 15.9538781407, 15.9539008694, 15.9539235978, 15.9539463258, 15.9539690535, 15.9539917808, 15.9540145077, 15.9540372343, 15.9540599605, 15.9540826864, 15.9541054119, 15.9541281371, 15.9541508619, 15.9541735863, 15.9541963104, 15.9542190341, 15.9542417575, 15.9542644805, 15.9542872031, 15.9543099254, 15.9543326474, 15.9543553689, 15.9543780901, 15.954400811, 15.9544235315, 15.9544462516, 15.9544689714, 15.9544916909, 15.9545144099, 15.9545371286, 15.954559847, 15.954582565, 15.9546052826, 15.9546279999, 15.9546507168, 15.9546734334, 15.9546961496, 15.9547188655, 15.954741581, 15.9547642961, 15.9547870109, 15.9548097253, 15.9548324394, 15.9548551531, 15.9548778664, 15.9549005794, 15.954923292, 15.9549460043, 15.9549687162, 15.9549914278, 15.955014139, 15.9550368498, 15.9550595603, 15.9550822704, 15.9551049802, 15.9551276896, 15.9551503987, 15.9551731074, 15.9551958157, 15.9552185237, 15.9552412313, 15.9552639386, 15.9552866455, 15.9553093521, 15.9553320583, 15.9553547641, 15.9553774696, 15.9554001747, 15.9554228795, 15.9554455839, 15.955468288, 15.9554909917, 15.955513695, 15.955536398, 15.9555591006, 15.9555818029, 15.9556045048, 15.9556272063, 15.9556499075, 15.9556726084, 15.9556953088, 15.955718009, 15.9557407087, 15.9557634081, 15.9557861072, 15.9558088059, 15.9558315042, 15.9558542022, 15.9558768998, 15.9558995971, 15.955922294, 15.9559449906, 15.9559676868, 15.9559903826, 15.9560130781, 15.9560357732, 15.956058468, 15.9560811624, 15.9561038564, 15.9561265501, 15.9561492435, 15.9561719365, 15.9561946291, 15.9562173214, 15.9562400133, 15.9562627048, 15.956285396, 15.9563080869, 15.9563307774, 15.9563534675, 15.9563761572, 15.9563988467, 15.9564215357, 15.9564442244, 15.9564669128, 15.9564896008, 15.9565122884, 15.9565349757, 15.9565576626, 15.9565803491, 15.9566030353, 15.9566257212, 15.9566484067, 15.9566710918, 15.9566937766, 15.956716461, 15.9567391451, 15.9567618288, 15.9567845121, 15.9568071951, 15.9568298777, 15.95685256, 15.9568752419, 15.9568979235, 15.9569206047, 15.9569432856, 15.9569659661, 15.9569886462, 15.957011326, 15.9570340054, 15.9570566845, 15.9570793632, 15.9571020416, 15.9571247196, 15.9571473972, 15.9571700745, 15.9571927514, 15.957215428, 15.9572381042, 15.9572607801, 15.9572834556, 15.9573061307, 15.9573288055, 15.95735148, 15.957374154, 15.9573968278, 15.9574195011, 15.9574421742, 15.9574648468, 15.9574875191, 15.957510191, 15.9575328626, 15.9575555339, 15.9575782047, 15.9576008753, 15.9576235454, 15.9576462152, 15.9576688847, 15.9576915538, 15.9577142225, 15.9577368909, 15.9577595589, 15.9577822266, 15.9578048939, 15.9578275608, 15.9578502274, 15.9578728937, 15.9578955596, 15.9579182251, 15.9579408903, 15.9579635551, 15.9579862196, 15.9580088837, 15.9580315474, 15.9580542108, 15.9580768738, 15.9580995365, 15.9581221988, 15.9581448608, 15.9581675224, 15.9581901837, 15.9582128446, 15.9582355051, 15.9582581653, 15.9582808252, 15.9583034846, 15.9583261438, 15.9583488025, 15.9583714609, 15.958394119, 15.9584167767, 15.958439434, 15.958462091, 15.9584847477, 15.9585074039, 15.9585300599, 15.9585527154, 15.9585753706, 15.9585980255, 15.95862068, 15.9586433341, 15.9586659879, 15.9586886413, 15.9587112944, 15.9587339471, 15.9587565995, 15.9587792515, 15.9588019032, 15.9588245545, 15.9588472054, 15.958869856, 15.9588925062, 15.9589151561, 15.9589378056, 15.9589604548, 15.9589831036, 15.959005752, 15.9590284001, 15.9590510479, 15.9590736953, 15.9590963423, 15.959118989, 15.9591416353, 15.9591642812, 15.9591869268, 15.9592095721, 15.959232217, 15.9592548615, 15.9592775057, 15.9593001496, 15.959322793, 15.9593454361, 15.9593680789, 15.9593907213, 15.9594133634, 15.9594360051, 15.9594586464, 15.9594812874, 15.959503928, 15.9595265683, 15.9595492082, 15.9595718478, 15.959594487, 15.9596171259, 15.9596397644, 15.9596624025, 15.9596850403, 15.9597076777, 15.9597303148, 15.9597529515, 15.9597755879, 15.9597982239, 15.9598208596, 15.9598434949, 15.9598661298, 15.9598887644, 15.9599113987, 15.9599340325, 15.9599566661, 15.9599792992, 15.9600019321, 15.9600245645, 15.9600471966, 15.9600698284, 15.9600924598, 15.9601150908, 15.9601377215, 15.9601603519, 15.9601829818, 15.9602056115, 15.9602282407, 15.9602508696, 15.9602734982, 15.9602961264, 15.9603187542, 15.9603413817, 15.9603640089, 15.9603866357, 15.9604092621, 15.9604318882, 15.9604545139, 15.9604771392, 15.9604997643, 15.9605223889, 15.9605450132, 15.9605676372, 15.9605902607, 15.960612884, 15.9606355069, 15.9606581294, 15.9606807516, 15.9607033734, 15.9607259948, 15.9607486159, 15.9607712367, 15.9607938571, 15.9608164771, 15.9608390968, 15.9608617162, 15.9608843351, 15.9609069538, 15.960929572, 15.96095219, 15.9609748075, 15.9609974247, 15.9610200416, 15.9610426581, 15.9610652742, 15.96108789, 15.9611105054, 15.9611331205, 15.9611557352, 15.9611783496, 15.9612009636, 15.9612235773, 15.9612461906, 15.9612688035, 15.9612914161, 15.9613140284, 15.9613366403, 15.9613592518, 15.961381863, 15.9614044738, 15.9614270843, 15.9614496944, 15.9614723042, 15.9614949136, 15.9615175226, 15.9615401313, 15.9615627397, 15.9615853477, 15.9616079553, 15.9616305626, 15.9616531695, 15.9616757761, 15.9616983823, 15.9617209882, 15.9617435937, 15.9617661988, 15.9617888036, 15.9618114081, 15.9618340122, 15.9618566159, 15.9618792193, 15.9619018223, 15.961924425, 15.9619470273, 15.9619696293, 15.9619922309, 15.9620148322, 15.9620374331, 15.9620600337, 15.9620826339, 15.9621052337, 15.9621278332, 15.9621504323, 15.9621730311, 15.9621956295, 15.9622182276, 15.9622408253, 15.9622634227, 15.9622860197, 15.9623086164, 15.9623312127, 15.9623538086, 15.9623764042, 15.9623989995, 15.9624215944, 15.9624441889, 15.9624667831, 15.9624893769, 15.9625119704, 15.9625345635, 15.9625571563, 15.9625797487, 15.9626023408, 15.9626249325, 15.9626475238, 15.9626701148, 15.9626927055, 15.9627152957, 15.9627378857, 15.9627604753, 15.9627830645, 15.9628056534, 15.9628282419, 15.9628508301, 15.9628734179, 15.9628960053, 15.9629185924, 15.9629411792, 15.9629637656, 15.9629863516, 15.9630089373, 15.9630315227, 15.9630541077, 15.9630766923, 15.9630992766, 15.9631218605, 15.9631444441, 15.9631670273, 15.9631896102, 15.9632121927, 15.9632347748, 15.9632573566, 15.9632799381, 15.9633025192, 15.9633250999, 15.9633476803, 15.9633702604, 15.96339284, 15.9634154194, 15.9634379983, 15.963460577, 15.9634831552, 15.9635057332, 15.9635283107, 15.9635508879, 15.9635734648, 15.9635960413, 15.9636186174, 15.9636411932, 15.9636637687, 15.9636863438, 15.9637089185, 15.9637314929, 15.9637540669, 15.9637766406, 15.9637992139, 15.9638217869, 15.9638443595, 15.9638669318, 15.9638895037, 15.9639120753, 15.9639346465, 15.9639572173, 15.9639797878, 15.964002358, 15.9640249278, 15.9640474972, 15.9640700663, 15.964092635, 15.9641152034, 15.9641377714, 15.9641603391, 15.9641829064, 15.9642054734, 15.96422804, 15.9642506063, 15.9642731722, 15.9642957377, 15.9643183029, 15.9643408678, 15.9643634323, 15.9643859964, 15.9644085602, 15.9644311237, 15.9644536868, 15.9644762495, 15.9644988119, 15.9645213739, 15.9645439356, 15.9645664969, 15.9645890579, 15.9646116185, 15.9646341787, 15.9646567387, 15.9646792982, 15.9647018574, 15.9647244163, 15.9647469748, 15.9647695329, 15.9647920907, 15.9648146482, 15.9648372052, 15.964859762, 15.9648823184, 15.9649048744, 15.9649274301, 15.9649499854, 15.9649725404, 15.964995095, 15.9650176493, 15.9650402032, 15.9650627567, 15.96508531, 15.9651078628, 15.9651304153, 15.9651529675, 15.9651755193, 15.9651980707, 15.9652206218, 15.9652431726, 15.9652657229, 15.965288273, 15.9653108227, 15.965333372, 15.965355921, 15.9653784696, 15.9654010179, 15.9654235658, 15.9654461134, 15.9654686606, 15.9654912075, 15.965513754, 15.9655363001, 15.9655588459, 15.9655813914, 15.9656039365, 15.9656264813, 15.9656490257, 15.9656715697, 15.9656941134, 15.9657166567, 15.9657391997, 15.9657617424, 15.9657842847, 15.9658068266, 15.9658293682, 15.9658519094, 15.9658744503, 15.9658969908, 15.965919531, 15.9659420708, 15.9659646103, 15.9659871494, 15.9660096882, 15.9660322266, 15.9660547646, 15.9660773023, 15.9660998397, 15.9661223767, 15.9661449133, 15.9661674496, 15.9661899856, 15.9662125212, 15.9662350564, 15.9662575913, 15.9662801259, 15.9663026601, 15.9663251939, 15.9663477274, 15.9663702605, 15.9663927933, 15.9664153257, 15.9664378578, 15.9664603895, 15.9664829209, 15.9665054519, 15.9665279826, 15.9665505129, 15.9665730429, 15.9665955725, 15.9666181017, 15.9666406306, 15.9666631592, 15.9666856874, 15.9667082153, 15.9667307428, 15.9667532699, 15.9667757967, 15.9667983232, 15.9668208493, 15.966843375, 15.9668659004, 15.9668884254, 15.9669109501, 15.9669334745, 15.9669559984, 15.9669785221, 15.9670010454, 15.9670235683, 15.9670460909, 15.9670686131, 15.967091135, 15.9671136565, 15.9671361777, 15.9671586985, 15.967181219, 15.9672037391, 15.9672262588, 15.9672487783, 15.9672712973, 15.967293816, 15.9673163344, 15.9673388524, 15.9673613701, 15.9673838874, 15.9674064043, 15.9674289209, 15.9674514372, 15.9674739531, 15.9674964686, 15.9675189838, 15.9675414987, 15.9675640132, 15.9675865273, 15.9676090411, 15.9676315545, 15.9676540676, 15.9676765804, 15.9676990927, 15.9677216048, 15.9677441165, 15.9677666278, 15.9677891388, 15.9678116494, 15.9678341597, 15.9678566696, 15.9678791792, 15.9679016884, 15.9679241973, 15.9679467058, 15.967969214, 15.9679917218, 15.9680142293, 15.9680367364, 15.9680592432, 15.9680817496, 15.9681042556, 15.9681267614, 15.9681492667, 15.9681717717, 15.9681942764, 15.9682167807, 15.9682392847, 15.9682617883, 15.9682842915, 15.9683067944, 15.968329297, 15.9683517992, 15.968374301, 15.9683968025, 15.9684193037, 15.9684418045, 15.9684643049, 15.968486805, 15.9685093048, 15.9685318042, 15.9685543032, 15.9685768019, 15.9685993003, 15.9686217983, 15.9686442959, 15.9686667932, 15.9686892901, 15.9687117867, 15.968734283, 15.9687567789, 15.9687792744, 15.9688017696, 15.9688242644, 15.9688467589, 15.968869253, 15.9688917468, 15.9689142402, 15.9689367333, 15.9689592261, 15.9689817184, 15.9690042105, 15.9690267022, 15.9690491935, 15.9690716845, 15.9690941751, 15.9691166654, 15.9691391553, 15.9691616449, 15.9691841341, 15.969206623, 15.9692291115, 15.9692515997, 15.9692740875, 15.969296575, 15.9693190621, 15.9693415489, 15.9693640353, 15.9693865213, 15.9694090071, 15.9694314924, 15.9694539775, 15.9694764621, 15.9694989464, 15.9695214304, 15.969543914, 15.9695663973, 15.9695888802, 15.9696113628, 15.969633845, 15.9696563269, 15.9696788084, 15.9697012895, 15.9697237704, 15.9697462508, 15.9697687309, 15.9697912107, 15.9698136901, 15.9698361692, 15.9698586479, 15.9698811262, 15.9699036043, 15.9699260819, 15.9699485592, 15.9699710362, 15.9699935128, 15.9700159891, 15.970038465, 15.9700609405, 15.9700834158, 15.9701058906, 15.9701283651, 15.9701508393, 15.9701733131, 15.9701957866, 15.9702182597, 15.9702407324, 15.9702632048, 15.9702856769, 15.9703081486, 15.97033062, 15.970353091, 15.9703755616, 15.9703980319, 15.9704205019, 15.9704429715, 15.9704654408, 15.9704879097, 15.9705103783, 15.9705328465, 15.9705553143, 15.9705777818, 15.970600249, 15.9706227158, 15.9706451823, 15.9706676484, 15.9706901141, 15.9707125796, 15.9707350446, 15.9707575093, 15.9707799737, 15.9708024377, 15.9708249014, 15.9708473647, 15.9708698276, 15.9708922903, 15.9709147525, 15.9709372144, 15.970959676, 15.9709821372, 15.9710045981, 15.9710270586, 15.9710495188, 15.9710719786, 15.971094438, 15.9711168972, 15.9711393559, 15.9711618143, 15.9711842724, 15.9712067301, 15.9712291875, 15.9712516445, 15.9712741012, 15.9712965575, 15.9713190135, 15.9713414691, 15.9713639244, 15.9713863793, 15.9714088339, 15.9714312881, 15.971453742, 15.9714761955, 15.9714986487, 15.9715211015, 15.971543554, 15.9715660061, 15.9715884579, 15.9716109093, 15.9716333604, 15.9716558111, 15.9716782615, 15.9717007115, 15.9717231612, 15.9717456105, 15.9717680595, 15.9717905081, 15.9718129564, 15.9718354043, 15.9718578519, 15.9718802992, 15.971902746, 15.9719251926, 15.9719476388, 15.9719700846, 15.9719925301, 15.9720149752, 15.97203742, 15.9720598645, 15.9720823086, 15.9721047523, 15.9721271957, 15.9721496387, 15.9721720814, 15.9721945238, 15.9722169658, 15.9722394074, 15.9722618487, 15.9722842897, 15.9723067303, 15.9723291705, 15.9723516104, 15.97237405, 15.9723964892, 15.9724189281, 15.9724413666, 15.9724638047, 15.9724862425, 15.97250868, 15.9725311171, 15.9725535539, 15.9725759903, 15.9725984263, 15.9726208621, 15.9726432974, 15.9726657324, 15.9726881671, 15.9727106014, 15.9727330354, 15.972755469, 15.9727779023, 15.9728003352, 15.9728227678, 15.9728452, 15.9728676319, 15.9728900634, 15.9729124946, 15.9729349254, 15.9729573559, 15.9729797861, 15.9730022159, 15.9730246453, 15.9730470744, 15.9730695031, 15.9730919315, 15.9731143596, 15.9731367872, 15.9731592146, 15.9731816416, 15.9732040682, 15.9732264945, 15.9732489205, 15.9732713461, 15.9732937713, 15.9733161962, 15.9733386208, 15.973361045, 15.9733834689, 15.9734058924, 15.9734283155, 15.9734507384, 15.9734731608, 15.9734955829, 15.9735180047, 15.9735404261, 15.9735628472, 15.9735852679, 15.9736076883, 15.9736301083, 15.973652528, 15.9736749473, 15.9736973663, 15.9737197849, 15.9737422032, 15.9737646212, 15.9737870387, 15.973809456, 15.9738318729, 15.9738542894, 15.9738767056, 15.9738991215, 15.973921537, 15.9739439521, 15.9739663669, 15.9739887814, 15.9740111955, 15.9740336092, 15.9740560226, 15.9740784357, 15.9741008484, 15.9741232608, 15.9741456728, 15.9741680844, 15.9741904958, 15.9742129067, 15.9742353174, 15.9742577276, 15.9742801376, 15.9743025471, 15.9743249564, 15.9743473652, 15.9743697738, 15.974392182, 15.9744145898, 15.9744369973, 15.9744594044, 15.9744818112, 15.9745042177, 15.9745266238, 15.9745490295, 15.9745714349, 15.97459384, 15.9746162447, 15.974638649, 15.9746610531, 15.9746834567, 15.97470586, 15.974728263, 15.9747506656, 15.9747730679, 15.9747954698, 15.9748178714, 15.9748402726, 15.9748626735, 15.974885074, 15.9749074742, 15.974929874, 15.9749522735, 15.9749746727, 15.9749970715, 15.9750194699, 15.975041868, 15.9750642658, 15.9750866632, 15.9751090602, 15.9751314569, 15.9751538533, 15.9751762493, 15.975198645, 15.9752210403, 15.9752434352, 15.9752658299, 15.9752882241, 15.9753106181, 15.9753330116, 15.9753554049, 15.9753777977, 15.9754001903, 15.9754225825, 15.9754449743, 15.9754673658, 15.9754897569, 15.9755121477, 15.9755345382, 15.9755569283, 15.975579318, 15.9756017075, 15.9756240965, 15.9756464852, 15.9756688736, 15.9756912616, 15.9757136493, 15.9757360366, 15.9757584236, 15.9757808102, 15.9758031965, 15.9758255824, 15.975847968, 15.9758703532, 15.9758927381, 15.9759151227, 15.9759375069, 15.9759598907, 15.9759822742, 15.9760046574, 15.9760270402, 15.9760494226, 15.9760718048, 15.9760941865, 15.9761165679, 15.976138949, 15.9761613297, 15.9761837101, 15.9762060901, 15.9762284698, 15.9762508492, 15.9762732282, 15.9762956068, 15.9763179851, 15.976340363, 15.9763627406, 15.9763851179, 15.9764074948, 15.9764298714, 15.9764522476, 15.9764746234, 15.9764969989, 15.9765193741, 15.9765417489, 15.9765641234, 15.9765864975, 15.9766088713, 15.9766312448, 15.9766536179, 15.9766759906, 15.976698363, 15.976720735, 15.9767431067, 15.9767654781, 15.9767878491, 15.9768102198, 15.9768325901, 15.97685496, 15.9768773297, 15.9768996989, 15.9769220679, 15.9769444364, 15.9769668047, 15.9769891725, 15.9770115401, 15.9770339073, 15.9770562741, 15.9770786406, 15.9771010068, 15.9771233726, 15.977145738, 15.9771681031, 15.9771904679, 15.9772128323, 15.9772351964, 15.9772575601, 15.9772799235, 15.9773022865, 15.9773246492, 15.9773470116, 15.9773693735, 15.9773917352, 15.9774140965, 15.9774364574, 15.977458818, 15.9774811783, 15.9775035382, 15.9775258978, 15.977548257, 15.9775706159, 15.9775929744, 15.9776153326, 15.9776376904, 15.9776600479, 15.977682405, 15.9777047618, 15.9777271183, 15.9777494744, 15.9777718301, 15.9777941855, 15.9778165406, 15.9778388953, 15.9778612497, 15.9778836037, 15.9779059574, 15.9779283107, 15.9779506637, 15.9779730163, 15.9779953686, 15.9780177206, 15.9780400722, 15.9780624234, 15.9780847743, 15.9781071249, 15.9781294751, 15.9781518249, 15.9781741745, 15.9781965236, 15.9782188725, 15.978241221, 15.9782635691, 15.9782859169, 15.9783082643, 15.9783306114, 15.9783529582, 15.9783753046, 15.9783976506, 15.9784199963, 15.9784423417, 15.9784646867, 15.9784870314, 15.9785093757, 15.9785317197, 15.9785540633, 15.9785764066, 15.9785987496, 15.9786210922, 15.9786434344, 15.9786657763, 15.9786881179, 15.9787104591, 15.9787328, 15.9787551405, 15.9787774807, 15.9787998205, 15.97882216, 15.9788444991, 15.9788668379, 15.9788891764, 15.9789115145, 15.9789338522, 15.9789561896, 15.9789785267, 15.9790008634, 15.9790231998, 15.9790455358, 15.9790678715, 15.9790902068, 15.9791125418, 15.9791348764, 15.9791572107, 15.9791795447, 15.9792018783, 15.9792242116, 15.9792465445, 15.979268877, 15.9792912093, 15.9793135411, 15.9793358727, 15.9793582039, 15.9793805347, 15.9794028652, 15.9794251953, 15.9794475251, 15.9794698546, 15.9794921837, 15.9795145125, 15.9795368409, 15.979559169, 15.9795814967, 15.9796038241, 15.9796261511, 15.9796484778, 15.9796708042, 15.9796931302, 15.9797154558, 15.9797377811, 15.9797601061, 15.9797824307, 15.979804755, 15.9798270789, 15.9798494025, 15.9798717257, 15.9798940486, 15.9799163712, 15.9799386934, 15.9799610152, 15.9799833367, 15.9800056579, 15.9800279787, 15.9800502992, 15.9800726193, 15.9800949391, 15.9801172585, 15.9801395776, 15.9801618964, 15.9801842148, 15.9802065328, 15.9802288506, 15.9802511679, 15.9802734849, 15.9802958016, 15.980318118, 15.9803404339, 15.9803627496, 15.9803850649, 15.9804073798, 15.9804296944, 15.9804520087, 15.9804743226, 15.9804966362, 15.9805189494, 15.9805412623, 15.9805635748, 15.980585887, 15.9806081989, 15.9806305104, 15.9806528215, 15.9806751323, 15.9806974428, 15.9807197529, 15.9807420627, 15.9807643721, 15.9807866812, 15.9808089899, 15.9808312983, 15.9808536064, 15.9808759141, 15.9808982214, 15.9809205285, 15.9809428351, 15.9809651415, 15.9809874474, 15.9810097531, 15.9810320584, 15.9810543633, 15.9810766679, 15.9810989722, 15.9811212761, 15.9811435796, 15.9811658829, 15.9811881857, 15.9812104883, 15.9812327905, 15.9812550923, 15.9812773938, 15.981299695, 15.9813219958, 15.9813442962, 15.9813665963, 15.9813888961, 15.9814111955, 15.9814334946, 15.9814557934, 15.9814780918, 15.9815003898, 15.9815226875, 15.9815449849, 15.9815672819, 15.9815895786, 15.9816118749, 15.9816341709, 15.9816564665, 15.9816787618, 15.9817010568, 15.9817233514, 15.9817456456, 15.9817679396, 15.9817902331, 15.9818125263, 15.9818348192, 15.9818571118, 15.981879404, 15.9819016958, 15.9819239873, 15.9819462785, 15.9819685693, 15.9819908598, 15.9820131499, 15.9820354397, 15.9820577291, 15.9820800182, 15.982102307, 15.9821245954, 15.9821468834, 15.9821691711, 15.9821914585, 15.9822137455, 15.9822360322, 15.9822583186, 15.9822806046, 15.9823028902, 15.9823251755, 15.9823474605, 15.9823697451, 15.9823920294, 15.9824143133, 15.9824365969, 15.9824588801, 15.982481163, 15.9825034456, 15.9825257278, 15.9825480097, 15.9825702912, 15.9825925723, 15.9826148532, 15.9826371337, 15.9826594138, 15.9826816936, 15.9827039731, 15.9827262522, 15.982748531, 15.9827708094, 15.9827930875, 15.9828153652, 15.9828376426, 15.9828599196, 15.9828821963, 15.9829044727, 15.9829267487, 15.9829490244, 15.9829712997, 15.9829935747, 15.9830158493, 15.9830381236, 15.9830603976, 15.9830826712, 15.9831049445, 15.9831272174, 15.98314949, 15.9831717622, 15.9831940341, 15.9832163056, 15.9832385768, 15.9832608477, 15.9832831182, 15.9833053884, 15.9833276582, 15.9833499277, 15.9833721968, 15.9833944656, 15.9834167341, 15.9834390022, 15.9834612699, 15.9834835374, 15.9835058044, 15.9835280712, 15.9835503376, 15.9835726036, 15.9835948693, 15.9836171347, 15.9836393997, 15.9836616643, 15.9836839287, 15.9837061927, 15.9837284563, 15.9837507196, 15.9837729826, 15.9837952452, 15.9838175074, 15.9838397693, 15.9838620309, 15.9838842922, 15.9839065531, 15.9839288136, 15.9839510738, 15.9839733337, 15.9839955932, 15.9840178524, 15.9840401112, 15.9840623697, 15.9840846278, 15.9841068856, 15.9841291431, 15.9841514002, 15.984173657, 15.9841959134, 15.9842181695, 15.9842404252, 15.9842626806, 15.9842849357, 15.9843071904, 15.9843294448, 15.9843516988, 15.9843739525, 15.9843962058, 15.9844184588, 15.9844407115, 15.9844629638, 15.9844852157, 15.9845074673, 15.9845297186, 15.9845519696, 15.9845742202, 15.9845964704, 15.9846187203, 15.9846409699, 15.9846632191, 15.984685468, 15.9847077165, 15.9847299647, 15.9847522125, 15.98477446, 15.9847967072, 15.984818954, 15.9848412005, 15.9848634466, 15.9848856924, 15.9849079379, 15.984930183, 15.9849524277, 15.9849746721, 15.9849969162, 15.98501916, 15.9850414033, 15.9850636464, 15.9850858891, 15.9851081315, 15.9851303735, 15.9851526151, 15.9851748565, 15.9851970975, 15.9852193381, 15.9852415784, 15.9852638184, 15.985286058, 15.9853082973, 15.9853305362, 15.9853527748, 15.985375013, 15.9853972509, 15.9854194885, 15.9854417257, 15.9854639626, 15.9854861991, 15.9855084353, 15.9855306711, 15.9855529066, 15.9855751418, 15.9855973766, 15.9856196111, 15.9856418452, 15.985664079, 15.9856863125, 15.9857085456, 15.9857307783, 15.9857530108, 15.9857752428, 15.9857974746, 15.985819706, 15.985841937, 15.9858641677, 15.9858863981, 15.9859086281, 15.9859308578, 15.9859530871, 15.9859753161, 15.9859975448, 15.9860197731, 15.986042001, 15.9860642287, 15.9860864559, 15.9861086829, 15.9861309095, 15.9861531357, 15.9861753616, 15.9861975872, 15.9862198124, 15.9862420373, 15.9862642619, 15.9862864861, 15.9863087099, 15.9863309334, 15.9863531566, 15.9863753794, 15.9863976019, 15.9864198241, 15.9864420459, 15.9864642673, 15.9864864885, 15.9865087092, 15.9865309297, 15.9865531498, 15.9865753695, 15.9865975889, 15.986619808, 15.9866420267, 15.9866642451, 15.9866864631, 15.9867086808, 15.9867308982, 15.9867531152, 15.9867753319, 15.9867975482, 15.9868197642, 15.9868419798, 15.9868641951, 15.9868864101, 15.9869086247, 15.986930839, 15.9869530529, 15.9869752665, 15.9869974797, 15.9870196927, 15.9870419052, 15.9870641174, 15.9870863293, 15.9871085409, 15.9871307521, 15.9871529629, 15.9871751734, 15.9871973836, 15.9872195934, 15.9872418029, 15.9872640121, 15.9872862209, 15.9873084293, 15.9873306375, 15.9873528452, 15.9873750527, 15.9873972598, 15.9874194665, 15.9874416729, 15.987463879, 15.9874860847, 15.9875082901, 15.9875304952, 15.9875526999, 15.9875749042, 15.9875971082, 15.9876193119, 15.9876415153, 15.9876637183, 15.9876859209, 15.9877081232, 15.9877303252, 15.9877525268, 15.9877747281, 15.987796929, 15.9878191296, 15.9878413299, 15.9878635298, 15.9878857294, 15.9879079286, 15.9879301275, 15.9879523261, 15.9879745243, 15.9879967222, 15.9880189197, 15.9880411169, 15.9880633137, 15.9880855102, 15.9881077064, 15.9881299022, 15.9881520977, 15.9881742928, 15.9881964876, 15.9882186821, 15.9882408762, 15.98826307, 15.9882852634, 15.9883074565, 15.9883296492, 15.9883518416, 15.9883740337, 15.9883962254, 15.9884184168, 15.9884406078, 15.9884627985, 15.9884849889, 15.9885071789, 15.9885293686, 15.9885515579, 15.9885737469, 15.9885959356, 15.9886181239, 15.9886403119, 15.9886624995, 15.9886846868, 15.9887068737, 15.9887290603, 15.9887512466, 15.9887734325, 15.9887956181, 15.9888178033, 15.9888399882, 15.9888621728, 15.988884357, 15.9889065409, 15.9889287244, 15.9889509076, 15.9889730905, 15.988995273, 15.9890174551, 15.989039637, 15.9890618184, 15.9890839996, 15.9891061804, 15.9891283609, 15.989150541, 15.9891727208, 15.9891949002, 15.9892170793, 15.9892392581, 15.9892614365, 15.9892836146, 15.9893057923, 15.9893279697, 15.9893501468, 15.9893723235, 15.9893944998, 15.9894166759, 15.9894388516, 15.9894610269, 15.9894832019, 15.9895053766, 15.9895275509, 15.9895497249, 15.9895718986, 15.9895940719, 15.9896162448, 15.9896384175, 15.9896605897, 15.9896827617, 15.9897049333, 15.9897271045, 15.9897492755, 15.989771446, 15.9897936163, 15.9898157862, 15.9898379557, 15.989860125, 15.9898822938, 15.9899044624, 15.9899266306, 15.9899487984, 15.9899709659, 15.9899931331, 15.9900152999, 15.9900374664, 15.9900596326, 15.9900817984, 15.9901039639, 15.990126129, 15.9901482938, 15.9901704582, 15.9901926223, 15.9902147861, 15.9902369495, 15.9902591126, 15.9902812754, 15.9903034378, 15.9903255998, 15.9903477616, 15.9903699229, 15.990392084, 15.9904142447, 15.9904364051, 15.9904585651, 15.9904807248, 15.9905028841, 15.9905250431, 15.9905472018, 15.9905693601, 15.9905915181, 15.9906136757, 15.990635833, 15.99065799, 15.9906801466, 15.9907023029, 15.9907244588, 15.9907466144, 15.9907687697, 15.9907909246, 15.9908130792, 15.9908352334, 15.9908573873, 15.9908795408, 15.9909016941, 15.9909238469, 15.9909459995, 15.9909681517, 15.9909903035, 15.991012455, 15.9910346062, 15.9910567571, 15.9910789076, 15.9911010577, 15.9911232075, 15.991145357, 15.9911675061, 15.9911896549, 15.9912118034, 15.9912339515, 15.9912560993, 15.9912782467, 15.9913003938, 15.9913225406, 15.991344687, 15.9913668331, 15.9913889788, 15.9914111242, 15.9914332693, 15.991455414, 15.9914775583, 15.9914997024, 15.9915218461, 15.9915439894, 15.9915661324, 15.9915882751, 15.9916104175, 15.9916325595, 15.9916547011, 15.9916768424, 15.9916989834, 15.9917211241, 15.9917432643, 15.9917654043, 15.9917875439, 15.9918096832, 15.9918318221, 15.9918539607, 15.991876099, 15.9918982369, 15.9919203745, 15.9919425117, 15.9919646486, 15.9919867852, 15.9920089214, 15.9920310573, 15.9920531929, 15.9920753281, 15.9920974629, 15.9921195974, 15.9921417316, 15.9921638655, 15.992185999, 15.9922081321, 15.992230265, 15.9922523975, 15.9922745296, 15.9922966614, 15.9923187929, 15.992340924, 15.9923630548, 15.9923851852, 15.9924073153, 15.9924294451, 15.9924515745, 15.9924737036, 15.9924958324, 15.9925179608, 15.9925400889, 15.9925622166, 15.992584344, 15.9926064711, 15.9926285978, 15.9926507242, 15.9926728502, 15.9926949759, 15.9927171012, 15.9927392263, 15.9927613509, 15.9927834753, 15.9928055993, 15.9928277229, 15.9928498463, 15.9928719693, 15.9928940919, 15.9929162142, 15.9929383362, 15.9929604578, 15.9929825791, 15.9930047, 15.9930268206, 15.9930489409, 15.9930710608, 15.9930931804, 15.9931152997, 15.9931374186, 15.9931595372, 15.9931816554, 15.9932037733, 15.9932258909, 15.9932480081, 15.9932701249, 15.9932922415, 15.9933143577, 15.9933364736, 15.9933585891, 15.9933807043, 15.9934028191, 15.9934249336, 15.9934470478, 15.9934691616, 15.9934912751, 15.9935133882, 15.993535501, 15.9935576135, 15.9935797257, 15.9936018374, 15.9936239489, 15.99364606, 15.9936681708, 15.9936902812, 15.9937123913, 15.9937345011, 15.9937566105, 15.9937787196, 15.9938008283, 15.9938229367, 15.9938450448, 15.9938671525, 15.9938892599, 15.993911367, 15.9939334737, 15.9939555801, 15.9939776861, 15.9939997918, 15.9940218971, 15.9940440022, 15.9940661068, 15.9940882112, 15.9941103152, 15.9941324189, 15.9941545222, 15.9941766252, 15.9941987278, 15.9942208301, 15.9942429321, 15.9942650337, 15.994287135, 15.994309236, 15.9943313366, 15.9943534369, 15.9943755368, 15.9943976364, 15.9944197357, 15.9944418346, 15.9944639332, 15.9944860314, 15.9945081293, 15.9945302269, 15.9945523241, 15.994574421, 15.9945965176, 15.9946186138, 15.9946407097, 15.9946628052, 15.9946849004, 15.9947069953, 15.9947290898, 15.994751184, 15.9947732778, 15.9947953713, 15.9948174645, 15.9948395573, 15.9948616498, 15.994883742, 15.9949058338, 15.9949279253, 15.9949500164, 15.9949721072, 15.9949941977, 15.9950162878, 15.9950383776, 15.995060467, 15.9950825561, 15.9951046449, 15.9951267334, 15.9951488214, 15.9951709092, 15.9951929966, 15.9952150837, 15.9952371704, 15.9952592569, 15.9952813429, 15.9953034287, 15.995325514, 15.9953475991, 15.9953696838, 15.9953917682, 15.9954138522, 15.9954359359, 15.9954580193, 15.9954801023, 15.995502185, 15.9955242673, 15.9955463494, 15.995568431, 15.9955905124, 15.9956125934, 15.995634674, 15.9956567543, 15.9956788343, 15.995700914, 15.9957229933, 15.9957450722, 15.9957671509, 15.9957892292, 15.9958113071, 15.9958333847, 15.995855462, 15.995877539, 15.9958996156, 15.9959216918, 15.9959437678, 15.9959658434, 15.9959879186, 15.9960099935, 15.9960320681, 15.9960541423, 15.9960762162, 15.9960982898, 15.996120363, 15.9961424359, 15.9961645085, 15.9961865807, 15.9962086526, 15.9962307241, 15.9962527953, 15.9962748662, 15.9962969367, 15.9963190069, 15.9963410767, 15.9963631462, 15.9963852154, 15.9964072842, 15.9964293527, 15.9964514209, 15.9964734887, 15.9964955562, 15.9965176234, 15.9965396902, 15.9965617567, 15.9965838228, 15.9966058886, 15.9966279541, 15.9966500192, 15.996672084, 15.9966941484, 15.9967162125, 15.9967382763, 15.9967603397, 15.9967824028, 15.9968044656, 15.996826528, 15.9968485901, 15.9968706519, 15.9968927133, 15.9969147743, 15.9969368351, 15.9969588955, 15.9969809555, 15.9970030153, 15.9970250747, 15.9970471337, 15.9970691924, 15.9970912508, 15.9971133088, 15.9971353665, 15.9971574239, 15.9971794809, 15.9972015376, 15.997223594, 15.99724565, 15.9972677057, 15.997289761, 15.997311816, 15.9973338707, 15.997355925, 15.997377979, 15.9974000327, 15.997422086, 15.997444139, 15.9974661916, 15.9974882439, 15.9975102959, 15.9975323475, 15.9975543988, 15.9975764498, 15.9975985004, 15.9976205507, 15.9976426006, 15.9976646502, 15.9976866995, 15.9977087485, 15.9977307971, 15.9977528453, 15.9977748933, 15.9977969408, 15.9978189881, 15.997841035, 15.9978630816, 15.9978851278, 15.9979071737, 15.9979292193, 15.9979512645, 15.9979733094, 15.997995354, 15.9980173982, 15.9980394421, 15.9980614856, 15.9980835288, 15.9981055717, 15.9981276143, 15.9981496565, 15.9981716983, 15.9981937398, 15.998215781, 15.9982378219, 15.9982598624, 15.9982819026, 15.9983039424, 15.9983259819, 15.9983480211, 15.9983700599, 15.9983920984, 15.9984141366, 15.9984361744, 15.9984582119, 15.998480249, 15.9985022859, 15.9985243223, 15.9985463585, 15.9985683943, 15.9985904297, 15.9986124649, 15.9986344997, 15.9986565341, 15.9986785682, 15.998700602, 15.9987226355, 15.9987446686, 15.9987667014, 15.9987887338, 15.9988107659, 15.9988327977, 15.9988548291, 15.9988768602, 15.9988988909, 15.9989209214, 15.9989429514, 15.9989649812, 15.9989870106, 15.9990090397, 15.9990310684, 15.9990530968, 15.9990751249, 15.9990971526, 15.99911918, 15.9991412071, 15.9991632338, 15.9991852602, 15.9992072862, 15.9992293119, 15.9992513373, 15.9992733623, 15.999295387, 15.9993174114, 15.9993394354, 15.9993614591, 15.9993834825, 15.9994055055, 15.9994275282, 15.9994495505, 15.9994715725, 15.9994935942, 15.9995156155, 15.9995376366, 15.9995596572, 15.9995816776, 15.9996036975, 15.9996257172, 15.9996477365, 15.9996697555, 15.9996917742, 15.9997137925, 15.9997358105, 15.9997578281, 15.9997798454, 15.9998018624, 15.999823879, 15.9998458953, 15.9998679113, 15.9998899269, 15.9999119422, 15.9999339572, 15.9999559718, 15.9999779861, ]; brotli-6.0.0/src/enc/vectorization.rs000075500000000000000000000024051046102023000157300ustar 00000000000000#![allow(unknown_lints)] #![allow(unused_macros)] use enc::util::FastLog2; use enc::{s8, v8}; pub type Mem256f = v8; pub type Mem256i = s8; pub type v256 = v8; pub type v256i = s8; pub fn sum8(x: v256) -> f32 { x[0] + x[1] + x[2] + x[3] + x[4] + x[5] + x[6] + x[7] } pub fn sum8i(x: v256i) -> i32 { x[0].wrapping_add(x[1]) .wrapping_add(x[2]) .wrapping_add(x[3]) .wrapping_add(x[4]) .wrapping_add(x[5]) .wrapping_add(x[6]) .wrapping_add(x[7]) } pub fn log2i(x: v256i) -> v256 { [ FastLog2(x[0] as u64), FastLog2(x[1] as u64), FastLog2(x[2] as u64), FastLog2(x[3] as u64), FastLog2(x[4] as u64), FastLog2(x[5] as u64), FastLog2(x[6] as u64), FastLog2(x[7] as u64), ] .into() } pub fn cast_i32_to_f32(x: v256i) -> v256 { [ x[0] as f32, x[1] as f32, x[2] as f32, x[3] as f32, x[4] as f32, x[5] as f32, x[6] as f32, x[7] as f32, ] .into() } pub fn cast_f32_to_i32(x: v256) -> v256i { [ x[0] as i32, x[1] as i32, x[2] as i32, x[3] as i32, x[4] as i32, x[5] as i32, x[6] as i32, x[7] as i32, ] .into() } brotli-6.0.0/src/enc/weights.rs000064400000000000000000000116611046102023000145030ustar 00000000000000use core::cmp::{max, min}; pub type Prob = u16; pub const BLEND_FIXED_POINT_PRECISION: i8 = 15; #[allow(dead_code)] pub const LOG2_SCALE: i32 = 15; #[derive(Debug, Copy, Clone)] pub struct Weights { model_weights: [i32; 2], mixing_param: u8, normalized_weight: Prob, } impl Default for Weights { fn default() -> Self { Self::new() } } impl Weights { pub fn new() -> Self { Weights { model_weights: [1; 2], mixing_param: 1, normalized_weight: 1 << (BLEND_FIXED_POINT_PRECISION - 1), } } #[allow(unused)] #[inline(always)] pub fn update(&mut self, model_probs: [Prob; 2], weighted_prob: Prob) { debug_assert!(self.mixing_param != 0); normalize_weights(&mut self.model_weights); let w0new = compute_new_weight( model_probs, weighted_prob, self.model_weights, false, self.mixing_param - 1, ); let w1new = compute_new_weight( model_probs, weighted_prob, self.model_weights, true, self.mixing_param - 1, ); self.model_weights = [w0new, w1new]; self.normalized_weight = compute_normalized_weight(self.model_weights); } #[allow(dead_code)] #[inline(always)] pub fn norm_weight(&self) -> Prob { self.normalized_weight } } #[allow(dead_code)] #[inline(always)] fn compute_normalized_weight(model_weights: [i32; 2]) -> Prob { let total = i64::from(model_weights[0]) + i64::from(model_weights[1]); let leading_zeros = total.leading_zeros(); let shift = max(56 - (leading_zeros as i8), 0); let total_8bit = total >> shift; /*::probability::numeric::fast_divide_16bit_by_8bit( ((model_weights[0] >> shift) as u16)<< 8, ::probability::numeric::lookup_divisor8(total_8bit as u8)) << (BLEND_FIXED_POINT_PRECISION - 8) */ ((((model_weights[0] >> shift) as u16) << 8) / total_8bit as u16/*fixme??*/) << (BLEND_FIXED_POINT_PRECISION - 8) } #[allow(dead_code)] #[cold] fn fix_weights(weights: &mut [i32; 2]) { let ilog = 32 - min(weights[0].leading_zeros(), weights[1].leading_zeros()); let max_log = 24; if ilog >= max_log { weights[0] >>= ilog - max_log; weights[1] >>= ilog - max_log; } } #[allow(dead_code)] #[inline(always)] fn normalize_weights(weights: &mut [i32; 2]) { if ((weights[0] | weights[1]) & 0x7f00_0000) != 0 { fix_weights(weights); } } #[allow(dead_code)] #[cfg(features = "floating_point_context_mixing")] fn compute_new_weight( probs: [Prob; 2], weighted_prob: Prob, weights: [i32; 2], index_equal_1: bool, _speed: u8, ) -> i32 { // speed ranges from 1 to 14 inclusive let index = index_equal_1 as usize; let n1i = probs[index] as f64 / ((1i64 << LOG2_SCALE) as f64); //let n0i = 1.0f64 - n1i; let ni = 1.0f64; let s1 = weighted_prob as f64 / ((1i64 << LOG2_SCALE) as f64); let s0 = 1.0f64 - s1; let s = 1.0f64; //let p0 = s0; let p1 = s1; let wi = weights[index] as f64 / ((1i64 << LOG2_SCALE) as f64); let mut wi_new = wi + (1.0 - p1) * (s * n1i - s1 * ni) / (s0 * s1); let eps = 0.00001f64; if !(wi_new > eps) { wi_new = eps; } (wi_new * ((1i64 << LOG2_SCALE) as f64)) as i32 } #[allow(dead_code)] #[cfg(not(features = "floating_point_context_mixing"))] #[inline(always)] fn compute_new_weight( probs: [Prob; 2], weighted_prob: Prob, weights: [i32; 2], index_equal_1: bool, _speed: u8, ) -> i32 { // speed ranges from 1 to 14 inclusive let index = index_equal_1 as usize; let full_model_sum_p1 = i64::from(weighted_prob); let full_model_total = 1i64 << LOG2_SCALE; let full_model_sum_p0 = full_model_total.wrapping_sub(i64::from(weighted_prob)); let n1i = i64::from(probs[index]); let ni = 1i64 << LOG2_SCALE; let error = full_model_total.wrapping_sub(full_model_sum_p1); let wi = i64::from(weights[index]); let efficacy = full_model_total.wrapping_mul(n1i) - full_model_sum_p1.wrapping_mul(ni); //let geometric_probabilities = full_model_sum_p1 * full_model_sum_p0; let log_geometric_probabilities = 64 - (full_model_sum_p1.wrapping_mul(full_model_sum_p0)).leading_zeros(); //let scaled_geometric_probabilities = geometric_probabilities * S; //let new_weight_adj = (error * efficacy) >> log_geometric_probabilities;// / geometric_probabilities; //let new_weight_adj = (error * efficacy)/(full_model_sum_p1 * full_model_sum_p0); let new_weight_adj = (error.wrapping_mul(efficacy)) >> log_geometric_probabilities; // assert!(wi + new_weight_adj < (1i64 << 31)); //print!("{} -> {} due to {:?} vs {}\n", wi as f64 / (weights[0] + weights[1]) as f64, (wi + new_weight_adj) as f64 /(weights[0] as i64 + new_weight_adj as i64 + weights[1] as i64) as f64, probs[index], weighted_prob); max(1, wi.wrapping_add(new_weight_adj) as i32) } brotli-6.0.0/src/enc/worker_pool.rs000075500000000000000000000343161046102023000154000ustar 00000000000000#![cfg(feature = "std")] use core::mem; use alloc::{Allocator, SliceWrapper}; use enc::backward_references::UnionHasher; use enc::fixed_queue::{FixedQueue, MAX_THREADS}; use enc::threading::{ BatchSpawnableLite, BrotliEncoderThreadError, CompressMulti, CompressionThreadResult, InternalOwned, InternalSendAlloc, Joinable, Owned, SendAlloc, }; use enc::BrotliAlloc; use enc::BrotliEncoderParams; use std::sync::{Arc, Condvar, Mutex}; // in-place thread create use std::sync::RwLock; struct JobReply { result: T, work_id: u64, } struct JobRequest< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > { func: fn(ExtraInput, usize, usize, &U, Alloc) -> ReturnValue, extra_input: ExtraInput, index: usize, thread_size: usize, data: Arc>, alloc: Alloc, work_id: u64, } struct WorkQueue< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > { jobs: FixedQueue>, results: FixedQueue>, shutdown: bool, immediate_shutdown: bool, num_in_progress: usize, cur_work_id: u64, } impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > Default for WorkQueue { fn default() -> Self { WorkQueue { jobs: FixedQueue::default(), results: FixedQueue::default(), num_in_progress: 0, immediate_shutdown: false, shutdown: false, cur_work_id: 0, } } } pub struct GuardedQueue< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, >(Arc<(Mutex>, Condvar)>); pub struct WorkerPool< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > { queue: GuardedQueue, join: [Option>; MAX_THREADS], } impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > Drop for WorkerPool { fn drop(&mut self) { { let (lock, cvar) = &*self.queue.0; let mut local_queue = lock.lock().unwrap(); local_queue.immediate_shutdown = true; cvar.notify_all(); } for thread_handle in self.join.iter_mut() { if let Some(th) = thread_handle.take() { th.join().unwrap(); } } } } impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > WorkerPool { fn do_work(queue: Arc<(Mutex>, Condvar)>) { loop { let ret; { // need to drop possible job before the final lock is taken, // so refcount of possible_job Arc is 0 by the time the job is delivered // to the caller. We basically need a barrier (the lock) to happen // after the destructor that decrefs possible_job let possible_job; { let (lock, cvar) = &*queue; let mut local_queue = lock.lock().unwrap(); if local_queue.immediate_shutdown { break; } possible_job = if let Some(res) = local_queue.jobs.pop() { cvar.notify_all(); local_queue.num_in_progress += 1; res } else if local_queue.shutdown { break; } else { let _lock = cvar.wait(local_queue); // unlock immediately, unfortunately continue; }; } ret = if let Ok(job_data) = possible_job.data.read() { JobReply { result: (possible_job.func)( possible_job.extra_input, possible_job.index, possible_job.thread_size, &*job_data, possible_job.alloc, ), work_id: possible_job.work_id, } } else { break; // poisoned lock }; } { let (lock, cvar) = &*queue; let mut local_queue = lock.lock().unwrap(); local_queue.num_in_progress -= 1; local_queue.results.push(ret).unwrap(); cvar.notify_all(); } } } fn _push_job(&mut self, job: JobRequest) { let (lock, cvar) = &*self.queue.0; let mut local_queue = lock.lock().unwrap(); loop { if local_queue.jobs.size() + local_queue.num_in_progress + local_queue.results.size() < MAX_THREADS { local_queue.jobs.push(job).unwrap(); cvar.notify_all(); break; } local_queue = cvar.wait(local_queue).unwrap(); } } fn _try_push_job( &mut self, job: JobRequest, ) -> Result<(), JobRequest> { let (lock, cvar) = &*self.queue.0; let mut local_queue = lock.lock().unwrap(); if local_queue.jobs.size() + local_queue.num_in_progress + local_queue.results.size() < MAX_THREADS { local_queue.jobs.push(job).unwrap(); cvar.notify_all(); Ok(()) } else { Err(job) } } fn start( queue: Arc<(Mutex>, Condvar)>, ) -> std::thread::JoinHandle<()> { std::thread::spawn(move || Self::do_work(queue)) } pub fn new(num_threads: usize) -> Self { let queue = Arc::new((Mutex::new(WorkQueue::default()), Condvar::new())); WorkerPool { queue: GuardedQueue(queue.clone()), join: [ Some(Self::start(queue.clone())), if 1 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 2 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 3 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 4 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 5 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 6 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 7 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 8 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 9 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 10 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 11 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 12 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 13 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 14 < num_threads { Some(Self::start(queue.clone())) } else { None }, if 15 < num_threads { Some(Self::start(queue.clone())) } else { None }, ], } } } pub fn new_work_pool< Alloc: BrotliAlloc + Send + 'static, SliceW: SliceWrapper + Send + 'static + Sync, >( num_threads: usize, ) -> WorkerPool< CompressionThreadResult, UnionHasher, Alloc, (SliceW, BrotliEncoderParams), > where >::AllocatedMemory: Send + 'static, >::AllocatedMemory: Send + Sync, >::AllocatedMemory: Send + Sync, { WorkerPool::new(num_threads) } pub struct WorkerJoinable< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > { queue: GuardedQueue, work_id: u64, } impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > Joinable for WorkerJoinable { fn join(self) -> Result { let (lock, cvar) = &*self.queue.0; let mut local_queue = lock.lock().unwrap(); loop { match local_queue .results .remove(|data: &Option>| { if let Some(ref item) = *data { item.work_id == self.work_id } else { false } }) { Some(matched) => return Ok(matched.result), None => local_queue = cvar.wait(local_queue).unwrap(), }; } } } impl< ReturnValue: Send + 'static, ExtraInput: Send + 'static, Alloc: BrotliAlloc + Send + 'static, U: Send + 'static + Sync, > BatchSpawnableLite for WorkerPool where >::AllocatedMemory: Send + 'static, >::AllocatedMemory: Send + Sync, >::AllocatedMemory: Send + Sync, { type FinalJoinHandle = Arc>; type JoinHandle = WorkerJoinable; fn make_spawner(&mut self, input: &mut Owned) -> Self::FinalJoinHandle { std::sync::Arc::>::new(RwLock::new( mem::replace(input, Owned(InternalOwned::Borrowed)).unwrap(), )) } fn spawn( &mut self, locked_input: &mut Self::FinalJoinHandle, work: &mut SendAlloc, index: usize, num_threads: usize, f: fn(ExtraInput, usize, usize, &U, Alloc) -> ReturnValue, ) { assert!(num_threads <= MAX_THREADS); let (lock, cvar) = &*self.queue.0; let mut local_queue = lock.lock().unwrap(); loop { if local_queue.jobs.size() + local_queue.num_in_progress + local_queue.results.size() <= MAX_THREADS { let work_id = local_queue.cur_work_id; local_queue.cur_work_id += 1; let (local_alloc, local_extra) = work.replace_with_default(); local_queue .jobs .push(JobRequest { func: f, extra_input: local_extra, index, thread_size: num_threads, data: locked_input.clone(), alloc: local_alloc, work_id, }) .unwrap(); *work = SendAlloc(InternalSendAlloc::Join(WorkerJoinable { queue: GuardedQueue(self.queue.0.clone()), work_id, })); cvar.notify_all(); break; } else { local_queue = cvar.wait(local_queue).unwrap(); // hope room frees up } } } } pub fn compress_worker_pool< Alloc: BrotliAlloc + Send + 'static, SliceW: SliceWrapper + Send + 'static + Sync, >( params: &BrotliEncoderParams, owned_input: &mut Owned, output: &mut [u8], alloc_per_thread: &mut [SendAlloc< CompressionThreadResult, UnionHasher, Alloc, , UnionHasher, Alloc, (SliceW, BrotliEncoderParams), > as BatchSpawnableLite< CompressionThreadResult, UnionHasher, Alloc, (SliceW, BrotliEncoderParams), >>::JoinHandle, >], work_pool: &mut WorkerPool< CompressionThreadResult, UnionHasher, Alloc, (SliceW, BrotliEncoderParams), >, ) -> Result where >::AllocatedMemory: Send, >::AllocatedMemory: Send + Sync, >::AllocatedMemory: Send + Sync, { CompressMulti(params, owned_input, output, alloc_per_thread, work_pool) } // out of place thread create brotli-6.0.0/src/enc/writer.rs000075500000000000000000000220311046102023000143410ustar 00000000000000#![cfg_attr(not(feature = "std"), allow(unused_imports))] use super::backward_references::BrotliEncoderParams; use super::combined_alloc::BrotliAlloc; use super::encode::{ BrotliEncoderDestroyInstance, BrotliEncoderOperation, BrotliEncoderParameter, BrotliEncoderStateStruct, }; use super::interface; pub use alloc::{AllocatedStackMemory, Allocator, SliceWrapper, SliceWrapperMut, StackAllocator}; #[cfg(feature = "std")] pub use alloc_stdlib::StandardAlloc; use brotli_decompressor::CustomWrite; #[cfg(feature = "std")] pub use brotli_decompressor::{IntoIoWriter, IoWriterWrapper}; #[cfg(feature = "std")] use std::io; #[cfg(feature = "std")] use std::io::{Error, ErrorKind, Write}; #[cfg(feature = "std")] pub struct CompressorWriterCustomAlloc< W: Write, BufferType: SliceWrapperMut, Alloc: BrotliAlloc, >(CompressorWriterCustomIo, BufferType, Alloc>); #[cfg(feature = "std")] impl, Alloc: BrotliAlloc> CompressorWriterCustomAlloc { pub fn new(w: W, buffer: BufferType, alloc: Alloc, q: u32, lgwin: u32) -> Self { CompressorWriterCustomAlloc::(CompressorWriterCustomIo::< Error, IntoIoWriter, BufferType, Alloc, >::new( IntoIoWriter::(w), buffer, alloc, Error::new(ErrorKind::InvalidData, "Invalid Data"), q, lgwin, )) } pub fn get_ref(&self) -> &W { &self.0.get_ref().0 } pub fn get_mut(&mut self) -> &mut W { &mut self.0.get_mut().0 } pub fn into_inner(self) -> W { self.0.into_inner().0 } } #[cfg(feature = "std")] impl, Alloc: BrotliAlloc> Write for CompressorWriterCustomAlloc { fn write(&mut self, buf: &[u8]) -> Result { self.0.write(buf) } fn flush(&mut self) -> Result<(), Error> { self.0.flush() } } #[cfg(feature = "std")] pub struct CompressorWriter( CompressorWriterCustomAlloc< W, >::AllocatedMemory, StandardAlloc, >, ); #[cfg(feature = "std")] impl CompressorWriter { pub fn new(w: W, buffer_size: usize, q: u32, lgwin: u32) -> Self { let mut alloc = StandardAlloc::default(); let buffer = >::alloc_cell( &mut alloc, if buffer_size == 0 { 4096 } else { buffer_size }, ); CompressorWriter::(CompressorWriterCustomAlloc::new(w, buffer, alloc, q, lgwin)) } pub fn with_params(w: W, buffer_size: usize, params: &BrotliEncoderParams) -> Self { let mut writer = Self::new(w, buffer_size, params.quality as u32, params.lgwin as u32); (writer.0).0.state.params = params.clone(); writer } pub fn get_ref(&self) -> &W { self.0.get_ref() } pub fn get_mut(&mut self) -> &mut W { self.0.get_mut() } pub fn into_inner(self) -> W { self.0.into_inner() } } #[cfg(feature = "std")] impl Write for CompressorWriter { fn write(&mut self, buf: &[u8]) -> Result { self.0.write(buf) } fn flush(&mut self) -> Result<(), Error> { self.0.flush() } } pub struct CompressorWriterCustomIo< ErrType, W: CustomWrite, BufferType: SliceWrapperMut, Alloc: BrotliAlloc, > { output_buffer: BufferType, total_out: Option, output: Option, error_if_invalid_data: Option, state: BrotliEncoderStateStruct, } pub fn write_all>( writer: &mut W, mut buf: &[u8], ) -> Result<(), ErrType> { while !buf.is_empty() { match writer.write(buf) { Ok(bytes_written) => buf = &buf[bytes_written..], Err(e) => return Err(e), } } Ok(()) } impl, BufferType: SliceWrapperMut, Alloc: BrotliAlloc> CompressorWriterCustomIo { pub fn new( w: W, buffer: BufferType, alloc: Alloc, invalid_data_error_type: ErrType, q: u32, lgwin: u32, ) -> Self { let mut ret = CompressorWriterCustomIo { output_buffer: buffer, total_out: Some(0), output: Some(w), state: BrotliEncoderStateStruct::new(alloc), error_if_invalid_data: Some(invalid_data_error_type), }; ret.state .set_parameter(BrotliEncoderParameter::BROTLI_PARAM_QUALITY, q); ret.state .set_parameter(BrotliEncoderParameter::BROTLI_PARAM_LGWIN, lgwin); ret } fn flush_or_close(&mut self, op: BrotliEncoderOperation) -> Result<(), ErrType> { let mut nop_callback = |_data: &mut interface::PredictionModeContextMap, _cmds: &mut [interface::StaticCommand], _mb: interface::InputPair, _mfv: &mut Alloc| (); loop { let mut avail_in: usize = 0; let mut input_offset: usize = 0; let mut avail_out: usize = self.output_buffer.slice_mut().len(); let mut output_offset: usize = 0; let ret = self.state.compress_stream( op, &mut avail_in, &[], &mut input_offset, &mut avail_out, self.output_buffer.slice_mut(), &mut output_offset, &mut self.total_out, &mut nop_callback, ); if output_offset > 0 { match write_all( self.output.as_mut().unwrap(), &self.output_buffer.slice_mut()[..output_offset], ) { Ok(_) => {} Err(e) => return Err(e), } } if !ret { return Err(self.error_if_invalid_data.take().unwrap()); } if let BrotliEncoderOperation::BROTLI_OPERATION_FLUSH = op { if self.state.has_more_output() { continue; } return Ok(()); } if self.state.is_finished() { return Ok(()); } } } pub fn get_ref(&self) -> &W { self.output.as_ref().unwrap() } pub fn get_mut(&mut self) -> &mut W { self.output.as_mut().unwrap() } pub fn into_inner(mut self) -> W { match self.flush_or_close(BrotliEncoderOperation::BROTLI_OPERATION_FINISH) { Ok(_) => {} Err(_) => {} } self.output.take().unwrap() } } impl, BufferType: SliceWrapperMut, Alloc: BrotliAlloc> Drop for CompressorWriterCustomIo { fn drop(&mut self) { if self.output.is_some() { match self.flush_or_close(BrotliEncoderOperation::BROTLI_OPERATION_FINISH) { Ok(_) => {} Err(_) => {} } } BrotliEncoderDestroyInstance(&mut self.state); } } impl, BufferType: SliceWrapperMut, Alloc: BrotliAlloc> CustomWrite for CompressorWriterCustomIo { fn write(&mut self, buf: &[u8]) -> Result { let mut nop_callback = |_data: &mut interface::PredictionModeContextMap, _cmds: &mut [interface::StaticCommand], _mb: interface::InputPair, _mfv: &mut Alloc| (); let mut avail_in = buf.len(); let mut input_offset: usize = 0; while avail_in != 0 { let mut output_offset = 0; let mut avail_out = self.output_buffer.slice_mut().len(); let ret = self.state.compress_stream( BrotliEncoderOperation::BROTLI_OPERATION_PROCESS, &mut avail_in, buf, &mut input_offset, &mut avail_out, self.output_buffer.slice_mut(), &mut output_offset, &mut self.total_out, &mut nop_callback, ); if output_offset > 0 { match write_all( self.output.as_mut().unwrap(), &self.output_buffer.slice_mut()[..output_offset], ) { Ok(_) => {} Err(e) => return Err(e), } } if !ret { return Err(self.error_if_invalid_data.take().unwrap()); } } Ok(buf.len()) } fn flush(&mut self) -> Result<(), ErrType> { match self.flush_or_close(BrotliEncoderOperation::BROTLI_OPERATION_FLUSH) { Ok(_) => {} Err(e) => return Err(e), } self.output.as_mut().unwrap().flush() } } brotli-6.0.0/src/ffi/alloc_util.rs000064400000000000000000000031721046102023000151550ustar 00000000000000use alloc::{Allocator, SliceWrapper, SliceWrapperMut}; use brotli_decompressor::ffi::alloc_util::SubclassableAllocator; use enc::BrotliAlloc; pub struct BrotliSubclassableAllocator(SubclassableAllocator); impl BrotliSubclassableAllocator { pub fn new(s: SubclassableAllocator) -> BrotliSubclassableAllocator { BrotliSubclassableAllocator(s) } } #[derive(Default)] pub struct SendableMemoryBlock( >::AllocatedMemory, ); impl SliceWrapperMut for SendableMemoryBlock { fn slice_mut(&mut self) -> &mut [T] { self.0.slice_mut() } } impl SliceWrapper for SendableMemoryBlock { fn slice(&self) -> &[T] { self.0.slice() } } impl Allocator for BrotliSubclassableAllocator { type AllocatedMemory = SendableMemoryBlock; fn alloc_cell(&mut self, s: usize) -> Self::AllocatedMemory { SendableMemoryBlock(self.0.alloc_cell(s)) } fn free_cell(&mut self, data: Self::AllocatedMemory) { self.0.free_cell(data.0) } } impl BrotliAlloc for BrotliSubclassableAllocator {} #[cfg(not(feature = "safe"))] unsafe impl Send for BrotliSubclassableAllocator {} #[cfg(not(feature = "safe"))] unsafe impl Send for SendableMemoryBlock {} #[cfg(not(feature = "std"))] #[cfg(feature = "no-stdlib-ffi-binding")] #[panic_handler] extern "C" fn panic_impl(_: &::core::panic::PanicInfo) -> ! { loop {} } #[cfg(not(feature = "std"))] #[cfg(feature = "no-stdlib-ffi-binding")] #[lang = "eh_personality"] extern "C" fn eh_personality() {} brotli-6.0.0/src/ffi/broccoli.rs000064400000000000000000000076061046102023000146300ustar 00000000000000pub use brotli_decompressor::ffi::interface::c_void; use brotli_decompressor::ffi::{slice_from_raw_parts_or_nil, slice_from_raw_parts_or_nil_mut}; use concat::BroCatli; pub use concat::BroCatliResult; use core; pub type BroccoliResult = BroCatliResult; // a tool to concatenate brotli files together #[repr(C)] pub struct BroccoliState { more_data: *mut c_void, current_data: [u8; 120], } impl Clone for BroccoliState { fn clone(&self) -> BroccoliState { let mut cd = [0u8; 120]; cd.clone_from_slice(&self.current_data[..]); BroccoliState { more_data: self.more_data, current_data: cd, } } } impl Copy for BroccoliState {} impl Default for BroccoliState { fn default() -> BroccoliState { BroCatli::new().into() } } impl From for BroccoliState { fn from(data: BroCatli) -> BroccoliState { let mut buffer = [0u8; 120]; data.serialize_to_buffer(&mut buffer[..]).unwrap(); BroccoliState { more_data: core::ptr::null_mut(), current_data: buffer, } } } impl From for BroCatli { fn from(val: BroccoliState) -> Self { BroCatli::deserialize_from_buffer(&val.current_data[..]).unwrap() } } #[no_mangle] pub extern "C" fn BroccoliCreateInstance() -> BroccoliState { BroCatli::new().into() } #[no_mangle] pub extern "C" fn BroccoliCreateInstanceWithWindowSize(window_size: u8) -> BroccoliState { BroCatli::new_with_window_size(window_size).into() } #[no_mangle] pub extern "C" fn BroccoliDestroyInstance(_state: BroccoliState) {} #[no_mangle] pub unsafe extern "C" fn BroccoliNewBrotliFile(state: *mut BroccoliState) { let mut bro_catli: BroCatli = (*state).into(); bro_catli.new_brotli_file(); *state = BroccoliState::from(bro_catli); } #[no_mangle] pub unsafe extern "C" fn BroccoliConcatStream( state: *mut BroccoliState, available_in: *mut usize, input_buf_ptr: *mut *const u8, available_out: *mut usize, output_buf_ptr: *mut *mut u8, ) -> BroccoliResult { let input_buf = slice_from_raw_parts_or_nil(*input_buf_ptr, *available_in); let output_buf = slice_from_raw_parts_or_nil_mut(*output_buf_ptr, *available_out); let mut input_offset = 0usize; let mut output_offset = 0usize; let mut bro_catli: BroCatli = (*state).into(); let ret = bro_catli.stream(input_buf, &mut input_offset, output_buf, &mut output_offset); *input_buf_ptr = (*input_buf_ptr).add(input_offset); *output_buf_ptr = (*output_buf_ptr).add(output_offset); *available_in -= input_offset; *available_out -= output_offset; *state = BroccoliState::from(bro_catli); ret } #[no_mangle] pub unsafe extern "C" fn BroccoliConcatStreaming( state: *mut BroccoliState, available_in: *mut usize, mut input_buf: *const u8, available_out: *mut usize, mut output_buf: *mut u8, ) -> BroccoliResult { BroccoliConcatStream( state, available_in, &mut input_buf, available_out, &mut output_buf, ) } #[no_mangle] pub unsafe extern "C" fn BroccoliConcatFinish( state: *mut BroccoliState, available_out: *mut usize, output_buf_ptr: *mut *mut u8, ) -> BroCatliResult { let output_buf = slice_from_raw_parts_or_nil_mut(*output_buf_ptr, *available_out); let mut output_offset = 0usize; let mut bro_catli: BroCatli = (*state).into(); let ret = bro_catli.finish(output_buf, &mut output_offset); *output_buf_ptr = (*output_buf_ptr).add(output_offset); *available_out -= output_offset; *state = BroccoliState::from(bro_catli); ret } // exactly the same as BrotliConcatFinish but without the indirect #[no_mangle] pub unsafe extern "C" fn BroccoliConcatFinished( state: *mut BroccoliState, available_out: *mut usize, mut output_buf: *mut u8, ) -> BroCatliResult { BroccoliConcatFinish(state, available_out, &mut output_buf) } brotli-6.0.0/src/ffi/compressor.rs000075500000000000000000000330011046102023000152170ustar 00000000000000#![cfg(not(feature = "safe"))] #[cfg(feature = "std")] use std::io::Write; #[cfg(feature = "std")] use std::{io, panic, thread}; use super::alloc_util::BrotliSubclassableAllocator; use brotli_decompressor::ffi::alloc_util; use brotli_decompressor::ffi::alloc_util::SubclassableAllocator; use brotli_decompressor::ffi::interface::{ brotli_alloc_func, brotli_free_func, c_void, CAllocator, }; use brotli_decompressor::ffi::{slice_from_raw_parts_or_nil, slice_from_raw_parts_or_nil_mut}; use core; use enc::encode::BrotliEncoderStateStruct; #[repr(C)] pub enum BrotliEncoderOperation { BROTLI_OPERATION_PROCESS = 0, BROTLI_OPERATION_FLUSH = 1, BROTLI_OPERATION_FINISH = 2, BROTLI_OPERATION_EMIT_METADATA = 3, } #[repr(C)] pub enum BrotliEncoderMode { BROTLI_MODE_GENERIC = 0, BROTLI_MODE_TEXT = 1, BROTLI_MODE_FONT = 2, BROTLI_MODE_FORCE_LSB_PRIOR = 3, BROTLI_MODE_FORCE_MSB_PRIOR = 4, BROTLI_MODE_FORCE_UTF8_PRIOR = 5, BROTLI_MODE_FORCE_SIGNED_PRIOR = 6, } #[repr(C)] pub struct BrotliEncoderState { pub custom_allocator: CAllocator, pub compressor: BrotliEncoderStateStruct, } #[cfg(not(feature = "std"))] fn brotli_new_compressor_without_custom_alloc( _to_box: BrotliEncoderState, ) -> *mut BrotliEncoderState { panic!("Must supply allocators if calling divans when compiled without features=std"); } #[cfg(feature = "std")] fn brotli_new_compressor_without_custom_alloc( to_box: BrotliEncoderState, ) -> *mut BrotliEncoderState { alloc_util::Box::::into_raw(alloc_util::Box::::new( to_box, )) } #[cfg(feature = "std")] unsafe fn free_compressor_no_custom_alloc(state_ptr: *mut BrotliEncoderState) { let _state = alloc_util::Box::from_raw(state_ptr); } #[cfg(not(feature = "std"))] unsafe fn free_compressor_no_custom_alloc(_state_ptr: *mut BrotliEncoderState) { unreachable!(); } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderCreateInstance( alloc_func: brotli_alloc_func, free_func: brotli_free_func, opaque: *mut c_void, ) -> *mut BrotliEncoderState { catch_panic_cstate(|| { let allocators = CAllocator { alloc_func, free_func, opaque, }; let to_box = BrotliEncoderState { custom_allocator: allocators.clone(), compressor: BrotliEncoderStateStruct::new(BrotliSubclassableAllocator::new( SubclassableAllocator::new(allocators.clone()), )), }; if let Some(alloc) = alloc_func { if free_func.is_none() { panic!("either both alloc and free must exist or neither"); } let ptr = alloc( allocators.opaque, core::mem::size_of::(), ); let brotli_decoder_state_ptr = core::mem::transmute::<*mut c_void, *mut BrotliEncoderState>(ptr); core::ptr::write(brotli_decoder_state_ptr, to_box); brotli_decoder_state_ptr } else { brotli_new_compressor_without_custom_alloc(to_box) } }) .unwrap_or_else(|err| { error_print(err); core::ptr::null_mut() }) } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderSetParameter( state_ptr: *mut BrotliEncoderState, param: ::enc::encode::BrotliEncoderParameter, value: u32, ) -> i32 { if (*state_ptr).compressor.set_parameter(param, value) { 1 } else { 0 } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderDestroyInstance(state_ptr: *mut BrotliEncoderState) { if state_ptr.is_null() { return; } if (*state_ptr).custom_allocator.alloc_func.is_some() { if let Some(free_fn) = (*state_ptr).custom_allocator.free_func { let _to_free = core::ptr::read(state_ptr); let ptr = core::mem::transmute::<*mut BrotliEncoderState, *mut c_void>(state_ptr); free_fn((*state_ptr).custom_allocator.opaque, ptr); } } else { free_compressor_no_custom_alloc(state_ptr); } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderIsFinished(state_ptr: *mut BrotliEncoderState) -> i32 { if (*state_ptr).compressor.is_finished() { 1 } else { 0 } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderHasMoreOutput(state_ptr: *mut BrotliEncoderState) -> i32 { if (*state_ptr).compressor.has_more_output() { 1 } else { 0 } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderSetCustomDictionary( state_ptr: *mut BrotliEncoderState, size: usize, dict: *const u8, ) { if let Err(panic_err) = catch_panic(|| { let dict_slice = slice_from_raw_parts_or_nil(dict, size); (*state_ptr) .compressor .set_custom_dictionary(size, dict_slice); 0 }) { error_print(panic_err); } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderTakeOutput( state_ptr: *mut BrotliEncoderState, size: *mut usize, ) -> *const u8 { (*state_ptr).compressor.take_output(&mut *size).as_ptr() } #[no_mangle] pub extern "C" fn BrotliEncoderVersion() -> u32 { ::enc::encode::BrotliEncoderVersion() } #[no_mangle] pub extern "C" fn BrotliEncoderMaxCompressedSize(input_size: usize) -> usize { ::enc::encode::BrotliEncoderMaxCompressedSize(input_size) } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderCompress( quality: i32, lgwin: i32, mode: BrotliEncoderMode, input_size: usize, input_buffer: *const u8, encoded_size: *mut usize, encoded_buffer: *mut u8, ) -> i32 { catch_panic(|| { let input_buf = slice_from_raw_parts_or_nil(input_buffer, input_size); let encoded_buf = slice_from_raw_parts_or_nil_mut(encoded_buffer, *encoded_size); let allocators = CAllocator { alloc_func: None, free_func: None, opaque: core::ptr::null_mut(), }; let translated_mode = match mode { BrotliEncoderMode::BROTLI_MODE_GENERIC => { ::enc::backward_references::BrotliEncoderMode::BROTLI_MODE_GENERIC } BrotliEncoderMode::BROTLI_MODE_TEXT => { ::enc::backward_references::BrotliEncoderMode::BROTLI_MODE_TEXT } BrotliEncoderMode::BROTLI_MODE_FONT => { ::enc::backward_references::BrotliEncoderMode::BROTLI_MODE_FONT } BrotliEncoderMode::BROTLI_MODE_FORCE_LSB_PRIOR => { ::enc::backward_references::BrotliEncoderMode::BROTLI_FORCE_LSB_PRIOR } BrotliEncoderMode::BROTLI_MODE_FORCE_MSB_PRIOR => { ::enc::backward_references::BrotliEncoderMode::BROTLI_FORCE_MSB_PRIOR } BrotliEncoderMode::BROTLI_MODE_FORCE_UTF8_PRIOR => { ::enc::backward_references::BrotliEncoderMode::BROTLI_FORCE_UTF8_PRIOR } BrotliEncoderMode::BROTLI_MODE_FORCE_SIGNED_PRIOR => { ::enc::backward_references::BrotliEncoderMode::BROTLI_FORCE_SIGNED_PRIOR } }; let mut m8 = BrotliSubclassableAllocator::new(SubclassableAllocator::new(allocators.clone())); let empty_m8 = BrotliSubclassableAllocator::new(SubclassableAllocator::new(allocators.clone())); ::enc::encode::BrotliEncoderCompress( empty_m8, &mut m8, quality, lgwin, translated_mode, input_size, input_buf, &mut *encoded_size, encoded_buf, &mut |_a, _b, _c, _d| (), ) }) .unwrap_or_else(|panic_err| { error_print(panic_err); 0 }) } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderCompressStreaming( state_ptr: *mut BrotliEncoderState, op: BrotliEncoderOperation, available_in: *mut usize, mut input_buf: *const u8, available_out: *mut usize, mut output_buf: *mut u8, ) -> i32 { BrotliEncoderCompressStream( state_ptr, op, available_in, &mut input_buf, available_out, &mut output_buf, core::ptr::null_mut(), ) } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderCompressStream( state_ptr: *mut BrotliEncoderState, op: BrotliEncoderOperation, available_in: *mut usize, input_buf_ptr: *mut *const u8, available_out: *mut usize, output_buf_ptr: *mut *mut u8, total_out: *mut usize, ) -> i32 { catch_panic(|| { let mut input_offset = 0usize; let mut output_offset = 0usize; let result; let translated_op = match op { BrotliEncoderOperation::BROTLI_OPERATION_PROCESS => { ::enc::encode::BrotliEncoderOperation::BROTLI_OPERATION_PROCESS } BrotliEncoderOperation::BROTLI_OPERATION_FLUSH => { ::enc::encode::BrotliEncoderOperation::BROTLI_OPERATION_FLUSH } BrotliEncoderOperation::BROTLI_OPERATION_FINISH => { ::enc::encode::BrotliEncoderOperation::BROTLI_OPERATION_FINISH } BrotliEncoderOperation::BROTLI_OPERATION_EMIT_METADATA => { ::enc::encode::BrotliEncoderOperation::BROTLI_OPERATION_EMIT_METADATA } }; { let (input_buf, input_any): (&[u8], bool) = if *available_in != 0 { ( slice_from_raw_parts_or_nil(*input_buf_ptr, *available_in), true, ) } else { (&[], false) }; let (output_buf, output_any): (&mut [u8], bool) = if *available_out != 0 { ( slice_from_raw_parts_or_nil_mut(*output_buf_ptr, *available_out), true, ) } else { (&mut [], false) }; let mut to = Some(0); result = (*state_ptr).compressor.compress_stream( translated_op, &mut *available_in, input_buf, &mut input_offset, &mut *available_out, output_buf, &mut output_offset, &mut to, &mut |_a, _b, _c, _d| (), ); if !total_out.is_null() { *total_out = to.unwrap_or(0); } if input_any { *input_buf_ptr = (*input_buf_ptr).add(input_offset); } if output_any { *output_buf_ptr = (*output_buf_ptr).add(output_offset); } } if result { 1 } else { 0 } }) .unwrap_or_else(|panic_err| { error_print(panic_err); 0 }) } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderMallocU8( state_ptr: *mut BrotliEncoderState, size: usize, ) -> *mut u8 { if let Some(alloc_fn) = (*state_ptr).custom_allocator.alloc_func { core::mem::transmute::<*mut c_void, *mut u8>(alloc_fn( (*state_ptr).custom_allocator.opaque, size, )) } else { alloc_util::alloc_stdlib(size) } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderFreeU8( state_ptr: *mut BrotliEncoderState, data: *mut u8, size: usize, ) { if let Some(free_fn) = (*state_ptr).custom_allocator.free_func { free_fn( (*state_ptr).custom_allocator.opaque, core::mem::transmute::<*mut u8, *mut c_void>(data), ); } else { alloc_util::free_stdlib(data, size); } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderMallocUsize( state_ptr: *mut BrotliEncoderState, size: usize, ) -> *mut usize { if let Some(alloc_fn) = (*state_ptr).custom_allocator.alloc_func { core::mem::transmute::<*mut c_void, *mut usize>(alloc_fn( (*state_ptr).custom_allocator.opaque, size * core::mem::size_of::(), )) } else { alloc_util::alloc_stdlib(size) } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderFreeUsize( state_ptr: *mut BrotliEncoderState, data: *mut usize, size: usize, ) { if let Some(free_fn) = (*state_ptr).custom_allocator.free_func { free_fn( (*state_ptr).custom_allocator.opaque, core::mem::transmute::<*mut usize, *mut c_void>(data), ); } else { alloc_util::free_stdlib(data, size); } } #[cfg(all(feature = "std", not(feature = "pass-through-ffi-panics")))] pub fn catch_panic i32 + panic::UnwindSafe>(f: F) -> thread::Result { panic::catch_unwind(f) } #[cfg(all(feature = "std", not(feature = "pass-through-ffi-panics")))] fn catch_panic_cstate *mut BrotliEncoderState + panic::UnwindSafe>( f: F, ) -> thread::Result<*mut BrotliEncoderState> { panic::catch_unwind(f) } #[cfg(all(feature = "std", not(feature = "pass-through-ffi-panics")))] fn error_print(err: Err) { let _ign = writeln!(&mut io::stderr(), "Internal Error {:?}", err); } // can't catch panics in a reliable way without std:: configure with panic=abort. These shouldn't happen #[cfg(any(not(feature = "std"), feature = "pass-through-ffi-panics"))] pub fn catch_panic i32>(f: F) -> Result { Ok(f()) } #[cfg(any(not(feature = "std"), feature = "pass-through-ffi-panics"))] fn catch_panic_cstate *mut BrotliEncoderState>( f: F, ) -> Result<*mut BrotliEncoderState, ()> { Ok(f()) } #[cfg(any(not(feature = "std"), feature = "pass-through-ffi-panics"))] fn error_print(_err: Err) {} brotli-6.0.0/src/ffi/decompressor.rs000064400000000000000000000120641046102023000155330ustar 00000000000000pub use brotli_decompressor::ffi; pub use brotli_decompressor::ffi::interface::{brotli_alloc_func, brotli_free_func, c_void}; pub use brotli_decompressor::{BrotliDecoderReturnInfo, HuffmanCode}; pub unsafe extern "C" fn CBrotliDecoderCreateInstance( alloc_func: brotli_alloc_func, free_func: brotli_free_func, opaque: *mut c_void, ) -> *mut ffi::BrotliDecoderState { ffi::BrotliDecoderCreateInstance(alloc_func, free_func, opaque) } pub unsafe extern "C" fn CBrotliDecoderSetParameter( state_ptr: *mut ffi::BrotliDecoderState, selector: ffi::interface::BrotliDecoderParameter, value: u32, ) { ffi::BrotliDecoderSetParameter(state_ptr, selector, value) } #[cfg(feature = "std")] // this requires a default allocator pub unsafe extern "C" fn CBrotliDecoderDecompress( encoded_size: usize, encoded_buffer: *const u8, decoded_size: *mut usize, decoded_buffer: *mut u8, ) -> ffi::interface::BrotliDecoderResult { ffi::BrotliDecoderDecompress(encoded_size, encoded_buffer, decoded_size, decoded_buffer) } pub unsafe extern "C" fn CBrotliDecoderDecompressStream( state_ptr: *mut ffi::BrotliDecoderState, available_in: *mut usize, input_buf_ptr: *mut *const u8, available_out: *mut usize, output_buf_ptr: *mut *mut u8, total_out: *mut usize, ) -> ffi::interface::BrotliDecoderResult { ffi::BrotliDecoderDecompressStream( state_ptr, available_in, input_buf_ptr, available_out, output_buf_ptr, total_out, ) } pub unsafe extern "C" fn CBrotliDecoderDecompressStreaming( state_ptr: *mut ffi::BrotliDecoderState, available_in: *mut usize, input_buf_ptr: *const u8, available_out: *mut usize, output_buf_ptr: *mut u8, ) -> ffi::interface::BrotliDecoderResult { ffi::BrotliDecoderDecompressStreaming( state_ptr, available_in, input_buf_ptr, available_out, output_buf_ptr, ) } pub unsafe extern "C" fn CBrotliDecoderDecompressWithReturnInfo( available_in: usize, input_buf_ptr: *const u8, available_out_and_scratch: usize, output_buf_and_scratch: *mut u8, ) -> BrotliDecoderReturnInfo { ffi::BrotliDecoderDecompressWithReturnInfo( available_in, input_buf_ptr, available_out_and_scratch, output_buf_and_scratch, ) } pub unsafe extern "C" fn CBrotliDecoderDecompressPrealloc( available_in: usize, input_buf_ptr: *const u8, available_out: usize, output_buf_ptr: *mut u8, available_u8: usize, u8_ptr: *mut u8, available_u32: usize, u32_ptr: *mut u32, available_hc: usize, hc_ptr: *mut HuffmanCode, ) -> BrotliDecoderReturnInfo { ffi::BrotliDecoderDecompressPrealloc( available_in, input_buf_ptr, available_out, output_buf_ptr, available_u8, u8_ptr, available_u32, u32_ptr, available_hc, hc_ptr, ) } pub unsafe extern "C" fn CBrotliDecoderMallocU8( state_ptr: *mut ffi::BrotliDecoderState, size: usize, ) -> *mut u8 { ffi::BrotliDecoderMallocU8(state_ptr, size) } pub unsafe extern "C" fn CBrotliDecoderFreeU8( state_ptr: *mut ffi::BrotliDecoderState, data: *mut u8, size: usize, ) { ffi::BrotliDecoderFreeU8(state_ptr, data, size) } pub unsafe extern "C" fn CBrotliDecoderMallocUsize( state_ptr: *mut ffi::BrotliDecoderState, size: usize, ) -> *mut usize { ffi::BrotliDecoderMallocUsize(state_ptr, size) } pub unsafe extern "C" fn CBrotliDecoderFreeUsize( state_ptr: *mut ffi::BrotliDecoderState, data: *mut usize, size: usize, ) { ffi::BrotliDecoderFreeUsize(state_ptr, data, size) } pub unsafe extern "C" fn CBrotliDecoderDestroyInstance(state_ptr: *mut ffi::BrotliDecoderState) { ffi::BrotliDecoderDestroyInstance(state_ptr) } pub extern "C" fn CBrotliDecoderVersion() -> u32 { ffi::BrotliDecoderVersion() } #[no_mangle] pub extern "C" fn CBrotliDecoderErrorString(c: ffi::BrotliDecoderErrorCode) -> *const u8 { ffi::BrotliDecoderErrorString(c) } #[no_mangle] pub unsafe extern "C" fn CBrotliDecoderHasMoreOutput( state_ptr: *const ffi::BrotliDecoderState, ) -> i32 { ffi::BrotliDecoderHasMoreOutput(state_ptr) } #[no_mangle] pub unsafe extern "C" fn CBrotliDecoderTakeOutput( state_ptr: *mut ffi::BrotliDecoderState, size: *mut usize, ) -> *const u8 { ffi::BrotliDecoderTakeOutput(state_ptr, size) } #[no_mangle] pub unsafe extern "C" fn CBrotliDecoderIsUsed(state_ptr: *const ffi::BrotliDecoderState) -> i32 { ffi::BrotliDecoderIsUsed(state_ptr) } #[no_mangle] pub unsafe extern "C" fn CBrotliDecoderIsFinished( state_ptr: *const ffi::BrotliDecoderState, ) -> i32 { ffi::BrotliDecoderIsFinished(state_ptr) } #[no_mangle] pub unsafe extern "C" fn CBrotliDecoderGetErrorCode( state_ptr: *const ffi::BrotliDecoderState, ) -> ffi::BrotliDecoderErrorCode { ffi::BrotliDecoderGetErrorCode(state_ptr) } #[no_mangle] pub unsafe extern "C" fn CBrotliDecoderGetErrorString( state_ptr: *const ffi::BrotliDecoderState, ) -> *const u8 { ffi::BrotliDecoderGetErrorString(state_ptr) } brotli-6.0.0/src/ffi/mod.rs000064400000000000000000000001471046102023000136040ustar 00000000000000pub mod alloc_util; pub mod broccoli; pub mod compressor; pub mod decompressor; pub mod multicompress; brotli-6.0.0/src/ffi/multicompress/mod.rs000075500000000000000000000366041046102023000165240ustar 00000000000000#![cfg(not(feature = "safe"))] #[cfg(feature = "std")] use std::io::Write; #[cfg(feature = "std")] use std::{io, panic, thread}; mod test; use super::compressor; #[allow(unused_imports)] use brotli_decompressor; use brotli_decompressor::ffi::alloc_util::SubclassableAllocator; use brotli_decompressor::ffi::interface::{ brotli_alloc_func, brotli_free_func, c_void, CAllocator, }; use brotli_decompressor::ffi::{slice_from_raw_parts_or_nil, slice_from_raw_parts_or_nil_mut}; use core; use core::cmp::min; use enc::encode::{BrotliEncoderOperation, BrotliEncoderStateStruct}; use super::alloc_util::BrotliSubclassableAllocator; use alloc::SliceWrapper; use enc; use enc::backward_references::{BrotliEncoderParams, UnionHasher}; use enc::encode::{set_parameter, BrotliEncoderParameter}; use enc::threading::{Owned, SendAlloc}; pub const MAX_THREADS: usize = 16; struct SliceRef<'a>(&'a [u8]); impl<'a> SliceWrapper for SliceRef<'a> { fn slice(&self) -> &[u8] { self.0 } } macro_rules! make_send_alloc { ($alloc_func: expr, $free_func: expr, $opaque: expr) => { SendAlloc::new( BrotliSubclassableAllocator::new(SubclassableAllocator::new(CAllocator { alloc_func: $alloc_func, free_func: $free_func, opaque: $opaque, })), UnionHasher::Uninit, ) }; } #[no_mangle] pub extern "C" fn BrotliEncoderMaxCompressedSizeMulti( input_size: usize, num_threads: usize, ) -> usize { ::enc::encode::BrotliEncoderMaxCompressedSizeMulti(input_size, num_threads) } fn help_brotli_encoder_compress_single( param_keys: &[BrotliEncoderParameter], param_values: &[u32], input: &[u8], output: &mut [u8], encoded_size: &mut usize, m8: BrotliSubclassableAllocator, ) -> i32 { let mut encoder = BrotliEncoderStateStruct::new(m8); for (p, v) in param_keys.iter().zip(param_values.iter()) { encoder.set_parameter(*p, *v); } let mut available_in = input.len(); let mut next_in_offset = 0usize; let mut available_out = output.len(); let mut next_out_offset = 0usize; let mut total_out = Some(0); let mut result = encoder.compress_stream( BrotliEncoderOperation::BROTLI_OPERATION_FINISH, &mut available_in, input, &mut next_in_offset, &mut available_out, output, &mut next_out_offset, &mut total_out, &mut |_a, _b, _c, _d| (), ); if !encoder.is_finished() { result = false; } *encoded_size = total_out.unwrap(); if result { 1 } else { 0 } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderCompressMulti( num_params: usize, param_keys: *const BrotliEncoderParameter, param_values: *const u32, input_size: usize, input: *const u8, encoded_size: *mut usize, encoded: *mut u8, desired_num_threads: usize, alloc_func: brotli_alloc_func, free_func: brotli_free_func, alloc_opaque_per_thread: *mut *mut c_void, ) -> i32 { if desired_num_threads == 0 { return 0; } let num_threads = min(desired_num_threads, MAX_THREADS); compressor::catch_panic(|| { let param_keys_slice = slice_from_raw_parts_or_nil(param_keys, num_params); let param_values_slice = slice_from_raw_parts_or_nil(param_values, num_params); let input_slice = slice_from_raw_parts_or_nil(input, input_size); let output_slice = slice_from_raw_parts_or_nil_mut(encoded, *encoded_size); if num_threads == 1 { let allocators = CAllocator { alloc_func, free_func, opaque: if alloc_opaque_per_thread.is_null() { core::ptr::null_mut() } else { *alloc_opaque_per_thread }, }; let m8 = BrotliSubclassableAllocator::new(SubclassableAllocator::new(allocators.clone())); return help_brotli_encoder_compress_single( param_keys_slice, param_values_slice, input_slice, output_slice, &mut *encoded_size, m8, ); } let null_opaques = [core::ptr::null_mut::(); MAX_THREADS]; let alloc_opaque = if alloc_opaque_per_thread.is_null() { &null_opaques[..] } else { slice_from_raw_parts_or_nil(alloc_opaque_per_thread, desired_num_threads) }; let mut params = BrotliEncoderParams::default(); for (k, v) in param_keys_slice.iter().zip(param_values_slice.iter()) { if !set_parameter(&mut params, *k, *v) { return 0; } } let mut alloc_array: [_; MAX_THREADS] = [ make_send_alloc!(alloc_func, free_func, alloc_opaque[0]), make_send_alloc!(alloc_func, free_func, alloc_opaque[1 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[2 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[3 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[4 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[5 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[6 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[7 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[8 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[9 % desired_num_threads]), make_send_alloc!( alloc_func, free_func, alloc_opaque[10 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[11 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[12 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[13 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[14 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[15 % desired_num_threads] ), ]; let owned_input = &mut Owned::new(SliceRef(input_slice)); let res = enc::compress_multi_no_threadpool( ¶ms, owned_input, output_slice, &mut alloc_array[..num_threads], ); match res { Ok(size) => { *encoded_size = size; 1 } Err(_err) => 0, } }) .unwrap_or_else(|panic_err| { error_print(panic_err); 0 }) } #[repr(C)] pub struct BrotliEncoderWorkPool { custom_allocator: CAllocator, work_pool: enc::WorkerPool< enc::CompressionThreadResult, UnionHasher, BrotliSubclassableAllocator, (SliceRef<'static>, BrotliEncoderParams), >, } #[cfg(not(feature = "std"))] fn brotli_new_work_pool_without_custom_alloc( _to_box: BrotliEncoderWorkPool, ) -> *mut BrotliEncoderWorkPool { panic!("Must supply allocators if calling divans when compiled without features=std"); } #[cfg(feature = "std")] fn brotli_new_work_pool_without_custom_alloc( to_box: BrotliEncoderWorkPool, ) -> *mut BrotliEncoderWorkPool { brotli_decompressor::ffi::alloc_util::Box::::into_raw( brotli_decompressor::ffi::alloc_util::Box::::new(to_box), ) } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderCreateWorkPool( num_threads: usize, alloc_func: brotli_alloc_func, free_func: brotli_free_func, opaque: *mut c_void, ) -> *mut BrotliEncoderWorkPool { catch_panic_wstate(|| { let allocators = CAllocator { alloc_func, free_func, opaque, }; let to_box = BrotliEncoderWorkPool { custom_allocator: allocators.clone(), work_pool: enc::new_work_pool(min(num_threads, MAX_THREADS)), }; if let Some(alloc) = alloc_func { if free_func.is_none() { panic!("either both alloc and free must exist or neither"); } let ptr = alloc( allocators.opaque, core::mem::size_of::(), ); let brotli_work_pool_ptr = core::mem::transmute::<*mut c_void, *mut BrotliEncoderWorkPool>(ptr); core::ptr::write(brotli_work_pool_ptr, to_box); brotli_work_pool_ptr } else { brotli_new_work_pool_without_custom_alloc(to_box) } }) .unwrap_or_else(|err| { error_print(err); core::ptr::null_mut() }) } #[cfg(feature = "std")] unsafe fn free_work_pool_no_custom_alloc(_work_pool: *mut BrotliEncoderWorkPool) { let _state = brotli_decompressor::ffi::alloc_util::Box::from_raw(_work_pool); } #[cfg(not(feature = "std"))] unsafe fn free_work_pool_no_custom_alloc(_work_pool: *mut BrotliEncoderWorkPool) { unreachable!(); } struct UnsafeUnwindBox(*mut BrotliEncoderWorkPool); #[cfg(all(feature = "std", not(feature = "pass-through-ffi-panics")))] impl panic::RefUnwindSafe for UnsafeUnwindBox {} #[no_mangle] pub unsafe extern "C" fn BrotliEncoderDestroyWorkPool(work_pool_ptr: *mut BrotliEncoderWorkPool) { let wpp = UnsafeUnwindBox(work_pool_ptr); if let Err(panic_err) = compressor::catch_panic(|| { if (*wpp.0).custom_allocator.alloc_func.is_some() { if let Some(free_fn) = (*wpp.0).custom_allocator.free_func { let _to_free = core::ptr::read(wpp.0); let ptr = core::mem::transmute::<*mut BrotliEncoderWorkPool, *mut c_void>(wpp.0); free_fn((*wpp.0).custom_allocator.opaque, ptr); } } else { free_work_pool_no_custom_alloc(wpp.0); } 0 }) { error_print(panic_err); } } #[no_mangle] pub unsafe extern "C" fn BrotliEncoderCompressWorkPool( work_pool: *mut BrotliEncoderWorkPool, num_params: usize, param_keys: *const BrotliEncoderParameter, param_values: *const u32, input_size: usize, input: *const u8, encoded_size: *mut usize, encoded: *mut u8, desired_num_threads: usize, alloc_func: brotli_alloc_func, free_func: brotli_free_func, alloc_opaque_per_thread: *mut *mut c_void, ) -> i32 { if desired_num_threads == 0 { return 0; } if work_pool.is_null() { return compressor::catch_panic(|| { BrotliEncoderCompressMulti( num_params, param_keys, param_values, input_size, input, encoded_size, encoded, desired_num_threads, alloc_func, free_func, alloc_opaque_per_thread, ) }) .unwrap_or_else(|panic_err| { error_print(panic_err); // print panic 0 // fail }); } let work_pool_wrapper = UnsafeUnwindBox(work_pool); compressor::catch_panic(|| { let null_opaques = [core::ptr::null_mut::(); MAX_THREADS]; let alloc_opaque = if alloc_opaque_per_thread.is_null() { &null_opaques[..] } else { slice_from_raw_parts_or_nil(alloc_opaque_per_thread, desired_num_threads) }; let param_keys_slice = slice_from_raw_parts_or_nil(param_keys, num_params); let param_values_slice = slice_from_raw_parts_or_nil(param_values, num_params); let mut params = BrotliEncoderParams::default(); for (k, v) in param_keys_slice.iter().zip(param_values_slice.iter()) { if !set_parameter(&mut params, *k, *v) { return 0; } } let num_threads = min(desired_num_threads, MAX_THREADS); let mut alloc_array: [_; MAX_THREADS] = [ make_send_alloc!(alloc_func, free_func, alloc_opaque[0]), make_send_alloc!(alloc_func, free_func, alloc_opaque[1 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[2 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[3 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[4 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[5 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[6 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[7 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[8 % desired_num_threads]), make_send_alloc!(alloc_func, free_func, alloc_opaque[9 % desired_num_threads]), make_send_alloc!( alloc_func, free_func, alloc_opaque[10 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[11 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[12 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[13 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[14 % desired_num_threads] ), make_send_alloc!( alloc_func, free_func, alloc_opaque[15 % desired_num_threads] ), ]; let res = enc::compress_worker_pool( ¶ms, &mut Owned::new(SliceRef(slice_from_raw_parts_or_nil(input, input_size))), slice_from_raw_parts_or_nil_mut(encoded, *encoded_size), &mut alloc_array[..num_threads], &mut (*work_pool_wrapper.0).work_pool, ); match res { Ok(size) => { *encoded_size = size; 1 } Err(_err) => 0, } }) .unwrap_or_else(|panic_err| { error_print(panic_err); // print panic 0 // fail }) } #[cfg(all(feature = "std", not(feature = "pass-through-ffi-panics")))] fn catch_panic_wstate *mut BrotliEncoderWorkPool + panic::UnwindSafe>( f: F, ) -> thread::Result<*mut BrotliEncoderWorkPool> { panic::catch_unwind(f) } #[cfg(all(feature = "std", not(feature = "pass-through-ffi-panics")))] fn error_print(err: Err) { let _ign = writeln!(&mut io::stderr(), "Internal Error {:?}", err); } #[cfg(any(not(feature = "std"), feature = "pass-through-ffi-panics"))] fn catch_panic_wstate *mut BrotliEncoderWorkPool>( f: F, ) -> Result<*mut BrotliEncoderWorkPool, ()> { Ok(f()) } #[cfg(any(not(feature = "std"), feature = "pass-through-ffi-panics"))] fn error_print(_err: Err) {} brotli-6.0.0/src/ffi/multicompress/test.rs000075500000000000000000000243641046102023000167240ustar 00000000000000#![cfg(test)] #![cfg(feature = "std")] use super::*; use core; use enc::encode::BrotliEncoderParameter; #[test] fn test_compress_workpool() { let input = [ 102, 114, 111, 109, 32, 99, 116, 121, 112, 101, 115, 32, 105, 109, 112, 111, 114, 116, 32, 42, 10, 10, 99, 108, 97, 115, 115, 32, 69, 110, 117, 109, 84, 121, 112, 101, 40, 116, 121, 112, 101, 40, 99, 95, 117, 105, 110, 116, 41, 41, 58, 10, 32, 32, 32, 32, 100, 101, 102, 32, 95, 95, 110, 101, 119, 95, 95, 40, 109, 101, 116, 97, 99, 108, 115, 41, 58, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97, 115, 115, 10, ]; let params = [ BrotliEncoderParameter::BROTLI_PARAM_QUALITY, BrotliEncoderParameter::BROTLI_PARAM_LGWIN, BrotliEncoderParameter::BROTLI_PARAM_SIZE_HINT, BrotliEncoderParameter::BROTLI_PARAM_CATABLE, BrotliEncoderParameter::BROTLI_PARAM_MAGIC_NUMBER, BrotliEncoderParameter::BROTLI_PARAM_Q9_5, ]; let values = [11u32, 16, 91, 0, 0, 0]; let mut encoded_size = BrotliEncoderMaxCompressedSizeMulti(input.len(), 4); let mut encoded_backing = [0u8; 145]; let encoded = &mut encoded_backing[..encoded_size]; let ret = unsafe { let wp = BrotliEncoderCreateWorkPool(8, None, None, core::ptr::null_mut()); let inner_ret = BrotliEncoderCompressWorkPool( wp, params.len(), params[..].as_ptr(), values[..].as_ptr(), input.len(), input[..].as_ptr(), &mut encoded_size, encoded.as_mut_ptr(), 4, None, None, core::ptr::null_mut(), ); BrotliEncoderDestroyWorkPool(wp); inner_ret }; assert_eq!(ret, 1); let mut rt_size = 256; let mut rt_buffer = [0u8; 256]; let ret2 = unsafe { super::super::decompressor::CBrotliDecoderDecompress( encoded_size, encoded.as_ptr(), &mut rt_size, rt_buffer.as_mut_ptr(), ) }; match ret2 { super::super::decompressor::ffi::interface::BrotliDecoderResult::BROTLI_DECODER_RESULT_SUCCESS => { }, _ => panic!("{}", ret2 as i32), } assert_eq!(rt_size, input.len()); assert_eq!(&rt_buffer[..rt_size], &input[..]); } #[test] fn test_compress_empty_workpool() { let input = []; let params = [ BrotliEncoderParameter::BROTLI_PARAM_QUALITY, BrotliEncoderParameter::BROTLI_PARAM_LGWIN, BrotliEncoderParameter::BROTLI_PARAM_SIZE_HINT, BrotliEncoderParameter::BROTLI_PARAM_CATABLE, BrotliEncoderParameter::BROTLI_PARAM_MAGIC_NUMBER, BrotliEncoderParameter::BROTLI_PARAM_Q9_5, ]; let values = [3u32, 16, 91, 0, 0, 0]; let mut encoded_size = BrotliEncoderMaxCompressedSizeMulti(input.len(), 4); let mut encoded_backing = [0u8; 145]; let encoded = &mut encoded_backing[..encoded_size]; let ret = unsafe { let wp = BrotliEncoderCreateWorkPool(8, None, None, core::ptr::null_mut()); let inner_ret = BrotliEncoderCompressWorkPool( wp, params.len(), params[..].as_ptr(), values[..].as_ptr(), input.len(), input[..].as_ptr(), &mut encoded_size, encoded.as_mut_ptr(), 4, None, None, core::ptr::null_mut(), ); BrotliEncoderDestroyWorkPool(wp); inner_ret }; assert_eq!(ret, 1); let mut rt_size = 256; let mut rt_buffer = [0u8; 256]; assert_ne!(encoded_size, 0); let ret2 = unsafe { super::super::decompressor::CBrotliDecoderDecompress( encoded_size, encoded.as_ptr(), &mut rt_size, rt_buffer.as_mut_ptr(), ) }; match ret2 { super::super::decompressor::ffi::interface::BrotliDecoderResult::BROTLI_DECODER_RESULT_SUCCESS => { }, _ => panic!("{}", ret2 as i32), } assert_eq!(rt_size, input.len()); assert_eq!(&rt_buffer[..rt_size], &input[..]); } #[test] fn test_compress_empty_multi_raw() { let input = []; let params = [ BrotliEncoderParameter::BROTLI_PARAM_QUALITY, BrotliEncoderParameter::BROTLI_PARAM_LGWIN, BrotliEncoderParameter::BROTLI_PARAM_SIZE_HINT, BrotliEncoderParameter::BROTLI_PARAM_CATABLE, BrotliEncoderParameter::BROTLI_PARAM_MAGIC_NUMBER, BrotliEncoderParameter::BROTLI_PARAM_Q9_5, ]; let values = [3u32, 16, 0, 0, 0, 0]; let mut encoded_size = BrotliEncoderMaxCompressedSizeMulti(input.len(), 4); let mut encoded_backing = [0u8; 145]; let encoded = &mut encoded_backing[..encoded_size]; let ret = unsafe { BrotliEncoderCompressMulti( params.len(), params[..].as_ptr(), values[..].as_ptr(), input.len(), input[..].as_ptr(), &mut encoded_size, encoded.as_mut_ptr(), 4, None, None, core::ptr::null_mut(), ) }; assert_eq!(ret, 1); let mut rt_size = 256; let mut rt_buffer = [0u8; 256]; assert_ne!(encoded_size, 0); let ret2 = unsafe { super::super::decompressor::CBrotliDecoderDecompress( encoded_size, encoded.as_ptr(), &mut rt_size, rt_buffer.as_mut_ptr(), ) }; match ret2 { super::super::decompressor::ffi::interface::BrotliDecoderResult::BROTLI_DECODER_RESULT_SUCCESS => { }, _ => panic!("{}", ret2 as i32), } assert_eq!(rt_size, input.len()); assert_eq!(&rt_buffer[..rt_size], &input[..]); } #[test] fn test_compress_null_multi_raw() { let params = [ BrotliEncoderParameter::BROTLI_PARAM_QUALITY, BrotliEncoderParameter::BROTLI_PARAM_LGWIN, BrotliEncoderParameter::BROTLI_PARAM_SIZE_HINT, BrotliEncoderParameter::BROTLI_PARAM_CATABLE, BrotliEncoderParameter::BROTLI_PARAM_MAGIC_NUMBER, BrotliEncoderParameter::BROTLI_PARAM_Q9_5, ]; let values = [3u32, 16, 0, 0, 0, 0]; let mut encoded_size = BrotliEncoderMaxCompressedSizeMulti(0, 4); let mut encoded_backing = [0u8; 145]; let encoded = &mut encoded_backing[..encoded_size]; let ret = unsafe { BrotliEncoderCompressMulti( params.len(), params[..].as_ptr(), values[..].as_ptr(), 0, core::ptr::null(), &mut encoded_size, encoded.as_mut_ptr(), 4, None, None, core::ptr::null_mut(), ) }; assert_eq!(ret, 1); let mut rt_size = 256; let mut rt_buffer = [0u8; 256]; assert_ne!(encoded_size, 0); let ret2 = unsafe { super::super::decompressor::CBrotliDecoderDecompress( encoded_size, encoded.as_ptr(), &mut rt_size, rt_buffer.as_mut_ptr(), ) }; match ret2 { super::super::decompressor::ffi::interface::BrotliDecoderResult::BROTLI_DECODER_RESULT_SUCCESS => { }, _ => panic!("{}", ret2 as i32), } assert_eq!(rt_size, 0); } #[test] fn test_compress_empty_multi_raw_one_thread() { let input = []; let params = [ BrotliEncoderParameter::BROTLI_PARAM_QUALITY, BrotliEncoderParameter::BROTLI_PARAM_Q9_5, BrotliEncoderParameter::BROTLI_PARAM_CATABLE, BrotliEncoderParameter::BROTLI_PARAM_APPENDABLE, BrotliEncoderParameter::BROTLI_PARAM_MAGIC_NUMBER, ]; let values = [10u32, 1, 1, 1, 1]; let mut encoded_size = BrotliEncoderMaxCompressedSizeMulti(input.len(), 1); let mut encoded_backing = [0u8; 25]; let encoded = &mut encoded_backing[..encoded_size]; assert_eq!(params.len(), 5); assert_eq!(encoded_size, 25); let ret = unsafe { BrotliEncoderCompressMulti( params.len(), params[..].as_ptr(), values[..].as_ptr(), input.len(), input[..].as_ptr(), &mut encoded_size, encoded.as_mut_ptr(), 1, None, None, core::ptr::null_mut(), ) }; assert_eq!(ret, 1); let mut rt_size = 256; let mut rt_buffer = [0u8; 256]; assert_ne!(encoded_size, 0); let ret2 = unsafe { super::super::decompressor::CBrotliDecoderDecompress( encoded_size, encoded.as_ptr(), &mut rt_size, rt_buffer.as_mut_ptr(), ) }; match ret2 { super::super::decompressor::ffi::interface::BrotliDecoderResult::BROTLI_DECODER_RESULT_SUCCESS => { }, _ => panic!("{}", ret2 as i32), } assert_eq!(rt_size, input.len()); assert_eq!(&rt_buffer[..rt_size], &input[..]); } #[test] fn test_compress_empty_multi_catable() { let input = []; let params = [ BrotliEncoderParameter::BROTLI_PARAM_QUALITY, BrotliEncoderParameter::BROTLI_PARAM_LGWIN, BrotliEncoderParameter::BROTLI_PARAM_SIZE_HINT, BrotliEncoderParameter::BROTLI_PARAM_CATABLE, BrotliEncoderParameter::BROTLI_PARAM_MAGIC_NUMBER, BrotliEncoderParameter::BROTLI_PARAM_Q9_5, ]; let values = [3u32, 16, 0, 1, 1, 0]; let mut encoded_size = BrotliEncoderMaxCompressedSizeMulti(input.len(), 4); let mut encoded_backing = [0u8; 145]; let encoded = &mut encoded_backing[..encoded_size]; let ret = unsafe { BrotliEncoderCompressMulti( params.len(), params[..].as_ptr(), values[..].as_ptr(), input.len(), input[..].as_ptr(), &mut encoded_size, encoded.as_mut_ptr(), 4, None, None, core::ptr::null_mut(), ) }; assert_eq!(ret, 1); let mut rt_size = 256; let mut rt_buffer = [0u8; 256]; assert_ne!(encoded_size, 0); let ret2 = unsafe { super::super::decompressor::CBrotliDecoderDecompress( encoded_size, encoded.as_ptr(), &mut rt_size, rt_buffer.as_mut_ptr(), ) }; match ret2 { super::super::decompressor::ffi::interface::BrotliDecoderResult::BROTLI_DECODER_RESULT_SUCCESS => { }, _ => panic!("{:?}", ret2 as i32), } assert_eq!(rt_size, input.len()); assert_eq!(&rt_buffer[..rt_size], &input[..]); } brotli-6.0.0/src/lib.rs000075500000000000000000000063251046102023000130360ustar 00000000000000#![no_std] #![allow(non_snake_case)] #![allow(unused_parens)] #![allow(non_camel_case_types)] #![allow(non_snake_case)] #![allow(non_upper_case_globals)] #![cfg_attr(feature = "benchmark", feature(test))] #![cfg_attr(feature = "simd", feature(portable_simd))] #![cfg_attr( feature = "no-stdlib-ffi-binding", cfg_attr(not(feature = "std"), feature(lang_items)) )] #[macro_use] // <-- for debugging, remove xprintln from bit_reader and replace with println #[cfg(feature = "std")] extern crate std; #[cfg(feature = "std")] extern crate alloc_stdlib; #[allow(unused_imports)] #[macro_use] extern crate alloc_no_stdlib as alloc; extern crate brotli_decompressor; pub use alloc::{AllocatedStackMemory, Allocator, SliceWrapper, SliceWrapperMut, StackAllocator}; pub const VERSION: u8 = 1; #[cfg(feature = "std")] pub use alloc_stdlib::HeapAlloc; pub mod enc; pub use self::enc::combined_alloc::CombiningAllocator; pub mod concat; pub use brotli_decompressor::dictionary; pub use brotli_decompressor::reader; #[cfg(feature = "std")] pub use brotli_decompressor::reader::Decompressor; pub use brotli_decompressor::reader::DecompressorCustomIo; pub use brotli_decompressor::transform; pub use brotli_decompressor::transform::TransformDictionaryWord; pub use brotli_decompressor::writer; pub use brotli_decompressor::BrotliState; pub use brotli_decompressor::HuffmanCode; // so we can make custom allocator for decompression pub use brotli_decompressor::writer::DecompressorWriterCustomIo; #[cfg(feature = "std")] pub use brotli_decompressor::writer::DecompressorWriter; pub use brotli_decompressor::io_wrappers::{CustomRead, CustomWrite}; #[cfg(feature = "std")] pub use brotli_decompressor::io_wrappers::{IntoIoReader, IoReaderWrapper, IoWriterWrapper}; pub use enc::input_pair::InputPair; pub use enc::input_pair::InputReference; pub use enc::input_pair::InputReferenceMut; pub use enc::interface; pub use enc::interface::SliceOffset; #[cfg(feature = "ffi-api")] pub mod ffi; // interface // pub fn BrotliDecompressStream(mut available_in: &mut usize, // input_offset: &mut usize, // input: &[u8], // mut available_out: &mut usize, // mut output_offset: &mut usize, // mut output: &mut [u8], // mut total_out: &mut usize, // mut s: &mut BrotliState); pub use brotli_decompressor::{BrotliDecompressStream, BrotliResult}; #[cfg(feature = "std")] pub use enc::{BrotliCompress, BrotliCompressCustomAlloc}; pub use enc::{BrotliCompressCustomIo, BrotliCompressCustomIoCustomDict}; #[cfg(feature = "std")] pub use enc::reader::CompressorReader; pub use enc::reader::CompressorReaderCustomIo; #[cfg(feature = "std")] pub use enc::writer::CompressorWriter; pub use enc::writer::CompressorWriterCustomIo; #[cfg(feature = "std")] pub use brotli_decompressor::BrotliDecompress; #[cfg(feature = "std")] pub use brotli_decompressor::BrotliDecompressCustomAlloc; pub use brotli_decompressor::BrotliDecompressCustomIo; pub use brotli_decompressor::BrotliDecompressCustomIoCustomDict; #[cfg(feature = "std")] pub use brotli_decompressor::copy_from_to; brotli-6.0.0/testdata/.gitattributes000064400000000000000000000000111046102023000156160ustar 00000000000000* binary brotli-6.0.0/testdata/10x10y000064400000000000000000000000241046102023000136140ustar 00000000000000XXXXXXXXXXYYYYYYYYYYbrotli-6.0.0/testdata/64x000064400000000000000000000001001046102023000132660ustar 00000000000000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbrotli-6.0.0/testdata/64x.compressed000064400000000000000000000000121046102023000154330ustar 00000000000000?$°â™€brotli-6.0.0/testdata/aaabaaaa000064400000000000000000002000011046102023000143370ustar 00000000000000aaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrotli-6.0.0/testdata/alice29.txt000064400000000000000000004510311046102023000147300ustar 00000000000000 ALICE'S ADVENTURES IN WONDERLAND Lewis Carroll THE MILLENNIUM FULCRUM EDITION 2.9 CHAPTER I Down the Rabbit-Hole Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, `and what is the use of a book,' thought Alice `without pictures or conversation?' So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when suddenly a White Rabbit with pink eyes ran close by her. There was nothing so VERY remarkable in that; nor did Alice think it so VERY much out of the way to hear the Rabbit say to itself, `Oh dear! Oh dear! I shall be late!' (when she thought it over afterwards, it occurred to her that she ought to have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually TOOK A WATCH OUT OF ITS WAISTCOAT- POCKET, and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the hedge. In another moment down went Alice after it, never once considering how in the world she was to get out again. The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well. Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and book-shelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; it was labelled `ORANGE MARMALADE', but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it. `Well!' thought Alice to herself, `after such a fall as this, I shall think nothing of tumbling down stairs! How brave they'll all think me at home! Why, I wouldn't say anything about it, even if I fell off the top of the house!' (Which was very likely true.) Down, down, down. Would the fall NEVER come to an end! `I wonder how many miles I've fallen by this time?' she said aloud. `I must be getting somewhere near the centre of the earth. Let me see: that would be four thousand miles down, I think--' (for, you see, Alice had learnt several things of this sort in her lessons in the schoolroom, and though this was not a VERY good opportunity for showing off her knowledge, as there was no one to listen to her, still it was good practice to say it over) `--yes, that's about the right distance--but then I wonder what Latitude or Longitude I've got to?' (Alice had no idea what Latitude was, or Longitude either, but thought they were nice grand words to say.) Presently she began again. `I wonder if I shall fall right THROUGH the earth! How funny it'll seem to come out among the people that walk with their heads downward! The Antipathies, I think--' (she was rather glad there WAS no one listening, this time, as it didn't sound at all the right word) `--but I shall have to ask them what the name of the country is, you know. Please, Ma'am, is this New Zealand or Australia?' (and she tried to curtsey as she spoke--fancy CURTSEYING as you're falling through the air! Do you think you could manage it?) `And what an ignorant little girl she'll think me for asking! No, it'll never do to ask: perhaps I shall see it written up somewhere.' Down, down, down. There was nothing else to do, so Alice soon began talking again. `Dinah'll miss me very much to-night, I should think!' (Dinah was the cat.) `I hope they'll remember her saucer of milk at tea-time. Dinah my dear! I wish you were down here with me! There are no mice in the air, I'm afraid, but you might catch a bat, and that's very like a mouse, you know. But do cats eat bats, I wonder?' And here Alice began to get rather sleepy, and went on saying to herself, in a dreamy sort of way, `Do cats eat bats? Do cats eat bats?' and sometimes, `Do bats eat cats?' for, you see, as she couldn't answer either question, it didn't much matter which way she put it. She felt that she was dozing off, and had just begun to dream that she was walking hand in hand with Dinah, and saying to her very earnestly, `Now, Dinah, tell me the truth: did you ever eat a bat?' when suddenly, thump! thump! down she came upon a heap of sticks and dry leaves, and the fall was over. Alice was not a bit hurt, and she jumped up on to her feet in a moment: she looked up, but it was all dark overhead; before her was another long passage, and the White Rabbit was still in sight, hurrying down it. There was not a moment to be lost: away went Alice like the wind, and was just in time to hear it say, as it turned a corner, `Oh my ears and whiskers, how late it's getting!' She was close behind it when she turned the corner, but the Rabbit was no longer to be seen: she found herself in a long, low hall, which was lit up by a row of lamps hanging from the roof. There were doors all round the hall, but they were all locked; and when Alice had been all the way down one side and up the other, trying every door, she walked sadly down the middle, wondering how she was ever to get out again. Suddenly she came upon a little three-legged table, all made of solid glass; there was nothing on it except a tiny golden key, and Alice's first thought was that it might belong to one of the doors of the hall; but, alas! either the locks were too large, or the key was too small, but at any rate it would not open any of them. However, on the second time round, she came upon a low curtain she had not noticed before, and behind it was a little door about fifteen inches high: she tried the little golden key in the lock, and to her great delight it fitted! Alice opened the door and found that it led into a small passage, not much larger than a rat-hole: she knelt down and looked along the passage into the loveliest garden you ever saw. How she longed to get out of that dark hall, and wander about among those beds of bright flowers and those cool fountains, but she could not even get her head though the doorway; `and even if my head would go through,' thought poor Alice, `it would be of very little use without my shoulders. Oh, how I wish I could shut up like a telescope! I think I could, if I only know how to begin.' For, you see, so many out-of-the-way things had happened lately, that Alice had begun to think that very few things indeed were really impossible. There seemed to be no use in waiting by the little door, so she went back to the table, half hoping she might find another key on it, or at any rate a book of rules for shutting people up like telescopes: this time she found a little bottle on it, (`which certainly was not here before,' said Alice,) and round the neck of the bottle was a paper label, with the words `DRINK ME' beautifully printed on it in large letters. It was all very well to say `Drink me,' but the wise little Alice was not going to do THAT in a hurry. `No, I'll look first,' she said, `and see whether it's marked "poison" or not'; for she had read several nice little histories about children who had got burnt, and eaten up by wild beasts and other unpleasant things, all because they WOULD not remember the simple rules their friends had taught them: such as, that a red-hot poker will burn you if you hold it too long; and that if you cut your finger VERY deeply with a knife, it usually bleeds; and she had never forgotten that, if you drink much from a bottle marked `poison,' it is almost certain to disagree with you, sooner or later. However, this bottle was NOT marked `poison,' so Alice ventured to taste it, and finding it very nice, (it had, in fact, a sort of mixed flavour of cherry-tart, custard, pine-apple, roast turkey, toffee, and hot buttered toast,) she very soon finished it off. * * * * * * * * * * * * * * * * * * * * `What a curious feeling!' said Alice; `I must be shutting up like a telescope.' And so it was indeed: she was now only ten inches high, and her face brightened up at the thought that she was now the right size for going though the little door into that lovely garden. First, however, she waited for a few minutes to see if she was going to shrink any further: she felt a little nervous about this; `for it might end, you know,' said Alice to herself, `in my going out altogether, like a candle. I wonder what I should be like then?' And she tried to fancy what the flame of a candle is like after the candle is blown out, for she could not remember ever having seen such a thing. After a while, finding that nothing more happened, she decided on going into the garden at once; but, alas for poor Alice! when she got to the door, she found he had forgotten the little golden key, and when she went back to the table for it, she found she could not possibly reach it: she could see it quite plainly through the glass, and she tried her best to climb up one of the legs of the table, but it was too slippery; and when she had tired herself out with trying, the poor little thing sat down and cried. `Come, there's no use in crying like that!' said Alice to herself, rather sharply; `I advise you to leave off this minute!' She generally gave herself very good advice, (though she very seldom followed it), and sometimes she scolded herself so severely as to bring tears into her eyes; and once she remembered trying to box her own ears for having cheated herself in a game of croquet she was playing against herself, for this curious child was very fond of pretending to be two people. `But it's no use now,' thought poor Alice, `to pretend to be two people! Why, there's hardly enough of me left to make ONE respectable person!' Soon her eye fell on a little glass box that was lying under the table: she opened it, and found in it a very small cake, on which the words `EAT ME' were beautifully marked in currants. `Well, I'll eat it,' said Alice, `and if it makes me grow larger, I can reach the key; and if it makes me grow smaller, I can creep under the door; so either way I'll get into the garden, and I don't care which happens!' She ate a little bit, and said anxiously to herself, `Which way? Which way?', holding her hand on the top of her head to feel which way it was growing, and she was quite surprised to find that she remained the same size: to be sure, this generally happens when one eats cake, but Alice had got so much into the way of expecting nothing but out-of-the-way things to happen, that it seemed quite dull and stupid for life to go on in the common way. So she set to work, and very soon finished off the cake. * * * * * * * * * * * * * * * * * * * * CHAPTER II The Pool of Tears `Curiouser and curiouser!' cried Alice (she was so much surprised, that for the moment she quite forgot how to speak good English); `now I'm opening out like the largest telescope that ever was! Good-bye, feet!' (for when she looked down at her feet, they seemed to be almost out of sight, they were getting so far off). `Oh, my poor little feet, I wonder who will put on your shoes and stockings for you now, dears? I'm sure _I_ shan't be able! I shall be a great deal too far off to trouble myself about you: you must manage the best way you can; --but I must be kind to them,' thought Alice, `or perhaps they won't walk the way I want to go! Let me see: I'll give them a new pair of boots every Christmas.' And she went on planning to herself how she would manage it. `They must go by the carrier,' she thought; `and how funny it'll seem, sending presents to one's own feet! And how odd the directions will look! ALICE'S RIGHT FOOT, ESQ. HEARTHRUG, NEAR THE FENDER, (WITH ALICE'S LOVE). Oh dear, what nonsense I'm talking!' Just then her head struck against the roof of the hall: in fact she was now more than nine feet high, and she at once took up the little golden key and hurried off to the garden door. Poor Alice! It was as much as she could do, lying down on one side, to look through into the garden with one eye; but to get through was more hopeless than ever: she sat down and began to cry again. `You ought to be ashamed of yourself,' said Alice, `a great girl like you,' (she might well say this), `to go on crying in this way! Stop this moment, I tell you!' But she went on all the same, shedding gallons of tears, until there was a large pool all round her, about four inches deep and reaching half down the hall. After a time she heard a little pattering of feet in the distance, and she hastily dried her eyes to see what was coming. It was the White Rabbit returning, splendidly dressed, with a pair of white kid gloves in one hand and a large fan in the other: he came trotting along in a great hurry, muttering to himself as he came, `Oh! the Duchess, the Duchess! Oh! won't she be savage if I've kept her waiting!' Alice felt so desperate that she was ready to ask help of any one; so, when the Rabbit came near her, she began, in a low, timid voice, `If you please, sir--' The Rabbit started violently, dropped the white kid gloves and the fan, and skurried away into the darkness as hard as he could go. Alice took up the fan and gloves, and, as the hall was very hot, she kept fanning herself all the time she went on talking: `Dear, dear! How queer everything is to-day! And yesterday things went on just as usual. I wonder if I've been changed in the night? Let me think: was I the same when I got up this morning? I almost think I can remember feeling a little different. But if I'm not the same, the next question is, Who in the world am I? Ah, THAT'S the great puzzle!' And she began thinking over all the children she knew that were of the same age as herself, to see if she could have been changed for any of them. `I'm sure I'm not Ada,' she said, `for her hair goes in such long ringlets, and mine doesn't go in ringlets at all; and I'm sure I can't be Mabel, for I know all sorts of things, and she, oh! she knows such a very little! Besides, SHE'S she, and I'm I, and--oh dear, how puzzling it all is! I'll try if I know all the things I used to know. Let me see: four times five is twelve, and four times six is thirteen, and four times seven is--oh dear! I shall never get to twenty at that rate! However, the Multiplication Table doesn't signify: let's try Geography. London is the capital of Paris, and Paris is the capital of Rome, and Rome--no, THAT'S all wrong, I'm certain! I must have been changed for Mabel! I'll try and say "How doth the little--"' and she crossed her hands on her lap as if she were saying lessons, and began to repeat it, but her voice sounded hoarse and strange, and the words did not come the same as they used to do:-- `How doth the little crocodile Improve his shining tail, And pour the waters of the Nile On every golden scale! `How cheerfully he seems to grin, How neatly spread his claws, And welcome little fishes in With gently smiling jaws!' `I'm sure those are not the right words,' said poor Alice, and her eyes filled with tears again as she went on, `I must be Mabel after all, and I shall have to go and live in that poky little house, and have next to no toys to play with, and oh! ever so many lessons to learn! No, I've made up my mind about it; if I'm Mabel, I'll stay down here! It'll be no use their putting their heads down and saying "Come up again, dear!" I shall only look up and say "Who am I then? Tell me that first, and then, if I like being that person, I'll come up: if not, I'll stay down here till I'm somebody else"--but, oh dear!' cried Alice, with a sudden burst of tears, `I do wish they WOULD put their heads down! I am so VERY tired of being all alone here!' As she said this she looked down at her hands, and was surprised to see that she had put on one of the Rabbit's little white kid gloves while she was talking. `How CAN I have done that?' she thought. `I must be growing small again.' She got up and went to the table to measure herself by it, and found that, as nearly as she could guess, she was now about two feet high, and was going on shrinking rapidly: she soon found out that the cause of this was the fan she was holding, and she dropped it hastily, just in time to avoid shrinking away altogether. `That WAS a narrow escape!' said Alice, a good deal frightened at the sudden change, but very glad to find herself still in existence; `and now for the garden!' and she ran with all speed back to the little door: but, alas! the little door was shut again, and the little golden key was lying on the glass table as before, `and things are worse than ever,' thought the poor child, `for I never was so small as this before, never! And I declare it's too bad, that it is!' As she said these words her foot slipped, and in another moment, splash! she was up to her chin in salt water. He first idea was that she had somehow fallen into the sea, `and in that case I can go back by railway,' she said to herself. (Alice had been to the seaside once in her life, and had come to the general conclusion, that wherever you go to on the English coast you find a number of bathing machines in the sea, some children digging in the sand with wooden spades, then a row of lodging houses, and behind them a railway station.) However, she soon made out that she was in the pool of tears which she had wept when she was nine feet high. `I wish I hadn't cried so much!' said Alice, as she swam about, trying to find her way out. `I shall be punished for it now, I suppose, by being drowned in my own tears! That WILL be a queer thing, to be sure! However, everything is queer to-day.' Just then she heard something splashing about in the pool a little way off, and she swam nearer to make out what it was: at first she thought it must be a walrus or hippopotamus, but then she remembered how small she was now, and she soon made out that it was only a mouse that had slipped in like herself. `Would it be of any use, now,' thought Alice, `to speak to this mouse? Everything is so out-of-the-way down here, that I should think very likely it can talk: at any rate, there's no harm in trying.' So she began: `O Mouse, do you know the way out of this pool? I am very tired of swimming about here, O Mouse!' (Alice thought this must be the right way of speaking to a mouse: she had never done such a thing before, but she remembered having seen in her brother's Latin Grammar, `A mouse--of a mouse--to a mouse--a mouse--O mouse!' The Mouse looked at her rather inquisitively, and seemed to her to wink with one of its little eyes, but it said nothing. `Perhaps it doesn't understand English,' thought Alice; `I daresay it's a French mouse, come over with William the Conqueror.' (For, with all her knowledge of history, Alice had no very clear notion how long ago anything had happened.) So she began again: `Ou est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. `Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. `I quite forgot you didn't like cats.' `Not like cats!' cried the Mouse, in a shrill, passionate voice. `Would YOU like cats if you were me?' `Well, perhaps not,' said Alice in a soothing tone: `don't be angry about it. And yet I wish I could show you our cat Dinah: I think you'd take a fancy to cats if you could only see her. She is such a dear quiet thing,' Alice went on, half to herself, as she swam lazily about in the pool, `and she sits purring so nicely by the fire, licking her paws and washing her face--and she is such a nice soft thing to nurse--and she's such a capital one for catching mice--oh, I beg your pardon!' cried Alice again, for this time the Mouse was bristling all over, and she felt certain it must be really offended. `We won't talk about her any more if you'd rather not.' `We indeed!' cried the Mouse, who was trembling down to the end of his tail. `As if I would talk on such a subject! Our family always HATED cats: nasty, low, vulgar things! Don't let me hear the name again!' `I won't indeed!' said Alice, in a great hurry to change the subject of conversation. `Are you--are you fond--of--of dogs?' The Mouse did not answer, so Alice went on eagerly: `There is such a nice little dog near our house I should like to show you! A little bright-eyed terrier, you know, with oh, such long curly brown hair! And it'll fetch things when you throw them, and it'll sit up and beg for its dinner, and all sorts of things--I can't remember half of them--and it belongs to a farmer, you know, and he says it's so useful, it's worth a hundred pounds! He says it kills all the rats and--oh dear!' cried Alice in a sorrowful tone, `I'm afraid I've offended it again!' For the Mouse was swimming away from her as hard as it could go, and making quite a commotion in the pool as it went. So she called softly after it, `Mouse dear! Do come back again, and we won't talk about cats or dogs either, if you don't like them!' When the Mouse heard this, it turned round and swam slowly back to her: its face was quite pale (with passion, Alice thought), and it said in a low trembling voice, `Let us get to the shore, and then I'll tell you my history, and you'll understand why it is I hate cats and dogs.' It was high time to go, for the pool was getting quite crowded with the birds and animals that had fallen into it: there were a Duck and a Dodo, a Lory and an Eaglet, and several other curious creatures. Alice led the way, and the whole party swam to the shore. CHAPTER III A Caucus-Race and a Long Tale They were indeed a queer-looking party that assembled on the bank--the birds with draggled feathers, the animals with their fur clinging close to them, and all dripping wet, cross, and uncomfortable. The first question of course was, how to get dry again: they had a consultation about this, and after a few minutes it seemed quite natural to Alice to find herself talking familiarly with them, as if she had known them all her life. Indeed, she had quite a long argument with the Lory, who at last turned sulky, and would only say, `I am older than you, and must know better'; and this Alice would not allow without knowing how old it was, and, as the Lory positively refused to tell its age, there was no more to be said. At last the Mouse, who seemed to be a person of authority among them, called out, `Sit down, all of you, and listen to me! I'LL soon make you dry enough!' They all sat down at once, in a large ring, with the Mouse in the middle. Alice kept her eyes anxiously fixed on it, for she felt sure she would catch a bad cold if she did not get dry very soon. `Ahem!' said the Mouse with an important air, `are you all ready? This is the driest thing I know. Silence all round, if you please! "William the Conqueror, whose cause was favoured by the pope, was soon submitted to by the English, who wanted leaders, and had been of late much accustomed to usurpation and conquest. Edwin and Morcar, the earls of Mercia and Northumbria--"' `Ugh!' said the Lory, with a shiver. `I beg your pardon!' said the Mouse, frowning, but very politely: `Did you speak?' `Not I!' said the Lory hastily. `I thought you did,' said the Mouse. `--I proceed. "Edwin and Morcar, the earls of Mercia and Northumbria, declared for him: and even Stigand, the patriotic archbishop of Canterbury, found it advisable--"' `Found WHAT?' said the Duck. `Found IT,' the Mouse replied rather crossly: `of course you know what "it" means.' `I know what "it" means well enough, when I find a thing,' said the Duck: `it's generally a frog or a worm. The question is, what did the archbishop find?' The Mouse did not notice this question, but hurriedly went on, `"--found it advisable to go with Edgar Atheling to meet William and offer him the crown. William's conduct at first was moderate. But the insolence of his Normans--" How are you getting on now, my dear?' it continued, turning to Alice as it spoke. `As wet as ever,' said Alice in a melancholy tone: `it doesn't seem to dry me at all.' `In that case,' said the Dodo solemnly, rising to its feet, `I move that the meeting adjourn, for the immediate adoption of more energetic remedies--' `Speak English!' said the Eaglet. `I don't know the meaning of half those long words, and, what's more, I don't believe you do either!' And the Eaglet bent down its head to hide a smile: some of the other birds tittered audibly. `What I was going to say,' said the Dodo in an offended tone, `was, that the best thing to get us dry would be a Caucus-race.' `What IS a Caucus-race?' said Alice; not that she wanted much to know, but the Dodo had paused as if it thought that SOMEBODY ought to speak, and no one else seemed inclined to say anything. `Why,' said the Dodo, `the best way to explain it is to do it.' (And, as you might like to try the thing yourself, some winter day, I will tell you how the Dodo managed it.) First it marked out a race-course, in a sort of circle, (`the exact shape doesn't matter,' it said,) and then all the party were placed along the course, here and there. There was no `One, two, three, and away,' but they began running when they liked, and left off when they liked, so that it was not easy to know when the race was over. However, when they had been running half an hour or so, and were quite dry again, the Dodo suddenly called out `The race is over!' and they all crowded round it, panting, and asking, `But who has won?' This question the Dodo could not answer without a great deal of thought, and it sat for a long time with one finger pressed upon its forehead (the position in which you usually see Shakespeare, in the pictures of him), while the rest waited in silence. At last the Dodo said, `EVERYBODY has won, and all must have prizes.' `But who is to give the prizes?' quite a chorus of voices asked. `Why, SHE, of course,' said the Dodo, pointing to Alice with one finger; and the whole party at once crowded round her, calling out in a confused way, `Prizes! Prizes!' Alice had no idea what to do, and in despair she put her hand in her pocket, and pulled out a box of comfits, (luckily the salt water had not got into it), and handed them round as prizes. There was exactly one a-piece all round. `But she must have a prize herself, you know,' said the Mouse. `Of course,' the Dodo replied very gravely. `What else have you got in your pocket?' he went on, turning to Alice. `Only a thimble,' said Alice sadly. `Hand it over here,' said the Dodo. Then they all crowded round her once more, while the Dodo solemnly presented the thimble, saying `We beg your acceptance of this elegant thimble'; and, when it had finished this short speech, they all cheered. Alice thought the whole thing very absurd, but they all looked so grave that she did not dare to laugh; and, as she could not think of anything to say, she simply bowed, and took the thimble, looking as solemn as she could. The next thing was to eat the comfits: this caused some noise and confusion, as the large birds complained that they could not taste theirs, and the small ones choked and had to be patted on the back. However, it was over at last, and they sat down again in a ring, and begged the Mouse to tell them something more. `You promised to tell me your history, you know,' said Alice, `and why it is you hate--C and D,' she added in a whisper, half afraid that it would be offended again. `Mine is a long and a sad tale!' said the Mouse, turning to Alice, and sighing. `It IS a long tail, certainly,' said Alice, looking down with wonder at the Mouse's tail; `but why do you call it sad?' And she kept on puzzling about it while the Mouse was speaking, so that her idea of the tale was something like this:-- `Fury said to a mouse, That he met in the house, "Let us both go to law: I will prosecute YOU. --Come, I'll take no denial; We must have a trial: For really this morning I've nothing to do." Said the mouse to the cur, "Such a trial, dear Sir, With no jury or judge, would be wasting our breath." "I'll be judge, I'll be jury," Said cunning old Fury: "I'll try the whole cause, and condemn you to death."' `You are not attending!' said the Mouse to Alice severely. `What are you thinking of?' `I beg your pardon,' said Alice very humbly: `you had got to the fifth bend, I think?' `I had NOT!' cried the Mouse, sharply and very angrily. `A knot!' said Alice, always ready to make herself useful, and looking anxiously about her. `Oh, do let me help to undo it!' `I shall do nothing of the sort,' said the Mouse, getting up and walking away. `You insult me by talking such nonsense!' `I didn't mean it!' pleaded poor Alice. `But you're so easily offended, you know!' The Mouse only growled in reply. `Please come back and finish your story!' Alice called after it; and the others all joined in chorus, `Yes, please do!' but the Mouse only shook its head impatiently, and walked a little quicker. `What a pity it wouldn't stay!' sighed the Lory, as soon as it was quite out of sight; and an old Crab took the opportunity of saying to her daughter `Ah, my dear! Let this be a lesson to you never to lose YOUR temper!' `Hold your tongue, Ma!' said the young Crab, a little snappishly. `You're enough to try the patience of an oyster!' `I wish I had our Dinah here, I know I do!' said Alice aloud, addressing nobody in particular. `She'd soon fetch it back!' `And who is Dinah, if I might venture to ask the question?' said the Lory. Alice replied eagerly, for she was always ready to talk about her pet: `Dinah's our cat. And she's such a capital one for catching mice you can't think! And oh, I wish you could see her after the birds! Why, she'll eat a little bird as soon as look at it!' This speech caused a remarkable sensation among the party. Some of the birds hurried off at once: one the old Magpie began wrapping itself up very carefully, remarking, `I really must be getting home; the night-air doesn't suit my throat!' and a Canary called out in a trembling voice to its children, `Come away, my dears! It's high time you were all in bed!' On various pretexts they all moved off, and Alice was soon left alone. `I wish I hadn't mentioned Dinah!' she said to herself in a melancholy tone. `Nobody seems to like her, down here, and I'm sure she's the best cat in the world! Oh, my dear Dinah! I wonder if I shall ever see you any more!' And here poor Alice began to cry again, for she felt very lonely and low-spirited. In a little while, however, she again heard a little pattering of footsteps in the distance, and she looked up eagerly, half hoping that the Mouse had changed his mind, and was coming back to finish his story. CHAPTER IV The Rabbit Sends in a Little Bill It was the White Rabbit, trotting slowly back again, and looking anxiously about as it went, as if it had lost something; and she heard it muttering to itself `The Duchess! The Duchess! Oh my dear paws! Oh my fur and whiskers! She'll get me executed, as sure as ferrets are ferrets! Where CAN I have dropped them, I wonder?' Alice guessed in a moment that it was looking for the fan and the pair of white kid gloves, and she very good-naturedly began hunting about for them, but they were nowhere to be seen--everything seemed to have changed since her swim in the pool, and the great hall, with the glass table and the little door, had vanished completely. Very soon the Rabbit noticed Alice, as she went hunting about, and called out to her in an angry tone, `Why, Mary Ann, what ARE you doing out here? Run home this moment, and fetch me a pair of gloves and a fan! Quick, now!' And Alice was so much frightened that she ran off at once in the direction it pointed to, without trying to explain the mistake it had made. `He took me for his housemaid,' she said to herself as she ran. `How surprised he'll be when he finds out who I am! But I'd better take him his fan and gloves--that is, if I can find them.' As she said this, she came upon a neat little house, on the door of which was a bright brass plate with the name `W. RABBIT' engraved upon it. She went in without knocking, and hurried upstairs, in great fear lest she should meet the real Mary Ann, and be turned out of the house before she had found the fan and gloves. `How queer it seems,' Alice said to herself, `to be going messages for a rabbit! I suppose Dinah'll be sending me on messages next!' And she began fancying the sort of thing that would happen: `"Miss Alice! Come here directly, and get ready for your walk!" "Coming in a minute, nurse! But I've got to see that the mouse doesn't get out." Only I don't think,' Alice went on, `that they'd let Dinah stop in the house if it began ordering people about like that!' By this time she had found her way into a tidy little room with a table in the window, and on it (as she had hoped) a fan and two or three pairs of tiny white kid gloves: she took up the fan and a pair of the gloves, and was just going to leave the room, when her eye fell upon a little bottle that stood near the looking- glass. There was no label this time with the words `DRINK ME,' but nevertheless she uncorked it and put it to her lips. `I know SOMETHING interesting is sure to happen,' she said to herself, `whenever I eat or drink anything; so I'll just see what this bottle does. I do hope it'll make me grow large again, for really I'm quite tired of being such a tiny little thing!' It did so indeed, and much sooner than she had expected: before she had drunk half the bottle, she found her head pressing against the ceiling, and had to stoop to save her neck from being broken. She hastily put down the bottle, saying to herself `That's quite enough--I hope I shan't grow any more--As it is, I can't get out at the door--I do wish I hadn't drunk quite so much!' Alas! it was too late to wish that! She went on growing, and growing, and very soon had to kneel down on the floor: in another minute there was not even room for this, and she tried the effect of lying down with one elbow against the door, and the other arm curled round her head. Still she went on growing, and, as a last resource, she put one arm out of the window, and one foot up the chimney, and said to herself `Now I can do no more, whatever happens. What WILL become of me?' Luckily for Alice, the little magic bottle had now had its full effect, and she grew no larger: still it was very uncomfortable, and, as there seemed to be no sort of chance of her ever getting out of the room again, no wonder she felt unhappy. `It was much pleasanter at home,' thought poor Alice, `when one wasn't always growing larger and smaller, and being ordered about by mice and rabbits. I almost wish I hadn't gone down that rabbit-hole--and yet--and yet--it's rather curious, you know, this sort of life! I do wonder what CAN have happened to me! When I used to read fairy-tales, I fancied that kind of thing never happened, and now here I am in the middle of one! There ought to be a book written about me, that there ought! And when I grow up, I'll write one--but I'm grown up now,' she added in a sorrowful tone; `at least there's no room to grow up any more HERE.' `But then,' thought Alice, `shall I NEVER get any older than I am now? That'll be a comfort, one way--never to be an old woman- -but then--always to have lessons to learn! Oh, I shouldn't like THAT!' `Oh, you foolish Alice!' she answered herself. `How can you learn lessons in here? Why, there's hardly room for YOU, and no room at all for any lesson-books!' And so she went on, taking first one side and then the other, and making quite a conversation of it altogether; but after a few minutes she heard a voice outside, and stopped to listen. `Mary Ann! Mary Ann!' said the voice. `Fetch me my gloves this moment!' Then came a little pattering of feet on the stairs. Alice knew it was the Rabbit coming to look for her, and she trembled till she shook the house, quite forgetting that she was now about a thousand times as large as the Rabbit, and had no reason to be afraid of it. Presently the Rabbit came up to the door, and tried to open it; but, as the door opened inwards, and Alice's elbow was pressed hard against it, that attempt proved a failure. Alice heard it say to itself `Then I'll go round and get in at the window.' `THAT you won't' thought Alice, and, after waiting till she fancied she heard the Rabbit just under the window, she suddenly spread out her hand, and made a snatch in the air. She did not get hold of anything, but she heard a little shriek and a fall, and a crash of broken glass, from which she concluded that it was just possible it had fallen into a cucumber-frame, or something of the sort. Next came an angry voice--the Rabbit's--`Pat! Pat! Where are you?' And then a voice she had never heard before, `Sure then I'm here! Digging for apples, yer honour!' `Digging for apples, indeed!' said the Rabbit angrily. `Here! Come and help me out of THIS!' (Sounds of more broken glass.) `Now tell me, Pat, what's that in the window?' `Sure, it's an arm, yer honour!' (He pronounced it `arrum.') `An arm, you goose! Who ever saw one that size? Why, it fills the whole window!' `Sure, it does, yer honour: but it's an arm for all that.' `Well, it's got no business there, at any rate: go and take it away!' There was a long silence after this, and Alice could only hear whispers now and then; such as, `Sure, I don't like it, yer honour, at all, at all!' `Do as I tell you, you coward!' and at last she spread out her hand again, and made another snatch in the air. This time there were TWO little shrieks, and more sounds of broken glass. `What a number of cucumber-frames there must be!' thought Alice. `I wonder what they'll do next! As for pulling me out of the window, I only wish they COULD! I'm sure I don't want to stay in here any longer!' She waited for some time without hearing anything more: at last came a rumbling of little cartwheels, and the sound of a good many voice all talking together: she made out the words: `Where's the other ladder?--Why, I hadn't to bring but one; Bill's got the other--Bill! fetch it here, lad!--Here, put 'em up at this corner--No, tie 'em together first--they don't reach half high enough yet--Oh! they'll do well enough; don't be particular- -Here, Bill! catch hold of this rope--Will the roof bear?--Mind that loose slate--Oh, it's coming down! Heads below!' (a loud crash)--`Now, who did that?--It was Bill, I fancy--Who's to go down the chimney?--Nay, I shan't! YOU do it!--That I won't, then!--Bill's to go down--Here, Bill! the master says you're to go down the chimney!' `Oh! So Bill's got to come down the chimney, has he?' said Alice to herself. `Shy, they seem to put everything upon Bill! I wouldn't be in Bill's place for a good deal: this fireplace is narrow, to be sure; but I THINK I can kick a little!' She drew her foot as far down the chimney as she could, and waited till she heard a little animal (she couldn't guess of what sort it was) scratching and scrambling about in the chimney close above her: then, saying to herself `This is Bill,' she gave one sharp kick, and waited to see what would happen next. The first thing she heard was a general chorus of `There goes Bill!' then the Rabbit's voice along--`Catch him, you by the hedge!' then silence, and then another confusion of voices--`Hold up his head--Brandy now--Don't choke him--How was it, old fellow? What happened to you? Tell us all about it!' Last came a little feeble, squeaking voice, (`That's Bill,' thought Alice,) `Well, I hardly know--No more, thank ye; I'm better now--but I'm a deal too flustered to tell you--all I know is, something comes at me like a Jack-in-the-box, and up I goes like a sky-rocket!' `So you did, old fellow!' said the others. `We must burn the house down!' said the Rabbit's voice; and Alice called out as loud as she could, `If you do. I'll set Dinah at you!' There was a dead silence instantly, and Alice thought to herself, `I wonder what they WILL do next! If they had any sense, they'd take the roof off.' After a minute or two, they began moving about again, and Alice heard the Rabbit say, `A barrowful will do, to begin with.' `A barrowful of WHAT?' thought Alice; but she had not long to doubt, for the next moment a shower of little pebbles came rattling in at the window, and some of them hit her in the face. `I'll put a stop to this,' she said to herself, and shouted out, `You'd better not do that again!' which produced another dead silence. Alice noticed with some surprise that the pebbles were all turning into little cakes as they lay on the floor, and a bright idea came into her head. `If I eat one of these cakes,' she thought, `it's sure to make SOME change in my size; and as it can't possibly make me larger, it must make me smaller, I suppose.' So she swallowed one of the cakes, and was delighted to find that she began shrinking directly. As soon as she was small enough to get through the door, she ran out of the house, and found quite a crowd of little animals and birds waiting outside. The poor little Lizard, Bill, was in the middle, being held up by two guinea-pigs, who were giving it something out of a bottle. They all made a rush at Alice the moment she appeared; but she ran off as hard as she could, and soon found herself safe in a thick wood. `The first thing I've got to do,' said Alice to herself, as she wandered about in the wood, `is to grow to my right size again; and the second thing is to find my way into that lovely garden. I think that will be the best plan.' It sounded an excellent plan, no doubt, and very neatly and simply arranged; the only difficulty was, that she had not the smallest idea how to set about it; and while she was peering about anxiously among the trees, a little sharp bark just over her head made her look up in a great hurry. An enormous puppy was looking down at her with large round eyes, and feebly stretching out one paw, trying to touch her. `Poor little thing!' said Alice, in a coaxing tone, and she tried hard to whistle to it; but she was terribly frightened all the time at the thought that it might be hungry, in which case it would be very likely to eat her up in spite of all her coaxing. Hardly knowing what she did, she picked up a little bit of stick, and held it out to the puppy; whereupon the puppy jumped into the air off all its feet at once, with a yelp of delight, and rushed at the stick, and made believe to worry it; then Alice dodged behind a great thistle, to keep herself from being run over; and the moment she appeared on the other side, the puppy made another rush at the stick, and tumbled head over heels in its hurry to get hold of it; then Alice, thinking it was very like having a game of play with a cart-horse, and expecting every moment to be trampled under its feet, ran round the thistle again; then the puppy began a series of short charges at the stick, running a very little way forwards each time and a long way back, and barking hoarsely all the while, till at last it sat down a good way off, panting, with its tongue hanging out of its mouth, and its great eyes half shut. This seemed to Alice a good opportunity for making her escape; so she set off at once, and ran till she was quite tired and out of breath, and till the puppy's bark sounded quite faint in the distance. `And yet what a dear little puppy it was!' said Alice, as she leant against a buttercup to rest herself, and fanned herself with one of the leaves: `I should have liked teaching it tricks very much, if--if I'd only been the right size to do it! Oh dear! I'd nearly forgotten that I've got to grow up again! Let me see--how IS it to be managed? I suppose I ought to eat or drink something or other; but the great question is, what?' The great question certainly was, what? Alice looked all round her at the flowers and the blades of grass, but she did not see anything that looked like the right thing to eat or drink under the circumstances. There was a large mushroom growing near her, about the same height as herself; and when she had looked under it, and on both sides of it, and behind it, it occurred to her that she might as well look and see what was on the top of it. She stretched herself up on tiptoe, and peeped over the edge of the mushroom, and her eyes immediately met those of a large caterpillar, that was sitting on the top with its arms folded, quietly smoking a long hookah, and taking not the smallest notice of her or of anything else. CHAPTER V Advice from a Caterpillar The Caterpillar and Alice looked at each other for some time in silence: at last the Caterpillar took the hookah out of its mouth, and addressed her in a languid, sleepy voice. `Who are YOU?' said the Caterpillar. This was not an encouraging opening for a conversation. Alice replied, rather shyly, `I--I hardly know, sir, just at present-- at least I know who I WAS when I got up this morning, but I think I must have been changed several times since then.' `What do you mean by that?' said the Caterpillar sternly. `Explain yourself!' `I can't explain MYSELF, I'm afraid, sir' said Alice, `because I'm not myself, you see.' `I don't see,' said the Caterpillar. `I'm afraid I can't put it more clearly,' Alice replied very politely, `for I can't understand it myself to begin with; and being so many different sizes in a day is very confusing.' `It isn't,' said the Caterpillar. `Well, perhaps you haven't found it so yet,' said Alice; `but when you have to turn into a chrysalis--you will some day, you know--and then after that into a butterfly, I should think you'll feel it a little queer, won't you?' `Not a bit,' said the Caterpillar. `Well, perhaps your feelings may be different,' said Alice; `all I know is, it would feel very queer to ME.' `You!' said the Caterpillar contemptuously. `Who are YOU?' Which brought them back again to the beginning of the conversation. Alice felt a little irritated at the Caterpillar's making such VERY short remarks, and she drew herself up and said, very gravely, `I think, you ought to tell me who YOU are, first.' `Why?' said the Caterpillar. Here was another puzzling question; and as Alice could not think of any good reason, and as the Caterpillar seemed to be in a VERY unpleasant state of mind, she turned away. `Come back!' the Caterpillar called after her. `I've something important to say!' This sounded promising, certainly: Alice turned and came back again. `Keep your temper,' said the Caterpillar. `Is that all?' said Alice, swallowing down her anger as well as she could. `No,' said the Caterpillar. Alice thought she might as well wait, as she had nothing else to do, and perhaps after all it might tell her something worth hearing. For some minutes it puffed away without speaking, but at last it unfolded its arms, took the hookah out of its mouth again, and said, `So you think you're changed, do you?' `I'm afraid I am, sir,' said Alice; `I can't remember things as I used--and I don't keep the same size for ten minutes together!' `Can't remember WHAT things?' said the Caterpillar. `Well, I've tried to say "HOW DOTH THE LITTLE BUSY BEE," but it all came different!' Alice replied in a very melancholy voice. `Repeat, "YOU ARE OLD, FATHER WILLIAM,"' said the Caterpillar. Alice folded her hands, and began:-- `You are old, Father William,' the young man said, `And your hair has become very white; And yet you incessantly stand on your head-- Do you think, at your age, it is right?' `In my youth,' Father William replied to his son, `I feared it might injure the brain; But, now that I'm perfectly sure I have none, Why, I do it again and again.' `You are old,' said the youth, `as I mentioned before, And have grown most uncommonly fat; Yet you turned a back-somersault in at the door-- Pray, what is the reason of that?' `In my youth,' said the sage, as he shook his grey locks, `I kept all my limbs very supple By the use of this ointment--one shilling the box-- Allow me to sell you a couple?' `You are old,' said the youth, `and your jaws are too weak For anything tougher than suet; Yet you finished the goose, with the bones and the beak-- Pray how did you manage to do it?' `In my youth,' said his father, `I took to the law, And argued each case with my wife; And the muscular strength, which it gave to my jaw, Has lasted the rest of my life.' `You are old,' said the youth, `one would hardly suppose That your eye was as steady as ever; Yet you balanced an eel on the end of your nose-- What made you so awfully clever?' `I have answered three questions, and that is enough,' Said his father; `don't give yourself airs! Do you think I can listen all day to such stuff? Be off, or I'll kick you down stairs!' `That is not said right,' said the Caterpillar. `Not QUITE right, I'm afraid,' said Alice, timidly; `some of the words have got altered.' `It is wrong from beginning to end,' said the Caterpillar decidedly, and there was silence for some minutes. The Caterpillar was the first to speak. `What size do you want to be?' it asked. `Oh, I'm not particular as to size,' Alice hastily replied; `only one doesn't like changing so often, you know.' `I DON'T know,' said the Caterpillar. Alice said nothing: she had never been so much contradicted in her life before, and she felt that she was losing her temper. `Are you content now?' said the Caterpillar. `Well, I should like to be a LITTLE larger, sir, if you wouldn't mind,' said Alice: `three inches is such a wretched height to be.' `It is a very good height indeed!' said the Caterpillar angrily, rearing itself upright as it spoke (it was exactly three inches high). `But I'm not used to it!' pleaded poor Alice in a piteous tone. And she thought of herself, `I wish the creatures wouldn't be so easily offended!' `You'll get used to it in time,' said the Caterpillar; and it put the hookah into its mouth and began smoking again. This time Alice waited patiently until it chose to speak again. In a minute or two the Caterpillar took the hookah out of its mouth and yawned once or twice, and shook itself. Then it got down off the mushroom, and crawled away in the grass, merely remarking as it went, `One side will make you grow taller, and the other side will make you grow shorter.' `One side of WHAT? The other side of WHAT?' thought Alice to herself. `Of the mushroom,' said the Caterpillar, just as if she had asked it aloud; and in another moment it was out of sight. Alice remained looking thoughtfully at the mushroom for a minute, trying to make out which were the two sides of it; and as it was perfectly round, she found this a very difficult question. However, at last she stretched her arms round it as far as they would go, and broke off a bit of the edge with each hand. `And now which is which?' she said to herself, and nibbled a little of the right-hand bit to try the effect: the next moment she felt a violent blow underneath her chin: it had struck her foot! She was a good deal frightened by this very sudden change, but she felt that there was no time to be lost, as she was shrinking rapidly; so she set to work at once to eat some of the other bit. Her chin was pressed so closely against her foot, that there was hardly room to open her mouth; but she did it at last, and managed to swallow a morsel of the lefthand bit. * * * * * * * * * * * * * * * * * * * * `Come, my head's free at last!' said Alice in a tone of delight, which changed into alarm in another moment, when she found that her shoulders were nowhere to be found: all she could see, when she looked down, was an immense length of neck, which seemed to rise like a stalk out of a sea of green leaves that lay far below her. `What CAN all that green stuff be?' said Alice. `And where HAVE my shoulders got to? And oh, my poor hands, how is it I can't see you?' She was moving them about as she spoke, but no result seemed to follow, except a little shaking among the distant green leaves. As there seemed to be no chance of getting her hands up to her head, she tried to get her head down to them, and was delighted to find that her neck would bend about easily in any direction, like a serpent. She had just succeeded in curving it down into a graceful zigzag, and was going to dive in among the leaves, which she found to be nothing but the tops of the trees under which she had been wandering, when a sharp hiss made her draw back in a hurry: a large pigeon had flown into her face, and was beating her violently with its wings. `Serpent!' screamed the Pigeon. `I'm NOT a serpent!' said Alice indignantly. `Let me alone!' `Serpent, I say again!' repeated the Pigeon, but in a more subdued tone, and added with a kind of sob, `I've tried every way, and nothing seems to suit them!' `I haven't the least idea what you're talking about,' said Alice. `I've tried the roots of trees, and I've tried banks, and I've tried hedges,' the Pigeon went on, without attending to her; `but those serpents! There's no pleasing them!' Alice was more and more puzzled, but she thought there was no use in saying anything more till the Pigeon had finished. `As if it wasn't trouble enough hatching the eggs,' said the Pigeon; `but I must be on the look-out for serpents night and day! Why, I haven't had a wink of sleep these three weeks!' `I'm very sorry you've been annoyed,' said Alice, who was beginning to see its meaning. `And just as I'd taken the highest tree in the wood,' continued the Pigeon, raising its voice to a shriek, `and just as I was thinking I should be free of them at last, they must needs come wriggling down from the sky! Ugh, Serpent!' `But I'm NOT a serpent, I tell you!' said Alice. `I'm a--I'm a--' `Well! WHAT are you?' said the Pigeon. `I can see you're trying to invent something!' `I--I'm a little girl,' said Alice, rather doubtfully, as she remembered the number of changes she had gone through that day. `A likely story indeed!' said the Pigeon in a tone of the deepest contempt. `I've seen a good many little girls in my time, but never ONE with such a neck as that! No, no! You're a serpent; and there's no use denying it. I suppose you'll be telling me next that you never tasted an egg!' `I HAVE tasted eggs, certainly,' said Alice, who was a very truthful child; `but little girls eat eggs quite as much as serpents do, you know.' `I don't believe it,' said the Pigeon; `but if they do, why then they're a kind of serpent, that's all I can say.' This was such a new idea to Alice, that she was quite silent for a minute or two, which gave the Pigeon the opportunity of adding, `You're looking for eggs, I know THAT well enough; and what does it matter to me whether you're a little girl or a serpent?' `It matters a good deal to ME,' said Alice hastily; `but I'm not looking for eggs, as it happens; and if I was, I shouldn't want YOURS: I don't like them raw.' `Well, be off, then!' said the Pigeon in a sulky tone, as it settled down again into its nest. Alice crouched down among the trees as well as she could, for her neck kept getting entangled among the branches, and every now and then she had to stop and untwist it. After a while she remembered that she still held the pieces of mushroom in her hands, and she set to work very carefully, nibbling first at one and then at the other, and growing sometimes taller and sometimes shorter, until she had succeeded in bringing herself down to her usual height. It was so long since she had been anything near the right size, that it felt quite strange at first; but she got used to it in a few minutes, and began talking to herself, as usual. `Come, there's half my plan done now! How puzzling all these changes are! I'm never sure what I'm going to be, from one minute to another! However, I've got back to my right size: the next thing is, to get into that beautiful garden--how IS that to be done, I wonder?' As she said this, she came suddenly upon an open place, with a little house in it about four feet high. `Whoever lives there,' thought Alice, `it'll never do to come upon them THIS size: why, I should frighten them out of their wits!' So she began nibbling at the righthand bit again, and did not venture to go near the house till she had brought herself down to nine inches high. CHAPTER VI Pig and Pepper For a minute or two she stood looking at the house, and wondering what to do next, when suddenly a footman in livery came running out of the wood--(she considered him to be a footman because he was in livery: otherwise, judging by his face only, she would have called him a fish)--and rapped loudly at the door with his knuckles. It was opened by another footman in livery, with a round face, and large eyes like a frog; and both footmen, Alice noticed, had powdered hair that curled all over their heads. She felt very curious to know what it was all about, and crept a little way out of the wood to listen. The Fish-Footman began by producing from under his arm a great letter, nearly as large as himself, and this he handed over to the other, saying, in a solemn tone, `For the Duchess. An invitation from the Queen to play croquet.' The Frog-Footman repeated, in the same solemn tone, only changing the order of the words a little, `From the Queen. An invitation for the Duchess to play croquet.' Then they both bowed low, and their curls got entangled together. Alice laughed so much at this, that she had to run back into the wood for fear of their hearing her; and when she next peeped out the Fish-Footman was gone, and the other was sitting on the ground near the door, staring stupidly up into the sky. Alice went timidly up to the door, and knocked. `There's no sort of use in knocking,' said the Footman, `and that for two reasons. First, because I'm on the same side of the door as you are; secondly, because they're making such a noise inside, no one could possibly hear you.' And certainly there was a most extraordinary noise going on within--a constant howling and sneezing, and every now and then a great crash, as if a dish or kettle had been broken to pieces. `Please, then,' said Alice, `how am I to get in?' `There might be some sense in your knocking,' the Footman went on without attending to her, `if we had the door between us. For instance, if you were INSIDE, you might knock, and I could let you out, you know.' He was looking up into the sky all the time he was speaking, and this Alice thought decidedly uncivil. `But perhaps he can't help it,' she said to herself; `his eyes are so VERY nearly at the top of his head. But at any rate he might answer questions.--How am I to get in?' she repeated, aloud. `I shall sit here,' the Footman remarked, `till tomorrow--' At this moment the door of the house opened, and a large plate came skimming out, straight at the Footman's head: it just grazed his nose, and broke to pieces against one of the trees behind him. `--or next day, maybe,' the Footman continued in the same tone, exactly as if nothing had happened. `How am I to get in?' asked Alice again, in a louder tone. `ARE you to get in at all?' said the Footman. `That's the first question, you know.' It was, no doubt: only Alice did not like to be told so. `It's really dreadful,' she muttered to herself, `the way all the creatures argue. It's enough to drive one crazy!' The Footman seemed to think this a good opportunity for repeating his remark, with variations. `I shall sit here,' he said, `on and off, for days and days.' `But what am I to do?' said Alice. `Anything you like,' said the Footman, and began whistling. `Oh, there's no use in talking to him,' said Alice desperately: `he's perfectly idiotic!' And she opened the door and went in. The door led right into a large kitchen, which was full of smoke from one end to the other: the Duchess was sitting on a three-legged stool in the middle, nursing a baby; the cook was leaning over the fire, stirring a large cauldron which seemed to be full of soup. `There's certainly too much pepper in that soup!' Alice said to herself, as well as she could for sneezing. There was certainly too much of it in the air. Even the Duchess sneezed occasionally; and as for the baby, it was sneezing and howling alternately without a moment's pause. The only things in the kitchen that did not sneeze, were the cook, and a large cat which was sitting on the hearth and grinning from ear to ear. `Please would you tell me,' said Alice, a little timidly, for she was not quite sure whether it was good manners for her to speak first, `why your cat grins like that?' `It's a Cheshire cat,' said the Duchess, `and that's why. Pig!' She said the last word with such sudden violence that Alice quite jumped; but she saw in another moment that it was addressed to the baby, and not to her, so she took courage, and went on again:-- `I didn't know that Cheshire cats always grinned; in fact, I didn't know that cats COULD grin.' `They all can,' said the Duchess; `and most of 'em do.' `I don't know of any that do,' Alice said very politely, feeling quite pleased to have got into a conversation. `You don't know much,' said the Duchess; `and that's a fact.' Alice did not at all like the tone of this remark, and thought it would be as well to introduce some other subject of conversation. While she was trying to fix on one, the cook took the cauldron of soup off the fire, and at once set to work throwing everything within her reach at the Duchess and the baby --the fire-irons came first; then followed a shower of saucepans, plates, and dishes. The Duchess took no notice of them even when they hit her; and the baby was howling so much already, that it was quite impossible to say whether the blows hurt it or not. `Oh, PLEASE mind what you're doing!' cried Alice, jumping up and down in an agony of terror. `Oh, there goes his PRECIOUS nose'; as an unusually large saucepan flew close by it, and very nearly carried it off. `If everybody minded their own business,' the Duchess said in a hoarse growl, `the world would go round a deal faster than it does.' `Which would NOT be an advantage,' said Alice, who felt very glad to get an opportunity of showing off a little of her knowledge. `Just think of what work it would make with the day and night! You see the earth takes twenty-four hours to turn round on its axis--' `Talking of axes,' said the Duchess, `chop off her head!' Alice glanced rather anxiously at the cook, to see if she meant to take the hint; but the cook was busily stirring the soup, and seemed not to be listening, so she went on again: `Twenty-four hours, I THINK; or is it twelve? I--' `Oh, don't bother ME,' said the Duchess; `I never could abide figures!' And with that she began nursing her child again, singing a sort of lullaby to it as she did so, and giving it a violent shake at the end of every line: `Speak roughly to your little boy, And beat him when he sneezes: He only does it to annoy, Because he knows it teases.' CHORUS. (In which the cook and the baby joined):-- `Wow! wow! wow!' While the Duchess sang the second verse of the song, she kept tossing the baby violently up and down, and the poor little thing howled so, that Alice could hardly hear the words:-- `I speak severely to my boy, I beat him when he sneezes; For he can thoroughly enjoy The pepper when he pleases!' CHORUS. `Wow! wow! wow!' `Here! you may nurse it a bit, if you like!' the Duchess said to Alice, flinging the baby at her as she spoke. `I must go and get ready to play croquet with the Queen,' and she hurried out of the room. The cook threw a frying-pan after her as she went out, but it just missed her. Alice caught the baby with some difficulty, as it was a queer- shaped little creature, and held out its arms and legs in all directions, `just like a star-fish,' thought Alice. The poor little thing was snorting like a steam-engine when she caught it, and kept doubling itself up and straightening itself out again, so that altogether, for the first minute or two, it was as much as she could do to hold it. As soon as she had made out the proper way of nursing it, (which was to twist it up into a sort of knot, and then keep tight hold of its right ear and left foot, so as to prevent its undoing itself,) she carried it out into the open air. `IF I don't take this child away with me,' thought Alice, `they're sure to kill it in a day or two: wouldn't it be murder to leave it behind?' She said the last words out loud, and the little thing grunted in reply (it had left off sneezing by this time). `Don't grunt,' said Alice; `that's not at all a proper way of expressing yourself.' The baby grunted again, and Alice looked very anxiously into its face to see what was the matter with it. There could be no doubt that it had a VERY turn-up nose, much more like a snout than a real nose; also its eyes were getting extremely small for a baby: altogether Alice did not like the look of the thing at all. `But perhaps it was only sobbing,' she thought, and looked into its eyes again, to see if there were any tears. No, there were no tears. `If you're going to turn into a pig, my dear,' said Alice, seriously, `I'll have nothing more to do with you. Mind now!' The poor little thing sobbed again (or grunted, it was impossible to say which), and they went on for some while in silence. Alice was just beginning to think to herself, `Now, what am I to do with this creature when I get it home?' when it grunted again, so violently, that she looked down into its face in some alarm. This time there could be NO mistake about it: it was neither more nor less than a pig, and she felt that it would be quite absurd for her to carry it further. So she set the little creature down, and felt quite relieved to see it trot away quietly into the wood. `If it had grown up,' she said to herself, `it would have made a dreadfully ugly child: but it makes rather a handsome pig, I think.' And she began thinking over other children she knew, who might do very well as pigs, and was just saying to herself, `if one only knew the right way to change them--' when she was a little startled by seeing the Cheshire Cat sitting on a bough of a tree a few yards off. The Cat only grinned when it saw Alice. It looked good- natured, she thought: still it had VERY long claws and a great many teeth, so she felt that it ought to be treated with respect. `Cheshire Puss,' she began, rather timidly, as she did not at all know whether it would like the name: however, it only grinned a little wider. `Come, it's pleased so far,' thought Alice, and she went on. `Would you tell me, please, which way I ought to go from here?' `That depends a good deal on where you want to get to,' said the Cat. `I don't much care where--' said Alice. `Then it doesn't matter which way you go,' said the Cat. `--so long as I get SOMEWHERE,' Alice added as an explanation. `Oh, you're sure to do that,' said the Cat, `if you only walk long enough.' Alice felt that this could not be denied, so she tried another question. `What sort of people live about here?' `In THAT direction,' the Cat said, waving its right paw round, `lives a Hatter: and in THAT direction,' waving the other paw, `lives a March Hare. Visit either you like: they're both mad.' `But I don't want to go among mad people,' Alice remarked. `Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.' `How do you know I'm mad?' said Alice. `You must be,' said the Cat, `or you wouldn't have come here.' Alice didn't think that proved it at all; however, she went on `And how do you know that you're mad?' `To begin with,' said the Cat, `a dog's not mad. You grant that?' `I suppose so,' said Alice. `Well, then,' the Cat went on, `you see, a dog growls when it's angry, and wags its tail when it's pleased. Now I growl when I'm pleased, and wag my tail when I'm angry. Therefore I'm mad.' `I call it purring, not growling,' said Alice. `Call it what you like,' said the Cat. `Do you play croquet with the Queen to-day?' `I should like it very much,' said Alice, `but I haven't been invited yet.' `You'll see me there,' said the Cat, and vanished. Alice was not much surprised at this, she was getting so used to queer things happening. While she was looking at the place where it had been, it suddenly appeared again. `By-the-bye, what became of the baby?' said the Cat. `I'd nearly forgotten to ask.' `It turned into a pig,' Alice quietly said, just as if it had come back in a natural way. `I thought it would,' said the Cat, and vanished again. Alice waited a little, half expecting to see it again, but it did not appear, and after a minute or two she walked on in the direction in which the March Hare was said to live. `I've seen hatters before,' she said to herself; `the March Hare will be much the most interesting, and perhaps as this is May it won't be raving mad--at least not so mad as it was in March.' As she said this, she looked up, and there was the Cat again, sitting on a branch of a tree. `Did you say pig, or fig?' said the Cat. `I said pig,' replied Alice; `and I wish you wouldn't keep appearing and vanishing so suddenly: you make one quite giddy.' `All right,' said the Cat; and this time it vanished quite slowly, beginning with the end of the tail, and ending with the grin, which remained some time after the rest of it had gone. `Well! I've often seen a cat without a grin,' thought Alice; `but a grin without a cat! It's the most curious thing I ever say in my life!' She had not gone much farther before she came in sight of the house of the March Hare: she thought it must be the right house, because the chimneys were shaped like ears and the roof was thatched with fur. It was so large a house, that she did not like to go nearer till she had nibbled some more of the lefthand bit of mushroom, and raised herself to about two feet high: even then she walked up towards it rather timidly, saying to herself `Suppose it should be raving mad after all! I almost wish I'd gone to see the Hatter instead!' CHAPTER VII A Mad Tea-Party There was a table set out under a tree in front of the house, and the March Hare and the Hatter were having tea at it: a Dormouse was sitting between them, fast asleep, and the other two were using it as a cushion, resting their elbows on it, and the talking over its head. `Very uncomfortable for the Dormouse,' thought Alice; `only, as it's asleep, I suppose it doesn't mind.' The table was a large one, but the three were all crowded together at one corner of it: `No room! No room!' they cried out when they saw Alice coming. `There's PLENTY of room!' said Alice indignantly, and she sat down in a large arm-chair at one end of the table. `Have some wine,' the March Hare said in an encouraging tone. Alice looked all round the table, but there was nothing on it but tea. `I don't see any wine,' she remarked. `There isn't any,' said the March Hare. `Then it wasn't very civil of you to offer it,' said Alice angrily. `It wasn't very civil of you to sit down without being invited,' said the March Hare. `I didn't know it was YOUR table,' said Alice; `it's laid for a great many more than three.' `Your hair wants cutting,' said the Hatter. He had been looking at Alice for some time with great curiosity, and this was his first speech. `You should learn not to make personal remarks,' Alice said with some severity; `it's very rude.' The Hatter opened his eyes very wide on hearing this; but all he SAID was, `Why is a raven like a writing-desk?' `Come, we shall have some fun now!' thought Alice. `I'm glad they've begun asking riddles.--I believe I can guess that,' she added aloud. `Do you mean that you think you can find out the answer to it?' said the March Hare. `Exactly so,' said Alice. `Then you should say what you mean,' the March Hare went on. `I do,' Alice hastily replied; `at least--at least I mean what I say--that's the same thing, you know.' `Not the same thing a bit!' said the Hatter. `You might just as well say that "I see what I eat" is the same thing as "I eat what I see"!' `You might just as well say,' added the March Hare, `that "I like what I get" is the same thing as "I get what I like"!' `You might just as well say,' added the Dormouse, who seemed to be talking in his sleep, `that "I breathe when I sleep" is the same thing as "I sleep when I breathe"!' `It IS the same thing with you,' said the Hatter, and here the conversation dropped, and the party sat silent for a minute, while Alice thought over all she could remember about ravens and writing-desks, which wasn't much. The Hatter was the first to break the silence. `What day of the month is it?' he said, turning to Alice: he had taken his watch out of his pocket, and was looking at it uneasily, shaking it every now and then, and holding it to his ear. Alice considered a little, and then said `The fourth.' `Two days wrong!' sighed the Hatter. `I told you butter wouldn't suit the works!' he added looking angrily at the March Hare. `It was the BEST butter,' the March Hare meekly replied. `Yes, but some crumbs must have got in as well,' the Hatter grumbled: `you shouldn't have put it in with the bread-knife.' The March Hare took the watch and looked at it gloomily: then he dipped it into his cup of tea, and looked at it again: but he could think of nothing better to say than his first remark, `It was the BEST butter, you know.' Alice had been looking over his shoulder with some curiosity. `What a funny watch!' she remarked. `It tells the day of the month, and doesn't tell what o'clock it is!' `Why should it?' muttered the Hatter. `Does YOUR watch tell you what year it is?' `Of course not,' Alice replied very readily: `but that's because it stays the same year for such a long time together.' `Which is just the case with MINE,' said the Hatter. Alice felt dreadfully puzzled. The Hatter's remark seemed to have no sort of meaning in it, and yet it was certainly English. `I don't quite understand you,' she said, as politely as she could. `The Dormouse is asleep again,' said the Hatter, and he poured a little hot tea upon its nose. The Dormouse shook its head impatiently, and said, without opening its eyes, `Of course, of course; just what I was going to remark myself.' `Have you guessed the riddle yet?' the Hatter said, turning to Alice again. `No, I give it up,' Alice replied: `what's the answer?' `I haven't the slightest idea,' said the Hatter. `Nor I,' said the March Hare. Alice sighed wearily. `I think you might do something better with the time,' she said, `than waste it in asking riddles that have no answers.' `If you knew Time as well as I do,' said the Hatter, `you wouldn't talk about wasting IT. It's HIM.' `I don't know what you mean,' said Alice. `Of course you don't!' the Hatter said, tossing his head contemptuously. `I dare say you never even spoke to Time!' `Perhaps not,' Alice cautiously replied: `but I know I have to beat time when I learn music.' `Ah! that accounts for it,' said the Hatter. `He won't stand beating. Now, if you only kept on good terms with him, he'd do almost anything you liked with the clock. For instance, suppose it were nine o'clock in the morning, just time to begin lessons: you'd only have to whisper a hint to Time, and round goes the clock in a twinkling! Half-past one, time for dinner!' (`I only wish it was,' the March Hare said to itself in a whisper.) `That would be grand, certainly,' said Alice thoughtfully: `but then--I shouldn't be hungry for it, you know.' `Not at first, perhaps,' said the Hatter: `but you could keep it to half-past one as long as you liked.' `Is that the way YOU manage?' Alice asked. The Hatter shook his head mournfully. `Not I!' he replied. `We quarrelled last March--just before HE went mad, you know--' (pointing with his tea spoon at the March Hare,) `--it was at the great concert given by the Queen of Hearts, and I had to sing "Twinkle, twinkle, little bat! How I wonder what you're at!" You know the song, perhaps?' `I've heard something like it,' said Alice. `It goes on, you know,' the Hatter continued, `in this way:-- "Up above the world you fly, Like a tea-tray in the sky. Twinkle, twinkle--"' Here the Dormouse shook itself, and began singing in its sleep `Twinkle, twinkle, twinkle, twinkle--' and went on so long that they had to pinch it to make it stop. `Well, I'd hardly finished the first verse,' said the Hatter, `when the Queen jumped up and bawled out, "He's murdering the time! Off with his head!"' `How dreadfully savage!' exclaimed Alice. `And ever since that,' the Hatter went on in a mournful tone, `he won't do a thing I ask! It's always six o'clock now.' A bright idea came into Alice's head. `Is that the reason so many tea-things are put out here?' she asked. `Yes, that's it,' said the Hatter with a sigh: `it's always tea-time, and we've no time to wash the things between whiles.' `Then you keep moving round, I suppose?' said Alice. `Exactly so,' said the Hatter: `as the things get used up.' `But what happens when you come to the beginning again?' Alice ventured to ask. `Suppose we change the subject,' the March Hare interrupted, yawning. `I'm getting tired of this. I vote the young lady tells us a story.' `I'm afraid I don't know one,' said Alice, rather alarmed at the proposal. `Then the Dormouse shall!' they both cried. `Wake up, Dormouse!' And they pinched it on both sides at once. The Dormouse slowly opened his eyes. `I wasn't asleep,' he said in a hoarse, feeble voice: `I heard every word you fellows were saying.' `Tell us a story!' said the March Hare. `Yes, please do!' pleaded Alice. `And be quick about it,' added the Hatter, `or you'll be asleep again before it's done.' `Once upon a time there were three little sisters,' the Dormouse began in a great hurry; `and their names were Elsie, Lacie, and Tillie; and they lived at the bottom of a well--' `What did they live on?' said Alice, who always took a great interest in questions of eating and drinking. `They lived on treacle,' said the Dormouse, after thinking a minute or two. `They couldn't have done that, you know,' Alice gently remarked; `they'd have been ill.' `So they were,' said the Dormouse; `VERY ill.' Alice tried to fancy to herself what such an extraordinary ways of living would be like, but it puzzled her too much, so she went on: `But why did they live at the bottom of a well?' `Take some more tea,' the March Hare said to Alice, very earnestly. `I've had nothing yet,' Alice replied in an offended tone, `so I can't take more.' `You mean you can't take LESS,' said the Hatter: `it's very easy to take MORE than nothing.' `Nobody asked YOUR opinion,' said Alice. `Who's making personal remarks now?' the Hatter asked triumphantly. Alice did not quite know what to say to this: so she helped herself to some tea and bread-and-butter, and then turned to the Dormouse, and repeated her question. `Why did they live at the bottom of a well?' The Dormouse again took a minute or two to think about it, and then said, `It was a treacle-well.' `There's no such thing!' Alice was beginning very angrily, but the Hatter and the March Hare went `Sh! sh!' and the Dormouse sulkily remarked, `If you can't be civil, you'd better finish the story for yourself.' `No, please go on!' Alice said very humbly; `I won't interrupt again. I dare say there may be ONE.' `One, indeed!' said the Dormouse indignantly. However, he consented to go on. `And so these three little sisters--they were learning to draw, you know--' `What did they draw?' said Alice, quite forgetting her promise. `Treacle,' said the Dormouse, without considering at all this time. `I want a clean cup,' interrupted the Hatter: `let's all move one place on.' He moved on as he spoke, and the Dormouse followed him: the March Hare moved into the Dormouse's place, and Alice rather unwillingly took the place of the March Hare. The Hatter was the only one who got any advantage from the change: and Alice was a good deal worse off than before, as the March Hare had just upset the milk-jug into his plate. Alice did not wish to offend the Dormouse again, so she began very cautiously: `But I don't understand. Where did they draw the treacle from?' `You can draw water out of a water-well,' said the Hatter; `so I should think you could draw treacle out of a treacle-well--eh, stupid?' `But they were IN the well,' Alice said to the Dormouse, not choosing to notice this last remark. `Of course they were', said the Dormouse; `--well in.' This answer so confused poor Alice, that she let the Dormouse go on for some time without interrupting it. `They were learning to draw,' the Dormouse went on, yawning and rubbing its eyes, for it was getting very sleepy; `and they drew all manner of things--everything that begins with an M--' `Why with an M?' said Alice. `Why not?' said the March Hare. Alice was silent. The Dormouse had closed its eyes by this time, and was going off into a doze; but, on being pinched by the Hatter, it woke up again with a little shriek, and went on: `--that begins with an M, such as mouse-traps, and the moon, and memory, and muchness-- you know you say things are "much of a muchness"--did you ever see such a thing as a drawing of a muchness?' `Really, now you ask me,' said Alice, very much confused, `I don't think--' `Then you shouldn't talk,' said the Hatter. This piece of rudeness was more than Alice could bear: she got up in great disgust, and walked off; the Dormouse fell asleep instantly, and neither of the others took the least notice of her going, though she looked back once or twice, half hoping that they would call after her: the last time she saw them, they were trying to put the Dormouse into the teapot. `At any rate I'll never go THERE again!' said Alice as she picked her way through the wood. `It's the stupidest tea-party I ever was at in all my life!' Just as she said this, she noticed that one of the trees had a door leading right into it. `That's very curious!' she thought. `But everything's curious today. I think I may as well go in at once.' And in she went. Once more she found herself in the long hall, and close to the little glass table. `Now, I'll manage better this time,' she said to herself, and began by taking the little golden key, and unlocking the door that led into the garden. Then she went to work nibbling at the mushroom (she had kept a piece of it in her pocked) till she was about a foot high: then she walked down the little passage: and THEN--she found herself at last in the beautiful garden, among the bright flower-beds and the cool fountains. CHAPTER VIII The Queen's Croquet-Ground A large rose-tree stood near the entrance of the garden: the roses growing on it were white, but there were three gardeners at it, busily painting them red. Alice thought this a very curious thing, and she went nearer to watch them, and just as she came up to them she heard one of them say, `Look out now, Five! Don't go splashing paint over me like that!' `I couldn't help it,' said Five, in a sulky tone; `Seven jogged my elbow.' On which Seven looked up and said, `That's right, Five! Always lay the blame on others!' `YOU'D better not talk!' said Five. `I heard the Queen say only yesterday you deserved to be beheaded!' `What for?' said the one who had spoken first. `That's none of YOUR business, Two!' said Seven. `Yes, it IS his business!' said Five, `and I'll tell him--it was for bringing the cook tulip-roots instead of onions.' Seven flung down his brush, and had just begun `Well, of all the unjust things--' when his eye chanced to fall upon Alice, as she stood watching them, and he checked himself suddenly: the others looked round also, and all of them bowed low. `Would you tell me,' said Alice, a little timidly, `why you are painting those roses?' Five and Seven said nothing, but looked at Two. Two began in a low voice, `Why the fact is, you see, Miss, this here ought to have been a RED rose-tree, and we put a white one in by mistake; and if the Queen was to find it out, we should all have our heads cut off, you know. So you see, Miss, we're doing our best, afore she comes, to--' At this moment Five, who had been anxiously looking across the garden, called out `The Queen! The Queen!' and the three gardeners instantly threw themselves flat upon their faces. There was a sound of many footsteps, and Alice looked round, eager to see the Queen. First came ten soldiers carrying clubs; these were all shaped like the three gardeners, oblong and flat, with their hands and feet at the corners: next the ten courtiers; these were ornamented all over with diamonds, and walked two and two, as the soldiers did. After these came the royal children; there were ten of them, and the little dears came jumping merrily along hand in hand, in couples: they were all ornamented with hearts. Next came the guests, mostly Kings and Queens, and among them Alice recognised the White Rabbit: it was talking in a hurried nervous manner, smiling at everything that was said, and went by without noticing her. Then followed the Knave of Hearts, carrying the King's crown on a crimson velvet cushion; and, last of all this grand procession, came THE KING AND QUEEN OF HEARTS. Alice was rather doubtful whether she ought not to lie down on her face like the three gardeners, but she could not remember every having heard of such a rule at processions; `and besides, what would be the use of a procession,' thought she, `if people had all to lie down upon their faces, so that they couldn't see it?' So she stood still where she was, and waited. When the procession came opposite to Alice, they all stopped and looked at her, and the Queen said severely `Who is this?' She said it to the Knave of Hearts, who only bowed and smiled in reply. `Idiot!' said the Queen, tossing her head impatiently; and, turning to Alice, she went on, `What's your name, child?' `My name is Alice, so please your Majesty,' said Alice very politely; but she added, to herself, `Why, they're only a pack of cards, after all. I needn't be afraid of them!' `And who are THESE?' said the Queen, pointing to the three gardeners who were lying round the rosetree; for, you see, as they were lying on their faces, and the pattern on their backs was the same as the rest of the pack, she could not tell whether they were gardeners, or soldiers, or courtiers, or three of her own children. `How should I know?' said Alice, surprised at her own courage. `It's no business of MINE.' The Queen turned crimson with fury, and, after glaring at her for a moment like a wild beast, screamed `Off with her head! Off--' `Nonsense!' said Alice, very loudly and decidedly, and the Queen was silent. The King laid his hand upon her arm, and timidly said `Consider, my dear: she is only a child!' The Queen turned angrily away from him, and said to the Knave `Turn them over!' The Knave did so, very carefully, with one foot. `Get up!' said the Queen, in a shrill, loud voice, and the three gardeners instantly jumped up, and began bowing to the King, the Queen, the royal children, and everybody else. `Leave off that!' screamed the Queen. `You make me giddy.' And then, turning to the rose-tree, she went on, `What HAVE you been doing here?' `May it please your Majesty,' said Two, in a very humble tone, going down on one knee as he spoke, `we were trying--' `I see!' said the Queen, who had meanwhile been examining the roses. `Off with their heads!' and the procession moved on, three of the soldiers remaining behind to execute the unfortunate gardeners, who ran to Alice for protection. `You shan't be beheaded!' said Alice, and she put them into a large flower-pot that stood near. The three soldiers wandered about for a minute or two, looking for them, and then quietly marched off after the others. `Are their heads off?' shouted the Queen. `Their heads are gone, if it please your Majesty!' the soldiers shouted in reply. `That's right!' shouted the Queen. `Can you play croquet?' The soldiers were silent, and looked at Alice, as the question was evidently meant for her. `Yes!' shouted Alice. `Come on, then!' roared the Queen, and Alice joined the procession, wondering very much what would happen next. `It's--it's a very fine day!' said a timid voice at her side. She was walking by the White Rabbit, who was peeping anxiously into her face. `Very,' said Alice: `--where's the Duchess?' `Hush! Hush!' said the Rabbit in a low, hurried tone. He looked anxiously over his shoulder as he spoke, and then raised himself upon tiptoe, put his mouth close to her ear, and whispered `She's under sentence of execution.' `What for?' said Alice. `Did you say "What a pity!"?' the Rabbit asked. `No, I didn't,' said Alice: `I don't think it's at all a pity. I said "What for?"' `She boxed the Queen's ears--' the Rabbit began. Alice gave a little scream of laughter. `Oh, hush!' the Rabbit whispered in a frightened tone. `The Queen will hear you! You see, she came rather late, and the Queen said--' `Get to your places!' shouted the Queen in a voice of thunder, and people began running about in all directions, tumbling up against each other; however, they got settled down in a minute or two, and the game began. Alice thought she had never seen such a curious croquet-ground in her life; it was all ridges and furrows; the balls were live hedgehogs, the mallets live flamingoes, and the soldiers had to double themselves up and to stand on their hands and feet, to make the arches. The chief difficulty Alice found at first was in managing her flamingo: she succeeded in getting its body tucked away, comfortably enough, under her arm, with its legs hanging down, but generally, just as she had got its neck nicely straightened out, and was going to give the hedgehog a blow with its head, it WOULD twist itself round and look up in her face, with such a puzzled expression that she could not help bursting out laughing: and when she had got its head down, and was going to begin again, it was very provoking to find that the hedgehog had unrolled itself, and was in the act of crawling away: besides all this, there was generally a ridge or furrow in the way wherever she wanted to send the hedgehog to, and, as the doubled-up soldiers were always getting up and walking off to other parts of the ground, Alice soon came to the conclusion that it was a very difficult game indeed. The players all played at once without waiting for turns, quarrelling all the while, and fighting for the hedgehogs; and in a very short time the Queen was in a furious passion, and went stamping about, and shouting `Off with his head!' or `Off with her head!' about once in a minute. Alice began to feel very uneasy: to be sure, she had not as yet had any dispute with the Queen, but she knew that it might happen any minute, `and then,' thought she, `what would become of me? They're dreadfully fond of beheading people here; the great wonder is, that there's any one left alive!' She was looking about for some way of escape, and wondering whether she could get away without being seen, when she noticed a curious appearance in the air: it puzzled her very much at first, but, after watching it a minute or two, she made it out to be a grin, and she said to herself `It's the Cheshire Cat: now I shall have somebody to talk to.' `How are you getting on?' said the Cat, as soon as there was mouth enough for it to speak with. Alice waited till the eyes appeared, and then nodded. `It's no use speaking to it,' she thought, `till its ears have come, or at least one of them.' In another minute the whole head appeared, and then Alice put down her flamingo, and began an account of the game, feeling very glad she had someone to listen to her. The Cat seemed to think that there was enough of it now in sight, and no more of it appeared. `I don't think they play at all fairly,' Alice began, in rather a complaining tone, `and they all quarrel so dreadfully one can't hear oneself speak--and they don't seem to have any rules in particular; at least, if there are, nobody attends to them--and you've no idea how confusing it is all the things being alive; for instance, there's the arch I've got to go through next walking about at the other end of the ground--and I should have croqueted the Queen's hedgehog just now, only it ran away when it saw mine coming!' `How do you like the Queen?' said the Cat in a low voice. `Not at all,' said Alice: `she's so extremely--' Just then she noticed that the Queen was close behind her, listening: so she went on, `--likely to win, that it's hardly worth while finishing the game.' The Queen smiled and passed on. `Who ARE you talking to?' said the King, going up to Alice, and looking at the Cat's head with great curiosity. `It's a friend of mine--a Cheshire Cat,' said Alice: `allow me to introduce it.' `I don't like the look of it at all,' said the King: `however, it may kiss my hand if it likes.' `I'd rather not,' the Cat remarked. `Don't be impertinent,' said the King, `and don't look at me like that!' He got behind Alice as he spoke. `A cat may look at a king,' said Alice. `I've read that in some book, but I don't remember where.' `Well, it must be removed,' said the King very decidedly, and he called the Queen, who was passing at the moment, `My dear! I wish you would have this cat removed!' The Queen had only one way of settling all difficulties, great or small. `Off with his head!' she said, without even looking round. `I'll fetch the executioner myself,' said the King eagerly, and he hurried off. Alice thought she might as well go back, and see how the game was going on, as she heard the Queen's voice in the distance, screaming with passion. She had already heard her sentence three of the players to be executed for having missed their turns, and she did not like the look of things at all, as the game was in such confusion that she never knew whether it was her turn or not. So she went in search of her hedgehog. The hedgehog was engaged in a fight with another hedgehog, which seemed to Alice an excellent opportunity for croqueting one of them with the other: the only difficulty was, that her flamingo was gone across to the other side of the garden, where Alice could see it trying in a helpless sort of way to fly up into a tree. By the time she had caught the flamingo and brought it back, the fight was over, and both the hedgehogs were out of sight: `but it doesn't matter much,' thought Alice, `as all the arches are gone from this side of the ground.' So she tucked it away under her arm, that it might not escape again, and went back for a little more conversation with her friend. When she got back to the Cheshire Cat, she was surprised to find quite a large crowd collected round it: there was a dispute going on between the executioner, the King, and the Queen, who were all talking at once, while all the rest were quite silent, and looked very uncomfortable. The moment Alice appeared, she was appealed to by all three to settle the question, and they repeated their arguments to her, though, as they all spoke at once, she found it very hard indeed to make out exactly what they said. The executioner's argument was, that you couldn't cut off a head unless there was a body to cut it off from: that he had never had to do such a thing before, and he wasn't going to begin at HIS time of life. The King's argument was, that anything that had a head could be beheaded, and that you weren't to talk nonsense. The Queen's argument was, that if something wasn't done about it in less than no time she'd have everybody executed, all round. (It was this last remark that had made the whole party look so grave and anxious.) Alice could think of nothing else to say but `It belongs to the Duchess: you'd better ask HER about it.' `She's in prison,' the Queen said to the executioner: `fetch her here.' And the executioner went off like an arrow. The Cat's head began fading away the moment he was gone, and, by the time he had come back with the Dutchess, it had entirely disappeared; so the King and the executioner ran wildly up and down looking for it, while the rest of the party went back to the game. CHAPTER IX The Mock Turtle's Story `You can't think how glad I am to see you again, you dear old thing!' said the Duchess, as she tucked her arm affectionately into Alice's, and they walked off together. Alice was very glad to find her in such a pleasant temper, and thought to herself that perhaps it was only the pepper that had made her so savage when they met in the kitchen. `When I'M a Duchess,' she said to herself, (not in a very hopeful tone though), `I won't have any pepper in my kitchen AT ALL. Soup does very well without--Maybe it's always pepper that makes people hot-tempered,' she went on, very much pleased at having found out a new kind of rule, `and vinegar that makes them sour--and camomile that makes them bitter--and--and barley-sugar and such things that make children sweet-tempered. I only wish people knew that: then they wouldn't be so stingy about it, you know--' She had quite forgotten the Duchess by this time, and was a little startled when she heard her voice close to her ear. `You're thinking about something, my dear, and that makes you forget to talk. I can't tell you just now what the moral of that is, but I shall remember it in a bit.' `Perhaps it hasn't one,' Alice ventured to remark. `Tut, tut, child!' said the Duchess. `Everything's got a moral, if only you can find it.' And she squeezed herself up closer to Alice's side as she spoke. Alice did not much like keeping so close to her: first, because the Duchess was VERY ugly; and secondly, because she was exactly the right height to rest her chin upon Alice's shoulder, and it was an uncomfortably sharp chin. However, she did not like to be rude, so she bore it as well as she could. `The game's going on rather better now,' she said, by way of keeping up the conversation a little. `'Tis so,' said the Duchess: `and the moral of that is--"Oh, 'tis love, 'tis love, that makes the world go round!"' `Somebody said,' Alice whispered, `that it's done by everybody minding their own business!' `Ah, well! It means much the same thing,' said the Duchess, digging her sharp little chin into Alice's shoulder as she added, `and the moral of THAT is--"Take care of the sense, and the sounds will take care of themselves."' `How fond she is of finding morals in things!' Alice thought to herself. `I dare say you're wondering why I don't put my arm round your waist,' the Duchess said after a pause: `the reason is, that I'm doubtful about the temper of your flamingo. Shall I try the experiment?' `HE might bite,' Alice cautiously replied, not feeling at all anxious to have the experiment tried. `Very true,' said the Duchess: `flamingoes and mustard both bite. And the moral of that is--"Birds of a feather flock together."' `Only mustard isn't a bird,' Alice remarked. `Right, as usual,' said the Duchess: `what a clear way you have of putting things!' `It's a mineral, I THINK,' said Alice. `Of course it is,' said the Duchess, who seemed ready to agree to everything that Alice said; `there's a large mustard-mine near here. And the moral of that is--"The more there is of mine, the less there is of yours."' `Oh, I know!' exclaimed Alice, who had not attended to this last remark, `it's a vegetable. It doesn't look like one, but it is.' `I quite agree with you,' said the Duchess; `and the moral of that is--"Be what you would seem to be"--or if you'd like it put more simply--"Never imagine yourself not to be otherwise than what it might appear to others that what you were or might have been was not otherwise than what you had been would have appeared to them to be otherwise."' `I think I should understand that better,' Alice said very politely, `if I had it written down: but I can't quite follow it as you say it.' `That's nothing to what I could say if I chose,' the Duchess replied, in a pleased tone. `Pray don't trouble yourself to say it any longer than that,' said Alice. `Oh, don't talk about trouble!' said the Duchess. `I make you a present of everything I've said as yet.' `A cheap sort of present!' thought Alice. `I'm glad they don't give birthday presents like that!' But she did not venture to say it out loud. `Thinking again?' the Duchess asked, with another dig of her sharp little chin. `I've a right to think,' said Alice sharply, for she was beginning to feel a little worried. `Just about as much right,' said the Duchess, `as pigs have to fly; and the m--' But here, to Alice's great surprise, the Duchess's voice died away, even in the middle of her favourite word `moral,' and the arm that was linked into hers began to tremble. Alice looked up, and there stood the Queen in front of them, with her arms folded, frowning like a thunderstorm. `A fine day, your Majesty!' the Duchess began in a low, weak voice. `Now, I give you fair warning,' shouted the Queen, stamping on the ground as she spoke; `either you or your head must be off, and that in about half no time! Take your choice!' The Duchess took her choice, and was gone in a moment. `Let's go on with the game,' the Queen said to Alice; and Alice was too much frightened to say a word, but slowly followed her back to the croquet-ground. The other guests had taken advantage of the Queen's absence, and were resting in the shade: however, the moment they saw her, they hurried back to the game, the Queen merely remarking that a moment's delay would cost them their lives. All the time they were playing the Queen never left off quarrelling with the other players, and shouting `Off with his head!' or `Off with her head!' Those whom she sentenced were taken into custody by the soldiers, who of course had to leave off being arches to do this, so that by the end of half an hour or so there were no arches left, and all the players, except the King, the Queen, and Alice, were in custody and under sentence of execution. Then the Queen left off, quite out of breath, and said to Alice, `Have you seen the Mock Turtle yet?' `No,' said Alice. `I don't even know what a Mock Turtle is.' `It's the thing Mock Turtle Soup is made from,' said the Queen. `I never saw one, or heard of one,' said Alice. `Come on, then,' said the Queen, `and he shall tell you his history,' As they walked off together, Alice heard the King say in a low voice, to the company generally, `You are all pardoned.' `Come, THAT'S a good thing!' she said to herself, for she had felt quite unhappy at the number of executions the Queen had ordered. They very soon came upon a Gryphon, lying fast asleep in the sun. (IF you don't know what a Gryphon is, look at the picture.) `Up, lazy thing!' said the Queen, `and take this young lady to see the Mock Turtle, and to hear his history. I must go back and see after some executions I have ordered'; and she walked off, leaving Alice alone with the Gryphon. Alice did not quite like the look of the creature, but on the whole she thought it would be quite as safe to stay with it as to go after that savage Queen: so she waited. The Gryphon sat up and rubbed its eyes: then it watched the Queen till she was out of sight: then it chuckled. `What fun!' said the Gryphon, half to itself, half to Alice. `What IS the fun?' said Alice. `Why, SHE,' said the Gryphon. `It's all her fancy, that: they never executes nobody, you know. Come on!' `Everybody says "come on!" here,' thought Alice, as she went slowly after it: `I never was so ordered about in all my life, never!' They had not gone far before they saw the Mock Turtle in the distance, sitting sad and lonely on a little ledge of rock, and, as they came nearer, Alice could hear him sighing as if his heart would break. She pitied him deeply. `What is his sorrow?' she asked the Gryphon, and the Gryphon answered, very nearly in the same words as before, `It's all his fancy, that: he hasn't got no sorrow, you know. Come on!' So they went up to the Mock Turtle, who looked at them with large eyes full of tears, but said nothing. `This here young lady,' said the Gryphon, `she wants for to know your history, she do.' `I'll tell it her,' said the Mock Turtle in a deep, hollow tone: `sit down, both of you, and don't speak a word till I've finished.' So they sat down, and nobody spoke for some minutes. Alice thought to herself, `I don't see how he can EVEN finish, if he doesn't begin.' But she waited patiently. `Once,' said the Mock Turtle at last, with a deep sigh, `I was a real Turtle.' These words were followed by a very long silence, broken only by an occasional exclamation of `Hjckrrh!' from the Gryphon, and the constant heavy sobbing of the Mock Turtle. Alice was very nearly getting up and saying, `Thank you, sir, for your interesting story,' but she could not help thinking there MUST be more to come, so she sat still and said nothing. `When we were little,' the Mock Turtle went on at last, more calmly, though still sobbing a little now and then, `we went to school in the sea. The master was an old Turtle--we used to call him Tortoise--' `Why did you call him Tortoise, if he wasn't one?' Alice asked. `We called him Tortoise because he taught us,' said the Mock Turtle angrily: `really you are very dull!' `You ought to be ashamed of yourself for asking such a simple question,' added the Gryphon; and then they both sat silent and looked at poor Alice, who felt ready to sink into the earth. At last the Gryphon said to the Mock Turtle, `Drive on, old fellow! Don't be all day about it!' and he went on in these words: `Yes, we went to school in the sea, though you mayn't believe it--' `I never said I didn't!' interrupted Alice. `You did,' said the Mock Turtle. `Hold your tongue!' added the Gryphon, before Alice could speak again. The Mock Turtle went on. `We had the best of educations--in fact, we went to school every day--' `I'VE been to a day-school, too,' said Alice; `you needn't be so proud as all that.' `With extras?' asked the Mock Turtle a little anxiously. `Yes,' said Alice, `we learned French and music.' `And washing?' said the Mock Turtle. `Certainly not!' said Alice indignantly. `Ah! then yours wasn't a really good school,' said the Mock Turtle in a tone of great relief. `Now at OURS they had at the end of the bill, "French, music, AND WASHING--extra."' `You couldn't have wanted it much,' said Alice; `living at the bottom of the sea.' `I couldn't afford to learn it.' said the Mock Turtle with a sigh. `I only took the regular course.' `What was that?' inquired Alice. `Reeling and Writhing, of course, to begin with,' the Mock Turtle replied; `and then the different branches of Arithmetic-- Ambition, Distraction, Uglification, and Derision.' `I never heard of "Uglification,"' Alice ventured to say. `What is it?' The Gryphon lifted up both its paws in surprise. `What! Never heard of uglifying!' it exclaimed. `You know what to beautify is, I suppose?' `Yes,' said Alice doubtfully: `it means--to--make--anything-- prettier.' `Well, then,' the Gryphon went on, `if you don't know what to uglify is, you ARE a simpleton.' Alice did not feel encouraged to ask any more questions about it, so she turned to the Mock Turtle, and said `What else had you to learn?' `Well, there was Mystery,' the Mock Turtle replied, counting off the subjects on his flappers, `--Mystery, ancient and modern, with Seaography: then Drawling--the Drawling-master was an old conger-eel, that used to come once a week: HE taught us Drawling, Stretching, and Fainting in Coils.' `What was THAT like?' said Alice. `Well, I can't show it you myself,' the Mock Turtle said: `I'm too stiff. And the Gryphon never learnt it.' `Hadn't time,' said the Gryphon: `I went to the Classics master, though. He was an old crab, HE was.' `I never went to him,' the Mock Turtle said with a sigh: `he taught Laughing and Grief, they used to say.' `So he did, so he did,' said the Gryphon, sighing in his turn; and both creatures hid their faces in their paws. `And how many hours a day did you do lessons?' said Alice, in a hurry to change the subject. `Ten hours the first day,' said the Mock Turtle: `nine the next, and so on.' `What a curious plan!' exclaimed Alice. `That's the reason they're called lessons,' the Gryphon remarked: `because they lessen from day to day.' This was quite a new idea to Alice, and she thought it over a little before she made her next remark. `Then the eleventh day must have been a holiday?' `Of course it was,' said the Mock Turtle. `And how did you manage on the twelfth?' Alice went on eagerly. `That's enough about lessons,' the Gryphon interrupted in a very decided tone: `tell her something about the games now.' CHAPTER X The Lobster Quadrille The Mock Turtle sighed deeply, and drew the back of one flapper across his eyes. He looked at Alice, and tried to speak, but for a minute or two sobs choked his voice. `Same as if he had a bone in his throat,' said the Gryphon: and it set to work shaking him and punching him in the back. At last the Mock Turtle recovered his voice, and, with tears running down his cheeks, he went on again:-- `You may not have lived much under the sea--' (`I haven't,' said Alice)--`and perhaps you were never even introduced to a lobster--' (Alice began to say `I once tasted--' but checked herself hastily, and said `No, never') `--so you can have no idea what a delightful thing a Lobster Quadrille is!' `No, indeed,' said Alice. `What sort of a dance is it?' `Why,' said the Gryphon, `you first form into a line along the sea-shore--' `Two lines!' cried the Mock Turtle. `Seals, turtles, salmon, and so on; then, when you've cleared all the jelly-fish out of the way--' `THAT generally takes some time,' interrupted the Gryphon. `--you advance twice--' `Each with a lobster as a partner!' cried the Gryphon. `Of course,' the Mock Turtle said: `advance twice, set to partners--' `--change lobsters, and retire in same order,' continued the Gryphon. `Then, you know,' the Mock Turtle went on, `you throw the--' `The lobsters!' shouted the Gryphon, with a bound into the air. `--as far out to sea as you can--' `Swim after them!' screamed the Gryphon. `Turn a somersault in the sea!' cried the Mock Turtle, capering wildly about. `Back to land again, and that's all the first figure,' said the Mock Turtle, suddenly dropping his voice; and the two creatures, who had been jumping about like mad things all this time, sat down again very sadly and quietly, and looked at Alice. `It must be a very pretty dance,' said Alice timidly. `Would you like to see a little of it?' said the Mock Turtle. `Very much indeed,' said Alice. `Come, let's try the first figure!' said the Mock Turtle to the Gryphon. `We can do without lobsters, you know. Which shall sing?' `Oh, YOU sing,' said the Gryphon. `I've forgotten the words.' So they began solemnly dancing round and round Alice, every now and then treading on her toes when they passed too close, and waving their forepaws to mark the time, while the Mock Turtle sang this, very slowly and sadly:-- `"Will you walk a little faster?" said a whiting to a snail. "There's a porpoise close behind us, and he's treading on my tail. See how eagerly the lobsters and the turtles all advance! They are waiting on the shingle--will you come and join the dance? Will you, won't you, will you, won't you, will you join the dance? Will you, won't you, will you, won't you, won't you join the dance? "You can really have no notion how delightful it will be When they take us up and throw us, with the lobsters, out to sea!" But the snail replied "Too far, too far!" and gave a look askance-- Said he thanked the whiting kindly, but he would not join the dance. Would not, could not, would not, could not, would not join the dance. Would not, could not, would not, could not, could not join the dance. `"What matters it how far we go?" his scaly friend replied. "There is another shore, you know, upon the other side. The further off from England the nearer is to France-- Then turn not pale, beloved snail, but come and join the dance. Will you, won't you, will you, won't you, will you join the dance? Will you, won't you, will you, won't you, won't you join the dance?"' `Thank you, it's a very interesting dance to watch,' said Alice, feeling very glad that it was over at last: `and I do so like that curious song about the whiting!' `Oh, as to the whiting,' said the Mock Turtle, `they--you've seen them, of course?' `Yes,' said Alice, `I've often seen them at dinn--' she checked herself hastily. `I don't know where Dinn may be,' said the Mock Turtle, `but if you've seen them so often, of course you know what they're like.' `I believe so,' Alice replied thoughtfully. `They have their tails in their mouths--and they're all over crumbs.' `You're wrong about the crumbs,' said the Mock Turtle: `crumbs would all wash off in the sea. But they HAVE their tails in their mouths; and the reason is--' here the Mock Turtle yawned and shut his eyes.--`Tell her about the reason and all that,' he said to the Gryphon. `The reason is,' said the Gryphon, `that they WOULD go with the lobsters to the dance. So they got thrown out to sea. So they had to fall a long way. So they got their tails fast in their mouths. So they couldn't get them out again. That's all.' `Thank you,' said Alice, `it's very interesting. I never knew so much about a whiting before.' `I can tell you more than that, if you like,' said the Gryphon. `Do you know why it's called a whiting?' `I never thought about it,' said Alice. `Why?' `IT DOES THE BOOTS AND SHOES.' the Gryphon replied very solemnly. Alice was thoroughly puzzled. `Does the boots and shoes!' she repeated in a wondering tone. `Why, what are YOUR shoes done with?' said the Gryphon. `I mean, what makes them so shiny?' Alice looked down at them, and considered a little before she gave her answer. `They're done with blacking, I believe.' `Boots and shoes under the sea,' the Gryphon went on in a deep voice, `are done with a whiting. Now you know.' `And what are they made of?' Alice asked in a tone of great curiosity. `Soles and eels, of course,' the Gryphon replied rather impatiently: `any shrimp could have told you that.' `If I'd been the whiting,' said Alice, whose thoughts were still running on the song, `I'd have said to the porpoise, "Keep back, please: we don't want YOU with us!"' `They were obliged to have him with them,' the Mock Turtle said: `no wise fish would go anywhere without a porpoise.' `Wouldn't it really?' said Alice in a tone of great surprise. `Of course not,' said the Mock Turtle: `why, if a fish came to ME, and told me he was going a journey, I should say "With what porpoise?"' `Don't you mean "purpose"?' said Alice. `I mean what I say,' the Mock Turtle replied in an offended tone. And the Gryphon added `Come, let's hear some of YOUR adventures.' `I could tell you my adventures--beginning from this morning,' said Alice a little timidly: `but it's no use going back to yesterday, because I was a different person then.' `Explain all that,' said the Mock Turtle. `No, no! The adventures first,' said the Gryphon in an impatient tone: `explanations take such a dreadful time.' So Alice began telling them her adventures from the time when she first saw the White Rabbit. She was a little nervous about it just at first, the two creatures got so close to her, one on each side, and opened their eyes and mouths so VERY wide, but she gained courage as she went on. Her listeners were perfectly quiet till she got to the part about her repeating `YOU ARE OLD, FATHER WILLIAM,' to the Caterpillar, and the words all coming different, and then the Mock Turtle drew a long breath, and said `That's very curious.' `It's all about as curious as it can be,' said the Gryphon. `It all came different!' the Mock Turtle repeated thoughtfully. `I should like to hear her try and repeat something now. Tell her to begin.' He looked at the Gryphon as if he thought it had some kind of authority over Alice. `Stand up and repeat "'TIS THE VOICE OF THE SLUGGARD,"' said the Gryphon. `How the creatures order one about, and make one repeat lessons!' thought Alice; `I might as well be at school at once.' However, she got up, and began to repeat it, but her head was so full of the Lobster Quadrille, that she hardly knew what she was saying, and the words came very queer indeed:-- `'Tis the voice of the Lobster; I heard him declare, "You have baked me too brown, I must sugar my hair." As a duck with its eyelids, so he with his nose Trims his belt and his buttons, and turns out his toes.' [later editions continued as follows When the sands are all dry, he is gay as a lark, And will talk in contemptuous tones of the Shark, But, when the tide rises and sharks are around, His voice has a timid and tremulous sound.] `That's different from what I used to say when I was a child,' said the Gryphon. `Well, I never heard it before,' said the Mock Turtle; `but it sounds uncommon nonsense.' Alice said nothing; she had sat down with her face in her hands, wondering if anything would EVER happen in a natural way again. `I should like to have it explained,' said the Mock Turtle. `She can't explain it,' said the Gryphon hastily. `Go on with the next verse.' `But about his toes?' the Mock Turtle persisted. `How COULD he turn them out with his nose, you know?' `It's the first position in dancing.' Alice said; but was dreadfully puzzled by the whole thing, and longed to change the subject. `Go on with the next verse,' the Gryphon repeated impatiently: `it begins "I passed by his garden."' Alice did not dare to disobey, though she felt sure it would all come wrong, and she went on in a trembling voice:-- `I passed by his garden, and marked, with one eye, How the Owl and the Panther were sharing a pie--' [later editions continued as follows The Panther took pie-crust, and gravy, and meat, While the Owl had the dish as its share of the treat. When the pie was all finished, the Owl, as a boon, Was kindly permitted to pocket the spoon: While the Panther received knife and fork with a growl, And concluded the banquet--] `What IS the use of repeating all that stuff,' the Mock Turtle interrupted, `if you don't explain it as you go on? It's by far the most confusing thing I ever heard!' `Yes, I think you'd better leave off,' said the Gryphon: and Alice was only too glad to do so. `Shall we try another figure of the Lobster Quadrille?' the Gryphon went on. `Or would you like the Mock Turtle to sing you a song?' `Oh, a song, please, if the Mock Turtle would be so kind,' Alice replied, so eagerly that the Gryphon said, in a rather offended tone, `Hm! No accounting for tastes! Sing her "Turtle Soup," will you, old fellow?' The Mock Turtle sighed deeply, and began, in a voice sometimes choked with sobs, to sing this:-- `Beautiful Soup, so rich and green, Waiting in a hot tureen! Who for such dainties would not stoop? Soup of the evening, beautiful Soup! Soup of the evening, beautiful Soup! Beau--ootiful Soo--oop! Beau--ootiful Soo--oop! Soo--oop of the e--e--evening, Beautiful, beautiful Soup! `Beautiful Soup! Who cares for fish, Game, or any other dish? Who would not give all else for two p ennyworth only of beautiful Soup? Pennyworth only of beautiful Soup? Beau--ootiful Soo--oop! Beau--ootiful Soo--oop! Soo--oop of the e--e--evening, Beautiful, beauti--FUL SOUP!' `Chorus again!' cried the Gryphon, and the Mock Turtle had just begun to repeat it, when a cry of `The trial's beginning!' was heard in the distance. `Come on!' cried the Gryphon, and, taking Alice by the hand, it hurried off, without waiting for the end of the song. `What trial is it?' Alice panted as she ran; but the Gryphon only answered `Come on!' and ran the faster, while more and more faintly came, carried on the breeze that followed them, the melancholy words:-- `Soo--oop of the e--e--evening, Beautiful, beautiful Soup!' CHAPTER XI Who Stole the Tarts? The King and Queen of Hearts were seated on their throne when they arrived, with a great crowd assembled about them--all sorts of little birds and beasts, as well as the whole pack of cards: the Knave was standing before them, in chains, with a soldier on each side to guard him; and near the King was the White Rabbit, with a trumpet in one hand, and a scroll of parchment in the other. In the very middle of the court was a table, with a large dish of tarts upon it: they looked so good, that it made Alice quite hungry to look at them--`I wish they'd get the trial done,' she thought, `and hand round the refreshments!' But there seemed to be no chance of this, so she began looking at everything about her, to pass away the time. Alice had never been in a court of justice before, but she had read about them in books, and she was quite pleased to find that she knew the name of nearly everything there. `That's the judge,' she said to herself, `because of his great wig.' The judge, by the way, was the King; and as he wore his crown over the wig, (look at the frontispiece if you want to see how he did it,) he did not look at all comfortable, and it was certainly not becoming. `And that's the jury-box,' thought Alice, `and those twelve creatures,' (she was obliged to say `creatures,' you see, because some of them were animals, and some were birds,) `I suppose they are the jurors.' She said this last word two or three times over to herself, being rather proud of it: for she thought, and rightly too, that very few little girls of her age knew the meaning of it at all. However, `jury-men' would have done just as well. The twelve jurors were all writing very busily on slates. `What are they doing?' Alice whispered to the Gryphon. `They can't have anything to put down yet, before the trial's begun.' `They're putting down their names,' the Gryphon whispered in reply, `for fear they should forget them before the end of the trial.' `Stupid things!' Alice began in a loud, indignant voice, but she stopped hastily, for the White Rabbit cried out, `Silence in the court!' and the King put on his spectacles and looked anxiously round, to make out who was talking. Alice could see, as well as if she were looking over their shoulders, that all the jurors were writing down `stupid things!' on their slates, and she could even make out that one of them didn't know how to spell `stupid,' and that he had to ask his neighbour to tell him. `A nice muddle their slates'll be in before the trial's over!' thought Alice. One of the jurors had a pencil that squeaked. This of course, Alice could not stand, and she went round the court and got behind him, and very soon found an opportunity of taking it away. She did it so quickly that the poor little juror (it was Bill, the Lizard) could not make out at all what had become of it; so, after hunting all about for it, he was obliged to write with one finger for the rest of the day; and this was of very little use, as it left no mark on the slate. `Herald, read the accusation!' said the King. On this the White Rabbit blew three blasts on the trumpet, and then unrolled the parchment scroll, and read as follows:-- `The Queen of Hearts, she made some tarts, All on a summer day: The Knave of Hearts, he stole those tarts, And took them quite away!' `Consider your verdict,' the King said to the jury. `Not yet, not yet!' the Rabbit hastily interrupted. `There's a great deal to come before that!' `Call the first witness,' said the King; and the White Rabbit blew three blasts on the trumpet, and called out, `First witness!' The first witness was the Hatter. He came in with a teacup in one hand and a piece of bread-and-butter in the other. `I beg pardon, your Majesty,' he began, `for bringing these in: but I hadn't quite finished my tea when I was sent for.' `You ought to have finished,' said the King. `When did you begin?' The Hatter looked at the March Hare, who had followed him into the court, arm-in-arm with the Dormouse. `Fourteenth of March, I think it was,' he said. `Fifteenth,' said the March Hare. `Sixteenth,' added the Dormouse. `Write that down,' the King said to the jury, and the jury eagerly wrote down all three dates on their slates, and then added them up, and reduced the answer to shillings and pence. `Take off your hat,' the King said to the Hatter. `It isn't mine,' said the Hatter. `Stolen!' the King exclaimed, turning to the jury, who instantly made a memorandum of the fact. `I keep them to sell,' the Hatter added as an explanation; `I've none of my own. I'm a hatter.' Here the Queen put on her spectacles, and began staring at the Hatter, who turned pale and fidgeted. `Give your evidence,' said the King; `and don't be nervous, or I'll have you executed on the spot.' This did not seem to encourage the witness at all: he kept shifting from one foot to the other, looking uneasily at the Queen, and in his confusion he bit a large piece out of his teacup instead of the bread-and-butter. Just at this moment Alice felt a very curious sensation, which puzzled her a good deal until she made out what it was: she was beginning to grow larger again, and she thought at first she would get up and leave the court; but on second thoughts she decided to remain where she was as long as there was room for her. `I wish you wouldn't squeeze so.' said the Dormouse, who was sitting next to her. `I can hardly breathe.' `I can't help it,' said Alice very meekly: `I'm growing.' `You've no right to grow here,' said the Dormouse. `Don't talk nonsense,' said Alice more boldly: `you know you're growing too.' `Yes, but I grow at a reasonable pace,' said the Dormouse: `not in that ridiculous fashion.' And he got up very sulkily and crossed over to the other side of the court. All this time the Queen had never left off staring at the Hatter, and, just as the Dormouse crossed the court, she said to one of the officers of the court, `Bring me the list of the singers in the last concert!' on which the wretched Hatter trembled so, that he shook both his shoes off. `Give your evidence,' the King repeated angrily, `or I'll have you executed, whether you're nervous or not.' `I'm a poor man, your Majesty,' the Hatter began, in a trembling voice, `--and I hadn't begun my tea--not above a week or so--and what with the bread-and-butter getting so thin--and the twinkling of the tea--' `The twinkling of the what?' said the King. `It began with the tea,' the Hatter replied. `Of course twinkling begins with a T!' said the King sharply. `Do you take me for a dunce? Go on!' `I'm a poor man,' the Hatter went on, `and most things twinkled after that--only the March Hare said--' `I didn't!' the March Hare interrupted in a great hurry. `You did!' said the Hatter. `I deny it!' said the March Hare. `He denies it,' said the King: `leave out that part.' `Well, at any rate, the Dormouse said--' the Hatter went on, looking anxiously round to see if he would deny it too: but the Dormouse denied nothing, being fast asleep. `After that,' continued the Hatter, `I cut some more bread- and-butter--' `But what did the Dormouse say?' one of the jury asked. `That I can't remember,' said the Hatter. `You MUST remember,' remarked the King, `or I'll have you executed.' The miserable Hatter dropped his teacup and bread-and-butter, and went down on one knee. `I'm a poor man, your Majesty,' he began. `You're a very poor speaker,' said the King. Here one of the guinea-pigs cheered, and was immediately suppressed by the officers of the court. (As that is rather a hard word, I will just explain to you how it was done. They had a large canvas bag, which tied up at the mouth with strings: into this they slipped the guinea-pig, head first, and then sat upon it.) `I'm glad I've seen that done,' thought Alice. `I've so often read in the newspapers, at the end of trials, "There was some attempts at applause, which was immediately suppressed by the officers of the court," and I never understood what it meant till now.' `If that's all you know about it, you may stand down,' continued the King. `I can't go no lower,' said the Hatter: `I'm on the floor, as it is.' `Then you may SIT down,' the King replied. Here the other guinea-pig cheered, and was suppressed. `Come, that finished the guinea-pigs!' thought Alice. `Now we shall get on better.' `I'd rather finish my tea,' said the Hatter, with an anxious look at the Queen, who was reading the list of singers. `You may go,' said the King, and the Hatter hurriedly left the court, without even waiting to put his shoes on. `--and just take his head off outside,' the Queen added to one of the officers: but the Hatter was out of sight before the officer could get to the door. `Call the next witness!' said the King. The next witness was the Duchess's cook. She carried the pepper-box in her hand, and Alice guessed who it was, even before she got into the court, by the way the people near the door began sneezing all at once. `Give your evidence,' said the King. `Shan't,' said the cook. The King looked anxiously at the White Rabbit, who said in a low voice, `Your Majesty must cross-examine THIS witness.' `Well, if I must, I must,' the King said, with a melancholy air, and, after folding his arms and frowning at the cook till his eyes were nearly out of sight, he said in a deep voice, `What are tarts made of?' `Pepper, mostly,' said the cook. `Treacle,' said a sleepy voice behind her. `Collar that Dormouse,' the Queen shrieked out. `Behead that Dormouse! Turn that Dormouse out of court! Suppress him! Pinch him! Off with his whiskers!' For some minutes the whole court was in confusion, getting the Dormouse turned out, and, by the time they had settled down again, the cook had disappeared. `Never mind!' said the King, with an air of great relief. `Call the next witness.' And he added in an undertone to the Queen, `Really, my dear, YOU must cross-examine the next witness. It quite makes my forehead ache!' Alice watched the White Rabbit as he fumbled over the list, feeling very curious to see what the next witness would be like, `--for they haven't got much evidence YET,' she said to herself. Imagine her surprise, when the White Rabbit read out, at the top of his shrill little voice, the name `Alice!' CHAPTER XII Alice's Evidence `Here!' cried Alice, quite forgetting in the flurry of the moment how large she had grown in the last few minutes, and she jumped up in such a hurry that she tipped over the jury-box with the edge of her skirt, upsetting all the jurymen on to the heads of the crowd below, and there they lay sprawling about, reminding her very much of a globe of goldfish she had accidentally upset the week before. `Oh, I BEG your pardon!' she exclaimed in a tone of great dismay, and began picking them up again as quickly as she could, for the accident of the goldfish kept running in her head, and she had a vague sort of idea that they must be collected at once and put back into the jury-box, or they would die. `The trial cannot proceed,' said the King in a very grave voice, `until all the jurymen are back in their proper places-- ALL,' he repeated with great emphasis, looking hard at Alice as he said do. Alice looked at the jury-box, and saw that, in her haste, she had put the Lizard in head downwards, and the poor little thing was waving its tail about in a melancholy way, being quite unable to move. She soon got it out again, and put it right; `not that it signifies much,' she said to herself; `I should think it would be QUITE as much use in the trial one way up as the other.' As soon as the jury had a little recovered from the shock of being upset, and their slates and pencils had been found and handed back to them, they set to work very diligently to write out a history of the accident, all except the Lizard, who seemed too much overcome to do anything but sit with its mouth open, gazing up into the roof of the court. `What do you know about this business?' the King said to Alice. `Nothing,' said Alice. `Nothing WHATEVER?' persisted the King. `Nothing whatever,' said Alice. `That's very important,' the King said, turning to the jury. They were just beginning to write this down on their slates, when the White Rabbit interrupted: `UNimportant, your Majesty means, of course,' he said in a very respectful tone, but frowning and making faces at him as he spoke. `UNimportant, of course, I meant,' the King hastily said, and went on to himself in an undertone, `important--unimportant-- unimportant--important--' as if he were trying which word sounded best. Some of the jury wrote it down `important,' and some `unimportant.' Alice could see this, as she was near enough to look over their slates; `but it doesn't matter a bit,' she thought to herself. At this moment the King, who had been for some time busily writing in his note-book, cackled out `Silence!' and read out from his book, `Rule Forty-two. ALL PERSONS MORE THAN A MILE HIGH TO LEAVE THE COURT.' Everybody looked at Alice. `I'M not a mile high,' said Alice. `You are,' said the King. `Nearly two miles high,' added the Queen. `Well, I shan't go, at any rate,' said Alice: `besides, that's not a regular rule: you invented it just now.' `It's the oldest rule in the book,' said the King. `Then it ought to be Number One,' said Alice. The King turned pale, and shut his note-book hastily. `Consider your verdict,' he said to the jury, in a low, trembling voice. `There's more evidence to come yet, please your Majesty,' said the White Rabbit, jumping up in a great hurry; `this paper has just been picked up.' `What's in it?' said the Queen. `I haven't opened it yet,' said the White Rabbit, `but it seems to be a letter, written by the prisoner to--to somebody.' `It must have been that,' said the King, `unless it was written to nobody, which isn't usual, you know.' `Who is it directed to?' said one of the jurymen. `It isn't directed at all,' said the White Rabbit; `in fact, there's nothing written on the OUTSIDE.' He unfolded the paper as he spoke, and added `It isn't a letter, after all: it's a set of verses.' `Are they in the prisoner's handwriting?' asked another of they jurymen. `No, they're not,' said the White Rabbit, `and that's the queerest thing about it.' (The jury all looked puzzled.) `He must have imitated somebody else's hand,' said the King. (The jury all brightened up again.) `Please your Majesty,' said the Knave, `I didn't write it, and they can't prove I did: there's no name signed at the end.' `If you didn't sign it,' said the King, `that only makes the matter worse. You MUST have meant some mischief, or else you'd have signed your name like an honest man.' There was a general clapping of hands at this: it was the first really clever thing the King had said that day. `That PROVES his guilt,' said the Queen. `It proves nothing of the sort!' said Alice. `Why, you don't even know what they're about!' `Read them,' said the King. The White Rabbit put on his spectacles. `Where shall I begin, please your Majesty?' he asked. `Begin at the beginning,' the King said gravely, `and go on till you come to the end: then stop.' These were the verses the White Rabbit read:-- `They told me you had been to her, And mentioned me to him: She gave me a good character, But said I could not swim. He sent them word I had not gone (We know it to be true): If she should push the matter on, What would become of you? I gave her one, they gave him two, You gave us three or more; They all returned from him to you, Though they were mine before. If I or she should chance to be Involved in this affair, He trusts to you to set them free, Exactly as we were. My notion was that you had been (Before she had this fit) An obstacle that came between Him, and ourselves, and it. Don't let him know she liked them best, For this must ever be A secret, kept from all the rest, Between yourself and me.' `That's the most important piece of evidence we've heard yet,' said the King, rubbing his hands; `so now let the jury--' `If any one of them can explain it,' said Alice, (she had grown so large in the last few minutes that she wasn't a bit afraid of interrupting him,) `I'll give him sixpence. _I_ don't believe there's an atom of meaning in it.' The jury all wrote down on their slates, `SHE doesn't believe there's an atom of meaning in it,' but none of them attempted to explain the paper. `If there's no meaning in it,' said the King, `that saves a world of trouble, you know, as we needn't try to find any. And yet I don't know,' he went on, spreading out the verses on his knee, and looking at them with one eye; `I seem to see some meaning in them, after all. "--SAID I COULD NOT SWIM--" you can't swim, can you?' he added, turning to the Knave. The Knave shook his head sadly. `Do I look like it?' he said. (Which he certainly did NOT, being made entirely of cardboard.) `All right, so far,' said the King, and he went on muttering over the verses to himself: `"WE KNOW IT TO BE TRUE--" that's the jury, of course-- "I GAVE HER ONE, THEY GAVE HIM TWO--" why, that must be what he did with the tarts, you know--' `But, it goes on "THEY ALL RETURNED FROM HIM TO YOU,"' said Alice. `Why, there they are!' said the King triumphantly, pointing to the tarts on the table. `Nothing can be clearer than THAT. Then again--"BEFORE SHE HAD THIS FIT--" you never had fits, my dear, I think?' he said to the Queen. `Never!' said the Queen furiously, throwing an inkstand at the Lizard as she spoke. (The unfortunate little Bill had left off writing on his slate with one finger, as he found it made no mark; but he now hastily began again, using the ink, that was trickling down his face, as long as it lasted.) `Then the words don't FIT you,' said the King, looking round the court with a smile. There was a dead silence. `It's a pun!' the King added in an offended tone, and everybody laughed, `Let the jury consider their verdict,' the King said, for about the twentieth time that day. `No, no!' said the Queen. `Sentence first--verdict afterwards.' `Stuff and nonsense!' said Alice loudly. `The idea of having the sentence first!' `Hold your tongue!' said the Queen, turning purple. `I won't!' said Alice. `Off with her head!' the Queen shouted at the top of her voice. Nobody moved. `Who cares for you?' said Alice, (she had grown to her full size by this time.) `You're nothing but a pack of cards!' At this the whole pack rose up into the air, and came flying down upon her: she gave a little scream, half of fright and half of anger, and tried to beat them off, and found herself lying on the bank, with her head in the lap of her sister, who was gently brushing away some dead leaves that had fluttered down from the trees upon her face. `Wake up, Alice dear!' said her sister; `Why, what a long sleep you've had!' `Oh, I've had such a curious dream!' said Alice, and she told her sister, as well as she could remember them, all these strange Adventures of hers that you have just been reading about; and when she had finished, her sister kissed her, and said, `It WAS a curious dream, dear, certainly: but now run in to your tea; it's getting late.' So Alice got up and ran off, thinking while she ran, as well she might, what a wonderful dream it had been. But her sister sat still just as she left her, leaning her head on her hand, watching the setting sun, and thinking of little Alice and all her wonderful Adventures, till she too began dreaming after a fashion, and this was her dream:-- First, she dreamed of little Alice herself, and once again the tiny hands were clasped upon her knee, and the bright eager eyes were looking up into hers--she could hear the very tones of her voice, and see that queer little toss of her head to keep back the wandering hair that WOULD always get into her eyes--and still as she listened, or seemed to listen, the whole place around her became alive the strange creatures of her little sister's dream. The long grass rustled at her feet as the White Rabbit hurried by--the frightened Mouse splashed his way through the neighbouring pool--she could hear the rattle of the teacups as the March Hare and his friends shared their never-ending meal, and the shrill voice of the Queen ordering off her unfortunate guests to execution--once more the pig-baby was sneezing on the Duchess's knee, while plates and dishes crashed around it--once more the shriek of the Gryphon, the squeaking of the Lizard's slate-pencil, and the choking of the suppressed guinea-pigs, filled the air, mixed up with the distant sobs of the miserable Mock Turtle. So she sat on, with closed eyes, and half believed herself in Wonderland, though she knew she had but to open them again, and all would change to dull reality--the grass would be only rustling in the wind, and the pool rippling to the waving of the reeds--the rattling teacups would change to tinkling sheep- bells, and the Queen's shrill cries to the voice of the shepherd boy--and the sneeze of the baby, the shriek of the Gryphon, and all thy other queer noises, would change (she knew) to the confused clamour of the busy farm-yard--while the lowing of the cattle in the distance would take the place of the Mock Turtle's heavy sobs. Lastly, she pictured to herself how this same little sister of hers would, in the after-time, be herself a grown woman; and how she would keep, through all her riper years, the simple and loving heart of her childhood: and how she would gather about her other little children, and make THEIR eyes bright and eager with many a strange tale, perhaps even with the dream of Wonderland of long ago: and how she would feel with all their simple sorrows, and find a pleasure in all their simple joys, remembering her own child-life, and the happy summer days. THE END brotli-6.0.0/testdata/alice29.txt.compressed000064400000000000000000001416601046102023000170770ustar 00000000000000[RE ;«@}.ŠÒŠE\IKo¯€¯xÓ4]MOl±îô!+l\ECKgç›i¦E¥¢_…|ÿ’ݹòàɽ#æIBƺQéºàŸÔL‹JEÿ†`;l h/@wL¬™ÜÔ1Ä„F@Âq(ø¥}fùQ†³VF;EF¨ÖpdqÈ‘X7ìJdhîþýÉ 2‹ˆ>³·Wû"ù¹ï§HA|‹¶ä÷#n™òê9l[=ʇh^ àñøi~_o‹û#ÿ„(aŸ¹Hÿî<·?݃®j¼ðŠ'%>QA9"tÕ,ÿ}Sû“ýp0Q6a2Q|Ï=÷,C@UE¬*  ‘ ˆ¤ªoQcHS÷:MGì¿®ÿFZ¯ù¡Ìï±&ÜõIl}¼Y¶þû}iý;ÿ»¹§ºzÞ5ÙÏ^ko€qï @Ñ#H ÙHQ ‘ð³[ûÜÈÄ ª~ÊÊ2L©ßRU`ªžQGU™UnûÙ(Ý´Ó™­Cu÷.“ !lr’¾@$z–dÙ΃vS-ëÊæ>ŸÒ×ã¢B‘ iŒ¬òmï}Ê;; ¡¨ «„{àíÚ4ph”l"ú¯&­åÙæû= ŠâÃAbÔO\Ç/ÿg¥jâõ ÉÏì1œ+´c³žéUz>Ͻž­Ÿÿÿôþ— ¯:ü¯! Ñ´Vö®£a5ùh`ÖPëx½³¶ÏùNÿTä)èЃ®Ü™nñ'>?‹OϪ¼ø;ì, 1`pÛ˜èp©g`®Ì¨ ðâܦ"H«Pß‹÷ #Å8œ†¡p&=[Qùƒ¡F0rhäÉŒÐKùÛ`}ôð™HC;¤±+xù ÔDð<`€T$‰EH^BàgÀ­Æq^d1‘^BýsºzþšmWw8-JH,_”.Î{wˆsqŠÒ·gXŽ€ÆÙ’ùÔú€Ô¨Ûu^ë:Kþö é)’wŒ‘4‘œÃ(Ö'L‰€XC8pO‚ÍA¨ µÄq»‘„$% B©,´›þTíœ)µã§g¦ÖBüm!ní¡CW ”xþ6 F}gQq =þþ?Àï ˜%Ò$EðìI¬°èJ'Áb p4×™Iã<ƒþWØË߈tÞ˜t þ–ùQež†#2œÃ f×µÁ!dZˆK¨K‘ÆO_.UæH—%?ë< ü<3P0+uÝׂ¤ ɤ’3À86¾ýº@ ÀÆ-–þe ³#›D*°°+6Ñ5’IìNŽ–ŽŒÕú5¾#P ³Bùy·jaF˜ Ž!83e¹”2 )T&˜!ì€$•r¡¬í^%=zØr<‰1PÌ—–|ªÌU¤ü_¥/Û"$ê›ãmí¤z¹G|kiV¼Ç%¬uˆD@_®ñX”ú%ÉY{€J¹ ®HB_Béݦ3 8·qÇĪD9mqĮ¯} æÅ¨.Ò÷ÔÂn9°ðñ¥€&o°n”å9DhѪžË´æêpC+ÄcÔ@3a-ÂêL)‰%mÆ)î~žÌi/¯E*úWøYw‚ï3rà°Wà¸äZß ZÄ,N¥%Ýþ³¤/¹ƒÃ@žÊ}ÆOA»”¬Õ$á`..“ ££v×¹-õ…§mR¼£.Þ&8·‡§2S¢pÒ8RA³YKаYÑdß=O j fâÙÕ<ÁÕìªJ[‘Qb:I£Å$>.jú|¢!@÷el) Š?½&\fÍ60²d­A_„ÞS½Xç2xä¾O¢¬iö¨Ú>©±~ÑžP6èÈKЧU­›wiy¨ W›‰Î[¦¶»øþ(b¶,š73¯(Lž¦Èõû)+3.´¹ô…hâMªdþ-Œ6#ƒ®#¸QÝó N›=è&F£‘“&„lçb°ÀZ =&>Tk‘H ×0ähñ›òÅ÷,„g¯ÁP×B¯¬u˜á"º–/ŒãÚËŒ¼Rk9©ü¡ŒiæY‘½«.°>>“ê'ÐJEm œn¸L_ ‚·Æ<Ã%êBHB¢·É‰\ƪjáÇ9ŠSK–cM>ö[Kh_"0ïû†Ó[Y¶Ìå?Q{°¼8ß›Dê«ID¹5˜‰^ \ ûŸùþøß¿£Ã~'Ø"„NIzžu£@:¢Ö»ÏÓk $+¤öšß}OEÉÀlWž§Ë ÍI Hbxt*mtKÍnìÔ·™ØÒC!”| ×QzÙ.ƒ¬M7{ûÿONËs•Æé¦ JF ECU8ºX|HÖ,Ÿ-•:û,‚ŒaõC{¦-mí¨øâjz.iY°«;“Zí%±3owXEï ½S#Ññ;„ÿÈZXÆq©…3DF)ú¸¦Ð"ËúøFº_~Òâd–|ÔÑR¢cKÑñUÓ2ü_$Qê ù;¿À‹_™¡&^$ë¿hüm’¦× ¦„ý7¦+ˆ´×ÅË(a!Ú0_޶všhÚ#´Ÿ ØôÐ>LÅkÿŽÞ˜\¼7Á;d’æ4¿/¼?ýþÛù·€c.C:Cj$L¹±]ÛÑÀK+kÜÎʨ¬Pw¸ÂŒEÁL9÷ï¤yàçÂË™|kOÄ¥V®²ŽjÜO3U„þÏã÷8Ð@Ïv±Z±`~„̾‚# @ öëœ, D(ˆªi"hÒ`ÝáãÃc‹¤òR)kÔ°Ä[¿û<½N&c¤F\c/x»ƒmÔ„60x͘ñ¡„d0Á·º±×§Womç´\!KÇã—ß|ÿøŸ_~ý ÈþMר1u£¡©œƒë@]í-ÊQPÓ(À¼Gë¸tò+šÎZvæ§XñÞp4nÛ‘B%òÝ¢BfFΛmMU¤ñ¦ Õ4~’>Ë E®™ÓŒ4v¦Ï˜ÈùsÒeÒN7Y˜š¬å›)9e®+3¦QÜ ‡Æç‚ª–ŒáÒê“o³ÕÛHašòýa.I5Sp¥´cU£Ž˜ÑW-ŸQJF-L™c–5ÛØ<8Jÿzï)¢ö“ *žL+Åæ´ÊÔä²:RÖ«7¯ì‚¦/A ýLDG‡kËtn—£Þ(ÿ-šØ3ã1Ó^Qx)·7û\šäìC}‰h뿉îà[=Ñ&ûrÈ! 8]^uaŽR3°áøYH, ìë–?T{ºFž|Qj jÒÛ-+2V'´„ÇÜ™ Ö®¡‹¹ÃÏCH!OP8í¤,&ÕI?ÀÜF‡PÈõ¯Á*€A+¢¢Ƈ†¼nNóDÖk¡9†ˆ®fm(ª+És’•I,EMyrà׌W8EKwBÿ¢håŒ]“À1±õ³“Fxµj•OEŒo23@¦È½ÛÌÔ «eGwêÏyQ(ûÑ—uÈüR”kFMM=u;’&”\?®p¬Ôqº]޲ƒÑ^ ÚL ø•tÖa]z©vA¬)·%+'²à§Êûyx[ÇGjÔ®Ñîkà¿áZdžá™jñ9¡GQÛ§ºLfœæ(ÐT&µ¹ï>2œl£©ûž¤‹Á+ö\EÞcµ¦äŠ |8É Š›!Œë'àˆ]&«%0šWÝ&ä!;1{ƒâ©I'GÔ7Xús¤@ŽÚtÉœbþÊŽAFŽtB8D]0e¦Ò»Ü{vÔôO7¼‹Lù¡Àäeîù™Óã:žÌŒêi7Ló+eOñ,Ri¨E÷±ïJæpç²Ïódo¡†üid|²ÆžŸúÄ;/¿ÿòëàü8Nóóºv< ÀÒRHÌ<8Õ§Û–÷ƒúOfÑy(~å3,Oþ!éëyJ;zœ^jXœùÌ3‘7ØR!¿.wÔ Ö8S›‡cD³ÊâÃ[¬¾š‘Fl>Û¬Y±'‰  ëí­-2‚Õ\É$¸]Pö»8UÛÉ44èCyH®œ ðﮃáÇîÝ2£€aͬ¢µ:.âü`çïCÖR,n~Ã{K¸UvÛÓÉÞÁtH#ì P[JJÚv߀\âŒa¥2Ú ô¬…vÛEJ?L;”ÌGp®´¹‚?N/|…þB4ܯóS§šâk:$¸À«1)µ¥a¦Å5Y°>!)ôž)#KÄ QXÝð:Ó²A#=Šà´²bÀ©DÊУê(¥}~†©p4¿îûYŽO”ʶ›™ëÆEI÷£³œ'µ?ë˜Òâ )©k»`!Š'Fˇ@cbQVËËjIàáÇvð¥ëÊQ}àÈŸÔÀ§×%&R@kÒ˜’™TKzÖn§ðöUŒÙ†X˜ó³E1sðÂ0/ÞŒ`Pn AÚÓaå@ÎNɤE$VmXW.eÍí´†C:À¿xÁÛú½ÕÜp*ôÉ/*kG³Gà´NÁ˜ÔÆ÷,S±íô"äˆÓ9Vm70J·áô'ù§éFMÇ·½1ù \FÂÁ„»Ãgûߋ֙Õ”\g­”¶×)¶üdÁ=t)í<ŠyВΩ=/8¶†‚‡!¡£ ½½zµ‘W–jg\ü‘Yzø…<Ó Íµƒ;‹º D}圌<€% òfÛ«±Ó¤á™Î÷p&šš©ÄÒÛªD&%âԜĄ.á*¾PóŽÁxÅL,ö eçŽ*R³{Óõ [û‘OQ™ÑtÔ‡tžD0a”X†«yj åUGdãÝIRÔ©”ÃPƒLLK±Ž²›w i ¶t°ÁÔòÇN»›;€±óFÞlpjné¨PùÔŒMÍÅî×@Q·ñ.!µ€I"ÅbëEdoüü~ ‹@9­Hµ})Ê«˜'šuÔMƬޮÐ(ê[Ò•céÀ7¾v˜æVgó.%0›Å®ïöÆà@¡xËd(†â…537Òù\Ž”oG7›F¹ú±jϼݟYO¡â¹a ]bãÐ%yÅ–âzÝÆ@ «d¤…^Íê­7ºÚ;{¶û Rä»k,ÀUU»Ëg‡0àhÆw Õ„æ¹&¼$ù9c\Øjø×ò10  n¼.™ &ÆAÑÕc^UÞ7Bߎdi‹ÉF¥ˆŒ¦jÛš:нJx£¶Y'ëº0!èJ6B§Ài‘6ÔjO¶®ék»j/Î9ë–Ž¦HQ¥·Ø%TC“Fìõø¦+ÝÈÀ-oûfž9庲3@£’O9×¢«vFYXI@ñ:Çoº†êÿ9Œ¹A•£<Û¦jm§žbR‹TìÆ4°$ÔMÆ›vN}–}]ú± d¥<\%±D÷v`0í ¦©ŒÏf&5¸ç»u¡|pÚ+EÓÞæ¥v„àüƶÃPM¯ì÷zžäbvG(M}$R¹UJ.ùÌmW º8XÖ ãõÏ]=#ÍöECÁ9ü\üÌ&¼á¤%ò²›=ÜdQ†R žÜ;Üù§ƒÜ÷dÔ[»}­}zW¬ÿ&¬ÅDa6¾½Z'ãÝ­þ¬P_ŒZm>±«÷Ø[!ŸGæCrK$ô£Ej¼sH1Œ^›ë0sÕßÖ쯉RÞ ¨àüZC¼æá-%3[ãðý¢H2Z‘†*°?³Ýe­t´ó ¸%ù§F$"«Z¡‹r½+¡NÌ^›m8✮ъϣ…¶TêEš£Ô6‰Sµ¡Íúí6XÛ3êP‹DꞪU‚k7‘•ŠÔŸ–ìbU£îÎcÂl³BÖÁY.-û˜q÷ÍùÐY‡"€€\7{ÛZiäñ»Dÿ"d…m¬_¼Æ1¥úŸo‡VÔ‰Â4þQ2H{½÷þ0E)šÈŒSì>gÅ;äù`‡sÈ0>Îpîêå¬eIc=zÇÇ­¿“ú*åÝÄ}ÔFEóÕc 5:Œ´×o„“Ó Ï]¦¥YÞæÎ8›™+0Ãl@OeœÀš•êSI¤MÆŠ>Gš!°€ø³`꺄҂O3ƒ•Ô¸SðAx£À½ ÕD1ýèùPû…A¥\.Òã–~àÒr©Œ>&þ*'ñ)°ÔJ ÷:”¦<´‘Ñ¡-ã[NîÝEßÏ<;DàÈ à×Öï©r¸ÛSo¤Â§g™Pò¨$}} • ÎùÉk‡¢ÎÆnð3ÝvÏTUðfx&ºm4^ùû\ï¾!ÁÜ¿–z<øÀmŠ™¯‹JµâÎÜø„“GÖœËTψ|‚… ¹ÒóF˜$¶A= Jˆ !}1¬aï;´cÄ€g…la*V™º„Ù¨¢ O ~ÏtI#éxÙ­iÉË-Œ¦¥ª`Þ~“ 2ÙkÝÔLe¾=$þ÷*V¼|¬°2`ùçê ÃÎ!+õV] å ×ÛÎY‘K-²Cl RÆV^ ºqj޶n,²²*ÞTPê\Œ:0´+Yá+ª¾Ã–ûÑGx–ßáQò¿µé<ƒ©ã TSŒcŒº@íÐ놌®Ñô¨ŸLŠ]^šÌpÀŠ¢ZΚFá”&:–­tž†ôwº°­ŽxKî,K¶šÐÂÌsH¡<‰ Ògêƒkˆû»LNmŸ{ÌÃ~èzf:EÞ²à™,ìÚþß]Ð]׆êÜ¡¡åó"‰ ¿§ÍMx!ÁùÖRý~NÍ­.>>èl¤óØV¨&K¤ÓUœk·éáÙüÛznï 7“ZC0Ñò©i©5Ò f¥Irt«=›Ë[ÿqþãdV>ÜLvkã……Ú‘ºðŠ]„8^¯-‘Æ ¡‰•ö¢c@¬Úa†tÎNt+¾Uªeí¾‡éÚ /m_{L«ÄE=†¡C­Dì—Mw¯'ÃòQ+)xôf„΃À¤Ú®èX®“ùQ¤ƒ„¦ç½!2 Kéï#ãg©} ¶*"½änh­ÊŽ9±ûÂÚ‰³Ñ•‘>T/1 ·ÅâéöŽ^ÄÆ<6ŸB(Ž¡zºöV{ÁÔ8þG·Õ{ððå…Å9¤yt™xÓÐÈ”&­*-Œ7LÙ.‹y…%$¹u^5¬´Æ»¬å;W—7%3Ì„iL)1›ÂiQO#%ììΘÊk»|«¬¸¸rVPø XRÏŠ~kSµš¿]J(?Zþ@ù0¸«v¥âS"vz ­‰-‚¨õÞóñÇÇ¿΋b‚yYÏ™ÿ»®IÃC(¸`Žkê¡f&þk¼çŽn¥"¸&'L' ¤7t~eD¦moÀKæ;ÌÚAÓɘÝVltчé8ÃiX´‚c¸‚2^fë‚ '%:þ¾Õ„žðàX/=­Í02ü}ž7Ÿ‰§·»¼CªO•.‰þ³‡ Z]ˉ3u)é•åwén•–Ä‘A?|Ý—u{ãüÇßkC­H³}IE€ ºït¤k¶[vMPFãTS-N_?yЙ&¸òÂ)®]ïÄ w †tó¸6þ37º_üØæ·a&š&JcžLÿûñ0[ h ߪ¬6HÞ~Š×Ò¼,@.Ûg±­ŒíÌ#Ä©Ÿ—F©q–KÈJaä;¡õ âNü|ú§¯‡’zÆê|T¶¾€}6SNužµ0ÀŲ§íì–³(„ß)ÕßÐ'“ D:U¢tµ?ïδ@íŽ2FèGX—¢&TQªÅ½!ª\ŽvÒd;5z'ŽÕ;‰å̦Ô""„…ÎHEºA¼Ö–Pmî8 @Ü7¬a;J­„UÔÝÓJ¡rجoulßÀ#ÿ¦EÍŒ/Ò„ (•¼¸ud…ã&…×2¬ˆö/¾s­;V€;MõmÞtI|}%ñfi§Lê2†ï…ݳî^À~|ûeÏÁ¸Oجø´Ï¡q´ƒ6+Ä|ÚZ!øÐúŸpbÍæð†ÀT¿+´,?éQYK«!°òÛGÞxÍØäК^7 Lí Xwq <²YÃRD&®0DåM¥·Ýʯð€kì罋ŸX’×uV†Ï9¦Æio¿9«S /‰§¡Â=úûafýzm.wªol@Qv2³ö­PÎu²Yj]XFø.LgÞ:‚žúÖÿ)Ç»¸E2½ì¥ÐcEõlmè¬î'9|GP“»Û>‚g^bEÿYÖ‚fˆ; Ú€}÷Í;玾¦Æ¡0¾IéNU‚J¢þ;<÷mŒ>÷êA‚|>ÓkŸWS[¸0ðÀ³^B@f­wã5C6¯ú…quðe>ĬŸ•®à5Ev$Ú§Ym™î×3u žöRb”ZÞeŠ’ÌÉBc|Ã1v`ôEÑîϹà×.¯Œ>óŽŽä±<¿M®IüÅóñWïlNÙ¸/T-ìE‡jM}äwÉe‹OðÀH‹UŽ‹Ï%,ÚÖSwâ›]šÅ£[ßcN"zRÜa¦ðÓ£ŒkÝî8‰÷w9Gü¤p oëŠHãã§›„ÙXa´4"Tu˵0°Ï—’^då€]ˆû}µ›ȹç:£†ˆ€kv»Šq±‰4™C­+œÕ=¯ÃIÊû@¥§]¼<@õáA;[ƒob&€â>ÓàÎŒJs,Ë@ÒBí±âÃÄ2ãüÃŽ¡¾§"–è£ó¥[§á§ŠfG„i×,žõàÜuœ_3)ü& ~yºRõ®¤A h¹îMËÃ?íou·¼Ž=1¬Ø™ZúJ(©ÓÇÏÅë/þU„þß.20†JpGl UÑV7ÔW—¹=¹ývÞ ¥FRš­]ÚYÆã@²špé¾Ã†Ÿuîè‡ÑøúÊ»š&3W=þÙA¾!©û6Ñ>p?(Èè½Ï?ð–͸\~‡÷`½ ‡3Ѷrr«%£ ükÃNì:ð/œ)%Õ'õ|ÓE·ï‹ílüâYz$ànæ>À¸.‹¦Ó;IÄÓ?6æò|:CÛÍ’ÚÇŸ&£¯çž=µFjº0w#ýÐÄçX¡-ô3¾¹¶4*ÞV9äãIøè²=Ÿörb3å¾³»©¾wgž;›é@­w~ØZ ›¶Æ{ÐŒ‹ž³Ïà†v¨ÿ&ÿ» ž¸Ò?+Òœbµ•^ÿQž¹÷%_qï+}bT¿ê½™±ê1XbWîçi¯ôo™ù³ñφ.®ò +ÎÐæÜ—ã¥V)ð¼br†ÒìÉçD€âÊ‹¦š·¿%G:¨š/9z¶¡â«šûUf×óÆrÙfQ8ÏFû'K^ ^¡`|ã÷óþå,Eí6bÕLÄqæ5às…þ…%ð<‘ëÌ›ØæÀV¦Hµ{Í)¤[g1½~|=a¹AŠä……ËAŽI¾ø¡R¸°.{éÙ¸wµsƒŽ$¢]Xïº=ølÙQŽJ¤çàTH{LrrßÅm2eVÉ:ì$¹É*ãσQ"öÐæÁÛo±åIÊlã=H¬¢HΩ8Ž„Mö¬‰ÂÜꆌMÆc-,+H­Aï~ Ì 2û%$èç#é+- O4Ì,ì<ßQkmwàÎäªÁ“ÂÉï"8Æ2/5<OFsï–ÛÓ2ÚÐJ©x¯øº1:7k5Ýü’á“ ×p•Ävë1Óçú Q-ÛK&Žr^üwq9n‘šlK¯*›9Õ ˜”n§£ù(ËX-8ó;ŒÇéó>ÕS«¹ešd½Hñt¬°%íDÖ3Ç[õg ‘γØVû胱²d´ÅG<åiênλ¯Nhb€r å 5kûêsˆÙ.Wâ÷¬´ ÅdWQo&ö/Â^6Ž¡Q Ø"qœ(õŽd=>‰3à &®»² †?®¬ÍëR÷0‰RBô`I¨ H’’†Äøþ Áë4‹z<ÙÔÓ‚[|\ÿqp»v„haº$r…ƒÉN@•w8 Òµ­ò•¼‚768Ì(2ý¼Ë£Ú{5š +y_œ®àýX)9\yeî©kT.à|2Œ=e“Ý€÷Å:3ÎXÏ‚÷²™òŽÀ÷¾Äq«}¸úÅ68¸a»“-€>4²R-8çÖW¤Ž?ÕÅQv˜iƒcÆjí£GHªÒI® Ö…µl=¶… ?ë~Ž>÷ªÔnøë"¿ÿ˜pÉÄ'‚öZR„Šp~,оn!†?!Þ°f4¯ü¯„Ù„e|!¸ÏËÅC¥¦ó¼U"–àî°5°&¼òk-ÖaU0jÐå#¤sÓÃùϸ?ÆBžÙÁú«ä©6N•·ïEDG‘¢þ:?7å5ÁÇržõ¦ã,¡=r”uO²(ÌG5\a’ ëžøímWQûs!ª¹9O»ì$µàÏ“ÑFIn¸hÖ”Õ]d\""~+k™Æ™ªjà¼{ŶÛœýÕ¥4^øÏìð’/n†!]dôe•›óH«ˆoƒ¿–òj%ÏwENòŠ1<ù[Yæîf¿IÍæe)D7N,ømküÃŒô^yØp[G-ÝÍØÊìw4ÝØúT¢£pñž­çéq¼ßÊó™HUz:ÿÙ†æëT‚/lµM¨=ìÓÔ¡»ñÎn(Á6¹ÑwP4ŒÌ+€èE$¹ÕiRË“y®Ñ@j. ÂVÏ3Sú= »î Âíi©´Õò½|±3«Ë2½E·rÔòø%°¨l…žy—ËþÛH˜ÉŒRçFd|Â;-ÚG8FŽ`2+¢“ÈUª›ß2(~+Ô9‚fÿ(¶²ßsúÌÚñEºxøüm’Œ?ÁT¾ˆï-³Vs²0„t«€šU„½¼|4¿Ö‚'‘l ‘i¶p.‡‹PŒÁ¦g,D+Æ.‚¾. ³¦Dk€+$ê½UÍ!Š›cŠO냂ÌáûHq¼`7§ÛôH©g}S[ã~‡4sŒ.€Rð$¶òî3LD—lµÕgÖë$4YïŠîºSq‚{ìÇ)TË*Õ’CV›rÏCÞ÷c˜ñX$Ywé¡)<Ø™¸‰#ÄÞvÔ4#Qê,;Páý—É m&ggßÙIÿ']^gú~üçþåÇ8mýhòƒ׺ê%‰ßÝe÷»Ó{67ó˜¥x¼ÎG&EfÑ9ëŽ é!Þ­T;±ãv /'«H‚ @;2¸ðKç=7zD`(2{lÕ€µž€jñ©cîÍ<¨–a\Z)€; 1بmXæñ»…¨ñoßù§ã ¢²ÑÅ“x>cE÷,µ øÑyRjýOþëìf¼f Ú˜è¢fЋD_? ”ÏVo¥!;N L]A%Ef{k £åým(i$üÍø‚ŽÚ>Ÿ &é©S%ë{¥å½Ðwz¯s} #³äó1´Ú9 u1÷â¹øžà¢Ç¡Ô&hâ«V;ƒžô † Óåy¦W<ìjÇ·eÀ8ϳJÜPŒKíÝøPˆŸaÌ߯C{ÙžmõÿÈL9îXÿvsé3¢ó~ö ‹I|-i ÊàH éBv)ˆ– x8*¤±¤*Ãh|«Z˺8³ïLçµÉ,­çÝŒOÖ›¼-àNìo´CË]ðÑK£Þh+?`ÇïrF[f?«¢‘¿SV»÷ãß_µùÌ 0+ôã–7ÙxŸÅ:68j2ĉŽiQPÃnk #ÀÀ{u?ˆ’úÔè¬!4×`fQó–ˆËõ®¸uj0^pÓ¥óüxgn|6íLU©ãóe㣻f–(i]€Ñà!—…Ÿ}ò’½¾98+|MD o›“„Åp­…¯±Ô‘1Û‡Z­ÿ@ºŸSì\öÒ>»D«¼\î”éÂAœ‹Éƒ9ΦÊOLªntˆÁ[TÖ·&hWèÜ}_ ™»BfÒ¨¼ Jåq͇…”#±Åz÷ G•`ØXý½ùÙn49ìYšÃ„´þÝ@ð­5ä#fÊ6žWAzé» (¤oPŠãj¦Æ1yh¯ 3{eÔm¸¼õAò±·rwXÕp+‹Oêavõ ¦¦“Y­„Œwm&zŸvñ øA»ÍKDHµø¬eH‘ª4ºÿþ))CìÆ)n¼´ÉQJÞcèTWdú¤hÃzF®n«ÔEõÜFÆçÜRþ9A¡=D€¼CÞWë*¡æ“PŸÃEqïíH}NÍÆçE4ÿ[±2M9§Ž¹²÷e4÷%{¯·Å™Ê ‰T‹åîÍ©Û=“¶†a¢HWžà“$áÐr;y±ƒ*ëë7ú?Xuƒ[ ŽS“9˜‰ä7y‘ýM-r9ˆ9°´§Ë‹0£ôk2Uþ Êð':SFDáä|¦Ò"yƒ¯+)4”Ú…ÿ¸ÞßÙÓ›ÛÀ{Ë:p­þ*Ø»5´Dhºôر», ˜M[…9á­jM¢ÇÖC³®³ãYH<"jödrW^ôHpÜþ’ÓYª•ãŸy’àÈLÎtð#ë—sÓc0ÿÎðüøûG&æÄl¢¯B9Á]×®z^öýg-\üžõ€+vÝ/à.Zç3ŒÇí/EÊA ôi }„[¾0t$™&¥(³iéÖîYèC[l –5ãRžÉþ?ý~)`]8mµØvIt‘"KW¨æ7³ñe˜“p¬882.g|9ßkDn1A,þãüÇÇá®ðÊ&q¼qÅÕ‘dP0šfÐ[>cYLÖGÐYª5~ÁÊ­^Ä/0T_°(Áï¡Õ¶óð-1HÀNuldÛrgµªÂŒÌ(®#â5¤¨8Ý'oǬìæ6¸DX­ÙÈ¢{U‹¿]±æ•ºÌƒàmCˆÿ'´ÀBwZ˜ÈY~“,B”±HFð  *b3²té8@'Ÿcµ[Ó‰‰¡g½eÆœ;?XÓmœ%ɤKƒg¢BjÇv&Õ³õF”.­È2,ÀÁù׆H®¤>æJIÓΧ>‚LIݪl Òn qÑ(î°µ˜iÍWK´ƒí$p†6éÑ–cTÉÞ²¼]2Ú@…©Üz¶³Ñ{“ÎÃ\ \o¦­J„ ÐM£qÁZ-Kà‰°=¬yØ\,ühdC#ù²©J¡QÎüU‹\¿[³S¦­vxAM wà¬Ögýi ŸÉ6:0ýUUÄú1WõCd©Wfv'ÛÕ:¯äù*rÃC ß xæ™)f:(ÔÊ]ñA_¿¯Òî¹ÜóÏî.R{ä^à ÆŸ¸_ôwòþ†Žò)2’=x•xeì©ÀÜáþksA·it~W`³ÛGüNn'·Ó ØùIà–¤]îÞ—V`´{x&‹ù7O•à œFÎ4—$‚?òþôË÷aÓytgEv¹©¼ÚÈLh¦ºîD½DIZ,9E"§$œ84€ò¸Â;À8BŸßŸ….P½Žy>twüÚÿ"]HjÆ ·&‚‘ÛIrŠGŸðJ~7z­–Ðü^ƒ [tàtê¸ù“YµaA³—¾˜äØÕ‰­E!Úqþ Œw:£!ESb„yi_²Ö®_ôZôª0¢˜$Ì‘½sð$ìç»μc©+Ÿ†o8å’,üý½aö¾i“ ‹ÒÐÏyÝIs”Úkk~ž1ìh`ƒ¯1a=Š_Öž˜ƒ±¼æýõ·‘¦µ·4«p¬=8w^ɺhÝÊhÁ¶*­ú_hG™\Y<Óxø&™’UæÖvõêL[×ÔÈ–ÆæÆ·— ¼ÿÇá@Zì¬Nôw¢•ºSìšdMzÙÐQ°‡¸ÈpºS7¦T…ÓÕšŒFK×…|ÙšÆîóïòP¿7²fé—¡œžÂ!©™³•¡OSÉÜj£S‘\é =2aŽJ¥ëg3r¦¾–VpAÜÜ8—ÀùçôÅk}êâ-îMË”ÁœƒGðÙäaiÝ?Ÿ½µc¾\sã˜å3Ÿœ–½"Uçkü`ÊÚ¬Ðö̽ÈÂ?a_·D%[;’‰Ë{ˆVÖ·Ï·°RÏ*ZNÓÉáì®áó­áçºNNKï°\#yw’¢öw.³?–ՌЙœ‚pL¢ I€O:¦lp¬¡¸gLYKø™dÛ·¥U ´œ­Uè?JþZÚ¥~‘Ц;ÝBÓ6½µÒ¬¤¾—£×ÒîëXá†ý K9Ë¥ ÕÊE •žÊÐvþ®;èÖ§[3ªÝhb>Ü»ú©{&G܈“Ð…Ô{uBw!œWõËž4ÂÀË.!#£…ÏtYB» ®âQS6/ºõö$ií±#$ÎÄje ¬|/·™E—‹z YÐ~BŒÆèÞ:æy·ÿáÉzpõe·ÀÒÐp+$oðöÆŠ½øŠbH¬-8¦Äª¢fä´ ü…¿NK@H’|ïæÛãoT¾k&Ù"ÿ+Ž7+ÓÏjÏÏVg4ýÖ\Çvƒ^EñÏq„±>вÁ¼‚?òÐ’ž÷È##¸¶Ä ¨A3ÎëQh]¹˜Ÿ‰{¡¥Ä4š¯¦sïm«Î;+F×kh÷NÛï¡jIvÜøÌïbÝ^çN¨!˜}÷çe‚5™N‹{±¤ë²Æ¢Ÿ‰×"ø¤P(â?íß°ì“ÄdÆÉéÏV9>nXž/}¨?úÔk4ÅÌ7½ÏÉn·VtûZnzõ†;m(¯ûÞ³šçœ“ ™«ô¶¬+?ìNª¸ š+vN•"­÷PÓ{íÒ,0eª©õPr­€2 Gè3¡à\—ß¶üRbo ®Ï)ÅÃÀf1+Ýíµ÷þV*Ó~w ¹Ø´yPÙÊ4>A5}»N yd8OÇiœQbC¶7noÎôëO{ëóÅ­ÔÓ²~è°hŸ0aHµ7Ò¸ªª+5 ƒ¼R›÷ÓÆZu'ö®ä9ÒIöÐSè-Á÷¥º¯oh]ƒøîrüf\žH«kcúV§ÌOÁQ¦¬ä£×¤ U?ÅI*×:ˆE¯šÏÁ5ÅÃ,1’T `ïü!`x¨O,%URH³½MVøËtœ•9&${×ï1_¼ÅÌáâÉJÁ䯽ŸÒBQ:oSôAÂÊ\Í-T¸[®Ð•ÖãðmCÎÄÜáV7®nŠ„º[µ íCµËƒêµÂ¿ …Ë%6OJ0[9"îãRÊ ;È }Ç`uršÔ>x´í´t¸kj—S`»X’ Kqüª–UFµ—L%I=Ña\…‰æ´ãð·:9RQâ‰|À4­­ã õõøBû¢hºé¨s‚O€x—ŸQD6AÔ6“lņÒŸøbúzl?¹šåìŠÇV[(Âj–Àî¥NI;6U܆u'ޤ¥•B¶rga>/ež¡áü ˲ìV òŸUzÙ"¥eZÒ‚õ..¿ ¥2ƒÄaú,…p¥›ßZÏŠZ°l)EJIñú Áö3Ó2êÆzIR;"ô­½Ò¾«jˆOmpÔ y¦jM69Ta“*“L[_Ì•pRk/Ëßø8ïjûº:|¥"wï áfÊÀ$eœÖ§V‡4º¯d)0è è~P£‚ûÏmPz­ªùÉ Ù7ÍQ03;¾PÚ6míH ñn8­67z œú=šü\yžÒp­ôÌgý×.×°W·.šºrtsûFè†ks]–½iûц’ÇÄånûém¬ „õ$OV.ÜK¿Sn©ZUÈ£ÐaM·êþi§ž¥V´dž®ëp×ÓŽAõO"CTÍ̱½!á6kåàáxÌj{¯Føl3p[Ë}Þ¾“©¨ õo›Fzß^꯬°(Wû6x¼heejéä<+nP:Y­@¹²…Rò²&÷8 c“¹Ø’õZÿýqÈ*£ýXáš Ì _”ÑÚ÷/PáF:@‰åÕ¿ð.˜`­ÉCÄ´[ªÅ¦̼ öŒoÀª#Eq¦dÌ“¿l kïÚÓ;•œn–§²©¡@X‘Yi„,£Hòÿþb8¿-¡’㋆‚G|_¹3צKüc]`ÈÉÖœ…v çlÛÑW…1ýÍž—äÕ.ÆÆy€Â›@–nèbxT]û Vöˆà䌽ãRM,Þ]’Z<ù’TÏowT²(K‡1Ê|¬m€Ù°fœéúDì…]¬IT§6¬‘ñô†‘ç8€÷‡µÄŸÉèƒÓé'èöØÙA\¡¾Û{áANÉ@uI¬Q¦Ùůªw©tÀªJpDOä´’/5þªw¡YÀšJOQT‡?23[³ô„ä 41j·Øê‹6=„ÉÛ=z…ŸØ4²7_Y»üDþ ÏǨ5_jxerÛ[0ëk0§—=üeåí>b½›qP…¨ãùùþG­DÒz¬ËÉ€uº¶º ÃdÚ0¼>6„äqoY?µ™<Ö ç‡Ô·2ÔÌm$·~¿>’ŒTÑ[]¨O0Ãp|Ùh ð‘)ֈͼé"d{wìåúÎxüÊ×<Nq5Hê¢kŒ{ÎÇ¿XCY{ŸƒÍµfÒ³Û¦h]DÆP˜¦£”%ƒ<ÔOüvX·§#ò¡!{äYÛ-Šø¨ÿ쪕8Œõr:ËV„D#ëþ1øo<úÇß7> ¨*Ù°ü»ýóÏïÿL8‹aÿIâ„ÕCÀª=ʺlR¦÷©R’S(œ¢ÙÙFô'&Ôí‘0Ž‘”ùêyn m`\Ò$VЦ5ûq:«H¥?GEæ%k£Ã-³Œð«ho¯m þ_0©ª¥«fÒ£Óòþ1S»,aýÅþ®Öq5Ôt½»¢TbÂîùkº®äÔ&†,ûC˜eGöãÓ„-suÓÑJÉc¯'¶tñ |jZrj[:@KnéÏëÙ±ÅG‡`èaбMšŸÒ«Yü8üÀm/þœ©a0í+‘\¥®u+ ¾²Ù, ›Ý0ÓZñMn; ½D¯aÚ›çX·¨pWÆFÇÛ—øŸnÈ «r¡5x3ãîegëż·xŒâw”ÃßO;½"–gÙas8.+{*•(† åðã0dž½DÀ½º|þ}Êþæãr az™­Žé ôcY"¤5Þl۽ϭÐbʲ§Ö<Ü™B›sVß wŽdowk—±YlÑkQŽr=U›6›{~²H­‚g7*ËMàÆfäÿâÑ#KT7jC׈ݓÞÛØ|Õ|pµáËÒ¸Ê,FÒâíaÖÕâÔd¨?§u½ß¯ƒMWôñOs¦,Yê#²˜dãXÚ¾œs9ZÙpýe ¾Ï>7Ç_~ùññi5_1dõ£äÚŸ¤T›YÌÑÂ}ÌEUV»PCä-Ý ÏϲE>ÇYf:¨l¡\$x>Ö¦h±½Äìܪ0è;_NF§4#‡ÞODŸ:²PeÞ «d¤C²š©³³P §ƒW÷s,-PnÇJ@BÀ5ïšßªB]œ¢L?näãéüëøÎ¸°’’„0#]*tÌ‘ä(DØØq.‹ ÛrRͬß;Š¢³2`amáwŠ4Ú¾§§llúåÍÀ*åõ‰#`üyn¹ÛÀoȰôBF[¨¥>{ô ôdS§›PÆ·Ãõ\<.…Áµ^;„HS¾´§ô(÷Y -#ÝK4±ÓÍTj 3ÜEFŽÃÎv;à]ûFÆáÝÎë§W¤…©ûéæÎv ‡0Ûr‰ç³ä)²6c ÂÞœÈ}¬ TsPÛáàqè599WY³JWÅ:þX*Hüñ•éLø«ØÍâgÏ;²ñjÇÕzRœÀ´Ôt÷H ÞÈtíÁ7ºr4ʯØmpÃ-Ìpò熰¹È¦·2ÊÇRHŠäºòÌJ$ãŸé®’Üì{¥¾ðIeír3còÍu.=6^°«"WI°>‘Þ/áÒⱈ·÷ŒOŒ´úF«¤‚¦´Xe†É—¾Bgq—z"&‰ÐÿJf»òS•MƒàÅP¼à¸,%’zòσã9ñ%ðÂë”á£ÊQ–eÙÚOŒ=Jãjîº 1'²‚QmõÑ%ÃO$a…mùï€Àt¿ÃF ¦ÙoA—5ÆNϘ&¼6èäQ9†=3m$Òf¦&k„¨=B/ວ²þÃ˾2hwÿüìÕ!É…G²¡q2ñ¹ œì„q€ A!DJ†‰~PêÞ;…›ívß?&ß´÷ÌT6K‘öù†šµd/eŽ|C3\UUéù(r1¡œ¶›^XÉ£žd: *˜^ÿ¤"XU•IþRlp0$î¸SðŠSø1TØ#\Û»ƒôoŠgŒÌ2FðJt-"ðÔ0ÎÔ¯qŒÜ{rp𵄰} 5 O{ýþƒP–³ã¿vP2ê\m£¯½Å– ìèí3¨ v.ûiÛ›ÐS~ÐÝêBá™À÷•éü(%)i-8õEF—Ájxºk1ØÝeg1^[Ìw°Œo¹µãcüwSžÿý¡ôß7Ÿ#ØÜ.µ•.¸‡£nÈdX1¾6Á Ë;àmlHqYà?¼cWuÜtĽBHÖ*æiÙ-w³˜ï—ON+ ˜Q`i‡Æ»Ð}iµQå]¨¼‹ŽŒxs¤‹Žà/ó´ÏPÅF{кï ã’b9ЂzÊSÆ÷~’vxßšZnç†çâÿÞ!eZø¾*þßןi=W‘³O‘pqcc»%Þme:å]ÂLì}Úï&iØ¢ìdëØ‘²s$×=2 ‰|‹Ý,ëøQÈtc%!ö{É.#té+±Ívã¼b×´"×¹pLUerhº”,”“á²ö˜©.wºÄ ÃïÊÔkx=^ “—§\ S²>Îe•Ä©ä3Ê=|³ +¹ðŶ<ÛE/rHÀ|`<%DFnTfÉ<_œ»žëáu.c <«>ch ½—©ž¡Â[1@Ï?Ò.~‰ g¯ðœôvø®;ä)¾¼ë^å¦Å™°ôªñÄôë‘ñ2Û«¢|f¾2óZ'#÷G°‚‚etX:¶áG"õÆ~36YgVÀ†²è¤SfÊPûêè”o9È™lJò§ (š€•¦¹f^2.‡¯½˜S¥Ü )áÍ\B0+c:®ƒý­fÄö¾šÁ? ïËÑÀîê+eV7¡]û]}ìûŒÂyt‚"hIJÓºd±| · r×FHøÁ=ÕÞ[<ÓæÒ:ý`ÔMcÕvâÉZ(¹|¡v2—}!Ó®5}Û‚½LZçÊ&ƒ™ôk5À¸KM;Tð´€… g<Ž‡ÓŒ,ls Æ«äžW5Ëd3ü- #˺ŠÃ‰=Çü%ýÑâõ}‹4Õyè©Iµ­Lïc÷KQë|æ¶u³†‰äQJ¿p°ó¤$ŸÔoŒPØïJ|QÊ—¤íí 2_¿-¹ÖÖfÚ—ÕÏêÂSU£UÞ%í< UßN–…½›4K¬¢øeZM»ƒ‰^²,iJ¼@ž4O@‘Ü‚]2Aªåg†í`ÇXDkÚÕQ{HY: .û’q–\%ã£IÁP³Ä¡i£!‰«ß ”ïoHÍ ÁÈ šÂmêÃCHɉqš§ÔX8â]¶÷FÁöã l4Yv‘Ï)—ÒÅ'Î\¾½¯JÂ!'ß½ þ¾^‹zãzGöŸ>ßl… ¿’Á”Ç8îÖÞëÞl¢9«¬ÝY™ý¹ñ}š-gE?]l‘ÜíÖÜ“ž§êoˆÞZ\Ûžz]G#í±VD #¨K¨É쀽|JØé8r%Ò´Ó¬ ,#‚ØØmó4(Â;ŒššRˆF|ð8kçG´'†·H üm*KyKâÊ}Ãò>唘ƒÒäêÀ±FXÔP)ok†1´JÁ‘³A¾3L*Æ ±¯ë¸A“Ú!¨ó­ªQwS â–U.< {Õ+iñìp™6»H\ç¡Ïvù‚ðjY}ÀÜíß1§ƒìáá·0°¯6~Ûžd­ÌûÆ™;qu›È,¶Œ¾#àÔTdM2'~“¼•vêP•½p°Kf5bS´âž#±¶æZT=)”¯ÈskÙ+ÉC:ÝÍ5ïžÓúhã›´ˆˆ—þ˜“m§¹2—1Û†|¬ÊÞoŸeË£eÓ}ë(ú_"¿§Ý‡Î[Ý]ƒâ–j(À"I`!ö„Ë>]‰"g1Z´êûÁˆßܶ鷛‚GîÀíØ3FHø»¾Àn@é¾—é³—ˆ} \J/Çï;†=gŠMÀµTt̪ßqRy9Í×Í„ ñUFÅ"söG µâ`n#d6Ïûf[çÁeG•¤ÕtðâŸkØQô¡f¦&±øM/Âæs±Ÿ×ðQ¹sŸVN¶*Á:ÙžÓÝï»û~î±hO‚[í­¬B6êoáZ7ùŸ²åÝŒÍ𜠽Å%éíc'm»4¤õ¶jÔêmq†ò;@æo´^ÏìP¤?ã±ì©¥3#jû>‚£4uØÝ…Í}*wuÃ:PÈØER?òík´%WG]gZÏY3™Ôç…Á•B»ÉZz¶µœËm>ÖÊRÖ~§»÷­¡lçÉ'ÈVíïáË¿T§ÑAp¶wÝE=/(w¸œ=fZ(µ3¯ÔÁjh¯ANjÞº5!z|± ð“i‰cÿØG`Ý»«ü""CƒüIÔÑgïsÔ±óþeŒà¶…š¸’Â,V"•.L°è+|Ç]µÏd;ÆôÚ«!+@kj¯zÒ”ÒÚ–$¨M®ÿ â¥Õœ²ç#ÉßO»[‹­yOpô‰‰´±È(™äBÞ½>ÿå_?¢$;×?&eî\ÒÆñ/¼ ŽÐ$µ‡#«£m`5áanõEJÝŽØl8é«ç¡pbƬ8fÖÓŸÑØ¿ÿ$1°éôHBêg|Y«¢_Gå£:¤´4/õ(îvËnj f3ÃôUž«Eô}c±™0¼SÔJ›#m¦`6rm¬£©nâæ¾ôµ"û“VϬjÃJ?!žã™œ ÿgúCÏŸµjì™w…çÓŒ?#C¡Ì¶µØWû“Pt¾ üÂùˆ`¾‚<±$M½î>ûqGŽî—œ¹UôÙÖâkw%|Íyò¤@"OMÃ3íQ˜,eT‰ãêm…L$˜Ò~6£oNMN³÷([[p#E‚(¯ÅGzÚíœæ:wäÍõxè`: ÒôAæÎ­ºEáwëaÍPÅNd«z>$S~_x›ƒ² °Ä‰Gå±·#)u–Ãm¦ìö¨ß¶/wŒð72ýDÄŽv’x°ãA}b n Y[ÍÜ:=׎²©÷—˜—"4«¨¿Ì\UŸ¸JÐíß–;58»ÉÛÿŠ À½7±{(ŠŠºû§^ñ,ÝHã(¯Ü©ov½ï°`NÉ”{O?ù¯LÍ¢Ýa{ÓÌØ–ºi_9Ž4 ~öJÚGcl³P˸x\¥n;¿ ;±oC; » nE8¿AÌ$,f * o§¡w³dÅ13ibê,e|²¸ÞÇaƒ¾ ¶”k˜\\®ÛL†ƒª²q‡,ƒõM?¯Üºÿ}¡dΩ eÔ+`lræb|Xã¦ü‘¶­¯Öö<üä–¿R%ýrÔñh´­èÍØ‘Ä=Øh5Üæ‰Ñ xpãÕ×Ññ¶ßžaŽ!Íú/Úùy¡”š£ãID,1š~“â6A]³¾Ç·°­¢´1Z7ÄŠ“F€§¦¶#PÅ:‰äÒQ4¼¡Äøê—nÑÀ2Ý/"rI¾×ûÃÛí]œß~΋lÌkßä!wýo=YƇÇ|¹"HCfEm´û Ê.k{‹ˆË€È’# ø$$mu€_ª…îPØúÙ%B¬xö®h³Û³>ÛUxçdV¨ˆó#êXjÇ‘ÿ51[r4pgLð¨°ra0²u§ÿ =^|óÝþ‰=Ç{ð×±ÿäƒ9Çì°5Çàoc ÍKUYRð©ëÐïØ#ZïE.g}P ï¸S|öG¦°:$›Äíu=íj2k)ØïŸT\ Ï$§ug‚à¹m!’âS­“Ìwáãsk†ãí'%S›ýÎø¿ëϳ$^|Œã!KùgMeʽ8£Ri…ÛŠŽR-ü¸Ùn·¢’ eZºœ9þùñOß?(%$c¤iPüÇÌ’ D—„_„¶qŸxoÒ¯öUˆ’q¿þßì†×ÏÿòËo|» Ô£ˆaVû4â7üÄÉ»¤C‰: »9–ôa|:½[‰!Q( ì(Ð:¨›¤‚áŽ#f_Û:;ðÇxœ²Ýuñ|]Zé 2ÉŒ²µXö„¶ƒÐˆ‘q™½¹¬v‚ã€ËZ2ß°•¼ ¡êÎäÌc.„ÿ ¢£|\™W„ ÕivÄ0ûºc(0_ð+]ôÇ<Ý=É` Z,Eƒyü‘a§Ñ™Mð\-ŒË4Ü¥YRü*@Û—åñ_G]€_´©²ùáQh¨ULÊÚä{I;Ñ:¨åI¹Ë´„ç@¡Ëo±‹‡wóe©5“­ÚW¡L³ÒYÞ°úä¹î8WRï zîÁËí*N6¹T[oY#ŽŸ”Ó„Un½ËGæTFnPÓÊŒá,°D=Ä·’·¡×Ki; >çRÚWèôLØ­Bt™Tަ޹ܵ¦Ïìk¾&FÂctQ ɼƒÄwª¥(Åuïe>´X„‰ÈÒT0ÉÁ@S`¯w\>%Y‡ŽÉ•8ž×kÕ-{¼¸sAƒiÖ15Ðåã Vê%°)Àט¬C÷üåù‡§ß~ÿãûü’¹ñ”hRy„¾™—ù†Xêy½¶{ ù$<ã5‹ÑÊ›%¢7—RY(ìŒÔ ªx|gV™8±Ýe$‚bå¹ÖÉ+îMì)Ëš3xð˜wFà‰„*×Xšôö`ƒô!ÔÚÕúrþ§Þsù,•žÀ¬5•÷¶økëßïã>χ…ZXW~¹ú%²¸Ñ»~ÔûÒ>!¢\äºÌ¾§Éó Fú»+°ÞxR´rOFþJ®ùÊ0 Æ$%Œç¦$D¯%ðç?&º0P¬Ö>aÊqQwkj(A2-–q€Ðé;s^ÀqXDv°“–ídæ0^¦ »ÂÁ݆ß#ªÐ Èäqã­äO_É3Xâ5F3÷̰|<Î|»[Ø¢ŸÃšŒŒÃpÄr•·Ž„gÓÂpØtA+»ñ@Wƒÿ“×+‚y±Ðc)½Å&Å5cmsÞ¥pÍ õð0¶äª<’_¥UÀLìs)鸻úôà'úö¬+3áýnÊK ““Îô•!%JPØù¦ Ë=ÄÃTƒ2qó©›ÌMh ,Ûˆ‰–Põ2º»Ÿb=Ó =¾ˆïÊ×pP pî*W´3R¾‡ëI¨íü¦¶Û³¸„¨f÷`ds®U¦ã¦Éb¥xŸnƒÓì'“£3ÕW?ó¤8­µÒù¶g9 ;Äç¹ò`eµiR(ˆ;·ÔuûEût%‰6 ÂF9z+×€%¦ǪÏO=±¸O¤*o0œ|œ6Ÿ,‹œî¢Ã˜ÒYÚ=yÉl×%)º6vZ·¥¸‡Í×HŸûmI78Q1ó¨qzE™÷ì#‚¬dÊä#bç½N¢\ë¾>?ÛØ=ÜéŸÍ.FÃÞòí²lßúšÝžŸMN°þTœšU/€8ZP ’/LàGUƒÁù ½[lR‹€«;ü| ÖAÊÿs©~¡Ø.Qj‹%}â  Àºë‰S<«M €+É<£í~?CrñК¼™unÁ»µKÁÛÏ¿/‡Ê›ôö»ßìÒ,vµq{§¿xpKÎD¶Š7N–¯j@Útk÷q.™ÆY)X6Û=6rÌ ûC-£G Ï’_v©Óï6.tÏ­3­Œ+âÖŽãݦgR*® Æ}µ]³ïYa¼hïãVþD3—5¦™«~…ðªüí jÞÅnÈ™“1ˆô•ü`!ën÷£vvlÁP™k…¢ÀÎñ›Þe‚0âXzZI½ZÂ-•„¨4 ø÷æ#\‰4޳ì9 K°ùä† ðŠå7'I±qt’Ž‚›ûê ç“Zž&¤Bkq´LXŒ¨a~¿X¾›[Û4ûðÎÿ{" ¡B€[)ÄZØš 3ª_TÒ¬ömfÉ?Ý´ÈdßÔ”öõ@ üp£*«óR0øŠGv°FŠh}Š«x¸¹ý‹ldâ9NOâQ#N×Ý|ú :›!ò¥þ²áŽ1²˜.†à{Ïaþ à)õóPbÔ7jáââ ÿ]ÎÐeÃ3”3ñí8f.ß‘Cþbì´}¼YM¼E£k嬲,È·B#wÃt§öL“©Rßç„6ŽÐÎ éûLõÌûë]5žÚÒùxœpÉáúMº¯lX_áØ˜þilQ`íX„ꊦ@„VE€»R|+ÔÃ]%Ø]X¡¦óšªÁÎß{cŠcÞsÖ€ uG÷h‰”´ê“26¼ú6h&µJ0¯À¦V*Üà¤"…-M6³Qé±ø¤:Y­Mß2”ú:M3mÅ„̳‹¯‰ï¯£ì?ÓÚùöÆpáxëH¡î1‡‘¹Ê(Þ û85 Í—ß~|—ë{ê6/%À!·|HR%åì`_Hƒ)Ýz Žæ,è“z3¢í[/sh ®gÑŠ¶p³Oöø]'Jb©Zo[1°{õ®ÂfÁ€fɾt>¼sjpY‡Q,ʹ¢ò¬¹J˜'ŒEµ+†’@›‰Å7Âó`åØÓ=…ílç†á¶ã’ñ]‰Ïèäpªe˜¦ÊyOÀº‡‹Ó²!q¥îX$ ±1Z#ZᶺÇW0.€ð}I²úƒÊמ££‰…»9cIb-©Æ w@X9Hv_+”zü[ˆR99+d±$º—9ĵïJ“]™—];¥Xýö¨Õ·îjlí3ªª¤P™jÁÂÉ#íXVœ©WUŸ¦Ï‡;eɑ̣ÝùOo#KU§ç±avó²M¿h‘6*-} ôh¶ƒÃ¥,á½qÉ€)ú>ç¯#'¢¯¯åTsú?h –Ù¥Q0K–šŒøÔAb”aI»µw=g‡<ÅnÒˆÍâ“ä9÷ÎÒK®Rkî¤÷=ó–Tƒ¶c9÷“+"•Ji “$¾… M¹ý…X¢û¢9¢¿I:Áëèáo}·ª¦ª I@v/ûNñ·¿éáÐÁ¯.ÂUj2Ìx…¾aßÃQ)F[ g!2|@ Ȱ¼É¦IaO…Cò"B#„ à)&ùE0¼pS Yó¦¥k:¯Âcâ_êÈ|S™›˜Íž¼P.lí¬ÅG¤³fˆŠ&Å­³§õfl]^á„Ä«ã‹vR1áxÕ%ÐÏÙ³f³rH²YˆyW Áx»£XRªWš¨ >z—Ÿö&k2.jKõzHm={1]µ—%U*’Ôƒ$3Ø< =*…”=û ¨ØrߢzRø«ðwü?~Ÿgd¼3M¯0è{²¥·Iê8œè$•”*š‘· Æý?óz¬M1mä#c$gGñð”Íu&‘ZÞ©ÿHW˜k%Ow¥¥m Ë}{¨]F¸’Cß¶•sÒ …ËsÛül·±ááæÁÙ¤H’õÏ„þ0%Þc<÷: €É“Sa·;êÙËÚ;í©o¸d­>(¥’»Vƒü<÷FA'¤èô‡< †O?=7ä‹‚³Õ}Ó˜à#&pñC`äÌ“Õ\ø©×??~ýñ?Ôy¨„=BCR©;ÿÜʆIUxò“¾æá@³ÔSJ¸r‚áâ¡­-,“*éÁÔGa…\‚òiq‡{ËG å[ŒiÎnuD?+gl¿QØ&ç|ÁÎ@. *ha&¸œîûWaᲄ‰ØE¶-® ÜZí@×Ô'Ù~»Ów_âL+«8eâ¨Ýîí3§üNˬð4ë *Æ­Q§] Óbœ7þ+F°pR*ºÝð,U`)îé&¥pŠ¥‹ÍgQ.BuM²ß½0©X6Ùz) ÿå)™’],w…ôj{î‹Z¼ß{DoôÎ8bÒ¡!¼´ìõ/ÏD §Ï"<¡E}߬‰·ã/ÿê1S¬é/@V`t|±¶M¬îÖ­)Ð`&CÄyi&¡W;ëelQ-õ‹93–‘f/6=äÖr½„ÇÁݱ¡l6ö‘uÈq²mHç(L®`ÇŒw\HËÁã "]Oï³Î’6¬ÚŒÛG¿¨U„ÝKÂ5>s(ÃxE¦ž!È¥½*_]-„¼ÀÓýH³^lau?¬lš’«Jxu¼R=|Ñð™1´+GépîCŸÐËÖðZsÓæ™Â¬{ëäÕÉÏ­cƒÿMÒ’ô!;+ìÎ&1¿¼¡äßÄ×â‡Eœyà•»è°»¿Yùë&žB—Rß[ÞWû]LàÖDæ+ã V*ßû‰2Ÿq¨$í%~²Åÿj_ì5þ¾_N@äk—éúÝž‘/ò¤^Md˜sάj¬BV3xà¨5ü`èñ^W*Lƒ¶ØÄDB(,¤mTi-à…þ64ï)×0lž‡·z.‡¢–ÑþŸ…í_n¡'Š}VâdíåcˆaWÙ#€úœªï”ÝB™´‚á&»Qx¨‰ªN¥pDˆÔ.€ýyAÊušÏƒb ÔÇm7/_EEÌâøðváº.…è±x¹›ëÞbdC «¥[—35LÈå¨<ÌæGÒ]&ŽÁ2õC Ù/ùòr˜öÅ®äøËã÷Ô3Þ*ä>Øùº¯´!mN¹Óçu|Z2T’ƒ`?åq}f¥`Iì9¹³÷GI©4×ÏÝÉ”§k$½ÙÎ42 YlB½¿žEš­E ÒV¨™^ð-/_ÕCvƒ÷Éø%0¦x7i.I—Zn„uy„³í6#0t wJ™éäÍP}õÙ VíÈÖ£É$bÿªÙ,Ä×BuÅ-°;´iXÚRXÚ––Ôòmz(î‡om 0Fé©w~¶e§lk‹N´Ö­Å)7·ñåCã2­†Ï½ÿèÆ¤¿üWPÖ «Çžì±§èLùI›\®Cî–‚Vê³}”-*ãA8£D¤ŠC ™gG‘ŒO?ï|úõc5[WLª©£À®Íãh7z-¥¹‹ÆB¡ŽtZ@ÙíîÞèÔ&þ—$„Ò^aƒñŸ¦Òåt#ïn\}½"¤fN9|™eçM0¤«Ml 4UŽE£d=v:[8×뼟ó¥Ð­ãÜg¯§Žvë¯al:Jf¥y>È M!OáÁÃÑl¿jJq‚L.'¬ˆïãF_—K¯Oc¾Îºã·ÄT)«›J«6U©¬±~‰W\åFc…3¶òj­ñ¯]ÏM±nqœ•öf7¥µ)ö6’®ŸêÊ<ÏL4¯‘FÃvÔ 3DÚV¥·x\²ÒÄjߣã1o¼W¯Ì]“‡+n”Ô7(‘²"$}„}¬/Îÿ?Ãó鿜#«…ží…ŒMAªðÂ5 :$xØ [çÕ27'b&­`À­Åè›hbº1Þ®ÿMs4LÎ[·)ÕÖå£]š×ųä[i,e±~RÚÊrK–Çm0Ä>ý¾´KØòÔâ©ÊØÞ=‘P´QY“™&SgÊaf/ÇF=X÷ýg°‘FŽaÁêF„+ä5‚MEÌ+Q_"ÉÝ\ªT][‰‹žúžØ#{äÙ] bÉÑcjr0¼Î}äy`°‹?JªMµLâö!>õS¶Ùk©²>ëPßSƒ¹Ãh ¨ -ýA_2‚醡~y™ÀB„?Ï3Àò­¿TfìWJ™$ÇêÍywÚ‡žä#3Jë_VmJÅÛÅ »Yá½Nå^Oûñ†*í¡åâ<Ý®Ê (-BzðÀ€í ô¤×È…Ò½ºIʧ»ÉÁióÍâKå g†pÛ#×Ãÿ)—WâïNª¬•ÙxÝÌlZ¬dMÓ3}~(\+È7ÉÝÆw$Š"ºÞï6&è­5YÀï Å5é+^áò7Ö¿p •¤ÁÂçê‚g&õ€øÖvAµÂ¤ mtÆØXw=Ð^^?rãIRåÁï×p"¾ö¼áŸÅ& SÙ+ÆOâаwÀž¼o¥¨2y‘h©ÔÑ­bè¾gš×ŠQHO×B÷Š8ý³öa[=[i²Lþ…PhÑ_ª·ÒÙÖuÏ!$z9ʹÕèÅ’FÚZëÂåm®·¶ŒNj1Ǩ­3&4—ô£.öüP)hµ3ùsx»å„¬ØÔ˜^ßL ËÚ¥dZå£q©Ô~ ¶GjGu—°È¥¬{‡8,ïîñÌ”‡“U˜,ªQ@ŠGÃÌåWí«ñn&-à8˜´2k³pÓ˜(@pRëlnÛ býxXwE1ƒ:¨ÿ9Ϥ­œã¯áºr¤ íJG0æŽ" X¢î·Z;¬_C±Á ûtÊ{gìàXµ)ظ’y¨™GºhÆ¥™O’·lóÛ›fÏ„Ok£¢‘®ºOžy|˜Y-ôfýf|="ÝÊtÁí3O!ò¾â¸ÅAÊÅsÁ#LÙÅtÁè>MÌC¹‹Ü®ˆ?¸Rx{Ð*ÜCEôLÍÿ$œª×éÌqºá½›ÉÚ«£¬þ^³b3áǧüàH4~”‘{tþs†cè ôg™Oq=¾F0s»˜Iü^¤Ç,0¯T]‚ǘ™¦a,©ù-¯i'Ž[Ôù*˼¦4tJË Vé¢ãî5… ÉÔ\‰…®‹mÄy‡t@qƒ‰¿åŽöçXk»M× #iÀ-/Øœ¬ª‚¨S5ñ õqhäÌpºe;b½SDر©ª£ÿå`íÔWÖgo sAŽtõU°šP1ûïÜœº””‡Çé§ Ð*²<Ï¢Øqøýà×i…qzÁR‹Þ½ÖÂØïtdÿ‚@Áêmþöºc°Öœ"ÊÂoü9¨ñŠ`†·Úջ”@……ƒ® 2ŠV©ÍÜOð÷«K¦¥ s]B`µƒH¾IÙ壮{qf@ æõ 9\£xÆPS#[žÀI ¿ÅƒK“„ÞsÝ{’|9ô}ø°Z%®¢~mŠ`¤˜uAy)eãp-û^3"ʱèËÔ6øC âI¨ñ7õ§¼JËÓèëi§•ÐȤ«ì}ØNj5gËÙ£: à2é¢P%£xLZ[y|Üa¶È“4ÛPô)•ø-^¿Ÿ¼BM\DmËÙ8Ÿÿó %¶`?”n—‚VÑŽ~¨þV£š\å½Î‹#nèˆ+9Øz¬d/œ5Ó ö¸WƒK‰»’ˆŽJÜceO7,髎/÷80ÕI xÛV’tü×n96›±Sÿ–âuŸ>zÕ<þò6“säey`91Uî´¸D«×,óM¸xÓñKÔ?ÝŒ:·[œ%Ç3»/k¯ÙnÏC^zœšgÖþS;©{kó^÷œF« „<.G¡éŸ¿§!õì´\,NÁè7½0¶w=ª·},O£ÂŒ£Ò•~`’o­Y¯NTn‰ø¿„Ì |â«Ç_–`£û3 D£ùšÓŒiKEe2AÐö«èC¸X«À(ŽîÌ„niºÂ¸µanAá÷Å})¦·Iïà ªBƒh7» iFewp¦#$og]DM”â5n!SôFÓbt, ½iD®kJ›>EsÓd 7X‹ µ*.VÕOgg=\ŒÄ_¹d ÕÀþ6€´È%Â2ΦèãÛRñSš¡ CÉP&Ó\&Cäö¨ ‰ÞÈ©ÏEÏ;(èªïIÒeÙ.{¾0~Æ@jRÆÇÐÈöUžÔ5ÀGõIüæ#˜2I‚B¬½‰6Y>ÅJ;à~Ô ‘Iª®ÛSÀ’ O¿][u^[UXJÿ7¶‚›8’ ¿ ¬\éÕº'7‹$…ã;êòHì£Ä@ÊÊiv…Wäo¡ÀATó;ªzI‰‘x,& ×—¿ÆûÓǯÓòd±PMgw)RÂG- à­É1{s•+  Ø—/›ZM~x©_~î‚FçhÔñè=›~ÇoèºfjÔ•$[›“-\ÓæËóó­BAúMuŸ˜QËe”]:D°‰ÃìQ­OìKÅ8¦ó†ººÌº¯fëè¦Q‘õC B“µHÖ?üGH$ÁŠ Ö2Œ´¬ã?ϳÚõyðì_,²Ã­¤P>»Xý9üçDh['Ñ£¤‡ÙCÉÞs—þ'=I~Qð¡ueŽZeT¾ví^Áx©p0S\ßL‡ÐZR“7ôS¸bõ1ÉÅI¿÷õ·?Æ'”Æ¥üç=œÅö¢E\*zX—(ÌnÖ ˜‘hÞsܘÀ°´¯I£Ò²Ñwƒ FÞ˶ŠMÍ%ŽGû£3Ñ[P>¡°µS¶û”5£dý}ÀnoJ—×F·Þ¨M‚ÁÞöàÖ×¢4©D?íZÎ)ç½Ô øÔ(I;ØAœ´"ÅÏÏ˶:_Rà 0°ØûMŽx/Üèˆ*¢] 4Ùù OFŒ²þ>©å¤—žØÓÖ%eamÓY‹ÃsÌðºRPáÁ‘®­RI“¯,Y‚ç6¸d}CÆŠi³ñ+°Ån;xÁ=Nð}0$‰ðý÷­•CÛ[Ó¥<9dÝEk(í—/˜‹WkôÏ(içf1‹ß@K©K«8䓽5þ|ü×ÑÕ÷ DLm£ä3¨AÈËhf<Œ¸wìLŒZiî6÷¤Þé*d÷2ü…Ø ¾=ïL˜øÌ lz ˆìâ|;Gáh). ¬E?}Ð"UyX5±zH*ˆ²„GW0-º±Ï‰Š.||™¥†ÃŒU¢ÏÕi#Vçö±òm¬³Çq&çˆ ý×+"@SÓ¥=•dEY!©üž]PƒL÷ ¶óä÷ NnsɱQPå乡œÉ#Ôvùo<‡æ1 §n©åDõRDÊßhö–´­ÇR¨.!Ù÷ÃÑöbüÙQüùƒ²Áã¼>öºÔût&gCMI‡¸µR›ÖÉyÝöL{¶µÿ´o[ží†+>žsQãspW¾`DWO5Üð¹"xŒ2PÔƒ†î¦[¹{0 ÿ¢P%¸ v.Ø,Å5á56HiI6õjí"?ÁLê6ƒæ›šñÑ;v‹TêìæÛ^{ù¡óžÄ‚np@Û|¼´UŠ¡qâ “;Ó±Yœ@3y ÔXq¤5ì3U) ¿]ú°åvcjÛQTí‹ëí>cF|‹aBìË¢•Úãl¿mhÚ¤ õŸ‹á³ÖŸ¬_tWnr¶U/æ#J´QRX­yRZW¿w°æ|ß~»®ï}xþWüñåããWüøT"³Íß@5 @n®6ÈÒés?; MiQ WìPždf¥ZvýG®ÿºElrÚ»¡¤xmžî„EÝöŠ„ÒuÍJ·¬·Dü7jŒ‘†]¬›ÄÅyÒhÉ„…üºé®'J£ÙÁ+?4æu ò÷šCª°àíêqÈÉâÑýÎz;›' /$¸ð`˜ÎuŽ‘Žì‹À­’ƒ©žK5¶#ŽðXpG×êr¶†É×saQò veޝožri.—vjËíø]Ô/-Zà¿ËWjðÔ¼®0“íã B³É_ýuÈiOŒ 7{ã¯sÆ_iÞYé €RI…ôaxËÌ‘*£Gò‹±ó®ìa4aÒÎÅÀdÇ\üy'Í~…WOÆzâTS'Ⱦú ß?^w0‘†îµ~|ë þ%Ný¿—Ñ•|ÏÕ\òÎj{ßÉwÜ©òš2ÿl`ÞXZ«5T»hgSìõô…’²Dó,Ò¼;ÎIÜþCÌžö#‹‹øê&3[ÊàÈ…ì÷«˜/S|//!STEªÄDfRw¥äH‡ÞEý»Ó÷e½“ÚO3ií´éxŠœ;£G0ÿÌàbÉÉŽS~‰Ì­å-Ó?3üí‘ {.òoˆ Üq[aY[—÷—‚± öØmnÇXH(V<Sõvù¨b Ò¥”Ïeí*ö¤^j¸á})5C¹Âîg1:•uzÉ©¡=ª+ P "ÅH•׫”4` ‘ëáotäó«ö¼\a›¢Sß•Ä\qi¶»Y€!K Çßê¿ÈíY­ižâ(M•ŸûðÏ-nNÈy<Õ7 nœÁžÇ°r¾CÙmØÇ î•z`Ã,R¾Xe%ì[r\OÆ[uä½ý¾µ_Ó,"O+œÊ´xt¿× µçsm²,$œ.A_E>Kß &ñó¶+xaû•Ž"ë¯E—YLF×ÓZ]©µˆNÔ®Ýïbkˆ¬*\•G5ÄôÒ2§öâÝ#ªJ­#:Îú CfÃw¥(Kx%‡[¦ˆ§²•§PŽˆñN bGJBÇ­¤!|¤Y®..ˉ8lë~ì%5ʨ²·è$ˆ`©qÏu©U¡„,«pè¸qT>‰ovÛ7ÛåM]t\ñò%’ùÜ °¯UÒçÌ/e¾È‰K'ÑÝ…Ã9,j= f²Ÿ’›¸¤rà­ºL :óT!tL¶¬Mû¤ö¦Œ{¯´®¥]%Œç^;Ø Òäý»’²“ˆá†ÔóüRØI’Q:®Î½ÅfR2°co1ºfÁk¨ÏÇäá ¶œñ6UÄÖ·Ž‹f¯‘»S•}dHR~Zoÿ‡Ú!^¿_fCL¹CÚ³O—mñ=쬤Îu¾Ÿ$§áaĉõ9 ÷µ±M „‡!„ß»õÙA†æé„©ˆj^lSf¦Ó +êltPÄý¥f™onG)<ãðÄ}{6œŒ#yW²;üu'©~ï3wÐm%ò†À¿Y¿ŸÎ.YŠ‹Üpú³%?3êØ BX='›{C‡Ñ&únH`sæ#Ô™?·§"lÆg®“ÛJ)«ŽÏ]iˆÙé˜$!ž`#‰êÿÜ çžM&¶ƒßèiÍPïöÞQˆ“êX)$í©3CqWÊo<0ÞÀ¬È{…Àû‹5ÃM®á›mÿf’Îͺ QdU0ü*ß–pðÁè¦\1]j=Dç/‡ÖvÂß ÝZ{‚ÏøgtÏ+íLlÕv ÞÁ¡ÖAØì^?ÃÌ+·¶±æÙ‚Zéöÿÿ„8ÓQdm»¡ÈéÆ"ë«”:Ÿ¦J·&2ÜA·© ö#L‡ îç{Þ ßŒ5|)À*HG©JÐ(s5&çÎUxFkãI‡R†5åÄZÃРªãÚÏkÓÆá#ÖÿÞìAæjt Šñ™Ú+ ‰²õ|Nô¾ ?Ú¹ì(˜’ä³bä½>ŒlQ fS#aœÐ÷0SŽ”*TZÍ3KÙ*ôî”K‡ÀUS¨Póƒ}¾Ž^ìÍd#k:Ã×jÌU0ˆ †u¬ú~é[®ï2á>í9¼[Ì»[¶¯¶—’w…·[Ü’Âé©#´ÕªÈä©lYZTi–)çwÙij#)ZÈâÎQ«Âb=« øÃÝŒ$²ö\RM †Nì;q¶W˜ (ˆNt;OÇm)F±1²=WŠïk–«±R4ü!Ày c9©) éW©íX%­5eAÑí0\Á„Z;'«¯o·Ìþ]’»¥¡3š±ðýVQ«»<+( gEq#£8ùP3F'G„9 gIÀãQ 'ÙË$ØÇFË(‘‹ªmH‚_°¹`.)ã/¸xÞšÉùÿ‚šJì(ÁåÙGü,L¢ä‚DýƒŽ`²^³ÏÄ¿åy¬áFgÔ¢ÂûÕì„!¥“Š :àf¯ù§g9Ô/ 8ËIõ(¢5AŸºËz½N±×”Òþ1•“ Ý«œeúÚŠMr>j=R{Y 3€Óð[±¿ò¢»/Q"|°¾*· ò!¤Ç@õšDÇ÷M|÷Üs€rƒ-e¥ìý =:”äº$¨(™=!À8vªõ bP‰ ¶+(ë&‚Mk¤Ôç×0^K¹îx“GÈFLq¤ÑÙ”Ãk˜ …š©ÅÏõP*XycztC߀âZN½¡êv«1¤¿.úßÙ•3íóÆ^:m¸ ì"⢒mz*Õô›$§xD"UˆæŠyfš>\Í¥K…VGÅ!*Çó8£ðè·ð†Fáú·~ªDZ࣠”[¿†è1pTøœI@w¬ ßôÇŒ‘±‰ ­©ìàzÁÙ¢s¸|‘ŸbÕüo~ÊÞ‰gwäFDñ¹@èôecpäázv¥ÌÁ\ KÿP•'Œ9Ãt4°îeœet»îá¢À «Øh–ˆN3ò-‰€Ùxþ$5šƒh¯ïÉÈ‚Áy”S²U†£cOPÔ‚•êáðPxw´ o¨+×Q“-ËI2 2ÃÚŸ6óìIâL8ZkÁbF*–4á£Rw8ïêWÊ,t j}ÁhqX#ÔdÅl úœ:¤p\Å1ÐÇ7Š‹vç‹ë91«i;©1PAß>~¶ƒYïý’«ƒ,AšlGÐÁ*ùöZÛgJ·É{/-ŠŸ>ˆ¢ÈðíÖýâÚÐÁpA þÂT,k”¸ƒÿ.NU²qÏì§—ˆÌ»½ª}}ðº5 ` \#)é0ø0°%rk–R&8ØofÊš‹Ó˜Ól€ëdz9ð&§%ÖõëÑÂùå€gáj)ÕVuû›å"ûÙ•/ï'[{þû :®n†²O©Œd …êÀö• S[CUeÚwü±ŽëIõ"~AH[AÄ£/BOPgšÈáâîNf¦& ÒÜéÑ'â[{=ÆÕf¯^v¦Œ;“°9rÖõ‡ÃªªP£šIc'<•?2f¯ž¢“øŸ¦¶¶\µñÿÙ@£X2–Ó-ËÝ‹œ+6CPä’=•ΧgkÆPtEƒ¨Ë¨ˆ7øSÜ"ºØNœÖ´ÿšg´.z༢¥ÖðËÜÆ¬hp€oNuL¤šŠA ‚'Ÿ²èðU8±@~þ‚i·à·\ù&Ž Å×…Š€j8SX¥2a: Ð…ž'vj…+qNp³k<ÆÉ)rŸŠf· ]¤3ÄD»+(lK·Mó]Õ/Ä“ÜÑÒñšì“‘3qñ0†0Îe}˜È”r·H±‡š"Eƒ9tt¢¬\ƒn]ÔwÚMõ³‰´¿¦Õ_ëjúÒ(Ôµþ¨@N8i¼PH˜UdbŒ ©>8zm ΊN˜å±«@â‚‹m.Ò iFéM‹‘Âë ‹|-XOïä©”fJ÷âìÃî,¾%¢kÙÁ|5MMpKn^Æn §3Ĺ3ÂÜ"ÑÏǨdwíêãzlMÒDZÕÊø-5Œ'ÎÃ$Ø!ü¨$ ‘ZâpàDêo§&8ÿr_Ûn ôH×A¥™³ºL£ÖîGùk¤ô :DPg'a(Çm˜¨^Ìõ¸àŽî! 8ò¼œ'ÙîŒw†la† Kñ0Öà3Зj˜\Iê0V²yÜÞêš¼Zų¥•úËAkKd_Üú2t¾ b” á]½JOûè¨þ³„Ûw½TÒÆ1­aË,£Z¶N@xŠ" ìœuѾ‹—yØtmÆË·ìwÌÐ< fÍ­@îÀ¬Ä¥H%õkC¸»£“ ±0úXFR× oµ•)’¸â>8PÀù»äÁA…yîë_àÀò…tÇ”4¢ûq@á©&ZBÓk¢6+œUÅ%«gg4ö†±}¾_ý:p¬ftµÖÆ>œ”Ms»e…}_’Å•œ×IÐUwÌzŠ o×n¶¯F%<*­"œU(Cã;%ꕵãrº6:´ÉÈ/²jw¢’qåâέº¦ÎTÔŒ{ Êeϵ+!Q"æ¤&Ø~ÕaÝñ “·}: ùÔ¨Ca(ÌתÔ%6žòpiXCÍTǺ ±öjvàî/o¼½ºzÃ[{×Èyeèòо6s™EÚ^YT£u› ËQ}/ŸÚѵÐ|œñd;„Õ¤}jAËò"œÎ:Ãk†B$“IN3ú™õ¥#üõN¶õL¿*[`_oýÿOÿƒg-;Þ[½rÔñVM¸‡(Z°î¬“uàº(aÿ¦«2,wŸ LŠJã+׳ [ŬzY×N ð r0„¨òP‹jYC}1ÀÆR•M' vpøß}èq]=×HDjE먛Äïa:ä÷S¡¢'WŒi 3>KF¾@ÁzwH¦U ØÏÌd+!X·ŸÔ;ÉÆÑÖ·_4èÄÀ™€øš—ý>‡—ððç6µŸ\'‚L í³Öî×¹iÙ¡êã䔞{I÷ÁN›XȧdEï5ÇÈ๛O§ oÜ ÎèŒ7‚ÞýÞuhñܧ ×”än™³GP]:Lvêq´ãvʯ;çîüŒWƒVöI{õöa˜u. l àÚFžŸÉ8‡žå k"ff|¯¬£î†V‘µë‰Rÿ¬jÖ eŠoÒsÉ*Ú'TÊÃÑlt[ °U)švv‡u»SiT!çª0’ÚN ‹¼¶„bâ.ÂøÐd4|¡HÓj½âô6C&.w4t•‘r 9a|‚Ë ÿ쯃IMËS/—Gª7(ž[/§Þ› =.´ïRìFö4ÕfËÙUNP),ô?@5qÅÊt{7¶œ‹eú&¼L¯j»u¬NdPgÂ+^ÃÙƒtfW y&(rð‰ª{GÉÖb’ÍhA 80#¡á[‡{Fø.¼YÖ9廨 ÷æõøÚvÜí…Ħ™‡Ïº=лÑ;SoÑRJÓŽu”qÉèD)&ã0Œ0ŠÅÙØ€É‚!Oa'â!õݼ[ç;{ÛÝ»›ÆYiL ¤cE³ø=ÈŸLíÿöÁâ4W7d}1Ò¿VÊ.j™vU¢Ì¸»LôÙIxžY-·R:?K2£‰j)ÙfBz%«3&[LfÞ †Ý ³Ú"ë«áç“£Á³¹wˆÉ iºT&PVŸZ¨œ†`=¿G¡p‚ˆàO§#í` ¬ö ,­ÏŠ¡mŠÛåöÇ Óì¶ ’<(²šÒº>‘ufM2¼1v ®ðòLkGÙÛ>螃5ü_:PÌñv¹¹îã†Ëüa Ï1án&óc›ø–ˆª+íñU|'ÕŠ•‰1ƒv¨<VwZŽ€Y}Ÿõla–˜ÇC;Ùwt FﺙYý6–o,‘M³OgJ›'Z2À[œ»}7ßáÊ5_äÞ‰8Û²£t¬a$øNh¾óWÎ5ãYh?Ͼ7ó*§Ag5A4'qSpÙöv]HÆEž«Lò0ÚH‡ëËùRÌ`jìNÈo^¼+烪‹?EAÔÎB¦Cœ›üØ“æI¾‡Ø™ô®ø2£ ¿ä*‡qç*$X/ðëÅu‡vº —xwY÷ ã‡e­Ôž¯ÔW3ðƒÖÿ¶ )Œïޤ¢Ódz«0é¿*F=It]†­mÇtc(—¨ŽGƒ4¨ÁtØËÖÎ!üþýhZš½ùî†\ÓZÄ{%_ÈÁ,ÉêÑÝDç6ÌØ–c»‹JÔD¸Æ!$Tö o'd~É;Ò¢ý¤v”rÅE§'ÁÕ&õžÑ]M¥hö qæoc¾‘ý ÛF›·V½Ùm¤Åà4rCчABãGøJóPco0ÔvzÍ[cÌÌ1G™9OÑuyjîÂüÑ¢ˆ½0ˆ+*`6܆î~òhø´R026µkÄ­¯ÒŸÜÈÙpƒ2਩'ζËXIÜu„7¦ 6±² Yü˜D_=¬J¾…ˆiÜM+—N^6ì ”´½kCõý©ª½†uçGÛ½üÞõuÍe½5“õE·h-»¼N¦´‚_c=©æwÂíHVÔ1—¤•#T¹'#Ö«#0Pà”wš¯f¹©‹ ÿ;.]ÍñŠ#Wm•AÎÀçÖâæcÚò^ðÌ FŽÊ)ü7Øú€œñ3_íÒâg´È¸ôŸs[í:ò È~ßeWÓePˆR’"ŒM³o³" ð°€+¯ HFê]†;œê ÿOÿÈEke̵¦‡,€¯â¹0.¥Š~¹hÄ·å1pd­& 3¾-¹Þt!¹†]©¾»‘X54.HÇëOr—­šÎà‰'»Ë;Í(¾cyj¨%Z˜PiÃ?U3*ÍûgÜŽèÊÂИ¾T2…dÉ&È…ØFµÓùóÓp¸ªDqRZj<ûxq8B&£€,¬AˆVá+¨Ô WSè îz¨áPÛ±)dSyÿߌsö–T‚ à-ñ¦ZÊ(ƒt|:ìëûìÒ.»,BuÄWËÒo¨>Ù¢¼8ê¬IyãRæ5ìÒXðÃÇ(ƒrò-+Ò5YÜ-¦„#YE¨»2ãí2+KYc†ªöeˆÿ|ÁšÃÚ‘É)Þ€tF€“Ø“|Á·yËÔ³Êòùë³5z49›5Él¶ìÖ…`æ'¹l4 Aâç"Çæ ÷ òƒËê/nîVæÛUP©F¸”³Â èÈïMÜê®Äù•Éõul΋’,ŠÝì'ùÛ©ÖJ8x[î\¬VΔÛÓùÛ¸Ñý;í‚bêÑü¿Ží¤Æ³K5£5‘^i#Ò tØkÓ«¬¼ðÕq<’>[‘r*Q©´é_Zß<œqg -û’9ay¥i‰Í‘¡bør‰:‚µÃ .Ñxï8“ô¥Dá§_¼’(¼à.8AÝ4‹è³.½ó)¤lx‘q1ñ€$²ÙÐ2W¡@c$÷)Oš™°£çÏ~nMˆ‘Wü¡°ò·iËLÿÉfÎBÜÌÈåðF`Yú¿òåËé?;fÒeðzb')Õr<”£˜‚Ç«?ž9ÿvŠ–ç&GiLòOSö3™lƒ1Æ’oFQhݦBðŸÛ˜M–0^b¶²ÁÈŠÔÐÑ üÃùМ­pj¹†Å* [‰“,ïyãÝJ> Sà¥$×q1ÏE­bÖ#kù„³8€‚`ØIo,r®LÛ'MŠP„’¢ú:²6Õ,0$oxó1`œíÆOb«r‹üÒÐõcþ±šâðq²Éÿ3Ååâ ½P¿ÈãÈ U5{:Ã8AÔuY d˜M^=kÍcyƒAãG9ƒóŠn8^ó5N¸¡$ƒtW\CÀ©Q1ùÉ©iAnã1k£pC‡,÷°Ú÷ØZ8Õš¤‡þz‡z2W,V|SX{@‚ºá®ãná>¶§ b^Ê]ôÃyûvá{lDYÓúÀœL»€åqs/N. f#‘£P œB¥ªY§¤Vvróž?^Ir” ”¢,  ÏÂ}µæž3·ùÈ鮽$_æÃZ9ëˆ5¨mqÀý¹Ì{Íl-4VN“:ÛàȱÉô·5¹/Èã½”RØöÝ&‹Hº­ÝHðÔ4Zc°& Ê¡ õ-R`ÿwk¹m„ ¹iìÌGœ£õóñ-‘â'ì¦rá ü Dß•$‰?—ˆùXO\G¶‚íà^¦pXݯÉMD`m®§3²”}Ö àôôë?¿âlÒn#TFìb|P¤ê@áp6ø¶RŠ…÷H´7P”g7}8îLõMº4¢³\l­×ó· „,x`é¢×PÍ[‡áºãƒ<qyú벫nÃls%Ýn¨üÄߦ/À^ê©nœåDVm½­{>1Õ K3]¾Jºq#±#W0Ù0ìÓôGXkzB¿áèüåûXSòˆõk¬@— ן õÚ=f"#® ÅdÐl*W5põúÕ-Ïz@a„eÛ›§Z”º€ÐC)W‰DOÝ¿ÈÒo†®gÈ— ¦F*è5.3퇌ÓR2êÈ<ƒvÉï ñ‘ÃÏSa))°1ÇÏ-uÙ5à{¶2“˜ÒN!¾\KÌôr?s²;-ÌqÿW…U‘c¹+4Öz°%›mƧȱī^:½¤4ayŸÖM§žÍë'[VuìwuZ^¥Èˆiâ x —¬‹ÍŸ,Ž_ʱ^öá6ÕüëJ´N0brw`Ó‚ù¼ž\®Fôz@O“ñ¯GB>¯ã¿0RU鮳ñ|P¡%ë"=„á,Šo& Çæ B½RÚ3¨(©=¯k7Dsfþ«9Å›€Ð?Áë’?¢š¨Ò˜m¿eÀSÊ=ë…Ì ãö·¾5o¥B#{õ…1ôsµðmýâ# ð‹E @ ƒt¹çYçµFjÒ ‰¢âÚû?ßÿ<\“iIv™[û*n=Mª x…œ¼å“d³Çâ¡æ}&ö°¼ÛA.äœú[A ýÂ×mPˆá*¤™†¸ãrõKΚúÞk† îz¯vŸ ÎEÆÏ,òh1ÊWã¶DkĸNнG‹Vu÷^òwl¾ÿ —eZ×ϲ\à죛kZ>pæõ½–w¹EÑø{ï‰ZL·Ôú‰C¡7ë‚Ó/„Ýo¶þ <ªT+;L6ìW̾óaÒ'ø§j€µ¬-á D«I\5Éébª»´Êû-ÔâyÒçFn&•%íç?5ÇyùVÛ|¦qŸ4Mìÿ°9š<ãÙy6ª?ö™>£þ^?`åŒo>tôžXÕ„?¯Ù•Øy¹é…ì£ß³ð­æÌ¯£ú+÷@—Ž?â_{ûø>øBMûÖʦ »W% ¿ÛU0³ù7)Z®%sè®8`¨¡Íé‡y ^dŒÐ—Ë 8[¿g|7‹ÊÖ5’?K@o">ó E‘MƒkWvÛ_)¨” }Ë6“ NX\¼Ï•n³cÃs¬Žb¼X6GJ©à´tƉ®i_<Ïóåƒ}_6E“#ƒ!l®àc DшË]'ˆ÷·Éòng“„t%%‹%Œ¬cˆŸ@2²rãÏsI͉s$åïÛXß¾½1÷%áµë@ý*èÏô'}îY ›¥õùÁHpW"ù$á Aøj˜¢XqY}Þ{ÑgýÝtÊZ*+Ö•¢Ðm0Þ‰ Þ»&´¬Ã¬Kæ!Š…‚²àUŽš\Zd³—ñæ¼:@ÎÜÕ'[ª…v0ÖÕ^ô«£÷õ€GNB»37‚W(g)…žÜÇs'^gìü/[K€G„$AR²ZáT:Õ¿Œë$p‰bìµHW6–•~‡7r·H _k>€@_µõ[œ9ö‹[`%Hëeš–%ÌBú©}½ñmi‰3d÷ŽŽÝÃ&çë>nºSc¶Pôæül¡ÃŽE„bϰÐä±u!CðH^;*Ó„j;Ÿ÷€}Ñ„#÷ÏN;80»ÿ¾ª·v 7'ðP…y£«NIg<¾ Œ Ú+µ¨«< ËÈt‘å¿EwӽùæBv€dP¦I­é(ÖÞËÝ^Zå,>A~R¦j‘ê?o‘ êÑ$é–B¥4e!hÌÆO ,„þ—gðÁZ;*ûŒOmŒXëHT‰°Ügâ›É  ‹6ØLØ •c » …ãšsƒÄš|Ц½C-€¹­&¥Mð  k,Ùšõ÷µHÁKžb ¬GPa{¿®rÅ—#Ñ#°mX¶éeN¥gLË=Vè‚øË¤s"©±®ñ?‹*{ B•xÆp‰T/ÉK û‰õá:§mãë r·TŽÛN' }ŒáéJ"—'X´IWé~€Ä¼èÑÆ‹«³n¨¤‚ߢs1#¨šØ& ÔvªÝ¯µ@yz`En›h+v©ÞkfZkÔR ¾VOF)G^–&¬ægùš™»„‡4n‹Q—ähÁýTB{s …`ù°üðE§ ìê3¢Ép:&Æ—Ä•þ= ŸîÇuW\qg°«€5!Ã=Ž5犬¸úÔ7ÚÁ|ªËØ#ø›¸™ºþeƒ8Ë:ˆo^áWl“r>ÿÎTãvÿ•žìöÅJN@^žHeŽï‹P "éu&™~OÄ]§dŒX¸{· ̉£úh˜„q6Õ Eæ˜è@èvieVû6‰ïÉúޱ+¡{Þ6œÑO6TFX-¼X¶ÁEªßªzÒÿî𣣟ü†û*·ÚwëÖ¾ O=ì4¯Ÿìt¤ïöΰß\q0»W±kR©Ø;öÕÀw¯#*E„1*tY5(À;$óè7ŽÊÀøŠUÆBèr‡µÝMfe Øyc¾dµ±{÷Ü[!1»cÑ÷ƒKÕ“ÿVèüUUË:ÿóJ<¹R“~ômp}ºà›ƒPéYBàÊÂ:8ê˜S¯VÁ·I€Õ8JÅ2¾Þ6”:yGÑå›i¨u@òvÁh2Ã1ŸuÒ$!W¯\%ÊžÏð"–?Œ®Ïh»¡³ÀE`Ù€ÍvˆvÄN+v|‘–s,.–tÜ •æ ÉOÀ˜­­L¶½+À-ú§n•âîXÎ8Ž<=Ïöô±äpV耋•I˜4 ßé.åÊwrHZ†‹$¯U‡Ò}²×T°Œ!0 $ÆÜæÜ*[‰d…ØòXlú"mõ=1YÊðêÀ’ŽÃue]  Úý'hpµ0¢-EךhsóÐ?NH^¡b 6CžJ$fï†äoOî’icüÒC»Ñ“ ŽDÇ®7¾&"|¤XÑJUÇfýÏüÀÓù㻕և_οýøþùÞž~ûø>¶V¿ñ–]óº9$€)óÈŒ2yÛìÉ èujé†X±ŸÖdš´/†ªÚä‹×¶ “áCËý}šs¡0ÉT+Í‹*¨I‘¼¼Í¹«b}èQuð}¢‘F™S/Ö`a›‡9ƒ 0¢"aåcäš ¨2ì¸Âd¬ˆYÆj†ËÂN#³ßnÓ’Ön*Æs±"áÕ'eAÝýIòÑ¥UžÆ[6Vc"¼7GEL<Ä$+êìßÑ¡¦å8£WøZ³4Ls"m)øZªÕÑ"“5¶Y”Ö–2Aú.|üÅ6€{o©Ó¸çTžzoî0R³Iwh¡Åâ÷ÄLgJ[Û®ÃÖ±êÄ/ŒxshfØb×^Ú7‡ˆa梡ODÃp#†ÃË3f°"b÷CŽô¾ºøƒNÔ˽W¨­DíÑo aÚ¨ÏÌMk˳´8*LÓSp#œ‹;Þ©…Jâ0ą̀«W̰ûeueU?11É5~h€ž+L‚Sì‡/þ›iÅx<§gøk³ ÀÜ7 a´<Ôó€™”bˆ¯¶B¨‹«‚>9Ü òÒ­iY ,ŠTÿdžv¨&ppŽŒÜÛ./eƒHÝ€ä .؆VR—ÊaÄ 2 FÎe‘Ë¥}™YÁpxþz0žá2¬ÛHy-b&/Å'y¸­ $Óòdʘ4º0"z8.ÛÈ:I|B3ÖQ$ €k3Û+D™ÏÌ(•õñSüZÒ$ÕFÇfî – ìSŠ[máå©\Ñ"ŠðýŒÆ[‚4ÆÔ™’5µ°Ùäa« üÃ~èXýTí×ÚšE«,',“¿†Éu½óÎäTD¨zh3ˆ3¬«]{_`hÔÜ!‡þóBöH#!+:ÐüÏöxŠóÈšÊÞ¯;$(hº“Ä&xëÍÞjútó^?ož‰îÆ&ü2é~î2ÎcÜ|Ú|(Va#=N“ÇUÇ£~Á%yþi˜J(®½£Âa8¯Ã꡾ŗU±¼${•T /k%™ón0.oNÍèzΩ´vfð´»4ìý°…à}H=€t‡ÂæÚ»FÂ)­U=©µÔSÄ“µ1"wýe0ã‹Ï¬Þv‹Â= ô›š ”}&‹ué“B׿¹óÚ·ÜÁ«â8Û¨VÌ;Ñ%bš;©³ ô*£ù”‘êͯ¥þhÒ$žü9owyž•Œ1zá¯è§]1ƒRZï3´:Ѿ°°xŠJòlÀ§ž"‡´kø`º8¾®ùÉÏÒkz"Jºø$`ìÄÙßÜÚ'W_åÐdÈbl¶C8†Xw%ªŸ3ëTR¯p€^© TÏà çE«Åƒ[­¿B|óÚ‚î~Í…¾Ò²r6mË Á]Ÿ¹NS¦¯þ¯ “ÇÖgT‹ˆáÅ÷Âmk1ìêª×%Ÿ çƒæ´”ëk9»¸ÝY$ùÁiÒ²‡ÍR­!€â _>»wãã(ý =¶ß# Q·–QZ™µp™Tª‚ÄéCÂAÕ¼jù{I:~Hã×;D¿&´®÷»Ÿ¥ÖDè¥|q9“sI¨ñ*{âvÄÀÍÀ«•°’–¾¡,_æ6P`s¨€5¢ë¸šè^ }¨/# }ÞÓ §®YHžKµb°ÍŠ91ˆ6¬ÖJBÃÚ'¹®³:Qfoj‚vöTŒv•JÀǾ®NËfªÉD•ÇJi™§'vâT™v¿ ­Ð£î8ªbмëéh/ñ ¬?sÚ@tÚY»S¹óM×OókJ£äOg–Mñó“‘N‡Yñ$êøƒO‹É©œäãÏ]}€°ewŽŠÐ}YØ­”ä]ºUÜÊÍÇrXCüíaËT÷ßPÄ mføŒVkçëÏÂË3 cÆ>Œ¤0Ÿêðêò­¤ædZ²^°ÓF|5/òo±Ï{÷Ëî¹²!ÛHßÑô'k3¤ÐÒCY~>ŽnÛFç/0¥¹zð®ÙöJXIFÓc¶À¬«[ÜÇþ¦½üèÒÍëÙ}|U][ýi_ûÿÕ$ý Óòüå?ñvþãÿqÍGÖ4\]ØQúWéÆY22 °Xíð‘•–}ŸÍ»aYRa!`-ËìÊTŒ‡Õt­vlAp.G©Ð°Úá©6x¤Ñ^"w®xkTÂ^Öœb‡N:`OM[(Œc‹/¹±’Á2A°ø¤çÒEŽù:“r!«Ì“ʧBD¯zAÆÑ»Í¦¾û‘Kòç|'ÔŠg•L®ªo®u?~eÞû¼ì¿*ÙpúVàßA¼CÝ^þa¤ç› 94oÃ8ÿw˜i:ÛÌÇb[eÉä¥$N61Ütž¨Ô!àî­Õ o&só }hfn°Î`ê±&|lPVN •WÍ2££–™z‹_.“ºß*ƒ—ç`BêA ̆¬8K¨~:̓sˆï²¼Ž“ Á6~F<ä,ê‚]¶ƒZ±¹œ‰há›Ý‹ÈyÀºI>Å©Ï@z„­©W$ëÒ†^ìÌy¢F°ŠÆ¶ Šƒ>ïÅÃW£´ØJôÐcÎ.nîЀ=)7V²3¹gÄ;ßõ5’É'P:-oý…`s6tÓÀ«´÷¤â=Ö"¹-ödƒêç!Y… ù …ÃcœŸVr©ã3‡­®Ò>ëØ`x­D c¶u¾ó=EÇå… ‰Iž#—Ò>Ÿ—#ÕÿÚKì—¬˜»ïýèƒj/ÎgéßÒÔf‡eÝþWnÁ¶†íÈšËäÂ2å9ƒcÀݽ²;O®Ö/9µz6t_7ï;mˆ®0åBU½[xÏÆX °ô›luŒtMÞ(”Q£÷[‚„Þä¨8\ &‰#£Ó08@b0n”¥Œ-=úÏÅ´ûŸ²]Lº¦b~ëh.ÅÐ¥´P7€IÎv„Rªüö¸òÎþ‹óN¬L/?'T‚=InðÚI:__`¹ÀàÙtøíTâ3~FL1• %ѱrÄE&vÝÄ_O]T'ÜŽÒÄ'ñÙrFkÚí­¥!ãÔ»ðÅ;‰XsŽUö ©ãÔÙ¨Ìâ!'(º ?×/ hßPHÎ+›=[Õ€•8ßé‰ûä@}QO>©¹Àü§`é*eiBM`UR3ýKƒ‹ì´dSq»êTµô‚@¡nø¸&ñAÕFºH§KþWŸ+Qd2|Š–Õ“©á(¢áš|:sG½Oöi¹Î2®΀áZE‹îƒ$Þ/kå4Æç¢ŠÒK\ÌÝ(`Œc!³©ÇüænN|GÙaL¢­:[uñ¬1ÎZ'¾…ê…€¼ìœ¢Ï€#.x9‰V‘»HþtùòÈ„°[‰D±âøGGŠyLò°J¤¾E’O ‡¤xÇÔö!ŽÝ ëcH¢Žô©¼ßø%\‰;¸”?_Úã•—ÿsüªÅo¾uÐ-w•Œ¾•1ó0˜þpdsnAÍBÿÚNCubFqJÍny—Õàcš`»‡Óœ(=4}¶‡ą̈¬.æ·ÄŒú)TœïqR!ai5}l8h[†Í†z‘:Æ5¤‘YìÀntÉù‹…GÓ$ùR ¶1:>qHH˯57­VrÝwô¤h—lþ‘ˆ<! Œ-5|>}MÁÝxÓò_OÍNŒ aÞ©Ãñ ïS5Ó²¡N¿½ày¥3v¿Ñ{×á)Yè) KÄØIÙÝ)gpÊûÚM¶¯uoÞšëYQÖA-Cß”ýð’­ èù%OÔÊÛÅ0À]F  ÓÜa±Hµ/@¥ÉàN&œ;¯Y×¹Ð7²ÝPæ€Ø±ùÖ%Å,“&j*M3Å‘™8›qE½•0Ö$§–…}¡ð²¾Ô¿Ìéh¨‚ÓÂô¤Ê&°DºQ Ç¡œ™°Ío%%¬·j0€KqnÛ‚(}!ð¹ òÉ䀎¨ør6Úl¤Kîµ×MiKô[@5#½w«\™¶GÓ2*>èÜ0‰0:WY+ÒƒXBÒ£3êÄr¬Åy¹“ÝâbÉ.À˰ß0ÙV{eÿ6¸äTóï.[Ü.ó΃y¦6O<[5aX·Ï$k’>œû¬¬áAÛÊVÏœvÏeŠâ£ïà¶]Cn¸LÀ°50bŸèŒ®„ÝÁ²T6Â’BN'f*vWV+åx³ÒyÅ!im¯chHñ¸üÈÇyIvËÃãÓ Ci—% VÙ } zc˜É>â:?{áÐ[¾,)Ä™“@–¡(OýEvT{!¶1tbYPÂ$†ùkÌD¹øô†n;ÔRÖƒ|EA‹Q+@ýæ)渳9‚¶1ÿ‡ã£i™ä^A?-Ìà}VÞÕüšÓ&®zdLæo\)vø å—Õö—ô”Ô_µipIºá[ˆtäA¤ðmVÒ¡æñâàetòWŽ÷.§ÛI+sÿœcCÂwÖÂ{¡·æÂ\/3\ª^}†‘ØÝ:-Ý|Á,ù´w¯¹ ’” ‡^á—«¾Û¬ÄW°k~¹¡E÷!'J‡ãŽ=-çöÉ3ñª§>ŽÂ†r6>:õÚ%û¼§E);xνIÙJŽîU±˜Ÿ's Së¦$3V:ÿw‰Â™Srœ6ÎC¹ÖÛã?«Œào /áV1ëÚøS;>0ìx€ô¢,~OÔŒ%Ô¤îÝâþ°6ˆ¤ÆiIüÔCѯ‹-Øÿ'‚ŠÌ)”û¨"œí\5«X_v G¥…kÝÚ™×D§êÐE™}{à—”—„Ø}øµöÄÊ&ëŠ5äÚ†ô{ñjÔZeˆ±ŽÉÂóÿ׆ ýSÒSßp]ÜÅ …æ0r«Œ¯,`n%ÑtAÙ•J4´·Fžñ?>yBMý 9_"Ë÷yr`Ò˯rªn쬃%`E{&å,ƒø^­÷$|$Á<Äh€í6l^Ò]˜bÝ”Ÿ=fº—DWØþQ°qtY6½m<\‹ðÅðGzX‘z0,ùòdIlRKYÂÂK0Ì„V“„C4˜¯ˆ«] ¹Œ§%ìÅ¿µ¸äâC ó«]ÍZ”g½Ü[é8‰DI¢‰:½u°{ih2ü< T!æ{aÏSßÙþ´NÀ0Îèƒ=goÅ÷|ú…MÁÊ$&„£ÚHuEÝÎnÎ[O•ó/ ŸHµxÍno=š.÷ˤî¸ûßÙ%@^j}üÇãØ¾.§Õšÿu¦ZåŽÕùŒ<^ÃHÚTýhž}*œ_BlmtI¬¯RLuÕÏc Š·_ÏÔ· XjtéÔ]ê¤yeZÛÅ»Xûññ]Zb\ªÓÜÖ¨Ìû(`p¨Þ×È6ÖFüàhº¬.ÂHúi*ôGQþéj¼÷¹ƒ‚•8]#ßÑî GÁ\Øé…Œ½ÁÅ’äÙÀ=H)b¨ÿüd]€‘fû<°/$Õü.¶¥Oz>J’_Iǃܫê„àƒüøòøÄKpÛ¨³¾WË{ÁíHKAÒ2>ˆ§n Oi"«<ã!~ÈÑ[ôszpåé S¼Ir)V³S~g|b½b ·É¬n;Bãb«Âu‚œm±œÁ<œ¢¹ÜWl Ð>ç!Ò<”ƒÕæˆb¿ž¤™ôº3Õì³äqŽ’”¢ ¯§Ùÿó?£™Ê¥ŠlÔOd’È:ÄébkÜ8ÎW¹È¾©ÒÁî¦9nERÞ0|Çœ‘ž6y!VƒW¬Æ»â%Œ@`_ò+nJ5Hº6Äô¡?d\˜Eý@ÙµÔ[µGª&ÍЫ ÚÓud›¼°¨´kˆfhèƒB3¦ÔÏWBÍO©Ì«9xxuÄÌFdÍ7?nÃ÷kÕàu‹ÃÓ®39-”Ñ+•‡3kì‘6vË'‚Ò0ÉÓÔ×J5õÉ.sÕä¥ÐKôîÙO•Œ½G^K¬šE²ÉÒzÓx¬Püî..1ˆÇ .X^A ·ÿ“ê€ã0áõ±k‡>#B4jS£Oÿ¶„Ÿ…j±`ô4“y•Ö!„5óÈä‚׬}lÈËÏ Mï¯ý‰eò­×¼ÄºÞYñ7x4Wú·št‹çÈ=}†>çwÞšü=´¬ØEÄùk´^T<"‹TÚ:~ǃЗ_,(ÂÔ(V…¡ž+w2ì¼H‰d´˜\z25Q˜Œ!>}óÑÈŽél{N7—´ 7'øÄ4 wPÚµ†íA$íäö´ü¸¼øSÿu°4l¡xÞ}(m)ÍŠî`†£E|tÃ18 ±wäí’\Xýz¸ÈÕó,Zë¹BK­#ĆqGl™B'C§_°>}±Y¹å>‚ÎØùHÝ+ÎŒAJ<|Mw±†Ó]Î iåä#àVÖ»ô²¯ cÙ_ŒŽ7ã}ëóUÙfûoå}²­!{@jÅ}µ¾ºYø_7ŠtšVž8] ÂP¹βәÇɆGÑ-6ºWÒ?oh‹UÆJ ŒÜrŒ³2 TE*Þe$fsŠßýÞD$Ï¿hvÐá]õÀ<àsSp½"´+°Ê : ɶ*¡—¯¸bGE6Du¦‘WTgíjB›5M¦žÒÈ®û lŸ<€«T6Ù†Ð?; õµ9¦H~Xl¦ÚRÎG>‚¹gËfp’3ý ßÙ KñÃ-•Àlø#YBsÈ vàŒÈc´3eóº`„ïÊ=P‰#3CG« à~yŒ…•Þ|ëòÉWhù´)ûÓ×Ï¿ý÷‡‹U¿bêRQ/É…¢¸‹mÆÛ‘‚b[?â÷€eãáàÛׯ8e“[×ýë«pTÌ3­5ÆÁ;¥õÓWÅ€'ƒ,ɰóÃsVtê²ÉB9Öì,Qc&¶êñl‹üA­vðÙM<+Œ^V‰°²žŠ«jÍ8¢geq†ðzCCL[ú©ëâê1.¤÷Ç£m“7×­p-¬­ËšÆ{øiê(ßu¢s©ŸÜ‡"ýs`zeáÄ÷\¿øí¿¤Ã ³ÖÎ2óNU–µ;h‘®a7/JZ{ã®:¡Y´¶ø;ý€mm³%Ø æÇêfÌ]‰"åó•Á›?Í9á­ )òVÇᡜ`wÓóócœþl Y™\2nÉ•¶ûœ¯V¿(îûÅ€åʹä]šÛa•›3å•z3&yœî3ô+ž‚|tóÝnÚ%Bú²búïf‹(;Â[ÑýÛ_ÏØ@ýfw0¶vÏ·5ý§s«á¬³:®± ¯-ñ“DÖxÁ~d±]µ``U©ÍdŒé'0öè¯æ’y=Êf7§ÌZ©k³€N´hª[îoª<«ø¢n¶UÉPŠ% 8¸e®Ÿ!>¬Mב 4ýÉɆhL÷Æ}XÐê µíI¸†ÃlPÞ›Žõ®×R »èùR‡¿zÆ´×´-=íJÐÝ÷}?ÿÀÛë/ÿ5-ðUŸlåˆñPb-N¿œ*{ÖÜL=á2®ê›>‚¤ ÃÃØ\"Ñ¢Ôa½m›É ÃýàYNn·i~ÄêÊ[n}¶¤Ípa‡FèQêà‘¯M8ÕLáí…}ûŸñ ¤÷l#ŽÝ6h "|P}Î݃ôØcÀïéÝgŠe–Í:¬sB¾|ø)mˆÍè´ÿŠÁ{Ã~Xø‹%Æ"ÿŒ%£=^ýšjÖñw—ó'8ÛU™§ôýÎÞ™1»µýîØ"oQT܃-Gg7¼7Õ‡ÑõÁ9;J…„°Ešâ‰%Ú¶P0MâW1CÄ4ŠXž™Þ=ÎsÁJüXÉ",÷g )åGOÅȈs¨GgO˜XOÉ­n“C¨c6roJâ‚ȼ3HìÒ|¾‚ÓL5êϬ+§ùËß™í/Oü[u 1b“…Ù]”p`ÇvŒv7맺¯Úá‘ã{YC¾éº&±(á£`¹84› &Å¡²f¨SRÚË sÚ|2¬œ{ío§Ðq·yF¯+Uµ'ýŠ×R9‡È¥†2þrëå†IÖ£¦‰ÐúºƒmD„w2 Ï1ŒžÅ¡MeÕ4rÙ(«PH“ŸÛ(^è›,L¥çGÅÿõ®Þ ¡ Œ.FŇ{ÕçÕ'iÜhÞ› ww³èh–;@ãá×ôŸ ¼v¨ûëˆBê^£± ¯µžÕMgÒÑ‹ü±LY‹‚)Ú—Žv9OnƒÔ÷h_*i¿µ¦SƒOîyPÓ¶?/ÿ$LÙ­ù^z<ñ¸¼zÀ6 ^ÖÔ…½ÙeœÛs!84ª÷âìW@œ˜“¹uÃäÏ8*Àâv0”Ñ6PÖ¢HÍÁÄ5ã3ŠC¦îRšxô5²Ç‹# ˸p#[äcÝÛ÷¥Ë+ò‹-õa»A1ÓÏ12âdÍ#s;ìLázbd§Ü|÷ØhÛ%–ÃZZ?bà;f:#@7Ù³¹ºðÝã±Há© òU<´Zšj4/<1úY„LÏzÉöù¥%¶[ái@bêæÎÛøkÖs—"‚lKpÙ«Þˈš`9¸]\9›Ëÿ·§§ @ü ±Sn£l[ óšÔG7zK-µ* –LOÒ¤\ê8à S—‰«]!"¹ç%º `_÷Ð!©ðõãBBÃùâ}ÕM<1¢Ÿ¸€JŽíXEj‰á¤TuÕ¾r"ÃÉ¿Ïôwµõdò$ÊüdÞŸ8eRw©Ç-—y „웚Ȱ—ýî1öÂ*Î É7¶a{yŒ=é“d¿¸ÆÐÍਲ[ºò(ñv[ºô±ÌO*ág2‰3¦ˆô+æ‹íÁ†5ŒÑY¥‘—s…/ü¾U`[¡]0¬Xú«—nñ|ÀžOeßd Ûâ~„áši²VvdaŒOÓ©.»õfµU£ÿ¸Yñ@Ò>Ây!t­xÆœÕq§HüeMA£Ý8*“+Oó %øî®è~žuH‚_]l÷´“ÙöÁò,_=°ÎÖ ?£FžÓxX Ü•C¯dö~ì³ÐvóúÓj<7jFÞU·ÚŠìš‰âzé˜×"çfʰQž~È®b´xÝÝ…uÞýLÇ#Ëb{ÿ¿ÓÖ¡Çtƒæi±ße’"¹‘¾Õ4=sßÁËcůý„çÝ*d@"óeU{[ØÁ €(̾ÝgÝ_áfÈ$X%]`q]<6«kIþÅîÀ­µè ÎÖ ÖM*ð“+yÆÔkûÏw?©¸1Eלõ o…›¤×ñÜH÷GåïhÓjP %(.§ yUwMíÛ£÷§_~÷ï]úVWSgÛ Һ閡2†Xi%mK÷òêòTô÷­HÖÇÀÕ")€÷ŽwF>åÙv Óxû,šv÷?Ôƒ›·Ÿ]ÿø9˜ „#3 ¤hMû+ÙŒJ¥(í¾þÚù'brotli-6.0.0/testdata/asyoulik.txt000064400000000000000000003643731046102023000153540ustar 00000000000000 AS YOU LIKE IT DRAMATIS PERSONAE DUKE SENIOR living in banishment. DUKE FREDERICK his brother, an usurper of his dominions. AMIENS | | lords attending on the banished duke. JAQUES | LE BEAU a courtier attending upon Frederick. CHARLES wrestler to Frederick. OLIVER | | JAQUES (JAQUES DE BOYS:) | sons of Sir Rowland de Boys. | ORLANDO | ADAM | | servants to Oliver. DENNIS | TOUCHSTONE a clown. SIR OLIVER MARTEXT a vicar. CORIN | | shepherds. SILVIUS | WILLIAM a country fellow in love with Audrey. A person representing HYMEN. (HYMEN:) ROSALIND daughter to the banished duke. CELIA daughter to Frederick. PHEBE a shepherdess. AUDREY a country wench. Lords, pages, and attendants, &c. (Forester:) (A Lord:) (First Lord:) (Second Lord:) (First Page:) (Second Page:) SCENE Oliver's house; Duke Frederick's court; and the Forest of Arden. AS YOU LIKE IT ACT I SCENE I Orchard of Oliver's house. [Enter ORLANDO and ADAM] ORLANDO As I remember, Adam, it was upon this fashion bequeathed me by will but poor a thousand crowns, and, as thou sayest, charged my brother, on his blessing, to breed me well: and there begins my sadness. My brother Jaques he keeps at school, and report speaks goldenly of his profit: for my part, he keeps me rustically at home, or, to speak more properly, stays me here at home unkept; for call you that keeping for a gentleman of my birth, that differs not from the stalling of an ox? His horses are bred better; for, besides that they are fair with their feeding, they are taught their manage, and to that end riders dearly hired: but I, his brother, gain nothing under him but growth; for the which his animals on his dunghills are as much bound to him as I. Besides this nothing that he so plentifully gives me, the something that nature gave me his countenance seems to take from me: he lets me feed with his hinds, bars me the place of a brother, and, as much as in him lies, mines my gentility with my education. This is it, Adam, that grieves me; and the spirit of my father, which I think is within me, begins to mutiny against this servitude: I will no longer endure it, though yet I know no wise remedy how to avoid it. ADAM Yonder comes my master, your brother. ORLANDO Go apart, Adam, and thou shalt hear how he will shake me up. [Enter OLIVER] OLIVER Now, sir! what make you here? ORLANDO Nothing: I am not taught to make any thing. OLIVER What mar you then, sir? ORLANDO Marry, sir, I am helping you to mar that which God made, a poor unworthy brother of yours, with idleness. OLIVER Marry, sir, be better employed, and be naught awhile. ORLANDO Shall I keep your hogs and eat husks with them? What prodigal portion have I spent, that I should come to such penury? OLIVER Know you where your are, sir? ORLANDO O, sir, very well; here in your orchard. OLIVER Know you before whom, sir? ORLANDO Ay, better than him I am before knows me. I know you are my eldest brother; and, in the gentle condition of blood, you should so know me. The courtesy of nations allows you my better, in that you are the first-born; but the same tradition takes not away my blood, were there twenty brothers betwixt us: I have as much of my father in me as you; albeit, I confess, your coming before me is nearer to his reverence. OLIVER What, boy! ORLANDO Come, come, elder brother, you are too young in this. OLIVER Wilt thou lay hands on me, villain? ORLANDO I am no villain; I am the youngest son of Sir Rowland de Boys; he was my father, and he is thrice a villain that says such a father begot villains. Wert thou not my brother, I would not take this hand from thy throat till this other had pulled out thy tongue for saying so: thou hast railed on thyself. ADAM Sweet masters, be patient: for your father's remembrance, be at accord. OLIVER Let me go, I say. ORLANDO I will not, till I please: you shall hear me. My father charged you in his will to give me good education: you have trained me like a peasant, obscuring and hiding from me all gentleman-like qualities. The spirit of my father grows strong in me, and I will no longer endure it: therefore allow me such exercises as may become a gentleman, or give me the poor allottery my father left me by testament; with that I will go buy my fortunes. OLIVER And what wilt thou do? beg, when that is spent? Well, sir, get you in: I will not long be troubled with you; you shall have some part of your will: I pray you, leave me. ORLANDO I will no further offend you than becomes me for my good. OLIVER Get you with him, you old dog. ADAM Is 'old dog' my reward? Most true, I have lost my teeth in your service. God be with my old master! he would not have spoke such a word. [Exeunt ORLANDO and ADAM] OLIVER Is it even so? begin you to grow upon me? I will physic your rankness, and yet give no thousand crowns neither. Holla, Dennis! [Enter DENNIS] DENNIS Calls your worship? OLIVER Was not Charles, the duke's wrestler, here to speak with me? DENNIS So please you, he is here at the door and importunes access to you. OLIVER Call him in. [Exit DENNIS] 'Twill be a good way; and to-morrow the wrestling is. [Enter CHARLES] CHARLES Good morrow to your worship. OLIVER Good Monsieur Charles, what's the new news at the new court? CHARLES There's no news at the court, sir, but the old news: that is, the old duke is banished by his younger brother the new duke; and three or four loving lords have put themselves into voluntary exile with him, whose lands and revenues enrich the new duke; therefore he gives them good leave to wander. OLIVER Can you tell if Rosalind, the duke's daughter, be banished with her father? CHARLES O, no; for the duke's daughter, her cousin, so loves her, being ever from their cradles bred together, that she would have followed her exile, or have died to stay behind her. She is at the court, and no less beloved of her uncle than his own daughter; and never two ladies loved as they do. OLIVER Where will the old duke live? CHARLES They say he is already in the forest of Arden, and a many merry men with him; and there they live like the old Robin Hood of England: they say many young gentlemen flock to him every day, and fleet the time carelessly, as they did in the golden world. OLIVER What, you wrestle to-morrow before the new duke? CHARLES Marry, do I, sir; and I came to acquaint you with a matter. I am given, sir, secretly to understand that your younger brother Orlando hath a disposition to come in disguised against me to try a fall. To-morrow, sir, I wrestle for my credit; and he that escapes me without some broken limb shall acquit him well. Your brother is but young and tender; and, for your love, I would be loath to foil him, as I must, for my own honour, if he come in: therefore, out of my love to you, I came hither to acquaint you withal, that either you might stay him from his intendment or brook such disgrace well as he shall run into, in that it is a thing of his own search and altogether against my will. OLIVER Charles, I thank thee for thy love to me, which thou shalt find I will most kindly requite. I had myself notice of my brother's purpose herein and have by underhand means laboured to dissuade him from it, but he is resolute. I'll tell thee, Charles: it is the stubbornest young fellow of France, full of ambition, an envious emulator of every man's good parts, a secret and villanous contriver against me his natural brother: therefore use thy discretion; I had as lief thou didst break his neck as his finger. And thou wert best look to't; for if thou dost him any slight disgrace or if he do not mightily grace himself on thee, he will practise against thee by poison, entrap thee by some treacherous device and never leave thee till he hath ta'en thy life by some indirect means or other; for, I assure thee, and almost with tears I speak it, there is not one so young and so villanous this day living. I speak but brotherly of him; but should I anatomize him to thee as he is, I must blush and weep and thou must look pale and wonder. CHARLES I am heartily glad I came hither to you. If he come to-morrow, I'll give him his payment: if ever he go alone again, I'll never wrestle for prize more: and so God keep your worship! OLIVER Farewell, good Charles. [Exit CHARLES] Now will I stir this gamester: I hope I shall see an end of him; for my soul, yet I know not why, hates nothing more than he. Yet he's gentle, never schooled and yet learned, full of noble device, of all sorts enchantingly beloved, and indeed so much in the heart of the world, and especially of my own people, who best know him, that I am altogether misprised: but it shall not be so long; this wrestler shall clear all: nothing remains but that I kindle the boy thither; which now I'll go about. [Exit] AS YOU LIKE IT ACT I SCENE II Lawn before the Duke's palace. [Enter CELIA and ROSALIND] CELIA I pray thee, Rosalind, sweet my coz, be merry. ROSALIND Dear Celia, I show more mirth than I am mistress of; and would you yet I were merrier? Unless you could teach me to forget a banished father, you must not learn me how to remember any extraordinary pleasure. CELIA Herein I see thou lovest me not with the full weight that I love thee. If my uncle, thy banished father, had banished thy uncle, the duke my father, so thou hadst been still with me, I could have taught my love to take thy father for mine: so wouldst thou, if the truth of thy love to me were so righteously tempered as mine is to thee. ROSALIND Well, I will forget the condition of my estate, to rejoice in yours. CELIA You know my father hath no child but I, nor none is like to have: and, truly, when he dies, thou shalt be his heir, for what he hath taken away from thy father perforce, I will render thee again in affection; by mine honour, I will; and when I break that oath, let me turn monster: therefore, my sweet Rose, my dear Rose, be merry. ROSALIND From henceforth I will, coz, and devise sports. Let me see; what think you of falling in love? CELIA Marry, I prithee, do, to make sport withal: but love no man in good earnest; nor no further in sport neither than with safety of a pure blush thou mayst in honour come off again. ROSALIND What shall be our sport, then? CELIA Let us sit and mock the good housewife Fortune from her wheel, that her gifts may henceforth be bestowed equally. ROSALIND I would we could do so, for her benefits are mightily misplaced, and the bountiful blind woman doth most mistake in her gifts to women. CELIA 'Tis true; for those that she makes fair she scarce makes honest, and those that she makes honest she makes very ill-favouredly. ROSALIND Nay, now thou goest from Fortune's office to Nature's: Fortune reigns in gifts of the world, not in the lineaments of Nature. [Enter TOUCHSTONE] CELIA No? when Nature hath made a fair creature, may she not by Fortune fall into the fire? Though Nature hath given us wit to flout at Fortune, hath not Fortune sent in this fool to cut off the argument? ROSALIND Indeed, there is Fortune too hard for Nature, when Fortune makes Nature's natural the cutter-off of Nature's wit. CELIA Peradventure this is not Fortune's work neither, but Nature's; who perceiveth our natural wits too dull to reason of such goddesses and hath sent this natural for our whetstone; for always the dulness of the fool is the whetstone of the wits. How now, wit! whither wander you? TOUCHSTONE Mistress, you must come away to your father. CELIA Were you made the messenger? TOUCHSTONE No, by mine honour, but I was bid to come for you. ROSALIND Where learned you that oath, fool? TOUCHSTONE Of a certain knight that swore by his honour they were good pancakes and swore by his honour the mustard was naught: now I'll stand to it, the pancakes were naught and the mustard was good, and yet was not the knight forsworn. CELIA How prove you that, in the great heap of your knowledge? ROSALIND Ay, marry, now unmuzzle your wisdom. TOUCHSTONE Stand you both forth now: stroke your chins, and swear by your beards that I am a knave. CELIA By our beards, if we had them, thou art. TOUCHSTONE By my knavery, if I had it, then I were; but if you swear by that that is not, you are not forsworn: no more was this knight swearing by his honour, for he never had any; or if he had, he had sworn it away before ever he saw those pancakes or that mustard. CELIA Prithee, who is't that thou meanest? TOUCHSTONE One that old Frederick, your father, loves. CELIA My father's love is enough to honour him: enough! speak no more of him; you'll be whipped for taxation one of these days. TOUCHSTONE The more pity, that fools may not speak wisely what wise men do foolishly. CELIA By my troth, thou sayest true; for since the little wit that fools have was silenced, the little foolery that wise men have makes a great show. Here comes Monsieur Le Beau. ROSALIND With his mouth full of news. CELIA Which he will put on us, as pigeons feed their young. ROSALIND Then shall we be news-crammed. CELIA All the better; we shall be the more marketable. [Enter LE BEAU] Bon jour, Monsieur Le Beau: what's the news? LE BEAU Fair princess, you have lost much good sport. CELIA Sport! of what colour? LE BEAU What colour, madam! how shall I answer you? ROSALIND As wit and fortune will. TOUCHSTONE Or as the Destinies decree. CELIA Well said: that was laid on with a trowel. TOUCHSTONE Nay, if I keep not my rank,-- ROSALIND Thou losest thy old smell. LE BEAU You amaze me, ladies: I would have told you of good wrestling, which you have lost the sight of. ROSALIND You tell us the manner of the wrestling. LE BEAU I will tell you the beginning; and, if it please your ladyships, you may see the end; for the best is yet to do; and here, where you are, they are coming to perform it. CELIA Well, the beginning, that is dead and buried. LE BEAU There comes an old man and his three sons,-- CELIA I could match this beginning with an old tale. LE BEAU Three proper young men, of excellent growth and presence. ROSALIND With bills on their necks, 'Be it known unto all men by these presents.' LE BEAU The eldest of the three wrestled with Charles, the duke's wrestler; which Charles in a moment threw him and broke three of his ribs, that there is little hope of life in him: so he served the second, and so the third. Yonder they lie; the poor old man, their father, making such pitiful dole over them that all the beholders take his part with weeping. ROSALIND Alas! TOUCHSTONE But what is the sport, monsieur, that the ladies have lost? LE BEAU Why, this that I speak of. TOUCHSTONE Thus men may grow wiser every day: it is the first time that ever I heard breaking of ribs was sport for ladies. CELIA Or I, I promise thee. ROSALIND But is there any else longs to see this broken music in his sides? is there yet another dotes upon rib-breaking? Shall we see this wrestling, cousin? LE BEAU You must, if you stay here; for here is the place appointed for the wrestling, and they are ready to perform it. CELIA Yonder, sure, they are coming: let us now stay and see it. [Flourish. Enter DUKE FREDERICK, Lords, ORLANDO, CHARLES, and Attendants] DUKE FREDERICK Come on: since the youth will not be entreated, his own peril on his forwardness. ROSALIND Is yonder the man? LE BEAU Even he, madam. CELIA Alas, he is too young! yet he looks successfully. DUKE FREDERICK How now, daughter and cousin! are you crept hither to see the wrestling? ROSALIND Ay, my liege, so please you give us leave. DUKE FREDERICK You will take little delight in it, I can tell you; there is such odds in the man. In pity of the challenger's youth I would fain dissuade him, but he will not be entreated. Speak to him, ladies; see if you can move him. CELIA Call him hither, good Monsieur Le Beau. DUKE FREDERICK Do so: I'll not be by. LE BEAU Monsieur the challenger, the princesses call for you. ORLANDO I attend them with all respect and duty. ROSALIND Young man, have you challenged Charles the wrestler? ORLANDO No, fair princess; he is the general challenger: I come but in, as others do, to try with him the strength of my youth. CELIA Young gentleman, your spirits are too bold for your years. You have seen cruel proof of this man's strength: if you saw yourself with your eyes or knew yourself with your judgment, the fear of your adventure would counsel you to a more equal enterprise. We pray you, for your own sake, to embrace your own safety and give over this attempt. ROSALIND Do, young sir; your reputation shall not therefore be misprised: we will make it our suit to the duke that the wrestling might not go forward. ORLANDO I beseech you, punish me not with your hard thoughts; wherein I confess me much guilty, to deny so fair and excellent ladies any thing. But let your fair eyes and gentle wishes go with me to my trial: wherein if I be foiled, there is but one shamed that was never gracious; if killed, but one dead that was willing to be so: I shall do my friends no wrong, for I have none to lament me, the world no injury, for in it I have nothing; only in the world I fill up a place, which may be better supplied when I have made it empty. ROSALIND The little strength that I have, I would it were with you. CELIA And mine, to eke out hers. ROSALIND Fare you well: pray heaven I be deceived in you! CELIA Your heart's desires be with you! CHARLES Come, where is this young gallant that is so desirous to lie with his mother earth? ORLANDO Ready, sir; but his will hath in it a more modest working. DUKE FREDERICK You shall try but one fall. CHARLES No, I warrant your grace, you shall not entreat him to a second, that have so mightily persuaded him from a first. ORLANDO An you mean to mock me after, you should not have mocked me before: but come your ways. ROSALIND Now Hercules be thy speed, young man! CELIA I would I were invisible, to catch the strong fellow by the leg. [They wrestle] ROSALIND O excellent young man! CELIA If I had a thunderbolt in mine eye, I can tell who should down. [Shout. CHARLES is thrown] DUKE FREDERICK No more, no more. ORLANDO Yes, I beseech your grace: I am not yet well breathed. DUKE FREDERICK How dost thou, Charles? LE BEAU He cannot speak, my lord. DUKE FREDERICK Bear him away. What is thy name, young man? ORLANDO Orlando, my liege; the youngest son of Sir Rowland de Boys. DUKE FREDERICK I would thou hadst been son to some man else: The world esteem'd thy father honourable, But I did find him still mine enemy: Thou shouldst have better pleased me with this deed, Hadst thou descended from another house. But fare thee well; thou art a gallant youth: I would thou hadst told me of another father. [Exeunt DUKE FREDERICK, train, and LE BEAU] CELIA Were I my father, coz, would I do this? ORLANDO I am more proud to be Sir Rowland's son, His youngest son; and would not change that calling, To be adopted heir to Frederick. ROSALIND My father loved Sir Rowland as his soul, And all the world was of my father's mind: Had I before known this young man his son, I should have given him tears unto entreaties, Ere he should thus have ventured. CELIA Gentle cousin, Let us go thank him and encourage him: My father's rough and envious disposition Sticks me at heart. Sir, you have well deserved: If you do keep your promises in love But justly, as you have exceeded all promise, Your mistress shall be happy. ROSALIND Gentleman, [Giving him a chain from her neck] Wear this for me, one out of suits with fortune, That could give more, but that her hand lacks means. Shall we go, coz? CELIA Ay. Fare you well, fair gentleman. ORLANDO Can I not say, I thank you? My better parts Are all thrown down, and that which here stands up Is but a quintain, a mere lifeless block. ROSALIND He calls us back: my pride fell with my fortunes; I'll ask him what he would. Did you call, sir? Sir, you have wrestled well and overthrown More than your enemies. CELIA Will you go, coz? ROSALIND Have with you. Fare you well. [Exeunt ROSALIND and CELIA] ORLANDO What passion hangs these weights upon my tongue? I cannot speak to her, yet she urged conference. O poor Orlando, thou art overthrown! Or Charles or something weaker masters thee. [Re-enter LE BEAU] LE BEAU Good sir, I do in friendship counsel you To leave this place. Albeit you have deserved High commendation, true applause and love, Yet such is now the duke's condition That he misconstrues all that you have done. The duke is humorous; what he is indeed, More suits you to conceive than I to speak of. ORLANDO I thank you, sir: and, pray you, tell me this: Which of the two was daughter of the duke That here was at the wrestling? LE BEAU Neither his daughter, if we judge by manners; But yet indeed the lesser is his daughter The other is daughter to the banish'd duke, And here detain'd by her usurping uncle, To keep his daughter company; whose loves Are dearer than the natural bond of sisters. But I can tell you that of late this duke Hath ta'en displeasure 'gainst his gentle niece, Grounded upon no other argument But that the people praise her for her virtues And pity her for her good father's sake; And, on my life, his malice 'gainst the lady Will suddenly break forth. Sir, fare you well: Hereafter, in a better world than this, I shall desire more love and knowledge of you. ORLANDO I rest much bounden to you: fare you well. [Exit LE BEAU] Thus must I from the smoke into the smother; From tyrant duke unto a tyrant brother: But heavenly Rosalind! [Exit] AS YOU LIKE IT ACT I SCENE III A room in the palace. [Enter CELIA and ROSALIND] CELIA Why, cousin! why, Rosalind! Cupid have mercy! not a word? ROSALIND Not one to throw at a dog. CELIA No, thy words are too precious to be cast away upon curs; throw some of them at me; come, lame me with reasons. ROSALIND Then there were two cousins laid up; when the one should be lamed with reasons and the other mad without any. CELIA But is all this for your father? ROSALIND No, some of it is for my child's father. O, how full of briers is this working-day world! CELIA They are but burs, cousin, thrown upon thee in holiday foolery: if we walk not in the trodden paths our very petticoats will catch them. ROSALIND I could shake them off my coat: these burs are in my heart. CELIA Hem them away. ROSALIND I would try, if I could cry 'hem' and have him. CELIA Come, come, wrestle with thy affections. ROSALIND O, they take the part of a better wrestler than myself! CELIA O, a good wish upon you! you will try in time, in despite of a fall. But, turning these jests out of service, let us talk in good earnest: is it possible, on such a sudden, you should fall into so strong a liking with old Sir Rowland's youngest son? ROSALIND The duke my father loved his father dearly. CELIA Doth it therefore ensue that you should love his son dearly? By this kind of chase, I should hate him, for my father hated his father dearly; yet I hate not Orlando. ROSALIND No, faith, hate him not, for my sake. CELIA Why should I not? doth he not deserve well? ROSALIND Let me love him for that, and do you love him because I do. Look, here comes the duke. CELIA With his eyes full of anger. [Enter DUKE FREDERICK, with Lords] DUKE FREDERICK Mistress, dispatch you with your safest haste And get you from our court. ROSALIND Me, uncle? DUKE FREDERICK You, cousin Within these ten days if that thou be'st found So near our public court as twenty miles, Thou diest for it. ROSALIND I do beseech your grace, Let me the knowledge of my fault bear with me: If with myself I hold intelligence Or have acquaintance with mine own desires, If that I do not dream or be not frantic,-- As I do trust I am not--then, dear uncle, Never so much as in a thought unborn Did I offend your highness. DUKE FREDERICK Thus do all traitors: If their purgation did consist in words, They are as innocent as grace itself: Let it suffice thee that I trust thee not. ROSALIND Yet your mistrust cannot make me a traitor: Tell me whereon the likelihood depends. DUKE FREDERICK Thou art thy father's daughter; there's enough. ROSALIND So was I when your highness took his dukedom; So was I when your highness banish'd him: Treason is not inherited, my lord; Or, if we did derive it from our friends, What's that to me? my father was no traitor: Then, good my liege, mistake me not so much To think my poverty is treacherous. CELIA Dear sovereign, hear me speak. DUKE FREDERICK Ay, Celia; we stay'd her for your sake, Else had she with her father ranged along. CELIA I did not then entreat to have her stay; It was your pleasure and your own remorse: I was too young that time to value her; But now I know her: if she be a traitor, Why so am I; we still have slept together, Rose at an instant, learn'd, play'd, eat together, And wheresoever we went, like Juno's swans, Still we went coupled and inseparable. DUKE FREDERICK She is too subtle for thee; and her smoothness, Her very silence and her patience Speak to the people, and they pity her. Thou art a fool: she robs thee of thy name; And thou wilt show more bright and seem more virtuous When she is gone. Then open not thy lips: Firm and irrevocable is my doom Which I have pass'd upon her; she is banish'd. CELIA Pronounce that sentence then on me, my liege: I cannot live out of her company. DUKE FREDERICK You are a fool. You, niece, provide yourself: If you outstay the time, upon mine honour, And in the greatness of my word, you die. [Exeunt DUKE FREDERICK and Lords] CELIA O my poor Rosalind, whither wilt thou go? Wilt thou change fathers? I will give thee mine. I charge thee, be not thou more grieved than I am. ROSALIND I have more cause. CELIA Thou hast not, cousin; Prithee be cheerful: know'st thou not, the duke Hath banish'd me, his daughter? ROSALIND That he hath not. CELIA No, hath not? Rosalind lacks then the love Which teacheth thee that thou and I am one: Shall we be sunder'd? shall we part, sweet girl? No: let my father seek another heir. Therefore devise with me how we may fly, Whither to go and what to bear with us; And do not seek to take your change upon you, To bear your griefs yourself and leave me out; For, by this heaven, now at our sorrows pale, Say what thou canst, I'll go along with thee. ROSALIND Why, whither shall we go? CELIA To seek my uncle in the forest of Arden. ROSALIND Alas, what danger will it be to us, Maids as we are, to travel forth so far! Beauty provoketh thieves sooner than gold. CELIA I'll put myself in poor and mean attire And with a kind of umber smirch my face; The like do you: so shall we pass along And never stir assailants. ROSALIND Were it not better, Because that I am more than common tall, That I did suit me all points like a man? A gallant curtle-axe upon my thigh, A boar-spear in my hand; and--in my heart Lie there what hidden woman's fear there will-- We'll have a swashing and a martial outside, As many other mannish cowards have That do outface it with their semblances. CELIA What shall I call thee when thou art a man? ROSALIND I'll have no worse a name than Jove's own page; And therefore look you call me Ganymede. But what will you be call'd? CELIA Something that hath a reference to my state No longer Celia, but Aliena. ROSALIND But, cousin, what if we assay'd to steal The clownish fool out of your father's court? Would he not be a comfort to our travel? CELIA He'll go along o'er the wide world with me; Leave me alone to woo him. Let's away, And get our jewels and our wealth together, Devise the fittest time and safest way To hide us from pursuit that will be made After my flight. Now go we in content To liberty and not to banishment. [Exeunt] AS YOU LIKE IT ACT II SCENE I The Forest of Arden. [Enter DUKE SENIOR, AMIENS, and two or three Lords, like foresters] DUKE SENIOR Now, my co-mates and brothers in exile, Hath not old custom made this life more sweet Than that of painted pomp? Are not these woods More free from peril than the envious court? Here feel we but the penalty of Adam, The seasons' difference, as the icy fang And churlish chiding of the winter's wind, Which, when it bites and blows upon my body, Even till I shrink with cold, I smile and say 'This is no flattery: these are counsellors That feelingly persuade me what I am.' Sweet are the uses of adversity, Which, like the toad, ugly and venomous, Wears yet a precious jewel in his head; And this our life exempt from public haunt Finds tongues in trees, books in the running brooks, Sermons in stones and good in every thing. I would not change it. AMIENS Happy is your grace, That can translate the stubbornness of fortune Into so quiet and so sweet a style. DUKE SENIOR Come, shall we go and kill us venison? And yet it irks me the poor dappled fools, Being native burghers of this desert city, Should in their own confines with forked heads Have their round haunches gored. First Lord Indeed, my lord, The melancholy Jaques grieves at that, And, in that kind, swears you do more usurp Than doth your brother that hath banish'd you. To-day my Lord of Amiens and myself Did steal behind him as he lay along Under an oak whose antique root peeps out Upon the brook that brawls along this wood: To the which place a poor sequester'd stag, That from the hunter's aim had ta'en a hurt, Did come to languish, and indeed, my lord, The wretched animal heaved forth such groans That their discharge did stretch his leathern coat Almost to bursting, and the big round tears Coursed one another down his innocent nose In piteous chase; and thus the hairy fool Much marked of the melancholy Jaques, Stood on the extremest verge of the swift brook, Augmenting it with tears. DUKE SENIOR But what said Jaques? Did he not moralize this spectacle? First Lord O, yes, into a thousand similes. First, for his weeping into the needless stream; 'Poor deer,' quoth he, 'thou makest a testament As worldlings do, giving thy sum of more To that which had too much:' then, being there alone, Left and abandon'd of his velvet friends, ''Tis right:' quoth he; 'thus misery doth part The flux of company:' anon a careless herd, Full of the pasture, jumps along by him And never stays to greet him; 'Ay' quoth Jaques, 'Sweep on, you fat and greasy citizens; 'Tis just the fashion: wherefore do you look Upon that poor and broken bankrupt there?' Thus most invectively he pierceth through The body of the country, city, court, Yea, and of this our life, swearing that we Are mere usurpers, tyrants and what's worse, To fright the animals and to kill them up In their assign'd and native dwelling-place. DUKE SENIOR And did you leave him in this contemplation? Second Lord We did, my lord, weeping and commenting Upon the sobbing deer. DUKE SENIOR Show me the place: I love to cope him in these sullen fits, For then he's full of matter. First Lord I'll bring you to him straight. [Exeunt] AS YOU LIKE IT ACT II SCENE II A room in the palace. [Enter DUKE FREDERICK, with Lords] DUKE FREDERICK Can it be possible that no man saw them? It cannot be: some villains of my court Are of consent and sufferance in this. First Lord I cannot hear of any that did see her. The ladies, her attendants of her chamber, Saw her abed, and in the morning early They found the bed untreasured of their mistress. Second Lord My lord, the roynish clown, at whom so oft Your grace was wont to laugh, is also missing. Hisperia, the princess' gentlewoman, Confesses that she secretly o'erheard Your daughter and her cousin much commend The parts and graces of the wrestler That did but lately foil the sinewy Charles; And she believes, wherever they are gone, That youth is surely in their company. DUKE FREDERICK Send to his brother; fetch that gallant hither; If he be absent, bring his brother to me; I'll make him find him: do this suddenly, And let not search and inquisition quail To bring again these foolish runaways. [Exeunt] AS YOU LIKE IT ACT II SCENE III Before OLIVER'S house. [Enter ORLANDO and ADAM, meeting] ORLANDO Who's there? ADAM What, my young master? O, my gentle master! O my sweet master! O you memory Of old Sir Rowland! why, what make you here? Why are you virtuous? why do people love you? And wherefore are you gentle, strong and valiant? Why would you be so fond to overcome The bonny priser of the humorous duke? Your praise is come too swiftly home before you. Know you not, master, to some kind of men Their graces serve them but as enemies? No more do yours: your virtues, gentle master, Are sanctified and holy traitors to you. O, what a world is this, when what is comely Envenoms him that bears it! ORLANDO Why, what's the matter? ADAM O unhappy youth! Come not within these doors; within this roof The enemy of all your graces lives: Your brother--no, no brother; yet the son-- Yet not the son, I will not call him son Of him I was about to call his father-- Hath heard your praises, and this night he means To burn the lodging where you use to lie And you within it: if he fail of that, He will have other means to cut you off. I overheard him and his practises. This is no place; this house is but a butchery: Abhor it, fear it, do not enter it. ORLANDO Why, whither, Adam, wouldst thou have me go? ADAM No matter whither, so you come not here. ORLANDO What, wouldst thou have me go and beg my food? Or with a base and boisterous sword enforce A thievish living on the common road? This I must do, or know not what to do: Yet this I will not do, do how I can; I rather will subject me to the malice Of a diverted blood and bloody brother. ADAM But do not so. I have five hundred crowns, The thrifty hire I saved under your father, Which I did store to be my foster-nurse When service should in my old limbs lie lame And unregarded age in corners thrown: Take that, and He that doth the ravens feed, Yea, providently caters for the sparrow, Be comfort to my age! Here is the gold; And all this I give you. Let me be your servant: Though I look old, yet I am strong and lusty; For in my youth I never did apply Hot and rebellious liquors in my blood, Nor did not with unbashful forehead woo The means of weakness and debility; Therefore my age is as a lusty winter, Frosty, but kindly: let me go with you; I'll do the service of a younger man In all your business and necessities. ORLANDO O good old man, how well in thee appears The constant service of the antique world, When service sweat for duty, not for meed! Thou art not for the fashion of these times, Where none will sweat but for promotion, And having that, do choke their service up Even with the having: it is not so with thee. But, poor old man, thou prunest a rotten tree, That cannot so much as a blossom yield In lieu of all thy pains and husbandry But come thy ways; well go along together, And ere we have thy youthful wages spent, We'll light upon some settled low content. ADAM Master, go on, and I will follow thee, To the last gasp, with truth and loyalty. From seventeen years till now almost fourscore Here lived I, but now live here no more. At seventeen years many their fortunes seek; But at fourscore it is too late a week: Yet fortune cannot recompense me better Than to die well and not my master's debtor. [Exeunt] AS YOU LIKE IT ACT II SCENE IV The Forest of Arden. [Enter ROSALIND for Ganymede, CELIA for Aliena, and TOUCHSTONE] ROSALIND O Jupiter, how weary are my spirits! TOUCHSTONE I care not for my spirits, if my legs were not weary. ROSALIND I could find in my heart to disgrace my man's apparel and to cry like a woman; but I must comfort the weaker vessel, as doublet and hose ought to show itself courageous to petticoat: therefore courage, good Aliena! CELIA I pray you, bear with me; I cannot go no further. TOUCHSTONE For my part, I had rather bear with you than bear you; yet I should bear no cross if I did bear you, for I think you have no money in your purse. ROSALIND Well, this is the forest of Arden. TOUCHSTONE Ay, now am I in Arden; the more fool I; when I was at home, I was in a better place: but travellers must be content. ROSALIND Ay, be so, good Touchstone. [Enter CORIN and SILVIUS] Look you, who comes here; a young man and an old in solemn talk. CORIN That is the way to make her scorn you still. SILVIUS O Corin, that thou knew'st how I do love her! CORIN I partly guess; for I have loved ere now. SILVIUS No, Corin, being old, thou canst not guess, Though in thy youth thou wast as true a lover As ever sigh'd upon a midnight pillow: But if thy love were ever like to mine-- As sure I think did never man love so-- How many actions most ridiculous Hast thou been drawn to by thy fantasy? CORIN Into a thousand that I have forgotten. SILVIUS O, thou didst then ne'er love so heartily! If thou remember'st not the slightest folly That ever love did make thee run into, Thou hast not loved: Or if thou hast not sat as I do now, Wearying thy hearer in thy mistress' praise, Thou hast not loved: Or if thou hast not broke from company Abruptly, as my passion now makes me, Thou hast not loved. O Phebe, Phebe, Phebe! [Exit] ROSALIND Alas, poor shepherd! searching of thy wound, I have by hard adventure found mine own. TOUCHSTONE And I mine. I remember, when I was in love I broke my sword upon a stone and bid him take that for coming a-night to Jane Smile; and I remember the kissing of her batlet and the cow's dugs that her pretty chopt hands had milked; and I remember the wooing of a peascod instead of her, from whom I took two cods and, giving her them again, said with weeping tears 'Wear these for my sake.' We that are true lovers run into strange capers; but as all is mortal in nature, so is all nature in love mortal in folly. ROSALIND Thou speakest wiser than thou art ware of. TOUCHSTONE Nay, I shall ne'er be ware of mine own wit till I break my shins against it. ROSALIND Jove, Jove! this shepherd's passion Is much upon my fashion. TOUCHSTONE And mine; but it grows something stale with me. CELIA I pray you, one of you question yond man If he for gold will give us any food: I faint almost to death. TOUCHSTONE Holla, you clown! ROSALIND Peace, fool: he's not thy kinsman. CORIN Who calls? TOUCHSTONE Your betters, sir. CORIN Else are they very wretched. ROSALIND Peace, I say. Good even to you, friend. CORIN And to you, gentle sir, and to you all. ROSALIND I prithee, shepherd, if that love or gold Can in this desert place buy entertainment, Bring us where we may rest ourselves and feed: Here's a young maid with travel much oppress'd And faints for succor. CORIN Fair sir, I pity her And wish, for her sake more than for mine own, My fortunes were more able to relieve her; But I am shepherd to another man And do not shear the fleeces that I graze: My master is of churlish disposition And little recks to find the way to heaven By doing deeds of hospitality: Besides, his cote, his flocks and bounds of feed Are now on sale, and at our sheepcote now, By reason of his absence, there is nothing That you will feed on; but what is, come see. And in my voice most welcome shall you be. ROSALIND What is he that shall buy his flock and pasture? CORIN That young swain that you saw here but erewhile, That little cares for buying any thing. ROSALIND I pray thee, if it stand with honesty, Buy thou the cottage, pasture and the flock, And thou shalt have to pay for it of us. CELIA And we will mend thy wages. I like this place. And willingly could waste my time in it. CORIN Assuredly the thing is to be sold: Go with me: if you like upon report The soil, the profit and this kind of life, I will your very faithful feeder be And buy it with your gold right suddenly. [Exeunt] AS YOU LIKE IT ACT II SCENE V The Forest. [Enter AMIENS, JAQUES, and others] SONG. AMIENS Under the greenwood tree Who loves to lie with me, And turn his merry note Unto the sweet bird's throat, Come hither, come hither, come hither: Here shall he see No enemy But winter and rough weather. JAQUES More, more, I prithee, more. AMIENS It will make you melancholy, Monsieur Jaques. JAQUES I thank it. More, I prithee, more. I can suck melancholy out of a song, as a weasel sucks eggs. More, I prithee, more. AMIENS My voice is ragged: I know I cannot please you. JAQUES I do not desire you to please me; I do desire you to sing. Come, more; another stanzo: call you 'em stanzos? AMIENS What you will, Monsieur Jaques. JAQUES Nay, I care not for their names; they owe me nothing. Will you sing? AMIENS More at your request than to please myself. JAQUES Well then, if ever I thank any man, I'll thank you; but that they call compliment is like the encounter of two dog-apes, and when a man thanks me heartily, methinks I have given him a penny and he renders me the beggarly thanks. Come, sing; and you that will not, hold your tongues. AMIENS Well, I'll end the song. Sirs, cover the while; the duke will drink under this tree. He hath been all this day to look you. JAQUES And I have been all this day to avoid him. He is too disputable for my company: I think of as many matters as he, but I give heaven thanks and make no boast of them. Come, warble, come. SONG. Who doth ambition shun [All together here] And loves to live i' the sun, Seeking the food he eats And pleased with what he gets, Come hither, come hither, come hither: Here shall he see No enemy But winter and rough weather. JAQUES I'll give you a verse to this note that I made yesterday in despite of my invention. AMIENS And I'll sing it. JAQUES Thus it goes:-- If it do come to pass That any man turn ass, Leaving his wealth and ease, A stubborn will to please, Ducdame, ducdame, ducdame: Here shall he see Gross fools as he, An if he will come to me. AMIENS What's that 'ducdame'? JAQUES 'Tis a Greek invocation, to call fools into a circle. I'll go sleep, if I can; if I cannot, I'll rail against all the first-born of Egypt. AMIENS And I'll go seek the duke: his banquet is prepared. [Exeunt severally] AS YOU LIKE IT ACT II SCENE VI The forest. [Enter ORLANDO and ADAM] ADAM Dear master, I can go no further. O, I die for food! Here lie I down, and measure out my grave. Farewell, kind master. ORLANDO Why, how now, Adam! no greater heart in thee? Live a little; comfort a little; cheer thyself a little. If this uncouth forest yield any thing savage, I will either be food for it or bring it for food to thee. Thy conceit is nearer death than thy powers. For my sake be comfortable; hold death awhile at the arm's end: I will here be with thee presently; and if I bring thee not something to eat, I will give thee leave to die: but if thou diest before I come, thou art a mocker of my labour. Well said! thou lookest cheerly, and I'll be with thee quickly. Yet thou liest in the bleak air: come, I will bear thee to some shelter; and thou shalt not die for lack of a dinner, if there live any thing in this desert. Cheerly, good Adam! [Exeunt] AS YOU LIKE IT ACT II SCENE VII The forest. [A table set out. Enter DUKE SENIOR, AMIENS, and Lords like outlaws] DUKE SENIOR I think he be transform'd into a beast; For I can no where find him like a man. First Lord My lord, he is but even now gone hence: Here was he merry, hearing of a song. DUKE SENIOR If he, compact of jars, grow musical, We shall have shortly discord in the spheres. Go, seek him: tell him I would speak with him. [Enter JAQUES] First Lord He saves my labour by his own approach. DUKE SENIOR Why, how now, monsieur! what a life is this, That your poor friends must woo your company? What, you look merrily! JAQUES A fool, a fool! I met a fool i' the forest, A motley fool; a miserable world! As I do live by food, I met a fool Who laid him down and bask'd him in the sun, And rail'd on Lady Fortune in good terms, In good set terms and yet a motley fool. 'Good morrow, fool,' quoth I. 'No, sir,' quoth he, 'Call me not fool till heaven hath sent me fortune:' And then he drew a dial from his poke, And, looking on it with lack-lustre eye, Says very wisely, 'It is ten o'clock: Thus we may see,' quoth he, 'how the world wags: 'Tis but an hour ago since it was nine, And after one hour more 'twill be eleven; And so, from hour to hour, we ripe and ripe, And then, from hour to hour, we rot and rot; And thereby hangs a tale.' When I did hear The motley fool thus moral on the time, My lungs began to crow like chanticleer, That fools should be so deep-contemplative, And I did laugh sans intermission An hour by his dial. O noble fool! A worthy fool! Motley's the only wear. DUKE SENIOR What fool is this? JAQUES O worthy fool! One that hath been a courtier, And says, if ladies be but young and fair, They have the gift to know it: and in his brain, Which is as dry as the remainder biscuit After a voyage, he hath strange places cramm'd With observation, the which he vents In mangled forms. O that I were a fool! I am ambitious for a motley coat. DUKE SENIOR Thou shalt have one. JAQUES It is my only suit; Provided that you weed your better judgments Of all opinion that grows rank in them That I am wise. I must have liberty Withal, as large a charter as the wind, To blow on whom I please; for so fools have; And they that are most galled with my folly, They most must laugh. And why, sir, must they so? The 'why' is plain as way to parish church: He that a fool doth very wisely hit Doth very foolishly, although he smart, Not to seem senseless of the bob: if not, The wise man's folly is anatomized Even by the squandering glances of the fool. Invest me in my motley; give me leave To speak my mind, and I will through and through Cleanse the foul body of the infected world, If they will patiently receive my medicine. DUKE SENIOR Fie on thee! I can tell what thou wouldst do. JAQUES What, for a counter, would I do but good? DUKE SENIOR Most mischievous foul sin, in chiding sin: For thou thyself hast been a libertine, As sensual as the brutish sting itself; And all the embossed sores and headed evils, That thou with licence of free foot hast caught, Wouldst thou disgorge into the general world. JAQUES Why, who cries out on pride, That can therein tax any private party? Doth it not flow as hugely as the sea, Till that the weary very means do ebb? What woman in the city do I name, When that I say the city-woman bears The cost of princes on unworthy shoulders? Who can come in and say that I mean her, When such a one as she such is her neighbour? Or what is he of basest function That says his bravery is not of my cost, Thinking that I mean him, but therein suits His folly to the mettle of my speech? There then; how then? what then? Let me see wherein My tongue hath wrong'd him: if it do him right, Then he hath wrong'd himself; if he be free, Why then my taxing like a wild-goose flies, Unclaim'd of any man. But who comes here? [Enter ORLANDO, with his sword drawn] ORLANDO Forbear, and eat no more. JAQUES Why, I have eat none yet. ORLANDO Nor shalt not, till necessity be served. JAQUES Of what kind should this cock come of? DUKE SENIOR Art thou thus bolden'd, man, by thy distress, Or else a rude despiser of good manners, That in civility thou seem'st so empty? ORLANDO You touch'd my vein at first: the thorny point Of bare distress hath ta'en from me the show Of smooth civility: yet am I inland bred And know some nurture. But forbear, I say: He dies that touches any of this fruit Till I and my affairs are answered. JAQUES An you will not be answered with reason, I must die. DUKE SENIOR What would you have? Your gentleness shall force More than your force move us to gentleness. ORLANDO I almost die for food; and let me have it. DUKE SENIOR Sit down and feed, and welcome to our table. ORLANDO Speak you so gently? Pardon me, I pray you: I thought that all things had been savage here; And therefore put I on the countenance Of stern commandment. But whate'er you are That in this desert inaccessible, Under the shade of melancholy boughs, Lose and neglect the creeping hours of time If ever you have look'd on better days, If ever been where bells have knoll'd to church, If ever sat at any good man's feast, If ever from your eyelids wiped a tear And know what 'tis to pity and be pitied, Let gentleness my strong enforcement be: In the which hope I blush, and hide my sword. DUKE SENIOR True is it that we have seen better days, And have with holy bell been knoll'd to church And sat at good men's feasts and wiped our eyes Of drops that sacred pity hath engender'd: And therefore sit you down in gentleness And take upon command what help we have That to your wanting may be minister'd. ORLANDO Then but forbear your food a little while, Whiles, like a doe, I go to find my fawn And give it food. There is an old poor man, Who after me hath many a weary step Limp'd in pure love: till he be first sufficed, Oppress'd with two weak evils, age and hunger, I will not touch a bit. DUKE SENIOR Go find him out, And we will nothing waste till you return. ORLANDO I thank ye; and be blest for your good comfort! [Exit] DUKE SENIOR Thou seest we are not all alone unhappy: This wide and universal theatre Presents more woeful pageants than the scene Wherein we play in. JAQUES All the world's a stage, And all the men and women merely players: They have their exits and their entrances; And one man in his time plays many parts, His acts being seven ages. At first the infant, Mewling and puking in the nurse's arms. And then the whining school-boy, with his satchel And shining morning face, creeping like snail Unwillingly to school. And then the lover, Sighing like furnace, with a woeful ballad Made to his mistress' eyebrow. Then a soldier, Full of strange oaths and bearded like the pard, Jealous in honour, sudden and quick in quarrel, Seeking the bubble reputation Even in the cannon's mouth. And then the justice, In fair round belly with good capon lined, With eyes severe and beard of formal cut, Full of wise saws and modern instances; And so he plays his part. The sixth age shifts Into the lean and slipper'd pantaloon, With spectacles on nose and pouch on side, His youthful hose, well saved, a world too wide For his shrunk shank; and his big manly voice, Turning again toward childish treble, pipes And whistles in his sound. Last scene of all, That ends this strange eventful history, Is second childishness and mere oblivion, Sans teeth, sans eyes, sans taste, sans everything. [Re-enter ORLANDO, with ADAM] DUKE SENIOR Welcome. Set down your venerable burthen, And let him feed. ORLANDO I thank you most for him. ADAM So had you need: I scarce can speak to thank you for myself. DUKE SENIOR Welcome; fall to: I will not trouble you As yet, to question you about your fortunes. Give us some music; and, good cousin, sing. SONG. AMIENS Blow, blow, thou winter wind. Thou art not so unkind As man's ingratitude; Thy tooth is not so keen, Because thou art not seen, Although thy breath be rude. Heigh-ho! sing, heigh-ho! unto the green holly: Most friendship is feigning, most loving mere folly: Then, heigh-ho, the holly! This life is most jolly. Freeze, freeze, thou bitter sky, That dost not bite so nigh As benefits forgot: Though thou the waters warp, Thy sting is not so sharp As friend remember'd not. Heigh-ho! sing, &c. DUKE SENIOR If that you were the good Sir Rowland's son, As you have whisper'd faithfully you were, And as mine eye doth his effigies witness Most truly limn'd and living in your face, Be truly welcome hither: I am the duke That loved your father: the residue of your fortune, Go to my cave and tell me. Good old man, Thou art right welcome as thy master is. Support him by the arm. Give me your hand, And let me all your fortunes understand. [Exeunt] AS YOU LIKE IT ACT III SCENE I A room in the palace. [Enter DUKE FREDERICK, Lords, and OLIVER] DUKE FREDERICK Not see him since? Sir, sir, that cannot be: But were I not the better part made mercy, I should not seek an absent argument Of my revenge, thou present. But look to it: Find out thy brother, wheresoe'er he is; Seek him with candle; bring him dead or living Within this twelvemonth, or turn thou no more To seek a living in our territory. Thy lands and all things that thou dost call thine Worth seizure do we seize into our hands, Till thou canst quit thee by thy brothers mouth Of what we think against thee. OLIVER O that your highness knew my heart in this! I never loved my brother in my life. DUKE FREDERICK More villain thou. Well, push him out of doors; And let my officers of such a nature Make an extent upon his house and lands: Do this expediently and turn him going. [Exeunt] AS YOU LIKE IT ACT III SCENE II The forest. [Enter ORLANDO, with a paper] ORLANDO Hang there, my verse, in witness of my love: And thou, thrice-crowned queen of night, survey With thy chaste eye, from thy pale sphere above, Thy huntress' name that my full life doth sway. O Rosalind! these trees shall be my books And in their barks my thoughts I'll character; That every eye which in this forest looks Shall see thy virtue witness'd every where. Run, run, Orlando; carve on every tree The fair, the chaste and unexpressive she. [Exit] [Enter CORIN and TOUCHSTONE] CORIN And how like you this shepherd's life, Master Touchstone? TOUCHSTONE Truly, shepherd, in respect of itself, it is a good life, but in respect that it is a shepherd's life, it is naught. In respect that it is solitary, I like it very well; but in respect that it is private, it is a very vile life. Now, in respect it is in the fields, it pleaseth me well; but in respect it is not in the court, it is tedious. As is it a spare life, look you, it fits my humour well; but as there is no more plenty in it, it goes much against my stomach. Hast any philosophy in thee, shepherd? CORIN No more but that I know the more one sickens the worse at ease he is; and that he that wants money, means and content is without three good friends; that the property of rain is to wet and fire to burn; that good pasture makes fat sheep, and that a great cause of the night is lack of the sun; that he that hath learned no wit by nature nor art may complain of good breeding or comes of a very dull kindred. TOUCHSTONE Such a one is a natural philosopher. Wast ever in court, shepherd? CORIN No, truly. TOUCHSTONE Then thou art damned. CORIN Nay, I hope. TOUCHSTONE Truly, thou art damned like an ill-roasted egg, all on one side. CORIN For not being at court? Your reason. TOUCHSTONE Why, if thou never wast at court, thou never sawest good manners; if thou never sawest good manners, then thy manners must be wicked; and wickedness is sin, and sin is damnation. Thou art in a parlous state, shepherd. CORIN Not a whit, Touchstone: those that are good manners at the court are as ridiculous in the country as the behavior of the country is most mockable at the court. You told me you salute not at the court, but you kiss your hands: that courtesy would be uncleanly, if courtiers were shepherds. TOUCHSTONE Instance, briefly; come, instance. CORIN Why, we are still handling our ewes, and their fells, you know, are greasy. TOUCHSTONE Why, do not your courtier's hands sweat? and is not the grease of a mutton as wholesome as the sweat of a man? Shallow, shallow. A better instance, I say; come. CORIN Besides, our hands are hard. TOUCHSTONE Your lips will feel them the sooner. Shallow again. A more sounder instance, come. CORIN And they are often tarred over with the surgery of our sheep: and would you have us kiss tar? The courtier's hands are perfumed with civet. TOUCHSTONE Most shallow man! thou worms-meat, in respect of a good piece of flesh indeed! Learn of the wise, and perpend: civet is of a baser birth than tar, the very uncleanly flux of a cat. Mend the instance, shepherd. CORIN You have too courtly a wit for me: I'll rest. TOUCHSTONE Wilt thou rest damned? God help thee, shallow man! God make incision in thee! thou art raw. CORIN Sir, I am a true labourer: I earn that I eat, get that I wear, owe no man hate, envy no man's happiness, glad of other men's good, content with my harm, and the greatest of my pride is to see my ewes graze and my lambs suck. TOUCHSTONE That is another simple sin in you, to bring the ewes and the rams together and to offer to get your living by the copulation of cattle; to be bawd to a bell-wether, and to betray a she-lamb of a twelvemonth to a crooked-pated, old, cuckoldly ram, out of all reasonable match. If thou beest not damned for this, the devil himself will have no shepherds; I cannot see else how thou shouldst 'scape. CORIN Here comes young Master Ganymede, my new mistress's brother. [Enter ROSALIND, with a paper, reading] ROSALIND From the east to western Ind, No jewel is like Rosalind. Her worth, being mounted on the wind, Through all the world bears Rosalind. All the pictures fairest lined Are but black to Rosalind. Let no fair be kept in mind But the fair of Rosalind. TOUCHSTONE I'll rhyme you so eight years together, dinners and suppers and sleeping-hours excepted: it is the right butter-women's rank to market. ROSALIND Out, fool! TOUCHSTONE For a taste: If a hart do lack a hind, Let him seek out Rosalind. If the cat will after kind, So be sure will Rosalind. Winter garments must be lined, So must slender Rosalind. They that reap must sheaf and bind; Then to cart with Rosalind. Sweetest nut hath sourest rind, Such a nut is Rosalind. He that sweetest rose will find Must find love's prick and Rosalind. This is the very false gallop of verses: why do you infect yourself with them? ROSALIND Peace, you dull fool! I found them on a tree. TOUCHSTONE Truly, the tree yields bad fruit. ROSALIND I'll graff it with you, and then I shall graff it with a medlar: then it will be the earliest fruit i' the country; for you'll be rotten ere you be half ripe, and that's the right virtue of the medlar. TOUCHSTONE You have said; but whether wisely or no, let the forest judge. [Enter CELIA, with a writing] ROSALIND Peace! Here comes my sister, reading: stand aside. CELIA [Reads] Why should this a desert be? For it is unpeopled? No: Tongues I'll hang on every tree, That shall civil sayings show: Some, how brief the life of man Runs his erring pilgrimage, That the stretching of a span Buckles in his sum of age; Some, of violated vows 'Twixt the souls of friend and friend: But upon the fairest boughs, Or at every sentence end, Will I Rosalinda write, Teaching all that read to know The quintessence of every sprite Heaven would in little show. Therefore Heaven Nature charged That one body should be fill'd With all graces wide-enlarged: Nature presently distill'd Helen's cheek, but not her heart, Cleopatra's majesty, Atalanta's better part, Sad Lucretia's modesty. Thus Rosalind of many parts By heavenly synod was devised, Of many faces, eyes and hearts, To have the touches dearest prized. Heaven would that she these gifts should have, And I to live and die her slave. ROSALIND O most gentle pulpiter! what tedious homily of love have you wearied your parishioners withal, and never cried 'Have patience, good people!' CELIA How now! back, friends! Shepherd, go off a little. Go with him, sirrah. TOUCHSTONE Come, shepherd, let us make an honourable retreat; though not with bag and baggage, yet with scrip and scrippage. [Exeunt CORIN and TOUCHSTONE] CELIA Didst thou hear these verses? ROSALIND O, yes, I heard them all, and more too; for some of them had in them more feet than the verses would bear. CELIA That's no matter: the feet might bear the verses. ROSALIND Ay, but the feet were lame and could not bear themselves without the verse and therefore stood lamely in the verse. CELIA But didst thou hear without wondering how thy name should be hanged and carved upon these trees? ROSALIND I was seven of the nine days out of the wonder before you came; for look here what I found on a palm-tree. I was never so be-rhymed since Pythagoras' time, that I was an Irish rat, which I can hardly remember. CELIA Trow you who hath done this? ROSALIND Is it a man? CELIA And a chain, that you once wore, about his neck. Change you colour? ROSALIND I prithee, who? CELIA O Lord, Lord! it is a hard matter for friends to meet; but mountains may be removed with earthquakes and so encounter. ROSALIND Nay, but who is it? CELIA Is it possible? ROSALIND Nay, I prithee now with most petitionary vehemence, tell me who it is. CELIA O wonderful, wonderful, and most wonderful wonderful! and yet again wonderful, and after that, out of all hooping! ROSALIND Good my complexion! dost thou think, though I am caparisoned like a man, I have a doublet and hose in my disposition? One inch of delay more is a South-sea of discovery; I prithee, tell me who is it quickly, and speak apace. I would thou couldst stammer, that thou mightst pour this concealed man out of thy mouth, as wine comes out of a narrow- mouthed bottle, either too much at once, or none at all. I prithee, take the cork out of thy mouth that may drink thy tidings. CELIA So you may put a man in your belly. ROSALIND Is he of God's making? What manner of man? Is his head worth a hat, or his chin worth a beard? CELIA Nay, he hath but a little beard. ROSALIND Why, God will send more, if the man will be thankful: let me stay the growth of his beard, if thou delay me not the knowledge of his chin. CELIA It is young Orlando, that tripped up the wrestler's heels and your heart both in an instant. ROSALIND Nay, but the devil take mocking: speak, sad brow and true maid. CELIA I' faith, coz, 'tis he. ROSALIND Orlando? CELIA Orlando. ROSALIND Alas the day! what shall I do with my doublet and hose? What did he when thou sawest him? What said he? How looked he? Wherein went he? What makes him here? Did he ask for me? Where remains he? How parted he with thee? and when shalt thou see him again? Answer me in one word. CELIA You must borrow me Gargantua's mouth first: 'tis a word too great for any mouth of this age's size. To say ay and no to these particulars is more than to answer in a catechism. ROSALIND But doth he know that I am in this forest and in man's apparel? Looks he as freshly as he did the day he wrestled? CELIA It is as easy to count atomies as to resolve the propositions of a lover; but take a taste of my finding him, and relish it with good observance. I found him under a tree, like a dropped acorn. ROSALIND It may well be called Jove's tree, when it drops forth such fruit. CELIA Give me audience, good madam. ROSALIND Proceed. CELIA There lay he, stretched along, like a wounded knight. ROSALIND Though it be pity to see such a sight, it well becomes the ground. CELIA Cry 'holla' to thy tongue, I prithee; it curvets unseasonably. He was furnished like a hunter. ROSALIND O, ominous! he comes to kill my heart. CELIA I would sing my song without a burden: thou bringest me out of tune. ROSALIND Do you not know I am a woman? when I think, I must speak. Sweet, say on. CELIA You bring me out. Soft! comes he not here? [Enter ORLANDO and JAQUES] ROSALIND 'Tis he: slink by, and note him. JAQUES I thank you for your company; but, good faith, I had as lief have been myself alone. ORLANDO And so had I; but yet, for fashion sake, I thank you too for your society. JAQUES God be wi' you: let's meet as little as we can. ORLANDO I do desire we may be better strangers. JAQUES I pray you, mar no more trees with writing love-songs in their barks. ORLANDO I pray you, mar no more of my verses with reading them ill-favouredly. JAQUES Rosalind is your love's name? ORLANDO Yes, just. JAQUES I do not like her name. ORLANDO There was no thought of pleasing you when she was christened. JAQUES What stature is she of? ORLANDO Just as high as my heart. JAQUES You are full of pretty answers. Have you not been acquainted with goldsmiths' wives, and conned them out of rings? ORLANDO Not so; but I answer you right painted cloth, from whence you have studied your questions. JAQUES You have a nimble wit: I think 'twas made of Atalanta's heels. Will you sit down with me? and we two will rail against our mistress the world and all our misery. ORLANDO I will chide no breather in the world but myself, against whom I know most faults. JAQUES The worst fault you have is to be in love. ORLANDO 'Tis a fault I will not change for your best virtue. I am weary of you. JAQUES By my troth, I was seeking for a fool when I found you. ORLANDO He is drowned in the brook: look but in, and you shall see him. JAQUES There I shall see mine own figure. ORLANDO Which I take to be either a fool or a cipher. JAQUES I'll tarry no longer with you: farewell, good Signior Love. ORLANDO I am glad of your departure: adieu, good Monsieur Melancholy. [Exit JAQUES] ROSALIND [Aside to CELIA] I will speak to him, like a saucy lackey and under that habit play the knave with him. Do you hear, forester? ORLANDO Very well: what would you? ROSALIND I pray you, what is't o'clock? ORLANDO You should ask me what time o' day: there's no clock in the forest. ROSALIND Then there is no true lover in the forest; else sighing every minute and groaning every hour would detect the lazy foot of Time as well as a clock. ORLANDO And why not the swift foot of Time? had not that been as proper? ROSALIND By no means, sir: Time travels in divers paces with divers persons. I'll tell you who Time ambles withal, who Time trots withal, who Time gallops withal and who he stands still withal. ORLANDO I prithee, who doth he trot withal? ROSALIND Marry, he trots hard with a young maid between the contract of her marriage and the day it is solemnized: if the interim be but a se'nnight, Time's pace is so hard that it seems the length of seven year. ORLANDO Who ambles Time withal? ROSALIND With a priest that lacks Latin and a rich man that hath not the gout, for the one sleeps easily because he cannot study, and the other lives merrily because he feels no pain, the one lacking the burden of lean and wasteful learning, the other knowing no burden of heavy tedious penury; these Time ambles withal. ORLANDO Who doth he gallop withal? ROSALIND With a thief to the gallows, for though he go as softly as foot can fall, he thinks himself too soon there. ORLANDO Who stays it still withal? ROSALIND With lawyers in the vacation, for they sleep between term and term and then they perceive not how Time moves. ORLANDO Where dwell you, pretty youth? ROSALIND With this shepherdess, my sister; here in the skirts of the forest, like fringe upon a petticoat. ORLANDO Are you native of this place? ROSALIND As the cony that you see dwell where she is kindled. ORLANDO Your accent is something finer than you could purchase in so removed a dwelling. ROSALIND I have been told so of many: but indeed an old religious uncle of mine taught me to speak, who was in his youth an inland man; one that knew courtship too well, for there he fell in love. I have heard him read many lectures against it, and I thank God I am not a woman, to be touched with so many giddy offences as he hath generally taxed their whole sex withal. ORLANDO Can you remember any of the principal evils that he laid to the charge of women? ROSALIND There were none principal; they were all like one another as half-pence are, every one fault seeming monstrous till his fellow fault came to match it. ORLANDO I prithee, recount some of them. ROSALIND No, I will not cast away my physic but on those that are sick. There is a man haunts the forest, that abuses our young plants with carving 'Rosalind' on their barks; hangs odes upon hawthorns and elegies on brambles, all, forsooth, deifying the name of Rosalind: if I could meet that fancy-monger I would give him some good counsel, for he seems to have the quotidian of love upon him. ORLANDO I am he that is so love-shaked: I pray you tell me your remedy. ROSALIND There is none of my uncle's marks upon you: he taught me how to know a man in love; in which cage of rushes I am sure you are not prisoner. ORLANDO What were his marks? ROSALIND A lean cheek, which you have not, a blue eye and sunken, which you have not, an unquestionable spirit, which you have not, a beard neglected, which you have not; but I pardon you for that, for simply your having in beard is a younger brother's revenue: then your hose should be ungartered, your bonnet unbanded, your sleeve unbuttoned, your shoe untied and every thing about you demonstrating a careless desolation; but you are no such man; you are rather point-device in your accoutrements as loving yourself than seeming the lover of any other. ORLANDO Fair youth, I would I could make thee believe I love. ROSALIND Me believe it! you may as soon make her that you love believe it; which, I warrant, she is apter to do than to confess she does: that is one of the points in the which women still give the lie to their consciences. But, in good sooth, are you he that hangs the verses on the trees, wherein Rosalind is so admired? ORLANDO I swear to thee, youth, by the white hand of Rosalind, I am that he, that unfortunate he. ROSALIND But are you so much in love as your rhymes speak? ORLANDO Neither rhyme nor reason can express how much. ROSALIND Love is merely a madness, and, I tell you, deserves as well a dark house and a whip as madmen do: and the reason why they are not so punished and cured is, that the lunacy is so ordinary that the whippers are in love too. Yet I profess curing it by counsel. ORLANDO Did you ever cure any so? ROSALIND Yes, one, and in this manner. He was to imagine me his love, his mistress; and I set him every day to woo me: at which time would I, being but a moonish youth, grieve, be effeminate, changeable, longing and liking, proud, fantastical, apish, shallow, inconstant, full of tears, full of smiles, for every passion something and for no passion truly any thing, as boys and women are for the most part cattle of this colour; would now like him, now loathe him; then entertain him, then forswear him; now weep for him, then spit at him; that I drave my suitor from his mad humour of love to a living humour of madness; which was, to forswear the full stream of the world, and to live in a nook merely monastic. And thus I cured him; and this way will I take upon me to wash your liver as clean as a sound sheep's heart, that there shall not be one spot of love in't. ORLANDO I would not be cured, youth. ROSALIND I would cure you, if you would but call me Rosalind and come every day to my cote and woo me. ORLANDO Now, by the faith of my love, I will: tell me where it is. ROSALIND Go with me to it and I'll show it you and by the way you shall tell me where in the forest you live. Will you go? ORLANDO With all my heart, good youth. ROSALIND Nay you must call me Rosalind. Come, sister, will you go? [Exeunt] AS YOU LIKE IT ACT III SCENE III The forest. [Enter TOUCHSTONE and AUDREY; JAQUES behind] TOUCHSTONE Come apace, good Audrey: I will fetch up your goats, Audrey. And how, Audrey? am I the man yet? doth my simple feature content you? AUDREY Your features! Lord warrant us! what features! TOUCHSTONE I am here with thee and thy goats, as the most capricious poet, honest Ovid, was among the Goths. JAQUES [Aside] O knowledge ill-inhabited, worse than Jove in a thatched house! TOUCHSTONE When a man's verses cannot be understood, nor a man's good wit seconded with the forward child Understanding, it strikes a man more dead than a great reckoning in a little room. Truly, I would the gods had made thee poetical. AUDREY I do not know what 'poetical' is: is it honest in deed and word? is it a true thing? TOUCHSTONE No, truly; for the truest poetry is the most feigning; and lovers are given to poetry, and what they swear in poetry may be said as lovers they do feign. AUDREY Do you wish then that the gods had made me poetical? TOUCHSTONE I do, truly; for thou swearest to me thou art honest: now, if thou wert a poet, I might have some hope thou didst feign. AUDREY Would you not have me honest? TOUCHSTONE No, truly, unless thou wert hard-favoured; for honesty coupled to beauty is to have honey a sauce to sugar. JAQUES [Aside] A material fool! AUDREY Well, I am not fair; and therefore I pray the gods make me honest. TOUCHSTONE Truly, and to cast away honesty upon a foul slut were to put good meat into an unclean dish. AUDREY I am not a slut, though I thank the gods I am foul. TOUCHSTONE Well, praised be the gods for thy foulness! sluttishness may come hereafter. But be it as it may be, I will marry thee, and to that end I have been with Sir Oliver Martext, the vicar of the next village, who hath promised to meet me in this place of the forest and to couple us. JAQUES [Aside] I would fain see this meeting. AUDREY Well, the gods give us joy! TOUCHSTONE Amen. A man may, if he were of a fearful heart, stagger in this attempt; for here we have no temple but the wood, no assembly but horn-beasts. But what though? Courage! As horns are odious, they are necessary. It is said, 'many a man knows no end of his goods:' right; many a man has good horns, and knows no end of them. Well, that is the dowry of his wife; 'tis none of his own getting. Horns? Even so. Poor men alone? No, no; the noblest deer hath them as huge as the rascal. Is the single man therefore blessed? No: as a walled town is more worthier than a village, so is the forehead of a married man more honourable than the bare brow of a bachelor; and by how much defence is better than no skill, by so much is a horn more precious than to want. Here comes Sir Oliver. [Enter SIR OLIVER MARTEXT] Sir Oliver Martext, you are well met: will you dispatch us here under this tree, or shall we go with you to your chapel? SIR OLIVER MARTEXT Is there none here to give the woman? TOUCHSTONE I will not take her on gift of any man. SIR OLIVER MARTEXT Truly, she must be given, or the marriage is not lawful. JAQUES [Advancing] Proceed, proceed I'll give her. TOUCHSTONE Good even, good Master What-ye-call't: how do you, sir? You are very well met: God 'ild you for your last company: I am very glad to see you: even a toy in hand here, sir: nay, pray be covered. JAQUES Will you be married, motley? TOUCHSTONE As the ox hath his bow, sir, the horse his curb and the falcon her bells, so man hath his desires; and as pigeons bill, so wedlock would be nibbling. JAQUES And will you, being a man of your breeding, be married under a bush like a beggar? Get you to church, and have a good priest that can tell you what marriage is: this fellow will but join you together as they join wainscot; then one of you will prove a shrunk panel and, like green timber, warp, warp. TOUCHSTONE [Aside] I am not in the mind but I were better to be married of him than of another: for he is not like to marry me well; and not being well married, it will be a good excuse for me hereafter to leave my wife. JAQUES Go thou with me, and let me counsel thee. TOUCHSTONE 'Come, sweet Audrey: We must be married, or we must live in bawdry. Farewell, good Master Oliver: not,-- O sweet Oliver, O brave Oliver, Leave me not behind thee: but,-- Wind away, Begone, I say, I will not to wedding with thee. [Exeunt JAQUES, TOUCHSTONE and AUDREY] SIR OLIVER MARTEXT 'Tis no matter: ne'er a fantastical knave of them all shall flout me out of my calling. [Exit] AS YOU LIKE IT ACT III SCENE IV The forest. [Enter ROSALIND and CELIA] ROSALIND Never talk to me; I will weep. CELIA Do, I prithee; but yet have the grace to consider that tears do not become a man. ROSALIND But have I not cause to weep? CELIA As good cause as one would desire; therefore weep. ROSALIND His very hair is of the dissembling colour. CELIA Something browner than Judas's marry, his kisses are Judas's own children. ROSALIND I' faith, his hair is of a good colour. CELIA An excellent colour: your chestnut was ever the only colour. ROSALIND And his kissing is as full of sanctity as the touch of holy bread. CELIA He hath bought a pair of cast lips of Diana: a nun of winter's sisterhood kisses not more religiously; the very ice of chastity is in them. ROSALIND But why did he swear he would come this morning, and comes not? CELIA Nay, certainly, there is no truth in him. ROSALIND Do you think so? CELIA Yes; I think he is not a pick-purse nor a horse-stealer, but for his verity in love, I do think him as concave as a covered goblet or a worm-eaten nut. ROSALIND Not true in love? CELIA Yes, when he is in; but I think he is not in. ROSALIND You have heard him swear downright he was. CELIA 'Was' is not 'is:' besides, the oath of a lover is no stronger than the word of a tapster; they are both the confirmer of false reckonings. He attends here in the forest on the duke your father. ROSALIND I met the duke yesterday and had much question with him: he asked me of what parentage I was; I told him, of as good as he; so he laughed and let me go. But what talk we of fathers, when there is such a man as Orlando? CELIA O, that's a brave man! he writes brave verses, speaks brave words, swears brave oaths and breaks them bravely, quite traverse, athwart the heart of his lover; as a puisny tilter, that spurs his horse but on one side, breaks his staff like a noble goose: but all's brave that youth mounts and folly guides. Who comes here? [Enter CORIN] CORIN Mistress and master, you have oft inquired After the shepherd that complain'd of love, Who you saw sitting by me on the turf, Praising the proud disdainful shepherdess That was his mistress. CELIA Well, and what of him? CORIN If you will see a pageant truly play'd, Between the pale complexion of true love And the red glow of scorn and proud disdain, Go hence a little and I shall conduct you, If you will mark it. ROSALIND O, come, let us remove: The sight of lovers feedeth those in love. Bring us to this sight, and you shall say I'll prove a busy actor in their play. [Exeunt] AS YOU LIKE IT ACT III SCENE V Another part of the forest. [Enter SILVIUS and PHEBE] SILVIUS Sweet Phebe, do not scorn me; do not, Phebe; Say that you love me not, but say not so In bitterness. The common executioner, Whose heart the accustom'd sight of death makes hard, Falls not the axe upon the humbled neck But first begs pardon: will you sterner be Than he that dies and lives by bloody drops? [Enter ROSALIND, CELIA, and CORIN, behind] PHEBE I would not be thy executioner: I fly thee, for I would not injure thee. Thou tell'st me there is murder in mine eye: 'Tis pretty, sure, and very probable, That eyes, that are the frail'st and softest things, Who shut their coward gates on atomies, Should be call'd tyrants, butchers, murderers! Now I do frown on thee with all my heart; And if mine eyes can wound, now let them kill thee: Now counterfeit to swoon; why now fall down; Or if thou canst not, O, for shame, for shame, Lie not, to say mine eyes are murderers! Now show the wound mine eye hath made in thee: Scratch thee but with a pin, and there remains Some scar of it; lean but upon a rush, The cicatrice and capable impressure Thy palm some moment keeps; but now mine eyes, Which I have darted at thee, hurt thee not, Nor, I am sure, there is no force in eyes That can do hurt. SILVIUS O dear Phebe, If ever,--as that ever may be near,-- You meet in some fresh cheek the power of fancy, Then shall you know the wounds invisible That love's keen arrows make. PHEBE But till that time Come not thou near me: and when that time comes, Afflict me with thy mocks, pity me not; As till that time I shall not pity thee. ROSALIND And why, I pray you? Who might be your mother, That you insult, exult, and all at once, Over the wretched? What though you have no beauty,-- As, by my faith, I see no more in you Than without candle may go dark to bed-- Must you be therefore proud and pitiless? Why, what means this? Why do you look on me? I see no more in you than in the ordinary Of nature's sale-work. 'Od's my little life, I think she means to tangle my eyes too! No, faith, proud mistress, hope not after it: 'Tis not your inky brows, your black silk hair, Your bugle eyeballs, nor your cheek of cream, That can entame my spirits to your worship. You foolish shepherd, wherefore do you follow her, Like foggy south puffing with wind and rain? You are a thousand times a properer man Than she a woman: 'tis such fools as you That makes the world full of ill-favour'd children: 'Tis not her glass, but you, that flatters her; And out of you she sees herself more proper Than any of her lineaments can show her. But, mistress, know yourself: down on your knees, And thank heaven, fasting, for a good man's love: For I must tell you friendly in your ear, Sell when you can: you are not for all markets: Cry the man mercy; love him; take his offer: Foul is most foul, being foul to be a scoffer. So take her to thee, shepherd: fare you well. PHEBE Sweet youth, I pray you, chide a year together: I had rather hear you chide than this man woo. ROSALIND He's fallen in love with your foulness and she'll fall in love with my anger. If it be so, as fast as she answers thee with frowning looks, I'll sauce her with bitter words. Why look you so upon me? PHEBE For no ill will I bear you. ROSALIND I pray you, do not fall in love with me, For I am falser than vows made in wine: Besides, I like you not. If you will know my house, 'Tis at the tuft of olives here hard by. Will you go, sister? Shepherd, ply her hard. Come, sister. Shepherdess, look on him better, And be not proud: though all the world could see, None could be so abused in sight as he. Come, to our flock. [Exeunt ROSALIND, CELIA and CORIN] PHEBE Dead Shepherd, now I find thy saw of might, 'Who ever loved that loved not at first sight?' SILVIUS Sweet Phebe,-- PHEBE Ha, what say'st thou, Silvius? SILVIUS Sweet Phebe, pity me. PHEBE Why, I am sorry for thee, gentle Silvius. SILVIUS Wherever sorrow is, relief would be: If you do sorrow at my grief in love, By giving love your sorrow and my grief Were both extermined. PHEBE Thou hast my love: is not that neighbourly? SILVIUS I would have you. PHEBE Why, that were covetousness. Silvius, the time was that I hated thee, And yet it is not that I bear thee love; But since that thou canst talk of love so well, Thy company, which erst was irksome to me, I will endure, and I'll employ thee too: But do not look for further recompense Than thine own gladness that thou art employ'd. SILVIUS So holy and so perfect is my love, And I in such a poverty of grace, That I shall think it a most plenteous crop To glean the broken ears after the man That the main harvest reaps: loose now and then A scatter'd smile, and that I'll live upon. PHEBE Know'st now the youth that spoke to me erewhile? SILVIUS Not very well, but I have met him oft; And he hath bought the cottage and the bounds That the old carlot once was master of. PHEBE Think not I love him, though I ask for him: 'Tis but a peevish boy; yet he talks well; But what care I for words? yet words do well When he that speaks them pleases those that hear. It is a pretty youth: not very pretty: But, sure, he's proud, and yet his pride becomes him: He'll make a proper man: the best thing in him Is his complexion; and faster than his tongue Did make offence his eye did heal it up. He is not very tall; yet for his years he's tall: His leg is but so so; and yet 'tis well: There was a pretty redness in his lip, A little riper and more lusty red Than that mix'd in his cheek; 'twas just the difference Between the constant red and mingled damask. There be some women, Silvius, had they mark'd him In parcels as I did, would have gone near To fall in love with him; but, for my part, I love him not nor hate him not; and yet I have more cause to hate him than to love him: For what had he to do to chide at me? He said mine eyes were black and my hair black: And, now I am remember'd, scorn'd at me: I marvel why I answer'd not again: But that's all one; omittance is no quittance. I'll write to him a very taunting letter, And thou shalt bear it: wilt thou, Silvius? SILVIUS Phebe, with all my heart. PHEBE I'll write it straight; The matter's in my head and in my heart: I will be bitter with him and passing short. Go with me, Silvius. [Exeunt] AS YOU LIKE IT ACT IV SCENE I The forest. [Enter ROSALIND, CELIA, and JAQUES] JAQUES I prithee, pretty youth, let me be better acquainted with thee. ROSALIND They say you are a melancholy fellow. JAQUES I am so; I do love it better than laughing. ROSALIND Those that are in extremity of either are abominable fellows and betray themselves to every modern censure worse than drunkards. JAQUES Why, 'tis good to be sad and say nothing. ROSALIND Why then, 'tis good to be a post. JAQUES I have neither the scholar's melancholy, which is emulation, nor the musician's, which is fantastical, nor the courtier's, which is proud, nor the soldier's, which is ambitious, nor the lawyer's, which is politic, nor the lady's, which is nice, nor the lover's, which is all these: but it is a melancholy of mine own, compounded of many simples, extracted from many objects, and indeed the sundry's contemplation of my travels, in which my often rumination wraps me m a most humorous sadness. ROSALIND A traveller! By my faith, you have great reason to be sad: I fear you have sold your own lands to see other men's; then, to have seen much and to have nothing, is to have rich eyes and poor hands. JAQUES Yes, I have gained my experience. ROSALIND And your experience makes you sad: I had rather have a fool to make me merry than experience to make me sad; and to travel for it too! [Enter ORLANDO] ORLANDO Good day and happiness, dear Rosalind! JAQUES Nay, then, God be wi' you, an you talk in blank verse. [Exit] ROSALIND Farewell, Monsieur Traveller: look you lisp and wear strange suits, disable all the benefits of your own country, be out of love with your nativity and almost chide God for making you that countenance you are, or I will scarce think you have swam in a gondola. Why, how now, Orlando! where have you been all this while? You a lover! An you serve me such another trick, never come in my sight more. ORLANDO My fair Rosalind, I come within an hour of my promise. ROSALIND Break an hour's promise in love! He that will divide a minute into a thousand parts and break but a part of the thousandth part of a minute in the affairs of love, it may be said of him that Cupid hath clapped him o' the shoulder, but I'll warrant him heart-whole. ORLANDO Pardon me, dear Rosalind. ROSALIND Nay, an you be so tardy, come no more in my sight: I had as lief be wooed of a snail. ORLANDO Of a snail? ROSALIND Ay, of a snail; for though he comes slowly, he carries his house on his head; a better jointure, I think, than you make a woman: besides he brings his destiny with him. ORLANDO What's that? ROSALIND Why, horns, which such as you are fain to be beholding to your wives for: but he comes armed in his fortune and prevents the slander of his wife. ORLANDO Virtue is no horn-maker; and my Rosalind is virtuous. ROSALIND And I am your Rosalind. CELIA It pleases him to call you so; but he hath a Rosalind of a better leer than you. ROSALIND Come, woo me, woo me, for now I am in a holiday humour and like enough to consent. What would you say to me now, an I were your very very Rosalind? ORLANDO I would kiss before I spoke. ROSALIND Nay, you were better speak first, and when you were gravelled for lack of matter, you might take occasion to kiss. Very good orators, when they are out, they will spit; and for lovers lacking--God warn us!--matter, the cleanliest shift is to kiss. ORLANDO How if the kiss be denied? ROSALIND Then she puts you to entreaty, and there begins new matter. ORLANDO Who could be out, being before his beloved mistress? ROSALIND Marry, that should you, if I were your mistress, or I should think my honesty ranker than my wit. ORLANDO What, of my suit? ROSALIND Not out of your apparel, and yet out of your suit. Am not I your Rosalind? ORLANDO I take some joy to say you are, because I would be talking of her. ROSALIND Well in her person I say I will not have you. ORLANDO Then in mine own person I die. ROSALIND No, faith, die by attorney. The poor world is almost six thousand years old, and in all this time there was not any man died in his own person, videlicit, in a love-cause. Troilus had his brains dashed out with a Grecian club; yet he did what he could to die before, and he is one of the patterns of love. Leander, he would have lived many a fair year, though Hero had turned nun, if it had not been for a hot midsummer night; for, good youth, he went but forth to wash him in the Hellespont and being taken with the cramp was drowned and the foolish coroners of that age found it was 'Hero of Sestos.' But these are all lies: men have died from time to time and worms have eaten them, but not for love. ORLANDO I would not have my right Rosalind of this mind, for, I protest, her frown might kill me. ROSALIND By this hand, it will not kill a fly. But come, now I will be your Rosalind in a more coming-on disposition, and ask me what you will. I will grant it. ORLANDO Then love me, Rosalind. ROSALIND Yes, faith, will I, Fridays and Saturdays and all. ORLANDO And wilt thou have me? ROSALIND Ay, and twenty such. ORLANDO What sayest thou? ROSALIND Are you not good? ORLANDO I hope so. ROSALIND Why then, can one desire too much of a good thing? Come, sister, you shall be the priest and marry us. Give me your hand, Orlando. What do you say, sister? ORLANDO Pray thee, marry us. CELIA I cannot say the words. ROSALIND You must begin, 'Will you, Orlando--' CELIA Go to. Will you, Orlando, have to wife this Rosalind? ORLANDO I will. ROSALIND Ay, but when? ORLANDO Why now; as fast as she can marry us. ROSALIND Then you must say 'I take thee, Rosalind, for wife.' ORLANDO I take thee, Rosalind, for wife. ROSALIND I might ask you for your commission; but I do take thee, Orlando, for my husband: there's a girl goes before the priest; and certainly a woman's thought runs before her actions. ORLANDO So do all thoughts; they are winged. ROSALIND Now tell me how long you would have her after you have possessed her. ORLANDO For ever and a day. ROSALIND Say 'a day,' without the 'ever.' No, no, Orlando; men are April when they woo, December when they wed: maids are May when they are maids, but the sky changes when they are wives. I will be more jealous of thee than a Barbary cock-pigeon over his hen, more clamorous than a parrot against rain, more new-fangled than an ape, more giddy in my desires than a monkey: I will weep for nothing, like Diana in the fountain, and I will do that when you are disposed to be merry; I will laugh like a hyen, and that when thou art inclined to sleep. ORLANDO But will my Rosalind do so? ROSALIND By my life, she will do as I do. ORLANDO O, but she is wise. ROSALIND Or else she could not have the wit to do this: the wiser, the waywarder: make the doors upon a woman's wit and it will out at the casement; shut that and 'twill out at the key-hole; stop that, 'twill fly with the smoke out at the chimney. ORLANDO A man that had a wife with such a wit, he might say 'Wit, whither wilt?' ROSALIND Nay, you might keep that cheque for it till you met your wife's wit going to your neighbour's bed. ORLANDO And what wit could wit have to excuse that? ROSALIND Marry, to say she came to seek you there. You shall never take her without her answer, unless you take her without her tongue. O, that woman that cannot make her fault her husband's occasion, let her never nurse her child herself, for she will breed it like a fool! ORLANDO For these two hours, Rosalind, I will leave thee. ROSALIND Alas! dear love, I cannot lack thee two hours. ORLANDO I must attend the duke at dinner: by two o'clock I will be with thee again. ROSALIND Ay, go your ways, go your ways; I knew what you would prove: my friends told me as much, and I thought no less: that flattering tongue of yours won me: 'tis but one cast away, and so, come, death! Two o'clock is your hour? ORLANDO Ay, sweet Rosalind. ROSALIND By my troth, and in good earnest, and so God mend me, and by all pretty oaths that are not dangerous, if you break one jot of your promise or come one minute behind your hour, I will think you the most pathetical break-promise and the most hollow lover and the most unworthy of her you call Rosalind that may be chosen out of the gross band of the unfaithful: therefore beware my censure and keep your promise. ORLANDO With no less religion than if thou wert indeed my Rosalind: so adieu. ROSALIND Well, Time is the old justice that examines all such offenders, and let Time try: adieu. [Exit ORLANDO] CELIA You have simply misused our sex in your love-prate: we must have your doublet and hose plucked over your head, and show the world what the bird hath done to her own nest. ROSALIND O coz, coz, coz, my pretty little coz, that thou didst know how many fathom deep I am in love! But it cannot be sounded: my affection hath an unknown bottom, like the bay of Portugal. CELIA Or rather, bottomless, that as fast as you pour affection in, it runs out. ROSALIND No, that same wicked bastard of Venus that was begot of thought, conceived of spleen and born of madness, that blind rascally boy that abuses every one's eyes because his own are out, let him be judge how deep I am in love. I'll tell thee, Aliena, I cannot be out of the sight of Orlando: I'll go find a shadow and sigh till he come. CELIA And I'll sleep. [Exeunt] AS YOU LIKE IT ACT IV SCENE II The forest. [Enter JAQUES, Lords, and Foresters] JAQUES Which is he that killed the deer? A Lord Sir, it was I. JAQUES Let's present him to the duke, like a Roman conqueror; and it would do well to set the deer's horns upon his head, for a branch of victory. Have you no song, forester, for this purpose? Forester Yes, sir. JAQUES Sing it: 'tis no matter how it be in tune, so it make noise enough. SONG. Forester What shall he have that kill'd the deer? His leather skin and horns to wear. Then sing him home; [The rest shall bear this burden] Take thou no scorn to wear the horn; It was a crest ere thou wast born: Thy father's father wore it, And thy father bore it: The horn, the horn, the lusty horn Is not a thing to laugh to scorn. [Exeunt] AS YOU LIKE IT ACT IV SCENE III The forest. [Enter ROSALIND and CELIA] ROSALIND How say you now? Is it not past two o'clock? and here much Orlando! CELIA I warrant you, with pure love and troubled brain, he hath ta'en his bow and arrows and is gone forth to sleep. Look, who comes here. [Enter SILVIUS] SILVIUS My errand is to you, fair youth; My gentle Phebe bid me give you this: I know not the contents; but, as I guess By the stern brow and waspish action Which she did use as she was writing of it, It bears an angry tenor: pardon me: I am but as a guiltless messenger. ROSALIND Patience herself would startle at this letter And play the swaggerer; bear this, bear all: She says I am not fair, that I lack manners; She calls me proud, and that she could not love me, Were man as rare as phoenix. 'Od's my will! Her love is not the hare that I do hunt: Why writes she so to me? Well, shepherd, well, This is a letter of your own device. SILVIUS No, I protest, I know not the contents: Phebe did write it. ROSALIND Come, come, you are a fool And turn'd into the extremity of love. I saw her hand: she has a leathern hand. A freestone-colour'd hand; I verily did think That her old gloves were on, but 'twas her hands: She has a huswife's hand; but that's no matter: I say she never did invent this letter; This is a man's invention and his hand. SILVIUS Sure, it is hers. ROSALIND Why, 'tis a boisterous and a cruel style. A style for-challengers; why, she defies me, Like Turk to Christian: women's gentle brain Could not drop forth such giant-rude invention Such Ethiope words, blacker in their effect Than in their countenance. Will you hear the letter? SILVIUS So please you, for I never heard it yet; Yet heard too much of Phebe's cruelty. ROSALIND She Phebes me: mark how the tyrant writes. [Reads] Art thou god to shepherd turn'd, That a maiden's heart hath burn'd? Can a woman rail thus? SILVIUS Call you this railing? ROSALIND [Reads] Why, thy godhead laid apart, Warr'st thou with a woman's heart? Did you ever hear such railing? Whiles the eye of man did woo me, That could do no vengeance to me. Meaning me a beast. If the scorn of your bright eyne Have power to raise such love in mine, Alack, in me what strange effect Would they work in mild aspect! Whiles you chid me, I did love; How then might your prayers move! He that brings this love to thee Little knows this love in me: And by him seal up thy mind; Whether that thy youth and kind Will the faithful offer take Of me and all that I can make; Or else by him my love deny, And then I'll study how to die. SILVIUS Call you this chiding? CELIA Alas, poor shepherd! ROSALIND Do you pity him? no, he deserves no pity. Wilt thou love such a woman? What, to make thee an instrument and play false strains upon thee! not to be endured! Well, go your way to her, for I see love hath made thee a tame snake, and say this to her: that if she love me, I charge her to love thee; if she will not, I will never have her unless thou entreat for her. If you be a true lover, hence, and not a word; for here comes more company. [Exit SILVIUS] [Enter OLIVER] OLIVER Good morrow, fair ones: pray you, if you know, Where in the purlieus of this forest stands A sheep-cote fenced about with olive trees? CELIA West of this place, down in the neighbour bottom: The rank of osiers by the murmuring stream Left on your right hand brings you to the place. But at this hour the house doth keep itself; There's none within. OLIVER If that an eye may profit by a tongue, Then should I know you by description; Such garments and such years: 'The boy is fair, Of female favour, and bestows himself Like a ripe sister: the woman low And browner than her brother.' Are not you The owner of the house I did inquire for? CELIA It is no boast, being ask'd, to say we are. OLIVER Orlando doth commend him to you both, And to that youth he calls his Rosalind He sends this bloody napkin. Are you he? ROSALIND I am: what must we understand by this? OLIVER Some of my shame; if you will know of me What man I am, and how, and why, and where This handkercher was stain'd. CELIA I pray you, tell it. OLIVER When last the young Orlando parted from you He left a promise to return again Within an hour, and pacing through the forest, Chewing the food of sweet and bitter fancy, Lo, what befell! he threw his eye aside, And mark what object did present itself: Under an oak, whose boughs were moss'd with age And high top bald with dry antiquity, A wretched ragged man, o'ergrown with hair, Lay sleeping on his back: about his neck A green and gilded snake had wreathed itself, Who with her head nimble in threats approach'd The opening of his mouth; but suddenly, Seeing Orlando, it unlink'd itself, And with indented glides did slip away Into a bush: under which bush's shade A lioness, with udders all drawn dry, Lay couching, head on ground, with catlike watch, When that the sleeping man should stir; for 'tis The royal disposition of that beast To prey on nothing that doth seem as dead: This seen, Orlando did approach the man And found it was his brother, his elder brother. CELIA O, I have heard him speak of that same brother; And he did render him the most unnatural That lived amongst men. OLIVER And well he might so do, For well I know he was unnatural. ROSALIND But, to Orlando: did he leave him there, Food to the suck'd and hungry lioness? OLIVER Twice did he turn his back and purposed so; But kindness, nobler ever than revenge, And nature, stronger than his just occasion, Made him give battle to the lioness, Who quickly fell before him: in which hurtling From miserable slumber I awaked. CELIA Are you his brother? ROSALIND Wast you he rescued? CELIA Was't you that did so oft contrive to kill him? OLIVER 'Twas I; but 'tis not I I do not shame To tell you what I was, since my conversion So sweetly tastes, being the thing I am. ROSALIND But, for the bloody napkin? OLIVER By and by. When from the first to last betwixt us two Tears our recountments had most kindly bathed, As how I came into that desert place:-- In brief, he led me to the gentle duke, Who gave me fresh array and entertainment, Committing me unto my brother's love; Who led me instantly unto his cave, There stripp'd himself, and here upon his arm The lioness had torn some flesh away, Which all this while had bled; and now he fainted And cried, in fainting, upon Rosalind. Brief, I recover'd him, bound up his wound; And, after some small space, being strong at heart, He sent me hither, stranger as I am, To tell this story, that you might excuse His broken promise, and to give this napkin Dyed in his blood unto the shepherd youth That he in sport doth call his Rosalind. [ROSALIND swoons] CELIA Why, how now, Ganymede! sweet Ganymede! OLIVER Many will swoon when they do look on blood. CELIA There is more in it. Cousin Ganymede! OLIVER Look, he recovers. ROSALIND I would I were at home. CELIA We'll lead you thither. I pray you, will you take him by the arm? OLIVER Be of good cheer, youth: you a man! you lack a man's heart. ROSALIND I do so, I confess it. Ah, sirrah, a body would think this was well counterfeited! I pray you, tell your brother how well I counterfeited. Heigh-ho! OLIVER This was not counterfeit: there is too great testimony in your complexion that it was a passion of earnest. ROSALIND Counterfeit, I assure you. OLIVER Well then, take a good heart and counterfeit to be a man. ROSALIND So I do: but, i' faith, I should have been a woman by right. CELIA Come, you look paler and paler: pray you, draw homewards. Good sir, go with us. OLIVER That will I, for I must bear answer back How you excuse my brother, Rosalind. ROSALIND I shall devise something: but, I pray you, commend my counterfeiting to him. Will you go? [Exeunt] AS YOU LIKE IT ACT V SCENE I The forest. [Enter TOUCHSTONE and AUDREY] TOUCHSTONE We shall find a time, Audrey; patience, gentle Audrey. AUDREY Faith, the priest was good enough, for all the old gentleman's saying. TOUCHSTONE A most wicked Sir Oliver, Audrey, a most vile Martext. But, Audrey, there is a youth here in the forest lays claim to you. AUDREY Ay, I know who 'tis; he hath no interest in me in the world: here comes the man you mean. TOUCHSTONE It is meat and drink to me to see a clown: by my troth, we that have good wits have much to answer for; we shall be flouting; we cannot hold. [Enter WILLIAM] WILLIAM Good even, Audrey. AUDREY God ye good even, William. WILLIAM And good even to you, sir. TOUCHSTONE Good even, gentle friend. Cover thy head, cover thy head; nay, prithee, be covered. How old are you, friend? WILLIAM Five and twenty, sir. TOUCHSTONE A ripe age. Is thy name William? WILLIAM William, sir. TOUCHSTONE A fair name. Wast born i' the forest here? WILLIAM Ay, sir, I thank God. TOUCHSTONE 'Thank God;' a good answer. Art rich? WILLIAM Faith, sir, so so. TOUCHSTONE 'So so' is good, very good, very excellent good; and yet it is not; it is but so so. Art thou wise? WILLIAM Ay, sir, I have a pretty wit. TOUCHSTONE Why, thou sayest well. I do now remember a saying, 'The fool doth think he is wise, but the wise man knows himself to be a fool.' The heathen philosopher, when he had a desire to eat a grape, would open his lips when he put it into his mouth; meaning thereby that grapes were made to eat and lips to open. You do love this maid? WILLIAM I do, sir. TOUCHSTONE Give me your hand. Art thou learned? WILLIAM No, sir. TOUCHSTONE Then learn this of me: to have, is to have; for it is a figure in rhetoric that drink, being poured out of a cup into a glass, by filling the one doth empty the other; for all your writers do consent that ipse is he: now, you are not ipse, for I am he. WILLIAM Which he, sir? TOUCHSTONE He, sir, that must marry this woman. Therefore, you clown, abandon,--which is in the vulgar leave,--the society,--which in the boorish is company,--of this female,--which in the common is woman; which together is, abandon the society of this female, or, clown, thou perishest; or, to thy better understanding, diest; or, to wit I kill thee, make thee away, translate thy life into death, thy liberty into bondage: I will deal in poison with thee, or in bastinado, or in steel; I will bandy with thee in faction; I will o'errun thee with policy; I will kill thee a hundred and fifty ways: therefore tremble and depart. AUDREY Do, good William. WILLIAM God rest you merry, sir. [Exit] [Enter CORIN] CORIN Our master and mistress seeks you; come, away, away! TOUCHSTONE Trip, Audrey! trip, Audrey! I attend, I attend. [Exeunt] AS YOU LIKE IT ACT V SCENE II The forest. [Enter ORLANDO and OLIVER] ORLANDO Is't possible that on so little acquaintance you should like her? that but seeing you should love her? and loving woo? and, wooing, she should grant? and will you persever to enjoy her? OLIVER Neither call the giddiness of it in question, the poverty of her, the small acquaintance, my sudden wooing, nor her sudden consenting; but say with me, I love Aliena; say with her that she loves me; consent with both that we may enjoy each other: it shall be to your good; for my father's house and all the revenue that was old Sir Rowland's will I estate upon you, and here live and die a shepherd. ORLANDO You have my consent. Let your wedding be to-morrow: thither will I invite the duke and all's contented followers. Go you and prepare Aliena; for look you, here comes my Rosalind. [Enter ROSALIND] ROSALIND God save you, brother. OLIVER And you, fair sister. [Exit] ROSALIND O, my dear Orlando, how it grieves me to see thee wear thy heart in a scarf! ORLANDO It is my arm. ROSALIND I thought thy heart had been wounded with the claws of a lion. ORLANDO Wounded it is, but with the eyes of a lady. ROSALIND Did your brother tell you how I counterfeited to swoon when he showed me your handkerchief? ORLANDO Ay, and greater wonders than that. ROSALIND O, I know where you are: nay, 'tis true: there was never any thing so sudden but the fight of two rams and Caesar's thrasonical brag of 'I came, saw, and overcame:' for your brother and my sister no sooner met but they looked, no sooner looked but they loved, no sooner loved but they sighed, no sooner sighed but they asked one another the reason, no sooner knew the reason but they sought the remedy; and in these degrees have they made a pair of stairs to marriage which they will climb incontinent, or else be incontinent before marriage: they are in the very wrath of love and they will together; clubs cannot part them. ORLANDO They shall be married to-morrow, and I will bid the duke to the nuptial. But, O, how bitter a thing it is to look into happiness through another man's eyes! By so much the more shall I to-morrow be at the height of heart-heaviness, by how much I shall think my brother happy in having what he wishes for. ROSALIND Why then, to-morrow I cannot serve your turn for Rosalind? ORLANDO I can live no longer by thinking. ROSALIND I will weary you then no longer with idle talking. Know of me then, for now I speak to some purpose, that I know you are a gentleman of good conceit: I speak not this that you should bear a good opinion of my knowledge, insomuch I say I know you are; neither do I labour for a greater esteem than may in some little measure draw a belief from you, to do yourself good and not to grace me. Believe then, if you please, that I can do strange things: I have, since I was three year old, conversed with a magician, most profound in his art and yet not damnable. If you do love Rosalind so near the heart as your gesture cries it out, when your brother marries Aliena, shall you marry her: I know into what straits of fortune she is driven; and it is not impossible to me, if it appear not inconvenient to you, to set her before your eyes tomorrow human as she is and without any danger. ORLANDO Speakest thou in sober meanings? ROSALIND By my life, I do; which I tender dearly, though I say I am a magician. Therefore, put you in your best array: bid your friends; for if you will be married to-morrow, you shall, and to Rosalind, if you will. [Enter SILVIUS and PHEBE] Look, here comes a lover of mine and a lover of hers. PHEBE Youth, you have done me much ungentleness, To show the letter that I writ to you. ROSALIND I care not if I have: it is my study To seem despiteful and ungentle to you: You are there followed by a faithful shepherd; Look upon him, love him; he worships you. PHEBE Good shepherd, tell this youth what 'tis to love. SILVIUS It is to be all made of sighs and tears; And so am I for Phebe. PHEBE And I for Ganymede. ORLANDO And I for Rosalind. ROSALIND And I for no woman. SILVIUS It is to be all made of faith and service; And so am I for Phebe. PHEBE And I for Ganymede. ORLANDO And I for Rosalind. ROSALIND And I for no woman. SILVIUS It is to be all made of fantasy, All made of passion and all made of wishes, All adoration, duty, and observance, All humbleness, all patience and impatience, All purity, all trial, all observance; And so am I for Phebe. PHEBE And so am I for Ganymede. ORLANDO And so am I for Rosalind. ROSALIND And so am I for no woman. PHEBE If this be so, why blame you me to love you? SILVIUS If this be so, why blame you me to love you? ORLANDO If this be so, why blame you me to love you? ROSALIND Who do you speak to, 'Why blame you me to love you?' ORLANDO To her that is not here, nor doth not hear. ROSALIND Pray you, no more of this; 'tis like the howling of Irish wolves against the moon. [To SILVIUS] I will help you, if I can: [To PHEBE] I would love you, if I could. To-morrow meet me all together. [To PHEBE] I will marry you, if ever I marry woman, and I'll be married to-morrow: [To ORLANDO] I will satisfy you, if ever I satisfied man, and you shall be married to-morrow: [To SILVIUS] I will content you, if what pleases you contents you, and you shall be married to-morrow. [To ORLANDO] As you love Rosalind, meet: [To SILVIUS] as you love Phebe, meet: and as I love no woman, I'll meet. So fare you well: I have left you commands. SILVIUS I'll not fail, if I live. PHEBE Nor I. ORLANDO Nor I. [Exeunt] AS YOU LIKE IT ACT V SCENE III The forest. [Enter TOUCHSTONE and AUDREY] TOUCHSTONE To-morrow is the joyful day, Audrey; to-morrow will we be married. AUDREY I do desire it with all my heart; and I hope it is no dishonest desire to desire to be a woman of the world. Here comes two of the banished duke's pages. [Enter two Pages] First Page Well met, honest gentleman. TOUCHSTONE By my troth, well met. Come, sit, sit, and a song. Second Page We are for you: sit i' the middle. First Page Shall we clap into't roundly, without hawking or spitting or saying we are hoarse, which are the only prologues to a bad voice? Second Page I'faith, i'faith; and both in a tune, like two gipsies on a horse. SONG. It was a lover and his lass, With a hey, and a ho, and a hey nonino, That o'er the green corn-field did pass In the spring time, the only pretty ring time, When birds do sing, hey ding a ding, ding: Sweet lovers love the spring. Between the acres of the rye, With a hey, and a ho, and a hey nonino These pretty country folks would lie, In spring time, &c. This carol they began that hour, With a hey, and a ho, and a hey nonino, How that a life was but a flower In spring time, &c. And therefore take the present time, With a hey, and a ho, and a hey nonino; For love is crowned with the prime In spring time, &c. TOUCHSTONE Truly, young gentlemen, though there was no great matter in the ditty, yet the note was very untuneable. First Page You are deceived, sir: we kept time, we lost not our time. TOUCHSTONE By my troth, yes; I count it but time lost to hear such a foolish song. God be wi' you; and God mend your voices! Come, Audrey. [Exeunt] AS YOU LIKE IT ACT V SCENE IV The forest. [Enter DUKE SENIOR, AMIENS, JAQUES, ORLANDO, OLIVER, and CELIA] DUKE SENIOR Dost thou believe, Orlando, that the boy Can do all this that he hath promised? ORLANDO I sometimes do believe, and sometimes do not; As those that fear they hope, and know they fear. [Enter ROSALIND, SILVIUS, and PHEBE] ROSALIND Patience once more, whiles our compact is urged: You say, if I bring in your Rosalind, You will bestow her on Orlando here? DUKE SENIOR That would I, had I kingdoms to give with her. ROSALIND And you say, you will have her, when I bring her? ORLANDO That would I, were I of all kingdoms king. ROSALIND You say, you'll marry me, if I be willing? PHEBE That will I, should I die the hour after. ROSALIND But if you do refuse to marry me, You'll give yourself to this most faithful shepherd? PHEBE So is the bargain. ROSALIND You say, that you'll have Phebe, if she will? SILVIUS Though to have her and death were both one thing. ROSALIND I have promised to make all this matter even. Keep you your word, O duke, to give your daughter; You yours, Orlando, to receive his daughter: Keep your word, Phebe, that you'll marry me, Or else refusing me, to wed this shepherd: Keep your word, Silvius, that you'll marry her. If she refuse me: and from hence I go, To make these doubts all even. [Exeunt ROSALIND and CELIA] DUKE SENIOR I do remember in this shepherd boy Some lively touches of my daughter's favour. ORLANDO My lord, the first time that I ever saw him Methought he was a brother to your daughter: But, my good lord, this boy is forest-born, And hath been tutor'd in the rudiments Of many desperate studies by his uncle, Whom he reports to be a great magician, Obscured in the circle of this forest. [Enter TOUCHSTONE and AUDREY] JAQUES There is, sure, another flood toward, and these couples are coming to the ark. Here comes a pair of very strange beasts, which in all tongues are called fools. TOUCHSTONE Salutation and greeting to you all! JAQUES Good my lord, bid him welcome: this is the motley-minded gentleman that I have so often met in the forest: he hath been a courtier, he swears. TOUCHSTONE If any man doubt that, let him put me to my purgation. I have trod a measure; I have flattered a lady; I have been politic with my friend, smooth with mine enemy; I have undone three tailors; I have had four quarrels, and like to have fought one. JAQUES And how was that ta'en up? TOUCHSTONE Faith, we met, and found the quarrel was upon the seventh cause. JAQUES How seventh cause? Good my lord, like this fellow. DUKE SENIOR I like him very well. TOUCHSTONE God 'ild you, sir; I desire you of the like. I press in here, sir, amongst the rest of the country copulatives, to swear and to forswear: according as marriage binds and blood breaks: a poor virgin, sir, an ill-favoured thing, sir, but mine own; a poor humour of mine, sir, to take that that no man else will: rich honesty dwells like a miser, sir, in a poor house; as your pearl in your foul oyster. DUKE SENIOR By my faith, he is very swift and sententious. TOUCHSTONE According to the fool's bolt, sir, and such dulcet diseases. JAQUES But, for the seventh cause; how did you find the quarrel on the seventh cause? TOUCHSTONE Upon a lie seven times removed:--bear your body more seeming, Audrey:--as thus, sir. I did dislike the cut of a certain courtier's beard: he sent me word, if I said his beard was not cut well, he was in the mind it was: this is called the Retort Courteous. If I sent him word again 'it was not well cut,' he would send me word, he cut it to please himself: this is called the Quip Modest. If again 'it was not well cut,' he disabled my judgment: this is called the Reply Churlish. If again 'it was not well cut,' he would answer, I spake not true: this is called the Reproof Valiant. If again 'it was not well cut,' he would say I lied: this is called the Counter-cheque Quarrelsome: and so to the Lie Circumstantial and the Lie Direct. JAQUES And how oft did you say his beard was not well cut? TOUCHSTONE I durst go no further than the Lie Circumstantial, nor he durst not give me the Lie Direct; and so we measured swords and parted. JAQUES Can you nominate in order now the degrees of the lie? TOUCHSTONE O sir, we quarrel in print, by the book; as you have books for good manners: I will name you the degrees. The first, the Retort Courteous; the second, the Quip Modest; the third, the Reply Churlish; the fourth, the Reproof Valiant; the fifth, the Countercheque Quarrelsome; the sixth, the Lie with Circumstance; the seventh, the Lie Direct. All these you may avoid but the Lie Direct; and you may avoid that too, with an If. I knew when seven justices could not take up a quarrel, but when the parties were met themselves, one of them thought but of an If, as, 'If you said so, then I said so;' and they shook hands and swore brothers. Your If is the only peacemaker; much virtue in If. JAQUES Is not this a rare fellow, my lord? he's as good at any thing and yet a fool. DUKE SENIOR He uses his folly like a stalking-horse and under the presentation of that he shoots his wit. [Enter HYMEN, ROSALIND, and CELIA] [Still Music] HYMEN Then is there mirth in heaven, When earthly things made even Atone together. Good duke, receive thy daughter Hymen from heaven brought her, Yea, brought her hither, That thou mightst join her hand with his Whose heart within his bosom is. ROSALIND [To DUKE SENIOR] To you I give myself, for I am yours. [To ORLANDO] To you I give myself, for I am yours. DUKE SENIOR If there be truth in sight, you are my daughter. ORLANDO If there be truth in sight, you are my Rosalind. PHEBE If sight and shape be true, Why then, my love adieu! ROSALIND I'll have no father, if you be not he: I'll have no husband, if you be not he: Nor ne'er wed woman, if you be not she. HYMEN Peace, ho! I bar confusion: 'Tis I must make conclusion Of these most strange events: Here's eight that must take hands To join in Hymen's bands, If truth holds true contents. You and you no cross shall part: You and you are heart in heart You to his love must accord, Or have a woman to your lord: You and you are sure together, As the winter to foul weather. Whiles a wedlock-hymn we sing, Feed yourselves with questioning; That reason wonder may diminish, How thus we met, and these things finish. SONG. Wedding is great Juno's crown: O blessed bond of board and bed! 'Tis Hymen peoples every town; High wedlock then be honoured: Honour, high honour and renown, To Hymen, god of every town! DUKE SENIOR O my dear niece, welcome thou art to me! Even daughter, welcome, in no less degree. PHEBE I will not eat my word, now thou art mine; Thy faith my fancy to thee doth combine. [Enter JAQUES DE BOYS] JAQUES DE BOYS Let me have audience for a word or two: I am the second son of old Sir Rowland, That bring these tidings to this fair assembly. Duke Frederick, hearing how that every day Men of great worth resorted to this forest, Address'd a mighty power; which were on foot, In his own conduct, purposely to take His brother here and put him to the sword: And to the skirts of this wild wood he came; Where meeting with an old religious man, After some question with him, was converted Both from his enterprise and from the world, His crown bequeathing to his banish'd brother, And all their lands restored to them again That were with him exiled. This to be true, I do engage my life. DUKE SENIOR Welcome, young man; Thou offer'st fairly to thy brothers' wedding: To one his lands withheld, and to the other A land itself at large, a potent dukedom. First, in this forest, let us do those ends That here were well begun and well begot: And after, every of this happy number That have endured shrewd days and nights with us Shall share the good of our returned fortune, According to the measure of their states. Meantime, forget this new-fall'n dignity And fall into our rustic revelry. Play, music! And you, brides and bridegrooms all, With measure heap'd in joy, to the measures fall. JAQUES Sir, by your patience. If I heard you rightly, The duke hath put on a religious life And thrown into neglect the pompous court? JAQUES DE BOYS He hath. JAQUES To him will I : out of these convertites There is much matter to be heard and learn'd. [To DUKE SENIOR] You to your former honour I bequeath; Your patience and your virtue well deserves it: [To ORLANDO] You to a love that your true faith doth merit: [To OLIVER] You to your land and love and great allies: [To SILVIUS] You to a long and well-deserved bed: [To TOUCHSTONE] And you to wrangling; for thy loving voyage Is but for two months victuall'd. So, to your pleasures: I am for other than for dancing measures. DUKE SENIOR Stay, Jaques, stay. JAQUES To see no pastime I what you would have I'll stay to know at your abandon'd cave. [Exit] DUKE SENIOR Proceed, proceed: we will begin these rites, As we do trust they'll end, in true delights. [A dance] AS YOU LIKE IT EPILOGUE ROSALIND It is not the fashion to see the lady the epilogue; but it is no more unhandsome than to see the lord the prologue. If it be true that good wine needs no bush, 'tis true that a good play needs no epilogue; yet to good wine they do use good bushes, and good plays prove the better by the help of good epilogues. What a case am I in then, that am neither a good epilogue nor cannot insinuate with you in the behalf of a good play! I am not furnished like a beggar, therefore to beg will not become me: my way is to conjure you; and I'll begin with the women. I charge you, O women, for the love you bear to men, to like as much of this play as please you: and I charge you, O men, for the love you bear to women--as I perceive by your simpering, none of you hates them--that between you and the women the play may please. If I were a woman I would kiss as many of you as had beards that pleased me, complexions that liked me and breaths that I defied not: and, I am sure, as many as have good beards or good faces or sweet breaths will, for my kind offer, when I make curtsy, bid me farewell. [Exeunt] brotli-6.0.0/testdata/asyoulik.txt.compressed000064400000000000000000001311671046102023000175100ustar 00000000000000[úèQÉ쫊´•{à«åm"ó  ¥Á²Ã›,¡ÛQˆ†–Žý©#«'MEGS˜ÏÙ‹~­X(~ÍÔ¯Ù¦z•™^®Vw« àK?dì NÖOsèÏv™²9e@yÿ0ô 9ÚvzHþà÷‘rú¦Vù¹’YG$ÿºéZÛÿ΂°#´4¬†¯4óÿ³? î ¥°„ò󳉊‹©3[Ø„ï;ßçñ˜ ]Tâfñ½Ï=8@'ÞM|ëÈIiÆã¿ïgö_~uÏî0V^yUmyí¸g¯µ7À{Î%À{/ /h‘ŒŒ H!å>—Jõedþ†j ©¦P¾¤ì)2{Ê÷¿— )ñƪÙqÛp³^O5N{n÷2œe=ÝÎZˆÚÉ¿J´Ê› ýóNwQ–­6¥ª®ùòg²` YÒ!iÔÕþÙdŠÇÆ!xÙŠÿgßôv¡@©F&•¡F¿Ç5M3ã!Ù$œoÀ½öÃK›£Ñÿ¸Ãg7`e–Ó‘ª[^so:ÜJÛ9ËBDõ°tbk•I~ÛMx,¯>Œú±Ÿ9k¥–ÖTK¥îßx…MÀ¡ò›Ïˆw¨ícðþ}ÅP4ñÚˆíÔRÿYlÆñúçÆ¿ßžß#T×´àf´­SáAm ä›>¯LòfÙï½oTUsnWÒ©£ÿ¾óÅgŒñ™§È­Ìi•Dú¿Wƒ³ÿýcµ`ê>w“s@Þ%†¢ÕãÝcF.x{iüSô»vŶv›çˆ¸æõEŸ*>¿oÂX$8]Êšj±Ö\ëGz7Tó®wV>î{‰Ç ‰:Ó‿kn{ùÔ« Þw›,úIåZcwøþíÁç}ÑÔ™Õ3¬|ö£Y­ ¯…õ0Œùâxî 2@hÝ>ì³ÿ£‰ø¶`žÏbþy-Vãì~rNÔºŽWÆÖÊ ƒb›ÔöTÉÊð“™ðÜÎeª²^`äK|ÜÉCÝÊçc?<ú°{p°Š•ê î¢,í5Lû#W8ÙiRg³èé§}žœ“:c Éÿ}oö˜Ëø-&²®GB{üóø÷%¢®+JuÓÓߺãõáÙ_ª>-YÜœn=>xR !óŸsÞ{¯†_|ðW= mõŒry—DrǾÊsê«„Ñg›ì>'ßÉþN¸À ^üŽ+ph€OÙ3Å…-w‘bâÂӉ󟓾{, 9HI!;#çà¼;jõK=0K&œŸ>hÐ#d¹8±`”3üC$nнꚩ)î’\9ˬ5"Ü?8 ©hPLh\ñÇðƒþœt˜‘p×^’ò¯:  2ÖÈ‘»¨m!ä¨bε{qd÷óaÁ§Â¸·GM»Í@­°È”ëØ²îEÆ$õŽ2õò¶Ü€ïíáÉn xn(~ oΤt ÄtùøÇ¸ÖhÜEÅ –{,,¶LÐMRb< …èt‘½yõôÏ‹D8²üOÐŽËbAò’c4™Ê‡_³s6tÆU$‘'”½üX‘ÎËGá¡øüH eÁEÖB3àiXËlAMùøU "tÄ )³@–[Àbirÿ‘|)ºcz¥9A·®ÀBŽIÐX%Y{ŠdÕ'y¢üAüî“ê[ËÑ?nH¶AŠ1 @›¼^”'vw¾ƒÜ;@Ç>J\^‡‡¨ÓTÑ…@S å4¶žY-.‡¿,ŒìYh: Cº)ÂÛJžÝz©©¯=Ãzåùë=WÐ3­¡t˜Ë‹5j«1vÙ40œ€ÞØW8€‘-—ª¼·…­D“Щ3©cZÞ¥|çÏÃÙm?‘ vTw"ùQÒõ]ªqαÅàÒi´,§ñl@²ðvð £»ØáŒe³2üò­àkJ°Õ‹) ®\"pN̘¢ìMÑqqv~Jwÿx?.-`ÛEýƒ„ºWï ãyMñWóð7|ø+…ݨv Þ½9a6¾N»sTütnõ²È{ ÎdžÓòq.ZØ×";u3¿ðQ“Ùø æ³JÁKáÍ¡Ê{ÿNIVfÂ_=‰¡]¨­æ%Âä”ÈÚ?5?ó\Ù¶sÀ)i!٥ィe¯ˆÓÙ¥5”€e-ŒÕß¼Ô°í3;‹ìÜ_‡þWõRWiXXÔ®0}‰ÒÊØu(9ßûÙJR’0þþ–õ´ñºÃâ'û%"ä8Æ[¹(Ý׬~D­=éÚóÏ8SõWLk³tÿÆÝûþÇír2U[âÒ¢:¾'%è„'#g¿’"G<ûdz(K\·Í!3JоÒRv.0/Ô6â”Î`iÙ¥2ýÇN úXXrEÔDòjçÈÜlGâT‹ìDMqþ!˜>‰ÛyÐNT0UR-‰Í/ø–±,ÎVW¯ÖojØaè9žv\õoà™mF®Á0 QbÑ<öò$?¬‘ ZEßt¤)éûÂð™$‹aÓ?Ž…ãö—F]èwdrŒ›‹Óÿ N)í ²áŒèÛ¨›¤,w«¶Ñ"ì,. Ô«5f8e·ªÁ0Vè§Õ“¾ÙfçkzÊþ¶ÿ„%EÉâIÁ¸ÏÇóòq3|"»Õ…©ªàFKh¸ç”,åñÚãÉ0Õ™YÛ=Þä« ñŒoõ‡ù7hÚ$@f0¸_êÈhíYàã0¬Ý ¦1=;’‚®'‘Ȇ%À¼ý3&ܪï r9p¶wn8ΛŒŒ:ÛÆ`Ö€Å,pÅåoðò‘‰.|þ»xK÷ïÁ‡äãDÑw 1iŠÉ­Ž|±º4B!ÍÎ×JkéeÓ6‰p4H’i²Z•@ìr¶et¬*Aªf…0Û˜eqÑȇüË—Óª®:EÙ$4¹ }øŸHþoi5*yõMP@PZãà7Ïx&«Mê%sûd&úa% ÂÀ”)ܱg s=0¾)W"ŒYv–$?8Z ó ¹&õËg“bÙ©ñÌ#’äœëÈ~ùN,N¥s¶%Kn/ý¤ò"ç5Sít‘ÚgÒ =ÓÌ­e‰ÙâP¤‡:Eü¶‚œW*[b•·ŽZ_ÐY‚Ò ”öf‚)ÇHFq•‰ûë"l ÔÐiÌëM-?$É@¸ŽpõâÊÝ=]ç'>{$»8G²ºÔêžx}{p'óÌíK¬¼ˆ*<É:™ãôà*-BûŒ-_’{ZL4€«ÂðÔâV¹Ñ¼ú‡!)n§ü37?ÿô—§FŒ{Ý{OøBû¦zÄY¦Hl•ð,üÒØ¥dëÃërÞ£[úÑ쨷o‡GNÅpü–@…þSM$hM2õV­~C‹ yÆ¿ßs¼«5Wò]˜oõx¥‡¨DIêÕÈEÝÞѬ:SÆÔª²œøµI“ °Œ}ø,QeQq¤6 ØÔêÔâñôc¡;2u9û Ji<…¿SãZó¦5L2›\³­QO<Ã#0ë×¶¸€Ðˆý‰¤IÎõ~Ótƒ‹¾¼¨¼ÑÀøõÊÓv¾v‰;Zß)üM~íQR(X§÷ÚïÁè4ë^é¯JN0g/Àê9;\@Ң뷉Y蜆 ¢UÑ*ñö>ÿ_ÙíK‡gt|ÑN ±öS]·:ü.Xx-ÿS8ZZ]¶Su4>ï›Ñ鈻6nÎ&ØÒRF©YЛþYÝü¿qiU‹Å*ë÷D&çD<8oéìëò(>(ÁlX* þHåôª™{ h(ìL7jߤI•ÜS µ¤4:#b½êpˆ`#¢V>_vÉ.3åúüc,IX‰jºU}¶H»W‡é„ï$O»C,ë¢`^«Ÿ<¹4ÿGŽyë%Å&¦IºÉ}yw\*•Ž5 VÎ; 8ш2kü†+¾4ôsÐÀ/ £”Q6\Ñ9J2i?†-¤a³µ¡š™QîÅØ0DèA~äßüTÅ?èå›m’8¿d‘åÅ?À\Œ¹ úa%pŠVsµª!Òe¤œ$cg2ÉhâmdéŒ£Ü Ì_nG'–—T‡`꣔輻x)²Þ]xP"1.­gv7?þœR5¶ü¦'È.ý!F´ÞlM4š¦„<ÆŽ_£ŸËŠ:L䚆wqÄ49ÝêžXÏê, Žø²¸uµ6̽2P‰ ù…k6æŠ=¯…#ü¯¶ŸXÐ7;Æûš öø§­‹=©nm¢/*f ŸQUn sØ ²å~>`óù®œøb\HlHЩ §|'Ê›u{ä ü†y+ í§eŠ×ä¡è,œUœ½˜jʬÕÂrz§rÞiTClJ‰¼Œu‹ÑZìQHȯQL OíÔÀCÝ?X&x«5Yð3à ³"Ù·Â3z¹} ¾àL )™”E;„ì˜Gs"߇nM•CË.úyêw²K£ 3~áÕ˜±Hÿ7ø -mà¶Ë…­8e*ÉZ…E´0)gêvG몞…ÙX5ÜH˜­å¸Ã`ÓG:¨gpé§ŸÑû‹Ðp?¥PÆË$®üŒÀvê¶÷vž¥}¿Fr:—ÌtñÁŒ…²÷³ÖùóÓMéÖȶØl^Ú£y{äT¾ÀÏw“žæolù­ýt´çÙ$ºa!^í…t&)ÉS:³LèîbëR>QÑh÷ª¶ŒRfwZ…–•Oí3YïùpºUíl@eJ«+ø.YŽ¢x ÃŒeO{ù$8¿ñb]i1ÖóaÛb\ô’{Û¢ñ˦Š;ô)p }ì,Xç‡ º˜ÿ¸¶¶›ÙÐ3Óª?«d‰êLØâ‚–ð`QÝÞO<2LŽF õ¥“†ÖOG÷ WÒ¦ EDá#s|]Š ©{K3ŸÄ{Åéç!~00“±n˜¸ñÊ+…†Ý½ºš˜5M@;WÅN¬5 wOiœ}¯ÿ\­×ÄHR¸‹bGÖ‘§o¸µÍƒëPúr©ñß ”§iLr-¦Ò¿Î!ÃTaBio$%¿ˆ+JÙä\Y8f>Ú™¢ÛHÖg]é|:ÍRÓh•Æã|Z$D!édV ÿÚíè”ñªÐÅ- \㊰÷¦yª4¬j*0S1 ù¸ÇAIrÏÁL01,%:bZƒ³å&Fj_§»l=6¡ÜÔÌ'Í}9`¾ƒúˆYuÒÛœ°”¡„A€ ~ÝáA¦|Yôã ÀÂÑrÙ¤?nŠÂ–1Ì“0˜Ô$ÈI4ž0®&ø ¯¸ùÆôãyk2òµ¤Ú{‘KKn&ã²ËÏÌòÉV½9Øø’éùA@Œ1ËôôÖÀƒƒªþ#ðh³9‹Ã"m-‘@b”Û9ðäh}!a›˜”1‹øEüîÌÇ¿ýúèRÄÿR©|¸ÔdiÏËèƒüC§%ÊßóÕÝ(W?E¢,*ÿ¾÷§q‹û‹áÏnUr«#^ÖÔFÑUôuÄ(ÕózB@©Ù›ÓBÛmÛã©J{Ñ=F‰µ}r\,Ë! c+\â*™\E€XhÀc«N$}äÓJ%fÅlD$VPp\Lv¼åK+ŽÄn¬3PDÍ© —i'#R§Ò*rØï‘4†\Â|Š]z!q› ƒ¥:ðU¾ÔȲ6¤£Xì{rZ6ˆ¨y$dÓ¦f©ðL¬’’fOe]{®Ò$ü(â“ø Æ+ïüÀmm# ÀÉBÃ#'A(àÚy½µ–Û4xœ(ôc€—]Å•‡zÓËž /‚e¨;opŸq:¯ú&þƃ²ºx!ذ;Yí…wà 2fê‘ÖwåAq¦8;¦°Ív˜X+¶Œ¶ÚÏT¾k8¸ŸC_9o²$lä³xΩŒ ÝE©Ó3‰'¶‚lá±f×óÄ£XÆÎ ‘Wެ“DÛaw‚ Î?åèªö­‡xˆ-²ÉG ¥Ç©6½‹‡Â—¾&•ÑiíÑõ-æ:$´è9+‹öG'Ä“©öŽ6:+áèÅ›â4ÞñçœÆíºª›£Ü8Ç.'‡D0B‹+” !y«yÚM^Z’n;/·Ç ˆ8gB…`!MkñÓ"›…\|/iÄÌéP­a6øL㋦®¹0 !‡þqðLì$裟^‹•9º1N(ëÏ`½à龜NoHPw`ð»Ä ñÖË"øùJEW\$Ó†³ŽaÙm ¥ª¬TÝËNÖ‚öøØ™—®‚Jf{ÇMJ*Ö€>î~¹6ö)¦Ät´¹Ù>Ú±l ë—±xFµc³O;ôÊÞ Ðn1/¶…6 ºrd>e Ãû8ijÚ±¦ŸÛáÑõ”ÐýtP7EUà:eê£?·7m#~<Â'\\™<šÝ¨^ž@¨‡§í—ì75àæ¡*¢ÔÈû’µÍnšòlÐe'ÂîÔ•\÷¼½““œ$êÛ–C¢€K$ ×oç4^@´°¨Y0££¿ý¸à¨ð©GÇK'¸»±>Â(*;G‚nHŸTºì8¹7¿ÄKàý¦bå 2êÍ¿ÁR(òb>I–¾ð’ج½ YðöptQ?åÇìuìÕÖàiñNØä8E΋E ˜å(êBÚöAcYy>×ådZ“ògžÜÏÿëÀzéû4ÍE~f`ºbCJúÄàš‰–õÏÛǵWõOºD7Å çéwˆÅŠ_ÖÞkŸ)_L~c;ø­Ð©³m8°ÒŽÓÞÂ#+¶Êº4ÔiâERq-’Þ= *|Vüà¨NEýÆ Ô4;ƒ¹¾®’›O³%íäò$X†:6æ\­®¡nqŽ'µ2•üÿýÔp¡R“\ö”²˜AW´]EC£î$÷Z½P{‡Ï{~㩟‹ÒãäÔɟݘ£ˆÊ·òÑùbdý4í<¬îø;„Oø_ô̬,öùI{;M³,†D´¡ñ\c÷zÌËÔ_©3d†¤ojøÚ·£³ÍÕŠÀiÙé 4í¢V½p¶TC^|Ö‰°ByaZ} ¶ÏÄAV×C›ÈÜCgo‚·'ÝŠÈ­ì[D£. oÈïf´èmDò"r^âC|½_ ÕµïIñù{|3þd ˜*ñ“”ckv|-^œÚf%DG;«gV5ήXÙÕõ¨e ‘˜õ³ €GÛÃ]Z²ï܆´(š|§4—¹l°*½!? Ñ_öqßRç‡_5WÜwüeÌ™žªÄÝD—¤æÅ!ÈÍu/°ÝÆ<È’ÅòÕøÝ¨´~Zýùä“™VÙo¸>¬.ÍŠÅäêâ+à•T iXÉ`ªRâ?=þbª•õbdº=Õ ZÌŒ’Î]ªóróý¸eõ‹­ Ô•h(|%õrß}K?ù㼬§ú‰ ßç±ëb¦xr°: aê}ÄOùGò%âá\'£‹™TO3/é˜i/TÇݱ GÙ „ÐkóÚfå[âÏÜÀäf Gö#ä][^¤Vy_œJUW|éSD¯90UŠáî#öi4x ÷ˆ–E ®x2:NGaMÒòŒÎfß Ÿ^Ó bdn |9©[J=2!Óë’?efùÃ3ð7ÿ¤4¯:²¬‚àôÂèêŽ_/»Õh.Ê~6/‘Ï0Ã[Úƒ•S!Ò8zÃQkå‹î¸‚Oñ!×[„$;¬É™–t¨ÍcÜ×Ï*˜ß¥=Ù 90ŸÝz+4' Q$!ïRc»„²uÜ+C.V–!®zG°ÔÂ&8´†j7AŒ¬¶VèÃVÉÚà ‘®% äi¾:=G†6BN²fÏ´;3•XïaÉZ/¢4³X›uŠy­$Ò4(£ÙŒØÎé2 …«úö¾W'¹L¾£ù'>݆º:’xgêà£Ãr{]h¦ ¢Ð_m¬ÞXw×P‚v¹ É?±Ï_¤³¯uà-TJW¼"7t €½ &Trö„ü™$Þ_‹€¾Þ]ã çùeIò[ù—e¢Û™žY;¸†ˆ·0[ùdóóÏ­ŸV}›Hɘ»}›LnLŠ0gùPUÃ(‡tf^ýÛ(üƒ;;1s†qb×îÃx>CK 8Md/æ[±lµùÀè}¦3Åqûï#üBËqþû› 3‚ð`i,®”4å~qÛS3üì=Á©v}•^÷MÐn‡â6ñÁùǵxD š2&;[áî‹¡Ä Vf"Y'Š«õ3ëކ y¢è­Õü™'üiÆV9`ÿÌÏâwÙÓ!â3äOƒy˜` Ô]‚$“m¨Z# Ó7­òt"x ÿRtŸ2^v“ p””mñLžŠye¹wBêÀF€‚3´+'ñZ+·² ¸ Ð¶¦›;iâ]rJÚül48óAä¿mÇ€\•®ÙøL>[;· ¶ß0×i¾²˜¹I_zìŒöœþ^U.1Æ‹´=v£‘€ý¬ûÃ3÷4-âüœ…®éŠÜæ[²†žs ´2dÏXrXÌ!b¸ïß SQëdêÞßÓm\^£W1œ…é\)J ëŸ1´CÇô·|5ߤx¦¤ â…9g%æó¹Ê©N­¶\7âñßI8Þ›È@}½Q@µ}‚j’crmá—% Òr–eM!V6„7÷#"À Y ¢ÈqCøˆºÅ $ˆæcï©Z$ÃAè$n糆@©«tÀ¶r»0œß|Ò¯ÅN¿2Ó¶µú¾• ^š¬@‹¦ë¾]ü2U+ ÁBœîÚÜ §€Z‡Ž&“ü&gÑ}‰’uY“ÏßËa_ÈÇdJÈ(Ëý vøFÇI·E’°ð¨ª´ùÊÄpûn1:µ9Ï“˜Ù,Þë²³˜„p2=}–,µŸþ|uH/N, ûÃq¡1œ‘&Q¯‹œ—1À®®ëôbªÅt 7P\Í]®’8Ƚàs"úݧeÌ.?)gðôk㳟(­Gkx^ áRãY:t)Œ¢ Ò{R”Ùâ÷ªá¶ÐÍȤ µÎ€ìàžµ/O­N·SŸÊ‚]N§Ð~s_Ù6  <÷[0 Ȫ\˜å{•Gb¨# ©Äµû·Ÿü“w4µW£§©ð[¢£þ׫ª›‚ýï©ÖD™#àóÊ+fíŽW0 1°íoâüø¿¥  ±lœšV›²iƾQØ`$~y Mjž5f!¡ÀvG¡ûxÚ–™(9ñ.s‚Ò|6ì2†jCÉ3‡iˆHætÙT€X>%ѽÈÖEyG‹®ÄY>ƒ¯nÍZÕ„ QG¢ ‘sÅü­ìhrq»(]¬ñ2þa[ÎöTÙxuT î‡t*èDŒå‡Æ“BGæ]ªæ{b\“ GIì4½¼*Ï‚¹çNÝÿ}5ý^›N¯ó·ìxØéOo›nÞl‡zÛþî•-æùæç¿·~ÆDÏ3ô—X¿T Ý \fw°.ñE {©ÎiáÓÖ§oÇ*ƒ®ŠÍC²I-+øÕb¼B>ªÖÈ<ÄPx‘áÕu¸v³E<É·Œ‰¬á{çÀзéqóNþZϼ٫ðƋЩÁ¼S Hé4¤æg5òòôW´ä~W|ó‰¬â°`×¥iuP#<øErµÕý'M!‡]Pl>$Ò‹j–|‚]B*3sÉ)#W’zBwb¦»†y&`Ù&zß_r>†dš´ ™Ìë®´|½N+rZJÐÝ,^gÜÜ*p,ÁÀè ­”»íÌ”F bUý,»ªÂÝÑ€šÆ’³0ˆò1Q¬“ql‘æ˜ä<ûf˜+›‘­u ÍÈOÛešŒý88[>,ê¤ys˳nŸ¹£Eh™Ÿ¨¬L# ØÒí'ERnSi0]3e~i1wõQ¦Ÿ­ô|¸ä€ñƒËì§šê° +ÄKb&Vy`lš“¤RkA¨J¯ÏG´ª¸ƒTx'õyNË‘^uùhƒˆŸîYLVô>µÚBÁ® ¦Ç¨tìæùêûöH²#†¼Ü²ðað£u>”ÃRZìD(ã²>¼ìžìñ_ˆÒd(δڥꢫÍ^×pTåÀZ ¾Q˜âVçThªyiää¾`Ä"Ä‚ÍÙ,HoÅ¾Ê $w¢¾4z…$é›§ª:YAŒºzùÇ»ìL¤=Ѥ4£Îoë]ŠØÛÑH'yòÍù¢ñȦ³²ð„%~s+’ÍJXFH²4ãögÏ+-û,·_vÕ£€Ë+ÞL¬{ÍèËNö“mÍñLˆ–Ïüò…Uµ݈M—õ=}5Ïy«ÐB‘ˉú¤ºäï¸Ê<4_w`´ZÎoÚ­†c„ ñ†QúFrwk63Â$î鸻‘3¨þÛñd2yª’óË¡=ÿ—ì’Ë%wšq‡®:àY’€µq@¯ðîëûñ @¾Ñ8¯â¡)p†Ëé œâ¶ÕÚžáãðvP º L·p_Ø–ŸA»ß«ùù/>Z’ÿ i¿L[›*X^b ½±ÕÃTy­ !uu;f:ãqOQ…Hè>²n¨ì;µ˜Ó¿-S©“à×Ñät³ä¤­_YãÀfɪ†¦å¢-Ìü~°tuŠÉ×–\Ƶf2Çy>a{ïf@¦úm㳟òÜ‚˜ ObZQ£Fà–.N|·AÚB•)M®óYˆZcКùˆQkp§ºûÖä¹.½Ã€·KHF§óÀ«|d–Êåõ\"Œš‚Qz(UZ­ùÖ4qÿÔ±k÷,Âì8CK0| FÂùÎmW.ù¬:¤ê=_»¶±U‚—¬XÔ³dö”ì„ ¼šÁEóîÌC.Ø1A%3í¢'·|®H®(N“k\XÌsóÂ¥˜¹ážÈa %‘ó ^‰S˜ž#¸Hž¶_,óf0:Š Ä˜—‰k¬’š™gÕ£¯°8ï¯ÎâüÍÞ!¾VÛÕ+(Ÿ|Ͳd’-GW¼™/ñ½P«ËU3$U$[ìBч¤5Á2qËßž­ùâÈ mx¼Ù@uâÈ7Õ (ZBS é|%K9ãUíöÜŽo# Ȥл+æ ryD+ ÙûÛ…­ïÖ³ˆã™eV\ßU»[–?¯ú²æâ‰Á‡1i#]ä{K]yáü*í¦ï^ýW—²"aBg j]Ì1uû¨ªæ™°-ãÆòôAÛXÙÚRO‹“ÑxhýC‚`Dq·HÚØÎm rt¸PΉQåRˆÍOÛüyTÏë¼ØÁ‹Ö$M‡Oí´’HÂÛ ©q´½"õpÏ„y>¯'ñìÒýg¹ÉâÌ¿ JäB¼/wö3À‰sBô²d¤.^¢Ž!æ{,ü“š°½×k›ÞàcŸ™H}PàJ GOHUšûªè/Z>Tcõ˜ ¢BIBò7å[ GâÐó$<e…R¥Yš¿¿Õ>À_ïeõV~_²)6Ç܆ ~9¢.]ÂÃeþ•+vý¿TA ˜×ûÞk„]¨r^±\þȳvƒK.Šû‡Å° ¡?L¸"Î÷|­Wð~ w†<ù—f)Òúž d”äS,Eü5åÍdÆL~FmOgì*møö(Â^ɰ‚¬³!XpËqqú#¾#…8Çîø»=Üø Qã|a Ò›]É/Î'|%,Ó"óÉÎyž{î¾1œ/v]ÁíŠò%¼wXê™}~Õˋܑ£EÛÑt“ƒÔرÁƒ"w ¥ŸTÅx­–šÐÁ‚ÐòEü,Ò‹ÿ jg&» 2¯pEº|¨—–žùw9T ¯šVû³jlùÄòïÐßz,a9.H̲§_ä‰ æÕreßÊ“Lf¼ñ´ã ’dxºíÙ;š„ôüS(M™HÒ?DA©:è.L½Ü‡íÐ1gŸ»=§Ó$B`–B"-ŒlÁƧõ¦LnÝ‚Å{ðe;`ïVN‹¨µÍYÝûÊ—ó\%`‘n íŸÒ‰´B5~azÿÄw,tN-‰Ãb'û:Î?OŽÃiDs½ˆkoªÁDÃ^Ø5^½üCLŸ ®YºbH‘–+9òÇ g ˆÅB^ðšà‘6¿¥­€{^¬7€Jƒ±]øÉ6”ì5ˆ•ù  è€ à£Ð¢ì˜ñk÷º\(ìÔkY*üÊõãƒÜôÐ[L/nQ5&+“ÿ¶áEü§Ä“?Ý4飠ðž3X¬8¤ëùŠ®V+;ïÙ’Ý|TêZ®mkLµÒ°z§^}GÝD7K¹¢#í õùÊóˆ ßóc9öì<¦y'‡ ÷.¯^<÷øÎ\:Ÿ$-ó$´%_wØ1L»M¢QeOwúýa«[ïêƒZFƺóK{ª%ñ”KpãÙ%Æ4cчòÁ¾€¤`¼üw/}1Ó >Âd2w˜dU,00x¥šŒÁ;çÕV¿DyYqt ÄÌ[Þù® xÞœ„FbG6˜2÷d¯s˜ͪc ÛòåCŽå,ª—܆O°S¸è¡Å¸ÖU3$Œô Ϧ-'çw­½·d˜ˆ†E˜±³Ëð„…×vRjMq 4r‹GWýQ†ÏcB®"ð {Æ›–SšÉYòÒºoÞŠÛ{7g( /ЇŽÇ#½K—£mlø7Ňøak¿£á¤B_ßQ9¨àóžÎC 9ßõ,{ &›cÿ°Xf'A˧€gï±ÂA‰dŘ¹ öN0–†„l)g¸{0 šè;Ó±À Ö΋y Û›7›æ•φv£›Øí-( I2WL`Ü¿ N½~º£*ê±ÏøÄ‰òŸSÌuž=¸âH­ËkØ>jÿ‰2~ûP/ÆÒwoÇKîwïEˆ=‘ Ÿ`³ìÚOüà\e_0ÃI¦«Ë¹?;8…¯ŒÞöžyt^"|.r^FRpJ)»YUÊ1p‘‹BìÍMɸÊb¾,ñŸåˆ1³0ȺèЃ žÉ ªºD;"i·¥„åéí“×Á?Ì`„GéT˜3ÈŒ ÂÓ.»Øú…2ïêr™à‘ïŠSK¯¼Ytɯ9…"††ÖW´^haãç‘O¸?[;iï³Í⤹ã{ùŒsLŠë̶™î(Ýæ: Ï)€Ù¹$ô Ã×È2ÌR¦?á%Lä"wÝØö{¹>ÐÅ=ä'fd_§îˆõ߸ëß$ô€œ´—ϰö:ÜÀëºmìÌO ·v]ýjç$@N§Œ ÛžE#_²²ø4'ØœªØ%c¨«g ‰Œ“]VöP£}¬ú"ûñ"VŠÕótbÓ‹G|W½ÈgsËV[ŒQ4:I%G¹í¦~Qî_«Ò7¤Þ ¦>‹²îÜ©D¢Ré^„?ºDýQí§5ÅFrQi,‘ãZ²D2§G¾ 1t7F¿ {B eIÅa¡„ct«Jcþ°ÒJ.Ÿ?k›«ƒq+ãFr }HDÌÃ…œ¦çOu¶ÖÍÅ'K„1aÖŸþüҼƸ/«Õøx"%Ó‹òG8 ¾¬}ï›ýÚZÌóÇ\ÐJÖ¨Vu84K‘¡±ÆBdŽ\h?ÜX|â1|h:5¦O3-Ò™w:‹ôL•UMauGÐËqNiÛÞõ=+¬®OBügÆ ý%ð u•dýi~UÇ€Ow£ŒñóUŠ,QY;VUµh¶iˆã—]iV&TÜ÷¸a +š+A¯«ÉëÏHG^|Ykl@Æ3¾mïz}¼DD¡•:‹"Ú ×=–UWT@=‚l[W³¦˜\R;-P}Ô>u r¬~»*ú®JpÖôÃò\kO ¼ýèæÔò ã’eøœ+=hD<ôlqM~&ÜD—­·QáNKs‘âß±—Ÿœ2÷€i#@~;V\äŽ^·Z³$ n:j]ž ©HŒÙ³2š -žVÙ?…Ö.˜qi(ˆŸ¼g¡S Ä?:gÔ?'qÓË<sGr*bã ¥äjÚ¦†-g½Ì¾·DØJ¥±|Õ6Ûg‚v׆%ëDµH|c[`µ;‰€*r³mæ Êi¹¨_qI׳úF–ÙùÈžÛÅX6–Ât0_ʢ׿¸— guQ„ù1ÓpKZôÚbGäÃï¼,±Ñ‰„ÍVIls+Ò>WX'Ú3i1O:k· ììÊ%xÌC=øj<ŠྱßÅk0ÉiªÒÝKFE„¢,R¿{žŠ“¬é½öNC”ð}Á_¶•Ÿ]ã®ïxÊ!’‹|u£êª×mºä€i+¨–sÆ×âv>0iõßv+¹uQâ9~Å:ì9 é«XVˆ(L1ù¨”@\æ«3jã™a–F÷‡6Û¿«}§Ô´ü:ýß!·Y¦–ÃîÉ=À­èü¢ò…N )v,ÿ‰ìØ;æUVR¦¹ƒF®U¸ž›ùUù µ˜ïÜŽ® ø®¬"?¾kžü_n_†o¼hYàÄÃ×›ïàÏ=/ŸŽ§ ÙQ,sè)Ó‰>οDé/ûÌü:av7þ)ÌË#]£}ˆrGç wެKZ¨y®ØmÈ•áHp'OjÙ¹<›lƒ¶Çž˜æºë¦/žEñzÏÁCÉÔœ—+aS¦uÁ?¢ÎIÿ¡ û™™âçEú±óˆ_/ŒÏoÄž_.Q¿lê.ƒ¶Øí‚nÆÈù‚çZÇ6æ]†•"Ö‡/ËêÖ½Hƒ^f3œˆF™ÃR~EóŒºLjÉákEÒr Z?“ÌX².³sGÜê^÷§×5€(·Ë©ÞÄÀ7ÊjpeR°,¼;(ƒƒàÔ~4‰Ê÷w÷~M#;Ñjk‰Ói~—x~~€*u 9»”"]×¾„¦8}•9õf帶ßD'°[£¢GxàÂ=•ƒYÖ,ßб} KR¿ +"a£21‡^µYó%Y¯,P^ïR¿Ç@3ˆ´ì`°_Þ·\?¶âZ¤µÝ茖iЉ'«¥NUàŽöûM‹»ÊvÙHéá“eÖ"?³–Øú&f¬B©)PÛÅr6ÿ|Õ¥zñú u½¯÷‹ÄZIŒD>n²6¢³±o‘÷uB\ðdX K7³^Eö_1Í̲ÍÈ@ ½¾™8`ëŸ^ؽï˜Wd°ŠÃY96Äñ¹n™zYH(h_Ly'ßrЪd‘§;€SüKƒÜ£×úN.7‚M«òü|oµQ¬\@N6àªã XŽuËP Ÿ2ód¡óøDËgô´ìÀ¥`³¥œ/å5Ü4d¾+š¢Ê|Hr >¾s’¼~€=ŸpÅNÚõËE`ÆéJ¾=/uYÏF‰M$|~dø– ã‰Õ/éa­úc ¬Ð ©‡“&^•sV‘¡Réq™]øBlÙ¾]{þ9kÆÊü²¥6ï·œäÂ6$6;ƽU_±˜¨ÿǯ† Xqö¯ðþŸ:àM¦Vò¤€ØÉºfÆWE7TÄ™¬'‰è´íEêuÌMþ.Êû(©8»‘ÊÞüSîÝF¢.4á¢ëáJ¨WQµ[¼pæPpÉé¢Uì¿"·2úa%ÌWhÙ¥,øR«R›o·ÞsPÌשµœß´šØ­+Õ|‘žÃÛ‰ÏZ@XuJËþVïŒñ†nÝFÕo¦gÁª²J°ҢĚ/¨ÞøiXÿW[Ÿ@mÉ}Av€g‰Ä‚`èA™šÏÿ©hí+òƒ‹Y„?éõ]ƒ×¢Ã+ôŪ½5Ô³Jì$d”N% ª‡\[]Òÿ‘œ" Ä臯۬Û%Ù°­ê\D{2*œöb»å?O`ë襛?_?[7ýýô–-¹“IÃÍl9½â[ô%+>ôD¦„PI úÐ=ùékµóå­\DZ¬\#S ó=lñÿêg yŸâþYñŠàÖÄ´,jÓµÕA^Y›· LÆÛâ‹ï—µêJoV?ÓNMÛQ ܲ*¼¶†(¾©ªââ;ØF›wü”68ЙÎëí —¬¹|(›z-…oÝæ}  —”aÀk£eÛQwßýÚºÁWž„ F‘ê³åáY´N tg,ùŠ5GO&Sh2»ÜgQy ÚHžâ Ù÷2‡fåê¸æ‹M{yaáCkDù@k¡zT¢9‡»[A§%m¢w³ê[qµáÚ»º2”¨Ô"Váµ\%C)Q\;FÙOÈ€´ðÀ@5{UÚ±ÍÛ­xÓІ“8jUDaç=­ñ¥ý³ã^<µ7{åÒe|çÛŽ6Pã¸Ç—hùÃõƒpéDv«ïè`Òà)ÂãžUaPà¼!U·k­ÅÿÚcls¢MNV°+âu÷ÎQpÅþ㸇eQ?Ù!È1 ø+2Q›¦™yÃÞ$@±óÿñLßç²·¾äàTK°§4Ú@UTr®#¼ÄŒèùwXhGˆx£U6ž1ÍlÀÿX0’ðG(玸dêL4rÀ—ë†vO9àÄ×ø¹®¯í1‚ë*åf‚É=Õ(‰m§F"ˆŸOÝþakNëõÎä°Ý¡ãÁgU<ÿãâÉñí}6tŒ¥`Ó™Q숳ÛòQºêyJýS[½:TÀ]‚Oð_>C aj¶®î1}(6FÄÐÜ- ®•.êL×É2˜ZFoRC×ö ëÄEþ^{¡{ác'&b8Í•ï(Ц5õµ!ú©Ák—'Ù5Àô†ëSYé;&t{S¿#ÝÊ’æøN„YnP.ýšwi86ÞuÆN?z2F9›ZbUïKE3à’\PQr];Á"Â˸İw@"5V{ŸT¦?Â"=æÑל'v¹êTÇØú&‚± LðKL‡Ëèî}Ç;ØÊó;¸‚ç^?Í>âgx†ìq TÎë[cè°å0lpÕŠè-F>&Ë%„öjke‘ç2øÁž&¡,QâØãÌ.®Ð§JÎÔô½0³@¶ë-‡~ë%guÊ õ_&[ìISÆØÇà/5HÅ[㊹'”We²ç;§ùÒáÀ⢺©ÊÇï6&Ìò~¼[ÇŽaµï³ZÆô1`~°œ}>'D›ôäÅsܶùÙºx}Ì£ÛS¾%Õ)æšëó 4˜MMž\è²BÉó_ûOt3¡þDÿ9¶LêýŽARNˆ å@°é¼Z„§vaR*,æb£_² uwÞ¼[e6÷oŒó…8¸¼ÒÕ×ÄA7fF‰ëá+L–çFUÂ3ø:Ä8¼Ôñ=€jhXŠß‘ yÚ§¾ìÎ$FË9)̉'f÷2Ï€€Oà`ꞥ{e% ù¶”‹&b¨¯ºÉ’ôä,}aò$ÓîIÑ™¾ÒþÙß yu¨"¹ãùêèXçØV-»ï>1 P«»çˆ‰—„ 7æýôKÁÓ< ”£îù/[Û¼“ï¢iÖÌßP*uðåYÞÖ{rx z%•E1K&Iï*òZž2 /©[Áµ°‡%@ž½£ÔålýŒ~= ê>*´äR$°NA’< ññÞ®Hœg€‹hÑ©ˆ`Ïp룪ésÙ©¾gþíT¨L·žI?ËÎíÞaÐËŽD«Ø|ÅJK,G V)õ(;‰¼TÄ’Œ)PÌ6á®_H„ú z~Ì€J,¤‘¾ ,*c…uA§»OàÕ lØÞ¦ 5̳çvÜ6"ü@þQŒ§øßåCGœH¨<¾óŸ?Ìÿ™%™wá^vgÃFéæ5t8Þć[Ë©/ä¨5á¤×<².' S¨ßžrÎWŠe8ªÄ99é¶@D<Á²áÌ(Óè[ cä§Aæšÿl}>ÁRâ?ÏÚXÜ[OÙ™üóåktb.Šæý®;šîÕ)y~O²#jïG4ù12©þ_¢}XÎ4«ô~·eñ¥ôˆHÇüð%1--ã˜ÈWGÁ /G;n¹WV•Pú…±%á6ÐA¥!|Ö.Étö:Ùa;âb"˜ä§¡/’„¦Â΢꠹*9¥}àÝÊ 1›ØÏÜœˆ”w¼jÏÓ½]Vé•Si„/×Á;N­¤oÞ2R–Kå%ƒ€ä‹ßnu·ÎFk(oX(‚{U/¤Ý‘˜.;Ê´–n!®)*KOHŒÄ¢Qäm· Ó=¼bìÆ¾Úë0\ì!–4 ÿWNÚ+³¼9Ñò×ÞлÁ s=øôŽø¦ÆŽ­¹­«jX§¨…Ý×_0››Ü$(Ö¿ Kõ˜1GIÕ< åg¨óGa¨g÷”^áÅoà©­šìS؇®^þ!éoî¥Ñ— 9_1]ú4)ˆæR¹…,KšW†Ï¥ 0!Mxô¾V5]cÞšùÞÔxD©ÙÍþújÜ‘CŸOG²‡öç0•³<”ÔÖ“èƒ\X¶`}–ü#Ó Ç>“ö‰`ÍIæU²ÑV·3z"æ”W1‘‘r>á ø (ÇÕÆÝöjŒ±:ŒBŽÑ²ü_{}tâð×§~:¸ ™fÊäÓ¤—<(Q‘Øå§¢] -!Î×,,7^lp ·ÒÝplLûŽ1œ"ÿ8lü›ù(íÈAÁcÃpžu×Ýûì ï ±l7.?´ýÒá1K'¸ÍQo¹ ë“­xmµ9ˆø –UÆ)‹n÷ò&™òUiu•QjµàdI Bå`Øu°Y¢æ…J„¬ÌWmûºÜO?gI²=(öÄÁF$+¸åæÓ~Žm>@N¥ùD'6^2]_©–aÚ?Üòà+›kÄ6DiUO¯¦©K]kþŠ™6hya2í¯dérrÙ’Ð!¡àsj%Üêï¡)Q "©<ªû ß .Ë®nà©YöWÜN‡-gý–íh$ ®¿j_NöCæÁQ¨?:µÃrRÿ3¿“·Fÿûÿýo¢ÙÚü-8‹Ô«÷‚,` vÐ4ÃS Þ©D?O‚ÉÖéôM$´ô5”r@ScR_gz"ÜÚ: ˜ø‰Ð&³hÆ¡00g²×¿ñttÃ[¥aù/¿1‘Ö—÷¿{/êwDîÐéK{qç¯Äqÿí¾&OB&³;°—Or\M¦™rkùœ`é§Îöþÿ 8Ú×êÓaü«lê3>qk]Yæ4rs¹ºÙÅsÓ ![|;“w‡²>øüf§1b¢Â÷Õžä` j?îp¶¹-«ŽîDPÕ;€Ïò”x]Åäc ­´¤dŽm-ÿ,‘ÙOäo¦[¸9ȲéÁç'µpÔ…Õr”«÷,t…WhrKzdx"Ž9‘0 ÿ¡©`Yä Q•Í«sO v±ë»Ò¢‡üb“|±(Š­O ]ë©ÎP¼”-Œ^óþÌæ…¶Dµ_•ŽÍÕaÅb >ŸVÃé/yr8¤X¹ø´Ê¸¡B²ëM’X$í¡[K~j>ßÿ»Öâ3a6î?LŒv“‚yý%üý)T[S]~ÐÐbÌ\„MAYHblùE¹4«Ó Ïÿˆg×…ÇíËæQy(o– ‹»Ç{Ð<{Ó,^ƒ(\~©aGr‚ÊÔgñNˆšÀs Zù)_8¡ÏwBW5 M”L‡ù’g(pÕc«+ØO9“&ãÒS ƒªÓ&ß-ßÇzÕ˜ÿñò¡ßK‘™üÿØ8¨ÂWÙ¸ìÄì >$–EN ýfx¶Jð’^ç˜Ü?œÛß‹üoÜ^×’š='ò.¾™Â–Ö:Ê 'À R¸}éó‰ÄO$»js(‡·ëƒ-œþÛþú5ŽxbéÌ7W¾‚béS"ýsR”j¢;9ý«Ó†ÒTüÛÿé}SÇTat5ŠTÃÎÞd‘ª«4,Ënx‹5XkìÎìeTKqp–|Ée\]LïçëÄÿ”¡”Vx<¾Q¦2ÈÅüó/’ñe‚fÂð ¾ð¯tÒšB³¯¥É]ü :ž® ]-="ÎμXúZ êV‘Á6‰ÌQ øsâkp¦Hö$áFIƒ¥Wž/»›«¥c‹6ûèìURœñ¹¯‘ü¨$[>Œvúp¤nʵ6 Kça0ªzŽÐkǦŽ0d^ã╊*ëxñ4Ž˜É{­)¨F#¤Nj0™É SÛ9ý¼eù€,›8íÝL&ª«šnÇL/º³Ož`ÓF]ëÛ=±×rIl¹L’{!ƒò‡Ít1üä0 Ç<@gkÀ)3÷惘òMÒ<ìypÓPå.†.û“›:ôöÔÉ󉺻A¬3Äö«6‚¾âßuýwØâÙƒq^©oS.4»'…ªö=çŽ&Wî³*€S[“±ã»&Q­ÄâäÍÀ[e,=CGr€!ì‡,(n¹bd‘?©„Y—½"îÜB1»2bÌ®¸jºøâÒ\Øq]—y®UÉ6s%.“7ÜVõì{B×ny#¼t M²ÈòZ0âM1 T3g}ûeàU9‹½hû÷TÕ¸ž/-T~0oE?¸]·Ö!µ¶'[ŒL\á´œÔÇêh‰¦ÑâQÝÝßô&Ã@-5s>”Œ¶„ÓLõ”½2e¤ó7‚ŽWTÔ½àTãí“0L¦(™føOÖL!ï–|owdZãI‘›BG燳@䟻&òPü§cYp«¶»¶™ø¦Ò€ƒR—>HÛnŸ¯µp¼n]ÕlñÕßžmjEþ‚¥ú-ÊÔrñnGúßôЖ",ä÷ÖƒhÏ®í4X„œÌ/>¿£Â -^à¦!­ƒ¨9¤åM¦Ö†÷1ÓÇòҙǵ=¬@ä$÷‹_g™ZˆY1ß»ENs6½Ëo™ÊX†ŽÝX‘d°^–ZÔ* ñ|"aœþêõ;ÙTìl„^/ê7XÕ\ÀÍ«ˆà=´Ñò5“¤!ß2l0ùïK™ªqÇá ½<`/÷…4^#¨J$¹ÖÕÁ¥•Û×ÉF4 lC@ýz›Ù˜4øn•á Il°éYkÊËZý’yh¶gº4"Ìz¦ ½£ŠþA5Gn\ù½;\“$¤ûB~‡Ó7M©"e6‘êÿGVhh…ìáS^«h¼+Âïÿô3ÛÀ¶˜Œáµª$qŠôqHëOÀ[¯Öz1o¤…ˆ‰…ù^'nö«íª#4æ@Þ=GœñdKšs_sŠÒw )4È0Тs­ÁV€>Whðå¬ÁQrÄí‹¡À)¹—†+ÑpsbùáˆÐÕún›û9Ï-gºæ~Ç(ì+5JgOq.Û][4òuUðòŸ¦9®=ê–JT 5æPd¼Â>šºÓvf& èºÈ•í¢âlè?ÉG"FÔNñÛâ4β?Z P D©…€ °ì´rwT½P‘b©Ð&%tž¿›Éž$kßfñõY9™aNüKx—åâ¬~5Ak†éò`~bWa:ù Êê«ï>ÛQÎà°Ìý ‡s²d†_éúm‘+Vü¸›¼AQ&Ê›Hm=#¨®ƒN ×t~¼è]VxNþÌþO hl¬Öm)›2¹²È»,‹ç²MëåSiºh"¿Þ¥‡G•+ Þ;¼ÁÅUA¼v<ÿ_ìæ}°D—"f]¼| jHä%‘azvxm\âÚRA6gÆÉZ6ªUÓ¾¯…õºœ!´:%so–!IÛ;œš~ŸÙ[cÆ„ì?µ‚1"]ù @• Gß) Q+ïÿ–V‹cÇÁnibÛbÁU¿ `Efl{±"j¶åÒ1ÇqÒýÿ£‚=ˆ½¿•¶Úšƒ(„a¢XÜiwÕu–ÕãÌÑ,°·Â>æË);<°ÂžŒ¿uôÔ–àýk&QŒÇ 6ÚJ«ÒåZŒåÖ.)6´\I}åŸÏß„Ì)døªãÑ¥l~ØŒU:nÇSëbRIÖ‚- Æy×´¶î‘þeªîÉ0©cɤK #®]{ž+¥ON îÄ6¶¾ôžË3œÃ”^åaàFבi%ef{2 ƒ™W­ÃÄäã6€Å#‘±‚kpL;¹ørË5mFçÑW*#I¼î½¼;ÍôYv·„_³0¯RgÕ æ„o7w.ã³¹£Q©˜„ÁW™HXbcôFš§¢à`КY{Ñe¶û¤ ãZîÆ£ÎA„uuœÚÀÑr£HÈ„#ì†8¢SCNöˆ ßgÃÒJ©0„Òc<¨ôN½§*¶±† Á:fÁŵÆr Ë6EÌlÖN#ll£¼‚±[r‰Ò¹jh?µÇñ³i†m‘9Ìg’Å\káfv"}AÞKä?½zÄO2”/±%‹îyA¸ú`ôÕþ¼¿öGô81¶9U {¼è—£X¡×øU­÷öÆÊóŒbÙØNK8ZaŠnälS„tµ‡H©­ÏqV…MR¾òþôØõ!šu¬[‹¾M‹&æ_ðgE­IIF"ó8?–óÃëWˆ†[†NpÇS±yC†—¾™ UK(r?ôÇÒúép¯°”3Eñê¿ß/[ÌØLAî”ýóÓHŠ‚RÝ)ž“j×;5§®*a.$ÐLºà<×âÖÆoèjÏèèŠ+tè Ⲻ’¾Çç# êÑ. µûk}\ÚátÕ3ÑäF´XËTn8¤å½ˆ¿±IKôú–Or×\ö§{ˆQ#{¦-iHë]ï× /8fb,:Š5ŽÍf¥œAÒaå¹6œÙ?·†XdjÜÍŠ>Z@,"­ö'»úºèç‰!RI8û¥fѦ EGÄ$?G4ÃÓÕ7dÑŠh¾Åƒôx÷êÁH.-u¤[Ò¯Ú¡ÿxœòàW.Ã’Ž€ÆÛJ_ä+z¬Wi¯ip›T•v·l‹ŠL5µØ×/ê7Á/<™‚2ðþJ–ǤŸNª°åtf´$ØÑ„pÓMÇg˜¿ë íqÒTDö]oG¦‚§J:Ást;B.æÁKEöf¢¾%{(Nud-µÜiæ{´~et™…dò¾m‡– Wá!À“óhå¿ÿŽæ¹šD³„D¸{ é±aTŸ~ .”AV*¾/™0 D*Md7n î×u{·ÇØÏ>¾DrO©0Zë“E:éc]?ãÝuÕä=“6¶4ÛÔÏDT+½4RjºÍòª?–Rßkjà<ù™æÿ/XI¬‹çø=:ØXñGüX0bݪÒH-Â¥Ó—˜Ñ}Ü*‹-;Š,‡<Ôªù]ì(OîÜ:ºlªÇðÿ>é4 ð:’dʦ¿>½PBØe3²{Û«Ÿjå>i£(]œ ') F\¼Žv½ëZA¢±WbìÚÀ;¶¦K¤¸Ú ÷ѺE¦%¢cûïãmÃÙƒê@vr×m¯ådcÐ `Ò4Uñ›ÞQŽÖ”õXíëU<´¹×̦C >2Q-qĵOÔ…•G4ZÏ:h1ŒGÞë=êWãàÿôŠQ4I\éfÉᢛ‡thy>QtÇWPê­ô r‰ìGE40³‘ãÜ&S7B|¶ePs°¨: 'l¡Ò](1ì“·¿Ô•@*º$‚t§ðek¨é¸4 4ÎÙS÷V0ÇIÛ³`"z²JKã-1îœÇšYíÔ¿üMÕ‘7Û—{ר2\L ²q?ŸÃI§Ï =,–¿Pœ:½£§î¥6ÎM_F˜²~¦€Ö^ºþ;ñïªíO¨ÅÐÆÖs=‚9ß me‘ìëˆ Áa¨6ÛæO#eÇzcŠb(ƒ ~ƒ•%Šàáð/ÏR¡¡.î¯wÅ;nœÈç\u?íã.dÚ¶oÛÈæŠç;Öø ;'£=™ØÇ6 ÛÏ|Nä¶Äàj†Ù&ƒR0ßj>ô¦ÉÇíç`QÔõØæ`ÇÉÊæ•öÓ/cj[ÉŸÉËØÇUp×1Ë‹§æÔÉqœõ$¾MH2ëgÎk"=r+ ^\¾ëLé9qU|*û@íûðÃv˜©Ä‚3ìÁ ¤äÄ)kf[7?+GÞCè-0±Ê´P Þô.,¨M7‹d”"äúÇ#Ã=U "û8€Ò%‚¤%òÔâ ´#s´@K£u]zб)̇b¤ÖcsׂdÐxz:|lÍ´¯0>ñŸ4ɾČ 1+r‹s ].Þ·wÊ6TÅN57&:’ŽÎçfˆåCu8†O™¼ÐäœDuu­·daµÒu) 0t4OLÐqÊ}ÿɵÊçvŒ[UÝ:Óšx¼‡‰ [Óç¯Rœz®*{ÛA,7xäÛmù IlZh©!£á|¶™†•(ÿ$X|)õÓÑ@£äÌ0k ËœbØ|ÃÀF…µT6IcÌä|ÆójÂ͘ËÏТó]·—ÚsiñJ¤Â§v¶žÈÊÇ?iÁl¨›Þ<9&wóÕôï©v%ýóþ[ƒÓÒu.%Ü£ÄÁÝ{#,h_köíjr¶®IáUf'¦ô ö©yõ3jï øë¸ºè‘ÕÒ« Àñô­üí9袮–òéè*Çujs)+ÇÇ%P¡»mP뇟eþ­|zM¢¹E4Û`K9‰•UyÎîÑPƒÈ/Zß×_0ýp€Ûî5ò¨¾5³ ~“‹÷}-I¼Aƒr;ˆ"?ŽM4 w“üïòctC¼–Ô—`S5%:ïõY;C–îo†üuÔ­Ïpß %§ŽiÙöhr÷$¯\EÛËVÓJ(øÄ⦑n¹¡ÀðÝ߉¿ôÈã‘%ÿR¹Ö’CÖ{ÛÐnPâ–ÕxM‘eÈ”1×þ[Q|´NzÛßaöcMV,h ,ÊâuL.ÒÖP ¡:×±#ºYÞ£Þ}Ï©0™Í¼’ õ U¤æ±ý–>95÷¨«Cj°"ÆÜ:áH¯8IÑ2äžZºæ}!w ´¤Å~` p÷t·“ßÇVanxß¼‚Š”Éã8¬ÍÓØ¶ÒƳ.Äkfâq.‹ú™ÍìvÊ^™e/á‹\IJ½OšßRãËxp‘V°ZOÒ›‰Ý9Ûýæ´ëP‰™Ù Ÿ­} ˜tפÅ4X\ãôAYl¶ÃUIîƒ0@VŽ–ùUHQ+Ë*™0¬‡X4š¸UÅD£c®«õîÁÅøåµIo£‹6À“WIû“¬…[¨äPÏAý¢¢JÕõ†«º°·…²=—êµ+ vx›=öo]w8Ì”­jn0KH{A¤?R“\²È‹ØYÌzý Ûb™òÍÊ»°ÁuõÈïøôòo‚Ž£&2S/IJQÀÇz'<¬+–ð¾‡8˜ÛG…yrÇ^EC§WYÅEÂPc.ÿhstiÿqÿÎ önæ]¿ŽýhœCybvpª×Añz;·níî-,߃y½Ã“?A™²¤ljY9ÎH4g0/T¹VG†è*hÀ}Ã{­=¶“d’£–a2–þƒ‡^ì^""%ü®V«÷Ëc)X2àÓÓ^>½•6dwigÜââ]gš£P,uyÓSFõ\f"@ŽiÕß8ÈjÐÅp$³…GÊlaÚs•F¶[™„Ý•´ôcrwi·Ï]–CF½c=¾ô}€†w‚ªvìì›Lù*f˜rƒåÈМíD“ÇÂö7uIj¥Hï5ÝT‹,8š§‚b/2áKµëQ›t5dιv!j/Q5ÒšD£ìp[zhü€Ý³È¢ñ $矒 κ1>}pw+ çžÈ#vçun>§ËH4îc…1m¡N¼_6ü”}£ª¥)ÀwyYu}X !ÝÈ]j¦Ód/6 koQª§»?ÒD»þ!àÙ*vd÷†NˆÕȪ/„¿¿ÌÍdeOÑr³ÚORS%¢Á7æŽjK°Ó0³0숟'ºƒŽ±œñçF«ÖYž²ÝKUÕËÖš§œ‘ýéCãj°¼-ÇßÑ)oÀÀZ H9ü{Œ«/Eâ†J'M{ƒ4gCI÷ÍSWìzÏÛ+®^¢”Ù?`Ñ[ÊbÜ?ŠLëÜmUETÊÃ!ÇŒçÇ›§ZëæUqàô9œŠ(á`—ßÅ…á ºQÓÚƒs‡¦ŽRéÒŽ™à–´ˆ7n gêµCTŒ#¯œ‚Np–¼ßPA6á ¶OcÂTg¹…KuGÔó—å¶É<€iŒIE®î˧¹ =‰‰D®q5ÃÔÞ dçàî™îSè5”›Y4Ä N÷â‘¶dsÕ‚¼…¹Šî#²÷Áé”Ó û©«&*FÎ ãmUcä”—µ{£»‰Ã/ÊFÚ4Ã_•¼ý „Ã!éB‚‡eÔaÀ7S­gâWiÄõ“ñxŽÊ‹nÄáD@ZƇO¢“ ª’¯QÌp™´ÙÀYŽ®¹‰Ö;ýZeë"uÊŒUùÖ~l5|¨Z­ŽV´Õruî%Ch:¿àÁ ÿ¾—¡â+"z9.Zɽћ ¾¸<ƒ©ô·à–³µAù8ã,?RÕ£$ˆlz0ûÍ}UÉ!‰º¥¡ˆXkGÆ{•ª-OaÜÀnKñ‡Ã?…sÓuÙÆŒð"ËJ¾Ô­ÁÄ“b国_œx,ùì3ç4Öh33^¡óV<ìÑšƒ;d½Ð2lñhÙŠ(gŽö_` =fÀŸ · æ¤vòCO¶rÑR¿¯쇄É-ôˆ¶ÇÙ’&^•&fÏ|Û‹1êYÿ&Ežµw·lK4æ=cPµÄÑN²9Ǭo (ƒ®e/Ó•îÑfþŠjÿ=UKÄT0Âû—aáÛ õG‚ž’Ÿù}*¸MàÙh ZÇÁéÖÍÃô‰2åŵÛQƒ~àË®aì5Ap’0±'ÛbUc ‡·ªö5„¦3d)ÔL“éðÑKPö!´½ÀPpíöâ=ÿâຑÓòÔ<ôi‘{±¬Î3ì …¦¯”o£0 Q þ¬Å‹óbôÔ-.Ÿ|R]€’™hõ¯ÖÕ ´9üíV¿ÈOo²²ìx)µ„<òÎá‚f.æÛl"Õ˜³ÊvY¦N¡‘‹¯ F$Ýr¼3¡D&¦O&޽ÕͰ¨ÄåLlÔ“$☯Ê RBŒošîFw×jcê²›K<²Ü„ ¡‰ˆeÙôJÙ¯Û(Ç¥SÙÑô縮Һբ‘L߇i•ŒxW2¦3AÔ¹ìKyÍ+Ú²wôhrš¼V²9riöòÚÆüôê/MTŽ„.>6üfSÛÚ% { @üXÚÇbOðéäýÄ&k7ñ;QÝ×ôü3Qªú†[‘wçéI “m(iãZÁ°r™d’XŠÒ§;£ÆÜs±’T{Ùlæ3bcÌvZšJR;ò)Fí(E÷À¸ûµ÷+Žö +ùÿ oº¬ Û­T1Ç‘ËH’ÕŒ…”åI¬ÆéLyýúÅ&‹íÏ)IÁ@ ëÎ7 ³Ø=ìQ76õÊ׉ö\K ®+Ë |i9jÔ®®ŠÓûˆ¹(ÄŒb\{W)šØ;ï³å1<ìx|>I~ëÝÀ*Ä^²ë\ìœíÍ öŒ>Ì šm(¸»ÿÖ®7Ц°€°,L”ÆÏÀ“Y£×•„TºÝA*OHv¸ûàE*ëÀ(p­n2Ƹ>Á#³ÓglXލÂaõnŽ'µ¦¼RÏMøJ€P 0\¬øÅó0''ZVaÇwÑ’}§ƒñ1¸YE fññBiDж‘!Èü¹3¶L8±CÞZáiCfýzý „ˆÆ ¥a¼§àջƙò¢ù•¼mzb¥‰ö­ûàF¨¢›­ƒ¡öŽŒRumk“„K}³v¯7£31jîbÌ çÓéß)‹1°gÒ©Jû^Dð|ž„ýzÖb7S<•TcÑ[)¾[hëiÒŸÔ˹b•c»)»4¨å <{*ì’<w€"­ôC ‡VfÆÁÇrЖۓ+õsf[h}gxá©séY½¢1OzòrÀÕ¶´û\|P~Ví§ßòP:Ën6ˆÞ&ú‚ùX#¥¸ve…š[¬¨¡³³Ó©øúÖat|äYq©Çü ¬Æ‚ʲ¸Ò¬Üd ¯&&ÿÊL¤™cŠ\<âÂON¤yÇ ©À"Ú~¨§ÏÙm x×§Ì3Ѩú¬›æƒ ¶Ø…÷­~`œô3¶EÎ,Ì÷O“ÏsÅd¤ô!®¤z Ϧ¥ J··ÀM[‚(»¿`Û 1÷ywÛ–Gêàþ#‹€x/˜ž+ pzM•[¥'šËa™>C×ÌëÇ…]‰k`8 ·Mq;¬²Z$J5x×UnÑ™ßÃK” %«n÷ P”¢E6ÐNïÑä_J×…Z„oÚù¢výËþn°téeS³×áõK@F澊\A`O¨l8‘ʱ”dêV=¨,È<3`þ)æ T¡×šþÛþæX¬Û«ï¿,FI™)KÆXÂLwà ±dÔ„¼ îÿÐI+¾×ØüN5¾¦/ëŠ*yL_c¢hˆW8oë9@¶DÇ5…kŠçg¯ŽÞBÀ$+˜fg¡É €Ûd4ü;Î’“«åˆý'ÿ‹Øýo½Ê‹æÈëJEÖ̃ÄÓL©ÁB>KÍm̓ç`—Ý*©¼qŽ£mó—¢Q~¡öZˆðk†² `/ÝB/s22˜ô›ðT»­³ÅÕ „n}Õ]FËvÁäQþ˜ùoʲ·çšv%s±¯éȰßðÓ}Ü Áò@r:ªD‚Çi È(aìé ÿ±S¬Ddo ¦è}‡;g…’0À4a’p ìè ñ$z ‚.‰*Bà?XÓkc2)Œ“Qµÿ_§Æ®¼Nå¸P¬UºD´ŽN¡x­Ýðí>ÈUc¹â#õ8õtgÂÏÊ“¤Ã~2ÃpÀj7 eË¿¿óê,ƒåø7îò Ya ˈÛÛpØ¥÷ žö§†?:¦~.ÈC0»ì…ÙØ(H(ß”¿–ÛiöQ»¬Ne˜öò²åÏ{Fá슈C½æ>ÏL¥³;1ß™•ô K]Ù…164§ŠPf “Kݶ7>ÿ¤Çp&äN›³ÐÓÿ½³ºè«ÑH6¾p¶’xG€’å¥#æØƒyá¿‚»Ú#ÔàCînì>r3¾{×wì£xI ئxÇTð´‘ήr±5Öã°¨ƒZ–c`‰!ZxfºŸ9ÖòÕAlÉ—÷lž}=[PU¡âDBî9ãS{ñVVÕû+ðö&N.÷; Ù¶c ø:i€' ¥²ÀŠ?d§MÒvÜ(º•kÅ>˜/¤ƒPAoÂÂ"˜ õd0 ¯¹jx ùjUÿÙhD¿“ Õ=œçEnð}dà®:vò‹HÒRƒ£R2â?èÄE£NÔðñ½ˆáº­Ô¯;®é†ÓÇjd°3œ¤Àâ7û¦ˆÈÖr»i*(EuÅï'¿ÏNN‘3”´3i2Ó8ʼA˜«7’€KÿÛÖYF†ó›®¼Öì‹n¶ç.-…:>Šu›¯a’ñæ…Ë¢Ô§ò´ %|èçOdi.f¼_’ª<2Ëw,ÿÙ|zj|ÞÐäú³¡Ý¾äå¾½ò ¯ä€0¾ü"j¨ËÅ ¸íÔï˜ýËã|T¥èë^)8Ö Ýfí|ÒzGÕuxÀtÝ×ÓýÝêÒ5˜…G­‹…þXsÜ]}VI1 I÷?ì*‡ƒW&W5×5LÁ³Ë`CƒÃƒnòç·¿9c;ÈÜcIÌ/ÍFñǗô}ú]-BwÎF³èSPÍjjI´³•kTë£Ú#ù­‹TÊ Å& †Gœ¢Bj%t^/Ó ulàÇâÑâÒLz@ôÄ1µlOÀ`½fÈX‚6ƒ”~¾NˆésŸé²ù¡w’’d¨¡æòTÚ•Ž7ºT™‘ÐDnô®±¥±9Ð'åÀÆÃOvØKßê1÷„ÈÆ55â1 ‘>aÙ´!vŽð”PÜ,‘¨ÆVÅWj0`„¨7€ý«š°g…KÎ&K”2pÎÆEM¦*u+Æ#¤þÒ–ÿÏR{oü·7P ×9IO¶E«¹" ©×Ó…ä©Zz«;Bót!5V(Õ7ºO&·’W[­±ŸÌdbü4O˜Úû±Ô<³ 2›Ié¾…Ééj½¢Ü:ÊÀ^BØXÙ9ƒrUŽ4Ľõnåc»q6¡0Ú³8 ŒjÞ[Exx±|¢YÑP;ž’Ü#ÏwÅ_ ä”þsDÍ;Ô[»0›æò5Ù?¸SNR¢`HÏHçÍü$­ôLWlÝœÒN·ÁµÒ½’j©1"fã„£ó>Ï9ñ®ï1^5C ú¹[3Lê —]ºŒGLÊ"'õ[¹¶½c¦ÎǪosP ›phïbZª¨1 OG¦Cù0Î>7}8(2Jß#n¡RC Ã0ehb/|:ƒ÷›Ê>¡)ÎrÛ½ÐzžÛ©PÈ?ÏKça±Ä4ÃÑ£6€~ŸáEÝÆû‘ña;Þ*Ë>Œ“°mXÇÃÅÔ'©o“ÎÔ9t1Eoœ,¯¼¢9Âù‡NYd,Ú7íXäѼºsÑÊßÌI\cÒëêjÈ¥°$ð§¬U9ž¨ Övŧ ¼.Œ™›4üi¥{»¼¼ƒŒ:Ð`’:èZ}7g±e,Šî“h×›{U fÍj!¡ÚOtËã(Lycæá’2 ˆŸŒºHË„¯ê›ÛÜI>Ä„OãHM¿—ó/EÀ%—1DNlœ \pÒ;Ä  ¤’ϲÝg ax<É}.ª`×µ'‹Œ®ÁÐiô¨õÓžp)œB”Žò• 鎦!v)·§yݱ¡|½íس/›Üå6!n˳xÕ¯Sy]’+ávnlŠÐXÊbA…¦$½Ü$#ûáclyæöÌI¹5é ñ\õ<°-çq‚ÛÈušm лlá-—§£<}YÉbÍ»A¦Ý£VÖXG‰XÌ8xÂó3lDv¯…7,ŒkÞ þ9™ì33 ¼4‹reÞâyŸdµ¥Áá²/ÞÈ U¹Í(Üá¥Ðfû¬ëú bo›O!Lï¨^Å™G^C€,±úØ6:éÍ­¯ Οç¯ Ÿ7r„îõ~ñC?nº5žt^¿­”Þ‚8@×\›ö*~à0o]»£®¿ûº¦.žoL×t9{áв]?ïUÇz©•·\Ô&=×póêßæé°3äÙ¡b2øøäšç%zž[ð¼!ÂÌÓøb|ŤW{¶ƒ·ãEç¸<^±¬Ž9èb‘G Í ·ªýÛ“‚Õ Ï4ײmò“ájË*â!mŽœ†_ÓÀ;ÄåauÑ6ÀÈT×?×’­–›gBoÿØVò°psû7HØ…ãØVŸ”qà`ÑÙ ¸ ,"tœÄp&ß!YH¶j£þÙ%.‘BCЍŸªaaCw1H±]ËÀ³N²¶J uRn$rÖÓ +çn/Ÿ®³³p¿lvŸô–Ú´>šaVºöÃäüzͦ™r…™ Œ¦;Þ8`½:T³Ó²°I{ NéV}&‚BÛ†ÕÞoô¢ÔU%¦AÈNyÞjÚj,ÜáþKÚ»å=^Mð%V–J\0\¿¨%÷BÆŒ nÛƒäRÓg±­žÇV×¥XÒ–á ßçéQòL"°]€ÇX¡8V#~~›=„ mïªïB/ª†j­0@¸®A½dûö@fŒ_T1—ÐZ™;ÉŠÜ2ƒ•ŒîU˜Å_“hŠq~ܸ„i¥Wª¿³ œ¨a(&ËËÏmUõ¥‡æÉBbA[ªêGÄÄ —”m¡™BÍ7 «ZÙñ_íÚ~í<´ˆß·±ßÛæBÊh÷®Í±,ç…@} Q@’„d1JnmŽ’מå ý,'”)/y‘ŒÐª8Ã]fFî“ij5kèL¦¤Ò Ú_—´ª*n2”’`^;;ÐU.ì—Tv$ºŠÜï(Q; ôÝG3%‚.MR…×¹PÒ@ºo >>®VÚÀ ¢ìg`‹ "ʽ*§Ð𵬻•Gêu¥Ri0/yZ³YƒòÕ¿;d1ÌõîécµÅªaZaR^a +} Åp.ã8Œ _Aå&6Ü Ṳ́N_ !Ã$’rù”Õooó š”;·ÐÃÁ§¹®Kæ]Zy/þz`1Ÿä[õs0ºåË9²·¢lÊÜGá|¹)b‹†§»Úìl¥í?'j<~û”T«nvSÏt&;¡! Ϫ®Šð¯˜È„á‘Y­ØE|]¬ŬhæÎ"'è&óV”£«#@‘_º~D‰Ï°ã@vKRêÄëå,‘¬é¡gvzÅ&Œ\Ú¶ûdQÐñh™b‡çÄÒ%jä«]'ç²™â%˜«9ç'C÷_‰†[ÉÑ0Á•Ð’¿m^øKˆÊLØÆÖ½ž~(?›¾¼vD;>!  Æ……€"âÌEíâGjÁŸ»½ýæ»·L.F8’»å>YK˜!ʘ Ùó-ƒpäµ:Œ]™ÍáÜ “NG)ø1LÀþª×¡ê t‡ƒÓÜV,ŸpBÕâ‰qîEiõA0ÌæÓ/Û©Sc>VªE„òmEs_Ì'XÔ™âÄoŸñÇ©Øþh *ÆvÉ­ åYg%Ò»ð›ôð‡Ž¤±ó¤^ëI¬Ý™Ž °àŽœ(—Ü-î“ÕÊï;½â|°tM¥eG-üÃsŸI"{bFI/mp÷¸¥'{Ä)ª•µŒõ/ƒ1Œ™r³ðuÉS¼‚ZVbº &3–\Š%ø••›áØÒpÏ@†ŠeŽdÉ‚`¼-ÙƒƒÁ“ý«ÒÄG‰ÍZYé¥!­J e]-hÌÞñO˜ŸÙµ$u<5¥,5ã­!½~½}b£ÝñšÔÐ03x£ºü$–x̖تup¨ä/@‡²k ¾²QŠð_÷ùÓN·0Ù 4G©Ã Làï3g&\Û%v±µ´#n¹¶ç#ñSkW׌!hè…g˜ëH|4ë”B6;Á’÷[B–™¿„‡. 0ëѳè%l ì3"*CT»íoh"›—YBôXšå&»ñ¿ÂóÕÎ+pZ#Û/Ãd¸hÊ‹AË‘š ƒ MŒÅ‚« R)›÷ÃÜöÎSùT7¾çÔ /Rõ}6 `FÚzsË×ì»Hè[’NÈÌ5£“é÷¿3Ù"׸It) íÌðÙ+\¤@×|A,ažUŒÊ H~:HO6[Ô ­¢¼-ÑrF¼ž—\ëBÏWq:†v‚0 Ójt1à|7 c³¬4/‘N‘ɛ͋*á‡F®Îƒ~†làGtsÍ |å9Mšÿÿ©|o[¨ÆÛñ’P&å7)tZï7¼IÐ êFJ¸³ðó‹1on¿®/ûm€&ŒÞjÏíÐû8&ÌÙ5Ð@Û!>Ù HÇLõãîÙì?ŒìÜõvp ¼…òÿ†Z+Š„Q­ çmï?¥ä4c¾e®Ä«:½S&°£š.jÕIJשx[ŒåÀSßù¯|Åš•oÑ äÉéåU\¹ôkþodW0Ë¡yæO÷&aQ­Äó‘$k”NmJº cÂ*¶•4?̦ÐIà0 <샤"½­VõÀÒK © E»—f5-©—à:…г»Z¡ŸÑ¢Á!g‰Sa Æp ŽÓ†Q°Qîe†jÝx>…í@FyÃGzÜ«_ÚùõÈd]×ù™ˆhâ×i;ª&ìc0ÜwÚÁ2Ã4ýž7k îÞõé ¯´‚*—>qp Ò6“ºY ËÎÿÙ,ÞÕ8¾·sñ\{€¼bÀ4¯µSótAö¹~OE¸DicuãÜÊ$ˆ:Ù«1­¯§ín)±$Ïq»·oð/.ÔX$¬¤9mÕÁ•«|ø.@,5³jVÊ`õià+o ®ó½*sëŠ §w0SØÆA8Ÿ{ÙH¹C¸GªøÊsçûC¥ìÊc6½zùÇ9ÕÔb}å ?œqÖ†€ëÁ{ÃRßB«¬Ì@I`VÏåÆ\Bj£ 4¾´/rg{ÎäÚgÑ»|Gû4L3*³Bt!ƒõ’ÄÍØ QÙ4¢·@2¶9d˜A|´ïV‘xGÈ*(¼‚ÄØÀ>CKºj~¢ ²áK¶ï¤5e¨GœÉ{ñ 4îDpPõø€>O?[dzüü§fbÓøTóƒš2+´JFàáÒi†u+Ídõ'K;q‚DL`¬É%”™¥)ˬŸ‘„NZ@}b:HƒBTB"SíÓö‹ˆ?»"j£ã³0¤ùÀ¶¾×«?o ¾kÌDpÝÝpp˜(EÿUÍB%>h9*Zò» ÆÇÆ>µêóŽåR‘á$ä<× p¯¤–µâ醦Iï|Œå#NJ%ØóÙÏÜM’üQ‘Æ<§=?R.yòEÄ$?ƒhÈšâë¥Áf~ÔD¿>L=äQ:7/Ô") >Õ´ Ù‘+o¨À•<ŸÊmÀEëì¦ØA´Óh€Qò-:Z×Ì×~¿Uí½­wÞªú:Ø·9°¸ÅNÎ8LiPt,ËŒ³„¸: +M›CHùðªåq‘5&wUMe—þ’ÙpñA3œ9V“ŽPr8›¡]:QrtS˜[:Û›ŸöðÀ>MÏ+8—Z™ZŠzj¸‚ ­Ûµéߌ}œŒ” ¦ãÀ£Ï$0Q!º+kf‘‰aÙñ¦fЪ+À§Q§h-¡9&Œš\š´ï ¼$~ÝLµ¨ðŒìÃðùˆ ¤o’ sø$˜Ù{@b:¯·@vxål y:g[¸ Ûô’[pÃã=ávÙ{,ša½6Ï ämÑËC7Ÿ籘-··>Ö^DLôH¢ÿœÉwÿ\9Ë·l:9éê¡æ5Ôš 2*+Ë"b^Õ‰0ŽÄIýöM ‘ÐÜ’ó©×ž¸ã΀(^f1.ðø¢Ï ì€Ææâï1˯¨Â4¼7È}M@¡Äôò!‰U„›îak(°¨¿ÎsœM§6vn}5?5NTZůq2Ø;;”pK{p:ˆëb“O-LÏãtò$Ó`¬Î½†çü®ßCV ǺUÍPû¯˜Æ³m ®ÝX™ÖªÃiSyJuÈ)Ìy~’©·¯ƒ~–yPíÈLAƳ•)˜5Ê/Ê=/à(¸*ðœ§EŽëÇãa:ÔÔ/tsÅîg–¿ªQÁ]½}XÊÙ"œA±CRÏK¸F½m{GŽÓ^¦%f:,Ìýä0ÿ2^¯ioø‡ âó¯^þÑèshPüû?A&í[OíS…*{Æ ¾å ü0$ â-÷ùLåä1°Îö >3ÕSÒV˜sºéÜ41нpâ÷ïJ4ÆÊdÃöÍ,9ò®˜˜Ò‰ölû Ú^c'áLhgMuªÊ`¹ò†%g·k“W„OæK]n¹RÃârx©òeôÓQ $—‰ÙƱ×Ü…À­‹ho!3+Œì œ!ßjÝ/r2P»ªÑ~‚6¦>´wP¯Ä¶•+Õ½>Ñ­g¢øp=ÊÒ‡ßfIèÏžIžØýŽ•/Èa•7Òfp§>‡/…?W|† å°Y#b\bVp’ ®ØN~舔PèkæÅ·K'1Y„Ú#o&=M«Ñê‹sšN¤2tØd(xHÙ)ÅWþA«Âd_zà¶>Ó“îì4ZÂs kxHp¬ºù¬-S.²¬o‡¾ÂÚ[úá稓±á;‚- ú&÷Í@ßú&¼ÛÉŽª`4i2 ÿ¦ñ¼ÔWØš›u«g@¾þÄ/ÏQPe­Ïz¤11¹¹àˆÖ§/Ø{2(0ýt4B2ÃŽ‚¿ªCÈÖ¶eþ@ø·2·îÒ“ Ú2é*#Êždð-^o‘ÿBù–€’ p/Ö VÙ¹çsÝò‰…VÑèšyœŠb>ªžBÕKÅrFœ¶4âôÈ¢x¿Vç f{¬*)Úò·\pSRq1Pp6À‘JUÒ°ìðÅî”m#$¯äë@©+f·³ ¾ð¼’ê°¿‘s[¦Z»êº<ˆäIr~ È>—Wܱ'Àó¬eAºá.ô]ÌòÎ}‰ƒÞ»âhÆfêßÄ‘•L$}šHw¢ *N"þÞu2KÏÀnÆYÊQ²ëPëˈt¯\a.ùBjÿ$ü€¬Pïôq³³ÌµÛ9œ>P[ÊN–baåäÇöD3Ò½là´6]WåzJº§FnÑ›#³lWý+=ÐH¶Wo`Ý#g*òU¦àae¢{\óü$œ œþfJÈP…1xiªöUäWÙg—Ÿ â‡b¾¾ëîe.p*d_6}¥FLwùç½/©:“lw¼ã—gòIùYƒE14ká˜]±gC³’µA«^¤6ìx³ÙºDISRÆØè/)-QNêVâZç./…XºÿÈ&( ZÛÙp'⛉b‚–³=ôÎÚ;¬õ³4öåWc®ü?Zˆ/iד/X`9Ø“@²îÒŠ:墂ºP’®X–W1–J§Sá-ÆxÓ¾,î¦H¦ý'ë¾Ì†e‰úÊZô<nãI¹E9Ñ0A€Õ¯¾×pøMq·¤ðÏÐDã$øÛ% M“©œ§™gÖ@/?%mlKzLÀlD¾6¶ .Huž‚ÂöÚðæoà¶K #Ïj•¨Zêõ; +3ë};“r¬µµ«¦+ ýŒØ^—*zÇÆ¹Còøð§Ë›ê¿åˆÈíšØLþ­aýsU“;"crßA«Q— ¯—ñÇbÄÂM`Ü#Ë Ÿ†y¢®¬3‹FêflX8ìYS"Áµ0ÇZ²j5(d – 5/Ó‚¯‹;‚É£3Zä1à^/Ç=„0÷5Ù÷^õ í.)®gÒ«1lÒæ!NŒšÄ7âjeS?«Ï]+Þ æÑÛ™€gm<¼ãÙ¼{Œ¤w“\¨é/š§úKÍ`Ré¢ÛK¨14Î[Ùµjpkn‰£f‹žbصiTÏz-î¶K³/‡ì6¡êv rš™.JŽmˆU R+€Õ–gØïÍm´JHY½sV²-|©©;#L{`bèîlv,Ǭ¶KkžÆ%îˆÙ<ÎTF@R$Cô“'hg3kèªËÿ¶–Þ¬µ:¸Â˜·C é äsëL><¿·b‡ U¬,`üHÎvCg€Ú¥»;ŠúűÕ$(É ˆUE(Bs vtV-P SgZqžGkXlº(…Ô¸CòKÚå7™*ÍÂ'”Zå7·aM5©…¾Ìµàn€n¦¹5ÐÎb]]D®˜%hB2#¿×ÄQ@uÕ ¤hjÆ@9ÂûHQJÁƒj"áwû^½ýŸlEùlŠ9IS±sx£jwTlv \ÚÉòÐñ^+dç’˜}­6t{dJrÝ%ú~òÆV0ÉTZH™ÎÆ=F5 èñ4­C²€4±KR çµ"vÁo[óZü ±xìÞÛµõø×ò§¬;qŸ(h SV¨i¿Ü¥7PJ@“/4Íš>dÜÍ )µÇ0^è¬PŽ{ËUÏø˜7>ÀèWÌÉùz"ýIÔ‘T‘:äîž¶¬Ö˱9ùäš–5µ6‡Înåö]jªžm_‹ð¡¯|¥¡/F3-Ò®ŠuâÕHToˆ`‰±F&Jå¶cƒ´]ƒ%×Îǫ̂±ˆSù#ˬKç·ÐŠ]lé§ Çbî<,A/´7â ¼òiëYDð”ÃõÈÒq¨FÅ3¨ëõ\u-=J”W°`÷r<Èì㉠-únl]·””è2>a@P¬˜PaX®¿'õa’‹Ä®)8¢j¢XÓÈSòNIt+TÚíÆìѬø:ÇxÕíP>¶t A[=>‚N~¦Êϼ}œeY:‘aYé,‹2ŽŠ»^óʘÿ ÖÊò*MÕ-bí*epüÖ0”aÍXo _t³x°¶ô!'Ê E¸IÈèD€5\Ý*™™8µ­Ô·knUu78£w¯žè·né§6 ¬lY4Œkߌ]£èžT2Sç85[¶A p<ØSï˜?®y«•õNQôÌ¿3 ¬ôQ®\a‹bÌÕæN6BZ56–}·(ûôžA~)!‡‚§Ön¬ÌÞ¤ŠË™pÑ!•+†y¢ÈÌJ:ÏD©ˆ¿c94y;sp4©¶9Yñ‹ u– Ù\™q”÷åÃo¶ºÔ°o†ŠÇu»4‘©^ÛS èž÷ÄË·’”Òìë'ÿ^\ª(ê8t½ ¤}aÎ$-*rò¬ÝKoêË…¦U*w„—­¤Ç„×dªR%H]Ñ Å» &2Ýôâ¶~¨°ñÆV6Yíxê27#QÊG X(,®‹ßƒÃh­a ŽÌE²Éƒr~în~t¢˜òТ꫞EØQ-ÙÛ¥yŒq¬J‚颥¨%‡½9ø‹4Á&¯3}z^ø=ºÿoŽ™dŸäP^ö}®è—´™ñ²@,OTxz´±ÝQz¢“ííI‹µ?}™RòÞ&N*l€”f:ލk$‹µ zpÞ„%Ƥ,ê‰{§pªÃœó¼¼aÍ­“†Õo$.E\Þ‡hq­¬úOíc¦ç7“jù», ®©—SwOa5ï¥/ IòWgéT&ÀìdWÏ•ºV-‹íѧ}4[òŒ†Ã»»nj•uuˆˆI˜uÏV6²«zUÀz•.†€pÝ 3¬¿  Áª'9CXAŸ‡½±´¬a˜ÜH +§£ˆÐC> Ìl9‚.âQö)ÕE¡û÷Çß{8¸ýº t1´=¶£ÅG—{X/¬U3µFv“ÇGè÷.¤±Í†™%IÈ¢¿„ðuEpª–­»Ôƒõo®§¹ËKð…?Ï!Ä‚Œ}'/È«™×ÛPßÂ`ûê×ûr›w¸2ÑcCÞ,b·–¿¡é… ‡}ÛÕâÊ Y̹d?Åí k8¡g#vͦxþhŽx:!’‰,…>Jö­"íÜl®ü2Iª aõX²`šß²CWN2'\1â..²?¹J>L›E2—¯³.ÖocA@ZtÄ“ÿš¦µù¤çä•ëù•lzðÂk¦W´»šóç!¢#J]ídåG›ž©¶Òþ5ÉaWŠþߣˆ5$쯻tœÇø=’jOwm-ó?ë+“,iµß-¨w0ÒS£þ£Üþ$û¨\Óq+»b€Ál¸Ñ\Þ¸Y¢'å›–ÌÖ™ZÏ'€ŸO’¯GǨ¿× ~q“ˆØñРë2Ùñí@?‘ìVÛ!Ž#üt˜Äûð_åƒàŸÓUœ}Y:ˆú²H7“5Î僮 s{«`)wpW˜ *øŽ„ ‘bùÛæ­Îöb¸Vwÿ§\¥ë,n­Pc¢¢ub ˆhl…?Õ[ß¡æ1Žù®Šïþ¶7n;oM™ÑeƒhìñŒTŸ‹-‡›ÑwÞ öDãëÔ?±8Wë²F¬&’ëLŸ+Úx(Z×ß:zsbC·áÓž™âBOãÊi3ƒ«™C;z´"Š`^ø¿õtÄŽÅkf²’ÃLi‘|ä¯FÆÁÐjÔ±ÛŠ`Ķ›6hIÀ§ŽyjîPaÔAR‹¾#Õ8³¢j-…¢à*\ž7¿o –A‚ºj #×fAÓtªÙeαàà{p¼Nw-û±nh•B˜Áµk#øÕJL½ÔïjÛÉ£ãìÿ“ü¡@ŠŠ¤‚ܲðØBܳ¬À¶8b×+Âà2‚€a[ÖQ˜Í[©¯íŠÆÕϵ¼ÌmUχX4fí(ú¼At¡˜þßöAŒ‹ O#&û Ç¥µšÂ¬`#¼ )•!ðž^¤GW>LÔUw}ÿÔ“ }ÙÛlVz9Žs+i NŽq¯g_A¯@·žü–Á÷™m<ÁFzN\Ý*¯8Æ;\ìØC,»s·ž—HQ43V1€µ«T¤Ö ¤X;é›sÂÅ[ey8'¦†œaÔØWï¡cjûÄÉ ¨ß5øUQB¯ÿ» X^Æ3¡`c%¥h8z£OÄ»Zý`vâ‡B4÷.{â¯k«ý°ß%Ê}B¨bïx¹@ïÃß"Ä©Îô;¨½†½\¦€x¹ÀÞŽghTx9›§’[¿¾ã„^‹ñ£ÍÎE {#NÚY"1Uxv n›hÂ,ºˆxJu;;[òœ¨Û)n¡ZN8  L€ ̆ý•¸U²k1”»T’ܪ‹.ÃÞXÊMÖe£”˜’ë§Z™ñFcH×qÿÊΑh óÞ*pØ– oOyЋ¡@Óí5ÒÎN)Ïq)¢¸!ŒëÑ^ÖÇáàª2:´´œbéF¬ÚQ2Î#(mVdQC2#Œ¨BùEÎërÞŽðJÁ¹’Ú>Ÿ_´Æú8¼«*»3‡ðDÎ(îÊÖ0÷4GLfö9Èè±Qrt÷:Ù@çõv·LòŠ71Sëgc, k •<Åì‘ÜTñ’³ß·fDv© ¢†Ã,•ùÅ>ƒáàN(cзÕ:âRbßlg$ÕCæ%naFsÅ‹€ÆŽÐz7ÑDh?û‹™‚éM1X@ ‘a„RÖÿ’&.˜D ¯äS×pÁ™$>AÎ…´C`ûñˤv«èÝ¢Ð=4m›r«¼ý ©ñ‡†"jÓ!¤3¬„=øDKíR>ȘŸWQ¿³ Ðà}HÄ4û*1ÃZ>—wt¬'øO´ÎVbž'L1¢£3*@zŠz'bþØR¡mê‚‹|ïaíf•¶ ¿ ÿrÍç—â¿#ú¬V5̤ÏÖ8tš>ÃLάpÞµ¶µÊ“Øšå ©5cAj„~e*nMÉÄÕNý‚çRû„᡺æ #ndçl ‡‘Ø]«oÅ—xaÎJs—cËØ¶{M„Ÿ9RסæKPÌEÚ–â‚„e2{AÚxFX£Î—äÈ›e É"ëqôŽ—*ŠîP]+LôгŸ‡F¤rÀ˜e̺}¦Ê?r{ì$Û!=LQnèPúÔÛb>Sk›VšHb¨g¦.drh8þÈýršÏæKä¸ ôÑ›='¬pq•’™)æžùÎL/vah §&–æÎ JvÚÍü&t ¬Ï“â☔™Í‹}° .ÄÜèÈ⺠ôQÖbµÝÂ6¨õU2Ѩt:Pÿ´ øÂÐñ©:‘<ÏkÌ ,~‚´@ l}ƒMWÚïê)]€×qlɕϧÍÙ c'2þG .¸nÑDi” _DšmcøàC[ȇª°ìŽnŽéXF!feG ¿LöKœaâZÒLäT-/¿C7[¦:š$¦ L{ªsjZ`‡Û¥Å˜i2´ö>´·w»Î+ÒÊf^Hr*¡í©†Ø‰ñŽSâ7[³x«TŽB‘»d| ù?a¾:ö5Ê¡i•Ê’òï^¨Ñ»È=ZþâêGºœã€¨½?Ó” ÄŠ4Ðñ¸‚àRnì‰üÞj5ø,´©µ/5vªâxÆë€ÈHóÂ=œg´ÂRÅ=€©pý7%p„4ãhN˜¥€©<ÏÞ¾„‡‡×Üõ ¾ù¢2^Ä@ Äy•ö£jâF?3.<Ùª~î{`äý6ÏB œ£úÕXaÔƒ[†n~§lßfJ̇¼z鎆.…úð±ëƒÉšƒDÑ&‹úLkœÐeå\dLäÀ›™(’øéiUŒO·"(™mëöÍ®Æ$T:/±ªUÅ«W ¯ŠÞaHƒ£fr¥ÒàÅöﳊ3Sà EW »,:PK‰ŒäLhäʧ‚\ g`#6—YÍs¢ ò„¸9™íP ,ÊåŸVáG Œ¹F!·™dmêì%ÑS[8Å«/ ÒÁ rF{~ôP3¥7V@1Ï$ïwWrX¶þnî…v 348ïÈA Â\ó°cIXa/Ÿè*Ûco¼‘\ù|2îºpo)êü¦_³ÏPçÓ?æ`"Š«§ÐBÏí¥—F"‹ÉP0ú‘ ‡ \FqÌÃÐ;´¦X$dA§µ°³Ïz²G¶-šˆ´ÀŸuÁÖÜ,}Gi|ˇÊ[­æÜí”+0%™KÄpþîrbízoÊ漢(O÷#0¯à¡Ü SÁö4Oüh5Î&\'ÎmÜŸ”RUÊsä1´(’Á”íü ¢¹'MLˆXk“ ä‡Û@ʃNi Çî; ¤ÚÚ ›äµ¿Ûßf;2i*.Œû†ê©F]:È»cðŒ»H Ð~{ÓT8N/¤àF¬J»Åp ìºD\ßá¿ÜÚ‚8úof‚ÑznYmÚ 7M:=¸ÀÎé’Ëä:ƒ_uì»QòŒáå䪳[Èr³„W·ñ‰sŽ*,û?ƒF`Y=Ž`»TGaÇ8“6çÚ¹’;]ÎÐ<1ã¬nн Ý;”Nå3cÂY”ݤÂ1Ë‚êÓ'æ[R5È>x賑ŸÒZöd°ã1[øYàya£¡@™èƒ8ªìèO¹"øâ¦SÚ,†Ë{ Ú™»p æ`.“·¼$BIqƹQ~B’ s4ÄÄ&™yu¤û³¦úí|+éÊŠÜé."T“f2ÿ˜Y¶fK[ùq'.ì©Ó¹ªï»wuN÷L‰X1§[óÎ^óÙž(UÑ,óB°Åäì{$5&wɾ&êXjÙ°åN¯ñWº/n ¸ð›'GsKfAåš·®Íø8MNfkøÒdhó³Ú)»ßÄfãnÂ&lɨ{aµ§âwš\_;jKƒƬCm3!îVs <‡uõ ª7Üš•ìod¹QW’A,IW”O& ˜ÄUªº­7ñ[o6ýlõL…[uïj Ô»ð) ÙÇÀ?ΗÌXÇÌŠmÎìžg›À'MXwrAä,+,ÑÌvøW‰Ó¤½N€ ¬›ß­{Z,²ºÒI”xºxÞ3ûÁ³¥&°._e£2ù’+ ÊꚎ¨Fåªãæ3§ó¯˜—Ë2FF½‹R¤C¥yƒñÕ %S³KlÞs¼‚puÒÄS‘ÝBÆTÑvN9u.±Dÿb­÷õ/kšç¥|‡åwy(DR¸YÛzâ’EUŠ7oÙx^m¯c£´NSÖb˜-ÔRÂÍR O3ð wQ5€噜{Mݵ26™~E ºCœnY†.f×G;< Øb¡áXϸyу›”3¡9ݽ7ÊúOâÊúHdjáàÊ™¯½ï¦Ç˰3kËG˜™ òœ™‘µk®"-º[Mªº[þ’Ì?5É.GÜÁF³øz¿âà À)Ýazû0‹1½ßùŒñþ6;ï„ã‹‚÷®`©ÒEm\ê*Ê‹TÎ D{^Æ«'n;’GÐPÿwÂFåô¤ ˧‡Ía¥MM½l¨uÏç( =R^oïµ‡å‰ êm›v.• Y›/zÐJZ=Z¿>¾ºy=2ÎpVƒÚåáݪ+;w.Ï$f¨cÍãÕ¼7~¾Êp\þ‚‰XîX¶ÃÅc+ë­ Ý»l]>¿S,_þªÆóKOƒ²Æ¦’˜Íiz~ifÿ°/œü:~„ôæIÁNh~w†?1Sd°‹Ô¿À±`sÄÊ8Ùfq΂,NáHcU—ÎA*½@gozH¶f±Óéc¤pÎÉ ªaúŠî‹í,9˜Ù÷ç‹V ‡þé´LMiçCMˆsÃHhRÚ¶e¥:(Ç8Áʦ˜"«®’mAMB-ŸÑjöV½ûá¬óةé¯#CÔðÿùʾ(¬W?\ Îó1§Ì°“JIb”u÷Âwgt«Ë‘K ©Š¸’U ²Ÿ'Üê>ìÒ¨ýøùA'ü–Áä^X·ç£ÌV²ƒXOÉ3=@¨ ìÂÂ_νlÌ`2CìB5?ÂX©ÀgåÛ_üºVé´NÔ+½t²Âp«G‰&ÂØ³²d¢öóÇÙv™âôZí¶JŠfùãlTmºT:ðÑËðû†:;ôëG„aã1‰ørÌ[Ü8vhëønœ®>0?NQCçÀ… kWÜÊŽyÕ£ñæÊ+Jõñ0õ žZÌ_:Zw7[Œ7¾í×=ïIõÓ£™žÚ2Þ /QŠ|{_”Š]ŒHÊ$|ù‚z€¦›þÚ oÉm?$ÓVbó¦ÖøŒu¸—Ëæ°§AËÿô±uë)Ü ¥,NÔUËÝ‘TAæ R¹\wv²KS¬ÄOvÔ€Ý&S"ʬL0ŽxO Ti{ª'5瘀vl!ßß{.`ò&*”X&® Ò¡&B‹š…Æñ»Ô-s ãlP~­˜œMÊ­{¸Nä‹ dZ?œ2Å-ÑϼûÍc†Q{nœ/‡Ÿ¾ÅÑsdå;Æra‚©”,5ª¿è¾dRCwS÷ü™ ¥y~kP]ÇÆTëàP %÷)L¡ « ƒá· ¡8¼eøc; ]\qƾ:$µ3ùìKt‡úy"ÆO‡8!fzxØh°dþ;ëùwIõéäéD“„ì4hl4ïã!öÖ«´¸Ÿ_ÇÅ£ ‹vTWbqŽ*®[gke5äò¶H¼x#Ф¹¼4‹{Ù“åÙ]ïKF©87ädãþφ QîÆ QN¼y±4âdZüm•oíÄ„Ä~Í‚wÛŠ¼R4°* ×ÉïPuïû 9ëûnï,‡OOx5ÒÕäËÁ¤¿ºÇ~Kª9€y•Ë—3oö…:êþÏìdÁpÄó¶ü¦N»éêz³­!o$tìt)l‹Úv¬ž”P-àޱ…{mo§?"ú"òŸ o'a(À˜'û3)´ûˆÎeÌžªp…*´°;¢A c¦ÖW}œÖFœH¸JÔâqèFtvF™Oa—·KþKŒPK%Jš£‡Y¾ÛÚ΀7Ê¢ìn6Ól4ÄÑ• íÍÈÕ•Öô t̺ŽÛ#¿JiZž2÷û—Ó±‹ÖVi•æð«BÌçõúÁHcs±¡0|¥Â^=öÏFXNS6¯¤ËÈÝu6 ‚ªL6q:Zõ½È”òd?Ñ«}¥Ëè{ȹï!ç¾]†Qb|”AK1¿aÑ…L1½_¤×iìF……‹ºcÉ{¦Í ÷ßf¡AËÎxgëR^8£%äÛð-‰t6SÊ … \pȈ$AA+OÄñÁáÄ*Õߤ"Èí)Ý0òPX:ˆCG£‹pÆÙµz[,Ì?kõ(“6çÖºTÑèg«º¼†ÎxÃBŸ…as(?b¡:~¡·b>j¾¶Ç ȶút€^¡{ä룟éðäS£€)†®MêœY¢Îhår®<££ÈXa™˜/V뢴\ò„VýRÕ'áþ5… ƒ*ÚT`±^æoLÊe½®38Ðzht¥¹5ä£[Ù¶¢¢UéQïó±´Ðð±Úè:O€†²Áx³ —4¥£ß d…$«:7-° JTÖzéóñ‹ñ¶½bRK|éì1 _ÌåuÿM+(Ç…¼``†t×ùfìËf|Y ¿Š?Áä*úê†hÕCü›Eh[Ú½NuYG»ç6Ó%¹Þ;OÆ ŒYmÓ‰^~¦2øä&#|)jä…0ÅâšJ¯" UÏÍÉŒéûl{­;Àu÷fhªå¹FsbûÚ?‰Ï“cÐ ûÙ— a#¿»ÕÃ=_aNÎTËÜ>&còÈ”iìϼiõèdx5<*ļZW¸Åo§ÅwmøéÕG”il7Äv!™©Ë0Ív©Þ6ØïE¥Ã1¸/¹rîäg2:õÿ7ßâ˜þÅo§:úšüÀŠ?»9|yVÃAyç’ðH޶˃ϧ‹å±?_â'k[]Ý¥ÑU¥}éÖüåOb¶ÄËœÊl±—:¡Ù7Z±-å/ƒN ÏÖ> C:Wìu:êÔÜ¥xuŸÔ~…?ûfݰ›*d)Ü àK¯Á›áÛŒ³8¬p‘1s¼|…(ÜÚ·ÇS ²%3‰Ñ—ü]“¯X;ê ­:ž¢â6è:ã×þ§knÁ»í°*î•Ë[ ®R+zż“‰r°cЫúÜóøªi…–þLÞVðÄö-MÕ“î¨3âkg÷:ÿÄ[e±Çóõæóæ‘ÌɤäUËãÀ+ %ßé€t°q{_1Ò› \Åì¼içúøúH’²ù1O×oú–™;ºïgÆD‚’uÒPdðqL;û±Qù¦_uÕvWXŸïoëJtø¿ð2¨ü_”†»?ihï;£¾¡²®»  ³”—© ¿' 5ð‚C;ÈbtÕšª+h8¢97y龊 3ªê 2¼T.áxùˆÄÒ×Vf )€þYn”m„#õó^F†vwÒ+LtXSü´ØH^‡O-Üþ¯i$’`]t1 „âmO»fô¡¶uÈc}Ïh¥S ûl?¦Ëè÷ f–uùÓŠ{» 1§÷í°ß†™m$[õÖדõ÷𛍄ï|Åëšû]¾*Æ/pU-Ê >AüüÝ“%¯>l†9I0fE-[U"—T Hé ™Ç)_½èVíê·Æ¸'t2>z°U“}¹DéY468 æùÏÞ¦|q#á¤QC8ÞP¸1·™À¹®3Á˜jˆ3Þº¹™ƒ¿ü0þÖ܇¦háFÄHð]ÏINù0®íüH%hbÈ®«¬·0R›Ñv ¡WuÞ¡ ìˆ ¾„SÌ¢î¿Ônt6ï(R¦*žü/¿+¤¦DMQh°6Ä]¯ žãÎl@¦·upÚ?¡v.3“ó*&I›?œ’~ A„&ŠÚA|FϽ2N%óþéÖ¾RTOœ^©‡ýM5mõ¸¨yÙ2©> Þ9N øsûŠš„Mõ˜zö™ªËang÷î5ÎQú­Às)ä{•UÖ×ù¿ß6s™¢öª,|\LÞ¤†£ À¨‡ù¿l#Ô5Ì0虳mñ  Ë{~s¬IRãÊò~ËŸ ”Ëñè‰lên1?ù5VÕLUšmhR]“^ê aÜÇØZPvRîÊÝîJ“êN©¤˜ˆõÍÔ~Ð$ó(^¥º²ý’1)ÆB­?ÄTÂú ~9Ü]nŒubøNý°<Ú‹Ÿqp’ê>'o\b™á‰îk¦9Àr[ÆÙÅ7¹>#›veh¥:­|“æqô_Nûç²0)m„®8dç©–NÞï0ÌqbΤ† …Ë©ìœ1Êô­™¹:x÷#B ËÔYFTŸ "ó»8åùæî$«ÅuÌÎ}y M¶æì‚Þ\;2Å`$Qü Y½€§ÇÊç[´ñ¼dIä*ì]Ù7:‡u<§TUåÉÀb…ó\&lÍ“1ž}ÎH¤jëæ Àµ_ìQ¦œˆ›i^Ÿ£#½å,yµá<€ Á×ÚÀŸ)FÛ°ˆtüŒãRKhx™†´Z`ÔyJ‘ ÿµý_­ŠÆÆ0þK¯`¹XeRÉLoé_UFÙ[¥cðh¾ʧ–s÷ç ßÿŸ‚¿„q‰êd^ñ‰6Üjºï݈߶ÍYt`öÛŽ=¢G÷Æüá@>Ë ÛÑòyxƒÏJjíôôœA!Õh)êüõ‚'fZ(åf5JWA£4êÕ*ò žXU5 ôÏ3/ £¤89s.îmG´ƒÎ¦ù½ ±ªtKºñ¼ù¤’ú¹üs‚%þ'e¯Vò.ßö’™à_rËw(V2ëñ^Æî³ ¿qošø»ºðLwyËeQ”²Wæ›®!&ý|ÌBƒ/•éì¼ø\²N~G-8¦ãcx/Q®ÉãGMÝ|“øA軵\¢Xƒ/­óa†ãgBT5Ù^Y÷úÙäpï-E(ˆr>ÎL­è‘”ÔH#¾6y¾µ^@ïýúµKŸzYÈ´É¡¡\ m u¯, ] ‹ˆ£-ütØ“@ ÛŒvuËØ.3gã m‡A.¼±a[ c‘üôä€T 8)5lk$ˆáňX‹å?²ä©šÈ×=ÖÍ=í}IîJûy<-ë2×ÍßãÏü¸½.¿Óך_ËÁé©BÙE¾ÅÆž›8;p®Ébk‡MC¸ƒj¶|Jè$/ýèˇŽYü{ÙÇI"ÎnËJHe+QU½óeÉ/«ÝŠŒ rQðÂZ– ”`xtÔŽ>öÛ¼ïøâoÿýOÇe[þ™^^*Emïø2oÓ_åÓ´¯â£Ý|N߈áÌ$ò¿Þ‘K=WM2 _òÓ^Ãä,z À|ÞåXKÆ?oþúK7'_ëF¬µ&0CÞho¯™eéºió·Ù CÏ:ß.3þË‚kƒŽ;—QÿDàFÐD†LÃ*n™²¨ùÝøù„•¡”¬ðÉ›±èÑsÞùz-·S²ª?—RÉÅ–{oê‰û9Þá([ôrEVF+”7ªA†éÏÆÀ$dBV½b^êu*ä ,CÕU¹H²ƒèƒõ3³õêS«ÄÍÌ_ÊÊÞÅ6’Çit']®ônŒþ3µ›[2:áK;»b{Îp~¸R¶äƒi5E§yÕ•Ýrb†”t_ÐØ«VߦÜHä”vÅqÕX}ñl†5Y•Æç@ùnO•ÓR­¶œ5 beõ+q¹Ý6(˜Ö^‘hý$“¼'[ho+w€µáÛ{™JÄÃáñŠ[Á0 Ò²nÔâ½õÇ |ƒ¬­?Û²ÒyU÷IhB¹"À¹Û ຠ–­°Àb¡4@ânc]ÒæõŸÊ•eGNimðO_T2÷q›2 DJiQ.bòî \“N3ZÒ¥ ¦µ‚EÕ>vÆ jó H­ q‡ÿYžÔXGÀWi½ÞBد+[Æ]…è?×·½›.P6ÚOóY˜–‰\C‘þ2 Mâ>13×ꩇ`3Ë,f?nc$ÃŒ-pòãúÚnf¤‘ߟ͎^#p’öªl2ábeH6v‰`=OÓ’ G òA=fq*G¯ AÕX‘È‚x×eÂgVì‡è²ˆ³…Dý‡NáIžÓIš5c-žH}ž„údšj¸G˜]_=þr7 ŠÙ, ¡µØÙíN%e¬ I µŸÌ$|Ï–«¬¤2£ƒŸ‘yLê~ÚÝŽ÷i¬dÐ3²QÞ Aõôl&¥?j-¥äîÆP4L[^ìN† 2zž.Ùš×Ô&˜^‰¥ïd?wD·i€De‚¶×C¹X–Ûe½žcÝúÒÍ3ë]¯ï*(à ÷¾ºÖвi<û @7^°‹ÑfS³AÆÜ]iЦI3/£utóîˆé3*Þ”ùâ–DOq9ZT¨ÀRA×V‡'Ù{[»¦±jq€. ²ué Âí/”éõû‘1×Ln¤CyèªîÄŸ¯…«õ¾;K/"Ó¡»83 _;ßô‘ ô„Õ˜»%Ϧ1ã-#½Bµ.ì9)eXrp¿Þ!~äáÉ*Š"šlFÂÐíÅ~0-ÞYfö±ÛÍz0ÔØþ¯Ž%Áû5èÉLÂrºy[N‹Ke|1m¯*§Hf9®ù┣z²3‚fá²’9V†ŠþÍ#+”ãpk<µC‰aö w' Û7c,ùOqž ?? ÙCƒõY§OlŸÉwi9É%Z¦ “Øí%©,2d ®53¬ÜZr˜Op«rRÆJ Ky·÷Täžë 00ÕË<½ê)1(GE)ìËíMÚñ@vxóDõú$nW ¦ßÊ’~*¬¡­ÑÄÂóÌÁÁVìu~­É QÀýæZÕy5’œçüBHÕ[nrV-ÐiNÂ4Pa_]ZiÕáÁ<;qÞ®M}™?dOd§WâÍÓ:ì b?h]Ã~Bp?3E"F›Ç‡ÍjŒªqJ>—;æã ð`•HrÒÐÑ-ˬŠÀ7!ñ‡ºÍp¾®’8¬~ÍG.ÌVç)ˆý“ï•7Þzõ@ž>‡«—­ÒZ\ˆùU‡»c§©º,v%¹ ë¤PZ–&†‘Œ ÛÂGö3§±k梉brotli-6.0.0/testdata/backward65536000064400000000000000000002004001046102023000150410ustar 00000000000000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbrotli-6.0.0/testdata/backward65536.compressed000064400000000000000000000000231046102023000172030ustar 00000000000000[ÿ@ «{¬HNsí’brotli-6.0.0/testdata/compressed_file000064400000000000000000001416601046102023000160310ustar 00000000000000[RE ;«@}.ŠÒŠE\IKo¯€¯xÓ4]MOl±îô!+l\ECKgç›i¦E¥¢_…|ÿ’ݹòàɽ#æIBƺQéºàŸÔL‹JEÿ†`;l h/@wL¬™ÜÔ1Ä„F@Âq(ø¥}fùQ†³VF;EF¨ÖpdqÈ‘X7ìJdhîþýÉ 2‹ˆ>³·Wû"ù¹ï§HA|‹¶ä÷#n™òê9l[=ʇh^ àñøi~_o‹û#ÿ„(aŸ¹Hÿî<·?݃®j¼ðŠ'%>QA9"tÕ,ÿ}Sû“ýp0Q6a2Q|Ï=÷,C@UE¬*  ‘ ˆ¤ªoQcHS÷:MGì¿®ÿFZ¯ù¡Ìï±&ÜõIl}¼Y¶þû}iý;ÿ»¹§ºzÞ5ÙÏ^ko€qï @Ñ#H ÙHQ ‘ð³[ûÜÈÄ ª~ÊÊ2L©ßRU`ªžQGU™UnûÙ(Ý´Ó™­Cu÷.“ !lr’¾@$z–dÙ΃vS-ëÊæ>ŸÒ×ã¢B‘ iŒ¬òmï}Ê;; ¡¨ «„{àíÚ4ph”l"ú¯&­åÙæû= ŠâÃAbÔO\Ç/ÿg¥jâõ ÉÏì1œ+´c³žéUz>Ͻž­Ÿÿÿôþ— ¯:ü¯! Ñ´Vö®£a5ùh`ÖPëx½³¶ÏùNÿTä)èЃ®Ü™nñ'>?‹OϪ¼ø;ì, 1`pÛ˜èp©g`®Ì¨ ðâܦ"H«Pß‹÷ #Å8œ†¡p&=[Qùƒ¡F0rhäÉŒÐKùÛ`}ôð™HC;¤±+xù ÔDð<`€T$‰EH^BàgÀ­Æq^d1‘^BýsºzþšmWw8-JH,_”.Î{wˆsqŠÒ·gXŽ€ÆÙ’ùÔú€Ô¨Ûu^ë:Kþö é)’wŒ‘4‘œÃ(Ö'L‰€XC8pO‚ÍA¨ µÄq»‘„$% B©,´›þTíœ)µã§g¦ÖBüm!ní¡CW ”xþ6 F}gQq =þþ?Àï ˜%Ò$EðìI¬°èJ'Áb p4×™Iã<ƒþWØË߈tÞ˜t þ–ùQež†#2œÃ f×µÁ!dZˆK¨K‘ÆO_.UæH—%?ë< ü<3P0+uÝׂ¤ ɤ’3À86¾ýº@ ÀÆ-–þe ³#›D*°°+6Ñ5’IìNŽ–ŽŒÕú5¾#P ³Bùy·jaF˜ Ž!83e¹”2 )T&˜!ì€$•r¡¬í^%=zØr<‰1PÌ—–|ªÌU¤ü_¥/Û"$ê›ãmí¤z¹G|kiV¼Ç%¬uˆD@_®ñX”ú%ÉY{€J¹ ®HB_Béݦ3 8·qÇĪD9mqĮ¯} æÅ¨.Ò÷ÔÂn9°ðñ¥€&o°n”å9DhѪžË´æêpC+ÄcÔ@3a-ÂêL)‰%mÆ)î~žÌi/¯E*úWøYw‚ï3rà°Wà¸äZß ZÄ,N¥%Ýþ³¤/¹ƒÃ@žÊ}ÆOA»”¬Õ$á`..“ ££v×¹-õ…§mR¼£.Þ&8·‡§2S¢pÒ8RA³YKаYÑdß=O j fâÙÕ<ÁÕìªJ[‘Qb:I£Å$>.jú|¢!@÷el) Š?½&\fÍ60²d­A_„ÞS½Xç2xä¾O¢¬iö¨Ú>©±~ÑžP6èÈKЧU­›wiy¨ W›‰Î[¦¶»øþ(b¶,š73¯(Lž¦Èõû)+3.´¹ô…hâMªdþ-Œ6#ƒ®#¸QÝó N›=è&F£‘“&„lçb°ÀZ =&>Tk‘H ×0ähñ›òÅ÷,„g¯ÁP×B¯¬u˜á"º–/ŒãÚËŒ¼Rk9©ü¡ŒiæY‘½«.°>>“ê'ÐJEm œn¸L_ ‚·Æ<Ã%êBHB¢·É‰\ƪjáÇ9ŠSK–cM>ö[Kh_"0ïû†Ó[Y¶Ìå?Q{°¼8ß›Dê«ID¹5˜‰^ \ ûŸùþøß¿£Ã~'Ø"„NIzžu£@:¢Ö»ÏÓk $+¤öšß}OEÉÀlWž§Ë ÍI Hbxt*mtKÍnìÔ·™ØÒC!”| ×QzÙ.ƒ¬M7{ûÿONËs•Æé¦ JF ECU8ºX|HÖ,Ÿ-•:û,‚ŒaõC{¦-mí¨øâjz.iY°«;“Zí%±3owXEï ½S#Ññ;„ÿÈZXÆq©…3DF)ú¸¦Ð"ËúøFº_~Òâd–|ÔÑR¢cKÑñUÓ2ü_$Qê ù;¿À‹_™¡&^$ë¿hüm’¦× ¦„ý7¦+ˆ´×ÅË(a!Ú0_޶všhÚ#´Ÿ ØôÐ>LÅkÿŽÞ˜\¼7Á;d’æ4¿/¼?ýþÛù·€c.C:Cj$L¹±]ÛÑÀK+kÜÎʨ¬Pw¸ÂŒEÁL9÷ï¤yàçÂË™|kOÄ¥V®²ŽjÜO3U„þÏã÷8Ð@Ïv±Z±`~„̾‚# @ öëœ, D(ˆªi"hÒ`ÝáãÃc‹¤òR)kÔ°Ä[¿û<½N&c¤F\c/x»ƒmÔ„60x͘ñ¡„d0Á·º±×§Womç´\!KÇã—ß|ÿøŸ_~ý ÈþMר1u£¡©œƒë@]í-ÊQPÓ(À¼Gë¸tò+šÎZvæ§XñÞp4nÛ‘B%òÝ¢BfFΛmMU¤ñ¦ Õ4~’>Ë E®™ÓŒ4v¦Ï˜ÈùsÒeÒN7Y˜š¬å›)9e®+3¦QÜ ‡Æç‚ª–ŒáÒê“o³ÕÛHašòýa.I5Sp¥´cU£Ž˜ÑW-ŸQJF-L™c–5ÛØ<8Jÿzï)¢ö“ *žL+Åæ´ÊÔä²:RÖ«7¯ì‚¦/A ýLDG‡kËtn—£Þ(ÿ-šØ3ã1Ó^Qx)·7û\šäìC}‰h뿉îà[=Ñ&ûrÈ! 8]^uaŽR3°áøYH, ìë–?T{ºFž|Qj jÒÛ-+2V'´„ÇÜ™ Ö®¡‹¹ÃÏCH!OP8í¤,&ÕI?ÀÜF‡PÈõ¯Á*€A+¢¢Ƈ†¼nNóDÖk¡9†ˆ®fm(ª+És’•I,EMyrà׌W8EKwBÿ¢håŒ]“À1±õ³“Fxµj•OEŒo23@¦È½ÛÌÔ «eGwêÏyQ(ûÑ—uÈüR”kFMM=u;’&”\?®p¬Ôqº]޲ƒÑ^ ÚL ø•tÖa]z©vA¬)·%+'²à§Êûyx[ÇGjÔ®Ñîkà¿áZdžá™jñ9¡GQÛ§ºLfœæ(ÐT&µ¹ï>2œl£©ûž¤‹Á+ö\EÞcµ¦äŠ |8É Š›!Œë'àˆ]&«%0šWÝ&ä!;1{ƒâ©I'GÔ7Xús¤@ŽÚtÉœbþÊŽAFŽtB8D]0e¦Ò»Ü{vÔôO7¼‹Lù¡Àäeîù™Óã:žÌŒêi7Ló+eOñ,Ri¨E÷±ïJæpç²Ïódo¡†üid|²ÆžŸúÄ;/¿ÿòëàü8Nóóºv< ÀÒRHÌ<8Õ§Û–÷ƒúOfÑy(~å3,Oþ!éëyJ;zœ^jXœùÌ3‘7ØR!¿.wÔ Ö8S›‡cD³ÊâÃ[¬¾š‘Fl>Û¬Y±'‰  ëí­-2‚Õ\É$¸]Pö»8UÛÉ44èCyH®œ ðﮃáÇîÝ2£€aͬ¢µ:.âü`çïCÖR,n~Ã{K¸UvÛÓÉÞÁtH#ì P[JJÚv߀\âŒa¥2Ú ô¬…vÛEJ?L;”ÌGp®´¹‚?N/|…þB4ܯóS§šâk:$¸À«1)µ¥a¦Å5Y°>!)ôž)#KÄ QXÝð:Ó²A#=Šà´²bÀ©DÊУê(¥}~†©p4¿îûYŽO”ʶ›™ëÆEI÷£³œ'µ?ë˜Òâ )©k»`!Š'Fˇ@cbQVËËjIàáÇvð¥ëÊQ}àÈŸÔÀ§×%&R@kÒ˜’™TKzÖn§ðöUŒÙ†X˜ó³E1sðÂ0/ÞŒ`Pn AÚÓaå@ÎNɤE$VmXW.eÍí´†C:À¿xÁÛú½ÕÜp*ôÉ/*kG³Gà´NÁ˜ÔÆ÷,S±íô"äˆÓ9Vm70J·áô'ù§éFMÇ·½1ù \FÂÁ„»Ãgûߋ֙Õ”\g­”¶×)¶üdÁ=t)í<ŠyВΩ=/8¶†‚‡!¡£ ½½zµ‘W–jg\ü‘Yzø…<Ó Íµƒ;‹º D}圌<€% òfÛ«±Ó¤á™Î÷p&šš©ÄÒÛªD&%âԜĄ.á*¾PóŽÁxÅL,ö eçŽ*R³{Óõ [û‘OQ™ÑtÔ‡tžD0a”X†«yj åUGdãÝIRÔ©”ÃPƒLLK±Ž²›w i ¶t°ÁÔòÇN»›;€±óFÞlpjné¨PùÔŒMÍÅî×@Q·ñ.!µ€I"ÅbëEdoüü~ ‹@9­Hµ})Ê«˜'šuÔMƬޮÐ(ê[Ò•céÀ7¾v˜æVgó.%0›Å®ïöÆà@¡xËd(†â…537Òù\Ž”oG7›F¹ú±jϼݟYO¡â¹a ]bãÐ%yÅ–âzÝÆ@ «d¤…^Íê­7ºÚ;{¶û Rä»k,ÀUU»Ëg‡0àhÆw Õ„æ¹&¼$ù9c\Øjø×ò10  n¼.™ &ÆAÑÕc^UÞ7Bߎdi‹ÉF¥ˆŒ¦jÛš:нJx£¶Y'ëº0!èJ6B§Ài‘6ÔjO¶®ék»j/Î9ë–Ž¦HQ¥·Ø%TC“Fìõø¦+ÝÈÀ-oûfž9庲3@£’O9×¢«vFYXI@ñ:Çoº†êÿ9Œ¹A•£<Û¦jm§žbR‹TìÆ4°$ÔMÆ›vN}–}]ú± d¥<\%±D÷v`0í ¦©ŒÏf&5¸ç»u¡|pÚ+EÓÞæ¥v„àüƶÃPM¯ì÷zžäbvG(M}$R¹UJ.ùÌmW º8XÖ ãõÏ]=#ÍöECÁ9ü\üÌ&¼á¤%ò²›=ÜdQ†R žÜ;Üù§ƒÜ÷dÔ[»}­}zW¬ÿ&¬ÅDa6¾½Z'ãÝ­þ¬P_ŒZm>±«÷Ø[!ŸGæCrK$ô£Ej¼sH1Œ^›ë0sÕßÖ쯉RÞ ¨àüZC¼æá-%3[ãðý¢H2Z‘†*°?³Ýe­t´ó ¸%ù§F$"«Z¡‹r½+¡NÌ^›m8✮ъϣ…¶TêEš£Ô6‰Sµ¡Íúí6XÛ3êP‹DꞪU‚k7‘•ŠÔŸ–ìbU£îÎcÂl³BÖÁY.-û˜q÷ÍùÐY‡"€€\7{ÛZiäñ»Dÿ"d…m¬_¼Æ1¥úŸo‡VÔ‰Â4þQ2H{½÷þ0E)šÈŒSì>gÅ;äù`‡sÈ0>Îpîêå¬eIc=zÇÇ­¿“ú*åÝÄ}ÔFEóÕc 5:Œ´×o„“Ó Ï]¦¥YÞæÎ8›™+0Ãl@OeœÀš•êSI¤MÆŠ>Gš!°€ø³`꺄҂O3ƒ•Ô¸SðAx£À½ ÕD1ýèùPû…A¥\.Òã–~àÒr©Œ>&þ*'ñ)°ÔJ ÷:”¦<´‘Ñ¡-ã[NîÝEßÏ<;DàÈ à×Öï©r¸ÛSo¤Â§g™Pò¨$}} • ÎùÉk‡¢ÎÆnð3ÝvÏTUðfx&ºm4^ùû\ï¾!ÁÜ¿–z<øÀmŠ™¯‹JµâÎÜø„“GÖœËTψ|‚… ¹ÒóF˜$¶A= Jˆ !}1¬aï;´cÄ€g…la*V™º„Ù¨¢ O ~ÏtI#éxÙ­iÉË-Œ¦¥ª`Þ~“ 2ÙkÝÔLe¾=$þ÷*V¼|¬°2`ùçê ÃÎ!+õV] å ×ÛÎY‘K-²Cl RÆV^ ºqj޶n,²²*ÞTPê\Œ:0´+Yá+ª¾Ã–ûÑGx–ßáQò¿µé<ƒ©ã TSŒcŒº@íÐ놌®Ñô¨ŸLŠ]^šÌpÀŠ¢ZΚFá”&:–­tž†ôwº°­ŽxKî,K¶šÐÂÌsH¡<‰ Ògêƒkˆû»LNmŸ{ÌÃ~èzf:EÞ²à™,ìÚþß]Ð]׆êÜ¡¡åó"‰ ¿§ÍMx!ÁùÖRý~NÍ­.>>èl¤óØV¨&K¤ÓUœk·éáÙüÛznï 7“ZC0Ñò©i©5Ò f¥Irt«=›Ë[ÿqþãdV>ÜLvkã……Ú‘ºðŠ]„8^¯-‘Æ ¡‰•ö¢c@¬Úa†tÎNt+¾Uªeí¾‡éÚ /m_{L«ÄE=†¡C­Dì—Mw¯'ÃòQ+)xôf„΃À¤Ú®èX®“ùQ¤ƒ„¦ç½!2 Kéï#ãg©} ¶*"½änh­ÊŽ9±ûÂÚ‰³Ñ•‘>T/1 ·ÅâéöŽ^ÄÆ<6ŸB(Ž¡zºöV{ÁÔ8þG·Õ{ððå…Å9¤yt™xÓÐÈ”&­*-Œ7LÙ.‹y…%$¹u^5¬´Æ»¬å;W—7%3Ì„iL)1›ÂiQO#%ììΘÊk»|«¬¸¸rVPø XRÏŠ~kSµš¿]J(?Zþ@ù0¸«v¥âS"vz ­‰-‚¨õÞóñÇÇ¿΋b‚yYÏ™ÿ»®IÃC(¸`Žkê¡f&þk¼çŽn¥"¸&'L' ¤7t~eD¦moÀKæ;ÌÚAÓɘÝVltчé8ÃiX´‚c¸‚2^fë‚ '%:þ¾Õ„žðàX/=­Í02ü}ž7Ÿ‰§·»¼CªO•.‰þ³‡ Z]ˉ3u)é•åwén•–Ä‘A?|Ý—u{ãüÇßkC­H³}IE€ ºït¤k¶[vMPFãTS-N_?yЙ&¸òÂ)®]ïÄ w †tó¸6þ37º_üØæ·a&š&JcžLÿûñ0[ h ߪ¬6HÞ~Š×Ò¼,@.Ûg±­ŒíÌ#Ä©Ÿ—F©q–KÈJaä;¡õ âNü|ú§¯‡’zÆê|T¶¾€}6SNužµ0ÀŲ§íì–³(„ß)ÕßÐ'“ D:U¢tµ?ïδ@íŽ2FèGX—¢&TQªÅ½!ª\ŽvÒd;5z'ŽÕ;‰å̦Ô""„…ÎHEºA¼Ö–Pmî8 @Ü7¬a;J­„UÔÝÓJ¡rجoulßÀ#ÿ¦EÍŒ/Ò„ (•¼¸ud…ã&…×2¬ˆö/¾s­;V€;MõmÞtI|}%ñfi§Lê2†ï…ݳî^À~|ûeÏÁ¸Oجø´Ï¡q´ƒ6+Ä|ÚZ!øÐúŸpbÍæð†ÀT¿+´,?éQYK«!°òÛGÞxÍØäК^7 Lí Xwq <²YÃRD&®0DåM¥·Ýʯð€kì罋ŸX’×uV†Ï9¦Æio¿9«S /‰§¡Â=úûafýzm.wªol@Qv2³ö­PÎu²Yj]XFø.LgÞ:‚žúÖÿ)Ç»¸E2½ì¥ÐcEõlmè¬î'9|GP“»Û>‚g^bEÿYÖ‚fˆ; Ú€}÷Í;玾¦Æ¡0¾IéNU‚J¢þ;<÷mŒ>÷êA‚|>ÓkŸWS[¸0ðÀ³^B@f­wã5C6¯ú…quðe>ĬŸ•®à5Ev$Ú§Ym™î×3u žöRb”ZÞeŠ’ÌÉBc|Ã1v`ôEÑîϹà×.¯Œ>óŽŽä±<¿M®IüÅóñWïlNÙ¸/T-ìE‡jM}äwÉe‹OðÀH‹UŽ‹Ï%,ÚÖSwâ›]šÅ£[ßcN"zRÜa¦ðÓ£ŒkÝî8‰÷w9Gü¤p oëŠHãã§›„ÙXa´4"Tu˵0°Ï—’^då€]ˆû}µ›ȹç:£†ˆ€kv»Šq±‰4™C­+œÕ=¯ÃIÊû@¥§]¼<@õáA;[ƒob&€â>ÓàÎŒJs,Ë@ÒBí±âÃÄ2ãüÃŽ¡¾§"–è£ó¥[§á§ŠfG„i×,žõàÜuœ_3)ü& ~yºRõ®¤A h¹îMËÃ?íou·¼Ž=1¬Ø™ZúJ(©ÓÇÏÅë/þU„þß.20†JpGl UÑV7ÔW—¹=¹ývÞ ¥FRš­]ÚYÆã@²špé¾Ã†Ÿuîè‡ÑøúÊ»š&3W=þÙA¾!©û6Ñ>p?(Èè½Ï?ð–͸\~‡÷`½ ‡3Ѷrr«%£ ükÃNì:ð/œ)%Õ'õ|ÓE·ï‹ílüâYz$ànæ>À¸.‹¦Ó;IÄÓ?6æò|:CÛÍ’ÚÇŸ&£¯çž=µFjº0w#ýÐÄçX¡-ô3¾¹¶4*ÞV9äãIøè²=Ÿörb3å¾³»©¾wgž;›é@­w~ØZ ›¶Æ{ÐŒ‹ž³Ïà†v¨ÿ&ÿ» ž¸Ò?+Òœbµ•^ÿQž¹÷%_qï+}bT¿ê½™±ê1XbWîçi¯ôo™ù³ñφ.®ò +ÎÐæÜ—ã¥V)ð¼br†ÒìÉçD€âÊ‹¦š·¿%G:¨š/9z¶¡â«šûUf×óÆrÙfQ8ÏFû'K^ ^¡`|ã÷óþå,Eí6bÕLÄqæ5às…þ…%ð<‘ëÌ›ØæÀV¦Hµ{Í)¤[g1½~|=a¹AŠä……ËAŽI¾ø¡R¸°.{éÙ¸wµsƒŽ$¢]Xïº=ølÙQŽJ¤çàTH{LrrßÅm2eVÉ:ì$¹É*ãσQ"öÐæÁÛo±åIÊlã=H¬¢HΩ8Ž„Mö¬‰ÂÜꆌMÆc-,+H­Aï~ Ì 2û%$èç#é+- O4Ì,ì<ßQkmwàÎäªÁ“ÂÉï"8Æ2/5<OFsï–ÛÓ2ÚÐJ©x¯øº1:7k5Ýü’á“ ×p•Ävë1Óçú Q-ÛK&Žr^üwq9n‘šlK¯*›9Õ ˜”n§£ù(ËX-8ó;ŒÇéó>ÕS«¹ešd½Hñt¬°%íDÖ3Ç[õg ‘γØVû胱²d´ÅG<åiênλ¯Nhb€r å 5kûêsˆÙ.Wâ÷¬´ ÅdWQo&ö/Â^6Ž¡Q Ø"qœ(õŽd=>‰3à &®»² †?®¬ÍëR÷0‰RBô`I¨ H’’†Äøþ Áë4‹z<ÙÔÓ‚[|\ÿqp»v„haº$r…ƒÉN@•w8 Òµ­ò•¼‚768Ì(2ý¼Ë£Ú{5š +y_œ®àýX)9\yeî©kT.à|2Œ=e“Ý€÷Å:3ÎXÏ‚÷²™òŽÀ÷¾Äq«}¸úÅ68¸a»“-€>4²R-8çÖW¤Ž?ÕÅQv˜iƒcÆjí£GHªÒI® Ö…µl=¶… ?ë~Ž>÷ªÔnøë"¿ÿ˜pÉÄ'‚öZR„Šp~,оn!†?!Þ°f4¯ü¯„Ù„e|!¸ÏËÅC¥¦ó¼U"–àî°5°&¼òk-ÖaU0jÐå#¤sÓÃùϸ?ÆBžÙÁú«ä©6N•·ïEDG‘¢þ:?7å5ÁÇržõ¦ã,¡=r”uO²(ÌG5\a’ ëžøímWQûs!ª¹9O»ì$µàÏ“ÑFIn¸hÖ”Õ]d\""~+k™Æ™ªjà¼{ŶÛœýÕ¥4^øÏìð’/n†!]dôe•›óH«ˆoƒ¿–òj%ÏwENòŠ1<ù[Yæîf¿IÍæe)D7N,ømküÃŒô^yØp[G-ÝÍØÊìw4ÝØúT¢£pñž­çéq¼ßÊó™HUz:ÿÙ†æëT‚/lµM¨=ìÓÔ¡»ñÎn(Á6¹ÑwP4ŒÌ+€èE$¹ÕiRË“y®Ñ@j. ÂVÏ3Sú= »î Âíi©´Õò½|±3«Ë2½E·rÔòø%°¨l…žy—ËþÛH˜ÉŒRçFd|Â;-ÚG8FŽ`2+¢“ÈUª›ß2(~+Ô9‚fÿ(¶²ßsúÌÚñEºxøüm’Œ?ÁT¾ˆï-³Vs²0„t«€šU„½¼|4¿Ö‚'‘l ‘i¶p.‡‹PŒÁ¦g,D+Æ.‚¾. ³¦Dk€+$ê½UÍ!Š›cŠO냂ÌáûHq¼`7§ÛôH©g}S[ã~‡4sŒ.€Rð$¶òî3LD—lµÕgÖë$4YïŠîºSq‚{ìÇ)TË*Õ’CV›rÏCÞ÷c˜ñX$Ywé¡)<Ø™¸‰#ÄÞvÔ4#Qê,;Páý—É m&ggßÙIÿ']^gú~üçþåÇ8mýhòƒ׺ê%‰ßÝe÷»Ó{67ó˜¥x¼ÎG&EfÑ9ëŽ é!Þ­T;±ãv /'«H‚ @;2¸ðKç=7zD`(2{lÕ€µž€jñ©cîÍ<¨–a\Z)€; 1بmXæñ»…¨ñoßù§ã ¢²ÑÅ“x>cE÷,µ øÑyRjýOþëìf¼f Ú˜è¢fЋD_? ”ÏVo¥!;N L]A%Ef{k £åým(i$üÍø‚ŽÚ>Ÿ &é©S%ë{¥å½Ðwz¯s} #³äó1´Ú9 u1÷â¹øžà¢Ç¡Ô&hâ«V;ƒžô † Óåy¦W<ìjÇ·eÀ8ϳJÜPŒKíÝøPˆŸaÌ߯C{ÙžmõÿÈL9îXÿvsé3¢ó~ö ‹I|-i ÊàH éBv)ˆ– x8*¤±¤*Ãh|«Z˺8³ïLçµÉ,­çÝŒOÖ›¼-àNìo´CË]ðÑK£Þh+?`ÇïrF[f?«¢‘¿SV»÷ãß_µùÌ 0+ôã–7ÙxŸÅ:68j2ĉŽiQPÃnk #ÀÀ{u?ˆ’úÔè¬!4×`fQó–ˆËõ®¸uj0^pÓ¥óüxgn|6íLU©ãóe㣻f–(i]€Ñà!—…Ÿ}ò’½¾98+|MD o›“„Åp­…¯±Ô‘1Û‡Z­ÿ@ºŸSì\öÒ>»D«¼\î”éÂAœ‹Éƒ9ΦÊOLªntˆÁ[TÖ·&hWèÜ}_ ™»BfÒ¨¼ Jåq͇…”#±Åz÷ G•`ØXý½ùÙn49ìYšÃ„´þÝ@ð­5ä#fÊ6žWAzé» (¤oPŠãj¦Æ1yh¯ 3{eÔm¸¼õAò±·rwXÕp+‹Oêavõ ¦¦“Y­„Œwm&zŸvñ øA»ÍKDHµø¬eH‘ª4ºÿþ))CìÆ)n¼´ÉQJÞcèTWdú¤hÃzF®n«ÔEõÜFÆçÜRþ9A¡=D€¼CÞWë*¡æ“PŸÃEqïíH}NÍÆçE4ÿ[±2M9§Ž¹²÷e4÷%{¯·Å™Ê ‰T‹åîÍ©Û=“¶†a¢HWžà“$áÐr;y±ƒ*ëë7ú?Xuƒ[ ŽS“9˜‰ä7y‘ýM-r9ˆ9°´§Ë‹0£ôk2Uþ Êð':SFDáä|¦Ò"yƒ¯+)4”Ú…ÿ¸ÞßÙÓ›ÛÀ{Ë:p­þ*Ø»5´Dhºôر», ˜M[…9á­jM¢ÇÖC³®³ãYH<"jödrW^ôHpÜþ’ÓYª•ãŸy’àÈLÎtð#ë—sÓc0ÿÎðüøûG&æÄl¢¯B9Á]×®z^öýg-\üžõ€+vÝ/à.Zç3ŒÇí/EÊA ôi }„[¾0t$™&¥(³iéÖîYèC[l –5ãRžÉþ?ý~)`]8mµØvIt‘"KW¨æ7³ñe˜“p¬882.g|9ßkDn1A,þãüÇÇá®ðÊ&q¼qÅÕ‘dP0šfÐ[>cYLÖGÐYª5~ÁÊ­^Ä/0T_°(Áï¡Õ¶óð-1HÀNuldÛrgµªÂŒÌ(®#â5¤¨8Ý'oǬìæ6¸DX­ÙÈ¢{U‹¿]±æ•ºÌƒàmCˆÿ'´ÀBwZ˜ÈY~“,B”±HFð  *b3²té8@'Ÿcµ[Ó‰‰¡g½eÆœ;?XÓmœ%ɤKƒg¢BjÇv&Õ³õF”.­È2,ÀÁù׆H®¤>æJIÓΧ>‚LIݪl Òn qÑ(î°µ˜iÍWK´ƒí$p†6éÑ–cTÉÞ²¼]2Ú@…©Üz¶³Ñ{“ÎÃ\ \o¦­J„ ÐM£qÁZ-Kà‰°=¬yØ\,ühdC#ù²©J¡QÎüU‹\¿[³S¦­vxAM wà¬Ögýi ŸÉ6:0ýUUÄú1WõCd©Wfv'ÛÕ:¯äù*rÃC ß xæ™)f:(ÔÊ]ñA_¿¯Òî¹ÜóÏî.R{ä^à ÆŸ¸_ôwòþ†Žò)2’=x•xeì©ÀÜáþksA·it~W`³ÛGüNn'·Ó ØùIà–¤]îÞ—V`´{x&‹ù7O•à œFÎ4—$‚?òþôË÷aÓytgEv¹©¼ÚÈLh¦ºîD½DIZ,9E"§$œ84€ò¸Â;À8BŸßŸ….P½Žy>twüÚÿ"]HjÆ ·&‚‘ÛIrŠGŸðJ~7z­–Ðü^ƒ [tàtê¸ù“YµaA³—¾˜äØÕ‰­E!Úqþ Œw:£!ESb„yi_²Ö®_ôZôª0¢˜$Ì‘½sð$ìç»μc©+Ÿ†o8å’,üý½aö¾i“ ‹ÒÐÏyÝIs”Úkk~ž1ìh`ƒ¯1a=Š_Öž˜ƒ±¼æýõ·‘¦µ·4«p¬=8w^ɺhÝÊhÁ¶*­ú_hG™\Y<Óxø&™’UæÖvõêL[×ÔÈ–ÆæÆ·— ¼ÿÇá@Zì¬Nôw¢•ºSìšdMzÙÐQ°‡¸ÈpºS7¦T…ÓÕšŒFK×…|ÙšÆîóïòP¿7²fé—¡œžÂ!©™³•¡OSÉÜj£S‘\é =2aŽJ¥ëg3r¦¾–VpAÜÜ8—ÀùçôÅk}êâ-îMË”ÁœƒGðÙäaiÝ?Ÿ½µc¾\sã˜å3Ÿœ–½"Uçkü`ÊÚ¬Ðö̽ÈÂ?a_·D%[;’‰Ë{ˆVÖ·Ï·°RÏ*ZNÓÉáì®áó­áçºNNKï°\#yw’¢öw.³?–ՌЙœ‚pL¢ I€O:¦lp¬¡¸gLYKø™dÛ·¥U ´œ­Uè?JþZÚ¥~‘Ц;ÝBÓ6½µÒ¬¤¾—£×ÒîëXá†ý K9Ë¥ ÕÊE •žÊÐvþ®;èÖ§[3ªÝhb>Ü»ú©{&G܈“Ð…Ô{uBw!œWõËž4ÂÀË.!#£…ÏtYB» ®âQS6/ºõö$ií±#$ÎÄje ¬|/·™E—‹z YÐ~BŒÆèÞ:æy·ÿáÉzpõe·ÀÒÐp+$oðöÆŠ½øŠbH¬-8¦Äª¢fä´ ü…¿NK@H’|ïæÛãoT¾k&Ù"ÿ+Ž7+ÓÏjÏÏVg4ýÖ\Çvƒ^EñÏq„±>вÁ¼‚?òÐ’ž÷È##¸¶Ä ¨A3ÎëQh]¹˜Ÿ‰{¡¥Ä4š¯¦sïm«Î;+F×kh÷NÛï¡jIvÜøÌïbÝ^çN¨!˜}÷çe‚5™N‹{±¤ë²Æ¢Ÿ‰×"ø¤P(â?íß°ì“ÄdÆÉéÏV9>nXž/}¨?úÔk4ÅÌ7½ÏÉn·VtûZnzõ†;m(¯ûÞ³šçœ“ ™«ô¶¬+?ìNª¸ š+vN•"­÷PÓ{íÒ,0eª©õPr­€2 Gè3¡à\—ß¶üRbo ®Ï)ÅÃÀf1+Ýíµ÷þV*Ó~w ¹Ø´yPÙÊ4>A5}»N yd8OÇiœQbC¶7noÎôëO{ëóÅ­ÔÓ²~è°hŸ0aHµ7Ò¸ªª+5 ƒ¼R›÷ÓÆZu'ö®ä9ÒIöÐSè-Á÷¥º¯oh]ƒøîrüf\žH«kcúV§ÌOÁQ¦¬ä£×¤ U?ÅI*×:ˆE¯šÏÁ5ÅÃ,1’T `ïü!`x¨O,%URH³½MVøËtœ•9&${×ï1_¼ÅÌáâÉJÁ䯽ŸÒBQ:oSôAÂÊ\Í-T¸[®Ð•ÖãðmCÎÄÜáV7®nŠ„º[µ íCµËƒêµÂ¿ …Ë%6OJ0[9"îãRÊ ;È }Ç`uršÔ>x´í´t¸kj—S`»X’ Kqüª–UFµ—L%I=Ña\…‰æ´ãð·:9RQâ‰|À4­­ã õõøBû¢hºé¨s‚O€x—ŸQD6AÔ6“lņÒŸøbúzl?¹šåìŠÇV[(Âj–Àî¥NI;6U܆u'ޤ¥•B¶rga>/ež¡áü ˲ìV òŸUzÙ"¥eZÒ‚õ..¿ ¥2ƒÄaú,…p¥›ßZÏŠZ°l)EJIñú Áö3Ó2êÆzIR;"ô­½Ò¾«jˆOmpÔ y¦jM69Ta“*“L[_Ì•pRk/Ëßø8ïjûº:|¥"wï áfÊÀ$eœÖ§V‡4º¯d)0è è~P£‚ûÏmPz­ªùÉ Ù7ÍQ03;¾PÚ6míH ñn8­67z œú=šü\yžÒp­ôÌgý×.×°W·.šºrtsûFè†ks]–½iûц’ÇÄånûém¬ „õ$OV.ÜK¿Sn©ZUÈ£ÐaM·êþi§ž¥V´dž®ëp×ÓŽAõO"CTÍ̱½!á6kåàáxÌj{¯Føl3p[Ë}Þ¾“©¨ õo›Fzß^꯬°(Wû6x¼heejéä<+nP:Y­@¹²…Rò²&÷8 c“¹Ø’õZÿýqÈ*£ýXáš Ì _”ÑÚ÷/PáF:@‰åÕ¿ð.˜`­ÉCÄ´[ªÅ¦̼ öŒoÀª#Eq¦dÌ“¿l kïÚÓ;•œn–§²©¡@X‘Yi„,£Hòÿþb8¿-¡’㋆‚G|_¹3צKüc]`ÈÉÖœ…v çlÛÑW…1ýÍž—äÕ.ÆÆy€Â›@–nèbxT]û Vöˆà䌽ãRM,Þ]’Z<ù’TÏowT²(K‡1Ê|¬m€Ù°fœéúDì…]¬IT§6¬‘ñô†‘ç8€÷‡µÄŸÉèƒÓé'èöØÙA\¡¾Û{áANÉ@uI¬Q¦Ùůªw©tÀªJpDOä´’/5þªw¡YÀšJOQT‡?23[³ô„ä 41j·Øê‹6=„ÉÛ=z…ŸØ4²7_Y»üDþ ÏǨ5_jxerÛ[0ëk0§—=üeåí>b½›qP…¨ãùùþG­DÒz¬ËÉ€uº¶º ÃdÚ0¼>6„äqoY?µ™<Ö ç‡Ô·2ÔÌm$·~¿>’ŒTÑ[]¨O0Ãp|Ùh ð‘)ֈͼé"d{wìåúÎxüÊ×<Nq5Hê¢kŒ{ÎÇ¿XCY{ŸƒÍµfÒ³Û¦h]DÆP˜¦£”%ƒ<ÔOüvX·§#ò¡!{äYÛ-Šø¨ÿ쪕8Œõr:ËV„D#ëþ1øo<úÇß7> ¨*Ù°ü»ýóÏïÿL8‹aÿIâ„ÕCÀª=ʺlR¦÷©R’S(œ¢ÙÙFô'&Ôí‘0Ž‘”ùêyn m`\Ò$VЦ5ûq:«H¥?GEæ%k£Ã-³Œð«ho¯m þ_0©ª¥«fÒ£Óòþ1S»,aýÅþ®Öq5Ôt½»¢TbÂîùkº®äÔ&†,ûC˜eGöãÓ„-suÓÑJÉc¯'¶tñ |jZrj[:@KnéÏëÙ±ÅG‡`èaбMšŸÒ«Yü8üÀm/þœ©a0í+‘\¥®u+ ¾²Ù, ›Ý0ÓZñMn; ½D¯aÚ›çX·¨pWÆFÇÛ—øŸnÈ «r¡5x3ãîegëż·xŒâw”ÃßO;½"–gÙas8.+{*•(† åðã0dž½DÀ½º|þ}Êþæãr az™­Žé ôcY"¤5Þl۽ϭÐbʲ§Ö<Ü™B›sVß wŽdowk—±YlÑkQŽr=U›6›{~²H­‚g7*ËMàÆfäÿâÑ#KT7jC׈ݓÞÛØ|Õ|pµáËÒ¸Ê,FÒâíaÖÕâÔd¨?§u½ß¯ƒMWôñOs¦,Yê#²˜dãXÚ¾œs9ZÙpýe ¾Ï>7Ç_~ùññi5_1dõ£äÚŸ¤T›YÌÑÂ}ÌEUV»PCä-Ý ÏϲE>ÇYf:¨l¡\$x>Ö¦h±½Äìܪ0è;_NF§4#‡ÞODŸ:²PeÞ «d¤C²š©³³P §ƒW÷s,-PnÇJ@BÀ5ïšßªB]œ¢L?näãéüëøÎ¸°’’„0#]*tÌ‘ä(DØØq.‹ ÛrRͬß;Š¢³2`amáwŠ4Ú¾§§llúåÍÀ*åõ‰#`üyn¹ÛÀoȰôBF[¨¥>{ô ôdS§›PÆ·Ãõ\<.…Áµ^;„HS¾´§ô(÷Y -#ÝK4±ÓÍTj 3ÜEFŽÃÎv;à]ûFÆáÝÎë§W¤…©ûéæÎv ‡0Ûr‰ç³ä)²6c ÂÞœÈ}¬ TsPÛáàqè599WY³JWÅ:þX*Hüñ•éLø«ØÍâgÏ;²ñjÇÕzRœÀ´Ôt÷H ÞÈtíÁ7ºr4ʯØmpÃ-Ìpò熰¹È¦·2ÊÇRHŠäºòÌJ$ãŸé®’Üì{¥¾ðIeír3còÍu.=6^°«"WI°>‘Þ/áÒⱈ·÷ŒOŒ´úF«¤‚¦´Xe†É—¾Bgq—z"&‰ÐÿJf»òS•MƒàÅP¼à¸,%’zòσã9ñ%ðÂë”á£ÊQ–eÙÚOŒ=Jãjîº 1'²‚QmõÑ%ÃO$a…mùï€Àt¿ÃF ¦ÙoA—5ÆNϘ&¼6èäQ9†=3m$Òf¦&k„¨=B/ວ²þÃ˾2hwÿüìÕ!É…G²¡q2ñ¹ œì„q€ A!DJ†‰~PêÞ;…›ívß?&ß´÷ÌT6K‘öù†šµd/eŽ|C3\UUéù(r1¡œ¶›^XÉ£žd: *˜^ÿ¤"XU•IþRlp0$î¸SðŠSø1TØ#\Û»ƒôoŠgŒÌ2FðJt-"ðÔ0ÎÔ¯qŒÜ{rp𵄰} 5 O{ýþƒP–³ã¿vP2ê\m£¯½Å– ìèí3¨ v.ûiÛ›ÐS~ÐÝêBá™À÷•éü(%)i-8õEF—Ájxºk1ØÝeg1^[Ìw°Œo¹µãcüwSžÿý¡ôß7Ÿ#ØÜ.µ•.¸‡£nÈdX1¾6Á Ë;àmlHqYà?¼cWuÜtĽBHÖ*æiÙ-w³˜ï—ON+ ˜Q`i‡Æ»Ð}iµQå]¨¼‹ŽŒxs¤‹Žà/ó´ÏPÅF{кï ã’b9ЂzÊSÆ÷~’vxßšZnç†çâÿÞ!eZø¾*þßןi=W‘³O‘pqcc»%Þme:å]ÂLì}Úï&iØ¢ìdëØ‘²s$×=2 ‰|‹Ý,ëøQÈtc%!ö{É.#té+±Ívã¼b×´"×¹pLUerhº”,”“á²ö˜©.wºÄ ÃïÊÔkx=^ “—§\ S²>Îe•Ä©ä3Ê=|³ +¹ðŶ<ÛE/rHÀ|`<%DFnTfÉ<_œ»žëáu.c <«>ch ½—©ž¡Â[1@Ï?Ò.~‰ g¯ðœôvø®;ä)¾¼ë^å¦Å™°ôªñÄôë‘ñ2Û«¢|f¾2óZ'#÷G°‚‚etX:¶áG"õÆ~36YgVÀ†²è¤SfÊPûêè”o9È™lJò§ (š€•¦¹f^2.‡¯½˜S¥Ü )áÍ\B0+c:®ƒý­fÄö¾šÁ? ïËÑÀîê+eV7¡]û]}ìûŒÂyt‚"hIJÓºd±| · r×FHøÁ=ÕÞ[<ÓæÒ:ý`ÔMcÕvâÉZ(¹|¡v2—}!Ó®5}Û‚½LZçÊ&ƒ™ôk5À¸KM;Tð´€… g<Ž‡ÓŒ,ls Æ«äžW5Ëd3ü- #˺ŠÃ‰=Çü%ýÑâõ}‹4Õyè©Iµ­Lïc÷KQë|æ¶u³†‰äQJ¿p°ó¤$ŸÔoŒPØïJ|QÊ—¤íí 2_¿-¹ÖÖfÚ—ÕÏêÂSU£UÞ%í< UßN–…½›4K¬¢øeZM»ƒ‰^²,iJ¼@ž4O@‘Ü‚]2Aªåg†í`ÇXDkÚÕQ{HY: .û’q–\%ã£IÁP³Ä¡i£!‰«ß ”ïoHÍ ÁÈ šÂmêÃCHɉqš§ÔX8â]¶÷FÁöã l4Yv‘Ï)—ÒÅ'Î\¾½¯JÂ!'ß½ þ¾^‹zãzGöŸ>ßl… ¿’Á”Ç8îÖÞëÞl¢9«¬ÝY™ý¹ñ}š-gE?]l‘ÜíÖÜ“ž§êoˆÞZ\Ûžz]G#í±VD #¨K¨É쀽|JØé8r%Ò´Ó¬ ,#‚ØØmó4(Â;ŒššRˆF|ð8kçG´'†·H üm*KyKâÊ}Ãò>唘ƒÒäêÀ±FXÔP)ok†1´JÁ‘³A¾3L*Æ ±¯ë¸A“Ú!¨ó­ªQwS â–U.< {Õ+iñìp™6»H\ç¡Ïvù‚ðjY}ÀÜíß1§ƒìáá·0°¯6~Ûžd­ÌûÆ™;qu›È,¶Œ¾#àÔTdM2'~“¼•vêP•½p°Kf5bS´âž#±¶æZT=)”¯ÈskÙ+ÉC:ÝÍ5ïžÓúhã›´ˆˆ—þ˜“m§¹2—1Û†|¬ÊÞoŸeË£eÓ}ë(ú_"¿§Ý‡Î[Ý]ƒâ–j(À"I`!ö„Ë>]‰"g1Z´êûÁˆßܶ鷛‚GîÀíØ3FHø»¾Àn@é¾—é³—ˆ} \J/Çï;†=gŠMÀµTt̪ßqRy9Í×Í„ ñUFÅ"söG µâ`n#d6Ïûf[çÁeG•¤ÕtðâŸkØQô¡f¦&±øM/Âæs±Ÿ×ðQ¹sŸVN¶*Á:ÙžÓÝï»û~î±hO‚[í­¬B6êoáZ7ùŸ²åÝŒÍ𜠽Å%éíc'm»4¤õ¶jÔêmq†ò;@æo´^ÏìP¤?ã±ì©¥3#jû>‚£4uØÝ…Í}*wuÃ:PÈØER?òík´%WG]gZÏY3™Ôç…Á•B»ÉZz¶µœËm>ÖÊRÖ~§»÷­¡lçÉ'ÈVíïáË¿T§ÑAp¶wÝE=/(w¸œ=fZ(µ3¯ÔÁjh¯ANjÞº5!z|± ð“i‰cÿØG`Ý»«ü""CƒüIÔÑgïsÔ±óþeŒà¶…š¸’Â,V"•.L°è+|Ç]µÏd;ÆôÚ«!+@kj¯zÒ”ÒÚ–$¨M®ÿ â¥Õœ²ç#ÉßO»[‹­yOpô‰‰´±È(™äBÞ½>ÿå_?¢$;×?&eî\ÒÆñ/¼ ŽÐ$µ‡#«£m`5áanõEJÝŽØl8é«ç¡pbƬ8fÖÓŸÑØ¿ÿ$1°éôHBêg|Y«¢_Gå£:¤´4/õ(îvËnj f3ÃôUž«Eô}c±™0¼SÔJ›#m¦`6rm¬£©nâæ¾ôµ"û“VϬjÃJ?!žã™œ ÿgúCÏŸµjì™w…çÓŒ?#C¡Ì¶µØWû“Pt¾ üÂùˆ`¾‚<±$M½î>ûqGŽî—œ¹UôÙÖâkw%|Íyò¤@"OMÃ3íQ˜,eT‰ãêm…L$˜Ò~6£oNMN³÷([[p#E‚(¯ÅGzÚíœæ:wäÍõxè`: ÒôAæÎ­ºEáwëaÍPÅNd«z>$S~_x›ƒ² °Ä‰Gå±·#)u–Ãm¦ìö¨ß¶/wŒð72ýDÄŽv’x°ãA}b n Y[ÍÜ:=׎²©÷—˜—"4«¨¿Ì\UŸ¸JÐíß–;58»ÉÛÿŠ À½7±{(ŠŠºû§^ñ,ÝHã(¯Ü©ov½ï°`NÉ”{O?ù¯LÍ¢Ýa{ÓÌØ–ºi_9Ž4 ~öJÚGcl³P˸x\¥n;¿ ;±oC; » nE8¿AÌ$,f * o§¡w³dÅ13ibê,e|²¸ÞÇaƒ¾ ¶”k˜\\®ÛL†ƒª²q‡,ƒõM?¯Üºÿ}¡dΩ eÔ+`lræb|Xã¦ü‘¶­¯Öö<üä–¿R%ýrÔñh´­èÍØ‘Ä=Øh5Üæ‰Ñ xpãÕ×Ññ¶ßžaŽ!Íú/Úùy¡”š£ãID,1š~“â6A]³¾Ç·°­¢´1Z7ÄŠ“F€§¦¶#PÅ:‰äÒQ4¼¡Äøê—nÑÀ2Ý/"rI¾×ûÃÛí]œß~΋lÌkßä!wýo=YƇÇ|¹"HCfEm´û Ê.k{‹ˆË€È’# ø$$mu€_ª…îPØúÙ%B¬xö®h³Û³>ÛUxçdV¨ˆó#êXjÇ‘ÿ51[r4pgLð¨°ra0²u§ÿ =^|óÝþ‰=Ç{ð×±ÿäƒ9Çì°5Çàoc ÍKUYRð©ëÐïØ#ZïE.g}P ï¸S|öG¦°:$›Äíu=íj2k)ØïŸT\ Ï$§ug‚à¹m!’âS­“Ìwáãsk†ãí'%S›ýÎø¿ëϳ$^|Œã!KùgMeʽ8£Ri…ÛŠŽR-ü¸Ùn·¢’ eZºœ9þùñOß?(%$c¤iPüÇÌ’ D—„_„¶qŸxoÒ¯öUˆ’q¿þßì†×ÏÿòËo|» Ô£ˆaVû4â7üÄÉ»¤C‰: »9–ôa|:½[‰!Q( ì(Ð:¨›¤‚áŽ#f_Û:;ðÇxœ²Ýuñ|]Zé 2ÉŒ²µXö„¶ƒÐˆ‘q™½¹¬v‚ã€ËZ2ß°•¼ ¡êÎäÌc.„ÿ ¢£|\™W„ ÕivÄ0ûºc(0_ð+]ôÇ<Ý=É` Z,Eƒyü‘a§Ñ™Mð\-ŒË4Ü¥YRü*@Û—åñ_G]€_´©²ùáQh¨ULÊÚä{I;Ñ:¨åI¹Ë´„ç@¡Ëo±‹‡wóe©5“­ÚW¡L³ÒYÞ°úä¹î8WRï zîÁËí*N6¹T[oY#ŽŸ”Ó„Un½ËGæTFnPÓÊŒá,°D=Ä·’·¡×Ki; >çRÚWèôLØ­Bt™Tަ޹ܵ¦Ïìk¾&FÂctQ ɼƒÄwª¥(Åuïe>´X„‰ÈÒT0ÉÁ@S`¯w\>%Y‡ŽÉ•8ž×kÕ-{¼¸sAƒiÖ15Ðåã Vê%°)Àט¬C÷üåù‡§ß~ÿãûü’¹ñ”hRy„¾™—ù†Xêy½¶{ ù$<ã5‹ÑÊ›%¢7—RY(ìŒÔ ªx|gV™8±Ýe$‚bå¹ÖÉ+îMì)Ëš3xð˜wFà‰„*×Xšôö`ƒô!ÔÚÕúrþ§Þsù,•žÀ¬5•÷¶økëßïã>χ…ZXW~¹ú%²¸Ñ»~ÔûÒ>!¢\äºÌ¾§Éó Fú»+°ÞxR´rOFþJ®ùÊ0 Æ$%Œç¦$D¯%ðç?&º0P¬Ö>aÊqQwkj(A2-–q€Ðé;s^ÀqXDv°“–ídæ0^¦ »ÂÁ݆ß#ªÐ Èäqã­äO_É3Xâ5F3÷̰|<Î|»[Ø¢ŸÃšŒŒÃpÄr•·Ž„gÓÂpØtA+»ñ@Wƒÿ“×+‚y±Ðc)½Å&Å5cmsÞ¥pÍ õð0¶äª<’_¥UÀLìs)鸻úôà'úö¬+3áýnÊK ““Îô•!%JPØù¦ Ë=ÄÃTƒ2qó©›ÌMh ,Ûˆ‰–Põ2º»Ÿb=Ó =¾ˆïÊ×pP pî*W´3R¾‡ëI¨íü¦¶Û³¸„¨f÷`ds®U¦ã¦Éb¥xŸnƒÓì'“£3ÕW?ó¤8­µÒù¶g9 ;Äç¹ò`eµiR(ˆ;·ÔuûEût%‰6 ÂF9z+×€%¦ǪÏO=±¸O¤*o0œ|œ6Ÿ,‹œî¢Ã˜ÒYÚ=yÉl×%)º6vZ·¥¸‡Í×HŸûmI78Q1ó¨qzE™÷ì#‚¬dÊä#bç½N¢\ë¾>?ÛØ=ÜéŸÍ.FÃÞòí²lßúšÝžŸMN°þTœšU/€8ZP ’/LàGUƒÁù ½[lR‹€«;ü| ÖAÊÿs©~¡Ø.Qj‹%}â  Àºë‰S<«M €+É<£í~?CrñК¼™unÁ»µKÁÛÏ¿/‡Ê›ôö»ßìÒ,vµq{§¿xpKÎD¶Š7N–¯j@Útk÷q.™ÆY)X6Û=6rÌ ûC-£G Ï’_v©Óï6.tÏ­3­Œ+âÖŽãݦgR*® Æ}µ]³ïYa¼hïãVþD3—5¦™«~…ðªüí jÞÅnÈ™“1ˆô•ü`!ën÷£vvlÁP™k…¢ÀÎñ›Þe‚0âXzZI½ZÂ-•„¨4 ø÷æ#\‰4޳ì9 K°ùä† ðŠå7'I±qt’Ž‚›ûê ç“Zž&¤Bkq´LXŒ¨a~¿X¾›[Û4ûðÎÿ{" ¡B€[)ÄZØš 3ª_TÒ¬ömfÉ?Ý´ÈdßÔ”öõ@ üp£*«óR0øŠGv°FŠh}Š«x¸¹ý‹ldâ9NOâQ#N×Ý|ú :›!ò¥þ²áŽ1²˜.†à{Ïaþ à)õóPbÔ7jáââ ÿ]ÎÐeÃ3”3ñí8f.ß‘Cþbì´}¼YM¼E£k嬲,È·B#wÃt§öL“©Rßç„6ŽÐÎ éûLõÌûë]5žÚÒùxœpÉáúMº¯lX_áØ˜þilQ`íX„ꊦ@„VE€»R|+ÔÃ]%Ø]X¡¦óšªÁÎß{cŠcÞsÖ€ uG÷h‰”´ê“26¼ú6h&µJ0¯À¦V*Üà¤"…-M6³Qé±ø¤:Y­Mß2”ú:M3mÅ„̳‹¯‰ï¯£ì?ÓÚùöÆpáxëH¡î1‡‘¹Ê(Þ û85 Í—ß~|—ë{ê6/%À!·|HR%åì`_Hƒ)Ýz Žæ,è“z3¢í[/sh ®gÑŠ¶p³Oöø]'Jb©Zo[1°{õ®ÂfÁ€fɾt>¼sjpY‡Q,ʹ¢ò¬¹J˜'ŒEµ+†’@›‰Å7Âó`åØÓ=…ílç†á¶ã’ñ]‰Ïèäpªe˜¦ÊyOÀº‡‹Ó²!q¥îX$ ±1Z#ZᶺÇW0.€ð}I²úƒÊמ££‰…»9cIb-©Æ w@X9Hv_+”zü[ˆR99+d±$º—9ĵïJ“]™—];¥Xýö¨Õ·îjlí3ªª¤P™jÁÂÉ#íXVœ©WUŸ¦Ï‡;eɑ̣ÝùOo#KU§ç±avó²M¿h‘6*-} ôh¶ƒÃ¥,á½qÉ€)ú>ç¯#'¢¯¯åTsú?h –Ù¥Q0K–šŒøÔAb”aI»µw=g‡<ÅnÒˆÍâ“ä9÷ÎÒK®Rkî¤÷=ó–Tƒ¶c9÷“+"•Ji “$¾… M¹ý…X¢û¢9¢¿I:Áëèáo}·ª¦ª I@v/ûNñ·¿éáÐÁ¯.ÂUj2Ìx…¾aßÃQ)F[ g!2|@ Ȱ¼É¦IaO…Cò"B#„ à)&ùE0¼pS Yó¦¥k:¯Âcâ_êÈ|S™›˜Íž¼P.lí¬ÅG¤³fˆŠ&Å­³§õfl]^á„Ä«ã‹vR1áxÕ%ÐÏÙ³f³rH²YˆyW Áx»£XRªWš¨ >z—Ÿö&k2.jKõzHm={1]µ—%U*’Ôƒ$3Ø< =*…”=û ¨ØrߢzRø«ðwü?~Ÿgd¼3M¯0è{²¥·Iê8œè$•”*š‘· Æý?óz¬M1mä#c$gGñð”Íu&‘ZÞ©ÿHW˜k%Ow¥¥m Ë}{¨]F¸’Cß¶•sÒ …ËsÛül·±ááæÁÙ¤H’õÏ„þ0%Þc<÷: €É“Sa·;êÙËÚ;í©o¸d­>(¥’»Vƒü<÷FA'¤èô‡< †O?=7ä‹‚³Õ}Ó˜à#&pñC`äÌ“Õ\ø©×??~ýñ?Ôy¨„=BCR©;ÿÜʆIUxò“¾æá@³ÔSJ¸r‚áâ¡­-,“*éÁÔGa…\‚òiq‡{ËG å[ŒiÎnuD?+gl¿QØ&ç|ÁÎ@. *ha&¸œîûWaᲄ‰ØE¶-® ÜZí@×Ô'Ù~»Ów_âL+«8eâ¨Ýîí3§üNˬð4ë *Æ­Q§] Óbœ7þ+F°pR*ºÝð,U`)îé&¥pŠ¥‹ÍgQ.BuM²ß½0©X6Ùz) ÿå)™’],w…ôj{î‹Z¼ß{DoôÎ8bÒ¡!¼´ìõ/ÏD §Ï"<¡E}߬‰·ã/ÿê1S¬é/@V`t|±¶M¬îÖ­)Ð`&CÄyi&¡W;ëelQ-õ‹93–‘f/6=äÖr½„ÇÁݱ¡l6ö‘uÈq²mHç(L®`ÇŒw\HËÁã "]Oï³Î’6¬ÚŒÛG¿¨U„ÝKÂ5>s(ÃxE¦ž!È¥½*_]-„¼ÀÓýH³^lau?¬lš’«Jxu¼R=|Ñð™1´+GépîCŸÐËÖðZsÓæ™Â¬{ëäÕÉÏ­cƒÿMÒ’ô!;+ìÎ&1¿¼¡äßÄ×â‡Eœyà•»è°»¿Yùë&žB—Rß[ÞWû]LàÖDæ+ã V*ßû‰2Ÿq¨$í%~²Åÿj_ì5þ¾_N@äk—éúÝž‘/ò¤^Md˜sάj¬BV3xà¨5ü`èñ^W*Lƒ¶ØÄDB(,¤mTi-à…þ64ï)×0lž‡·z.‡¢–ÑþŸ…í_n¡'Š}VâdíåcˆaWÙ#€úœªï”ÝB™´‚á&»Qx¨‰ªN¥pDˆÔ.€ýyAÊušÏƒb ÔÇm7/_EEÌâøðváº.…è±x¹›ëÞbdC «¥[—35LÈå¨<ÌæGÒ]&ŽÁ2õC Ù/ùòr˜öÅ®äøËã÷Ô3Þ*ä>Øùº¯´!mN¹Óçu|Z2T’ƒ`?åq}f¥`Iì9¹³÷GI©4×ÏÝÉ”§k$½ÙÎ42 YlB½¿žEš­E ÒV¨™^ð-/_ÕCvƒ÷Éø%0¦x7i.I—Zn„uy„³í6#0t wJ™éäÍP}õÙ VíÈÖ£É$bÿªÙ,Ä×BuÅ-°;´iXÚRXÚ––Ôòmz(î‡om 0Fé©w~¶e§lk‹N´Ö­Å)7·ñåCã2­†Ï½ÿèÆ¤¿üWPÖ «Çžì±§èLùI›\®Cî–‚Vê³}”-*ãA8£D¤ŠC ™gG‘ŒO?ï|úõc5[WLª©£À®Íãh7z-¥¹‹ÆB¡ŽtZ@ÙíîÞèÔ&þ—$„Ò^aƒñŸ¦Òåt#ïn\}½"¤fN9|™eçM0¤«Ml 4UŽE£d=v:[8×뼟ó¥Ð­ãÜg¯§Žvë¯al:Jf¥y>È M!OáÁÃÑl¿jJq‚L.'¬ˆïãF_—K¯Oc¾Îºã·ÄT)«›J«6U©¬±~‰W\åFc…3¶òj­ñ¯]ÏM±nqœ•öf7¥µ)ö6’®ŸêÊ<ÏL4¯‘FÃvÔ 3DÚV¥·x\²ÒÄjߣã1o¼W¯Ì]“‡+n”Ô7(‘²"$}„}¬/Îÿ?Ãó鿜#«…ží…ŒMAªðÂ5 :$xØ [çÕ27'b&­`À­Åè›hbº1Þ®ÿMs4LÎ[·)ÕÖå£]š×ųä[i,e±~RÚÊrK–Çm0Ä>ý¾´KØòÔâ©ÊØÞ=‘P´QY“™&SgÊaf/ÇF=X÷ýg°‘FŽaÁêF„+ä5‚MEÌ+Q_"ÉÝ\ªT][‰‹žúžØ#{äÙ] bÉÑcjr0¼Î}äy`°‹?JªMµLâö!>õS¶Ùk©²>ëPßSƒ¹Ãh ¨ -ýA_2‚醡~y™ÀB„?Ï3Àò­¿TfìWJ™$ÇêÍywÚ‡žä#3Jë_VmJÅÛÅ »Yá½Nå^Oûñ†*í¡åâ<Ý®Ê (-BzðÀ€í ô¤×È…Ò½ºIʧ»ÉÁióÍâKå g†pÛ#×Ãÿ)—WâïNª¬•ÙxÝÌlZ¬dMÓ3}~(\+È7ÉÝÆw$Š"ºÞï6&è­5YÀï Å5é+^áò7Ö¿p •¤ÁÂçê‚g&õ€øÖvAµÂ¤ mtÆØXw=Ð^^?rãIRåÁï×p"¾ö¼áŸÅ& SÙ+ÆOâаwÀž¼o¥¨2y‘h©ÔÑ­bè¾gš×ŠQHO×B÷Š8ý³öa[=[i²Lþ…PhÑ_ª·ÒÙÖuÏ!$z9ʹÕèÅ’FÚZëÂåm®·¶ŒNj1Ǩ­3&4—ô£.öüP)hµ3ùsx»å„¬ØÔ˜^ßL ËÚ¥dZå£q©Ô~ ¶GjGu—°È¥¬{‡8,ïîñÌ”‡“U˜,ªQ@ŠGÃÌåWí«ñn&-à8˜´2k³pÓ˜(@pRëlnÛ býxXwE1ƒ:¨ÿ9Ϥ­œã¯áºr¤ íJG0æŽ" X¢î·Z;¬_C±Á ûtÊ{gìàXµ)ظ’y¨™GºhÆ¥™O’·lóÛ›fÏ„Ok£¢‘®ºOžy|˜Y-ôfýf|="ÝÊtÁí3O!ò¾â¸ÅAÊÅsÁ#LÙÅtÁè>MÌC¹‹Ü®ˆ?¸Rx{Ð*ÜCEôLÍÿ$œª×éÌqºá½›ÉÚ«£¬þ^³b3áǧüàH4~”‘{tþs†cè ôg™Oq=¾F0s»˜Iü^¤Ç,0¯T]‚ǘ™¦a,©ù-¯i'Ž[Ôù*˼¦4tJË Vé¢ãî5… ÉÔ\‰…®‹mÄy‡t@qƒ‰¿åŽöçXk»M× #iÀ-/Øœ¬ª‚¨S5ñ õqhäÌpºe;b½SDر©ª£ÿå`íÔWÖgo sAŽtõU°šP1ûïÜœº””‡Çé§ Ð*²<Ï¢Øqøýà×i…qzÁR‹Þ½ÖÂØïtdÿ‚@Áêmþöºc°Öœ"ÊÂoü9¨ñŠ`†·Úջ”@……ƒ® 2ŠV©ÍÜOð÷«K¦¥ s]B`µƒH¾IÙ壮{qf@ æõ 9\£xÆPS#[žÀI ¿ÅƒK“„ÞsÝ{’|9ô}ø°Z%®¢~mŠ`¤˜uAy)eãp-û^3"ʱèËÔ6øC âI¨ñ7õ§¼JËÓèëi§•ÐȤ«ì}ØNj5gËÙ£: à2é¢P%£xLZ[y|Üa¶È“4ÛPô)•ø-^¿Ÿ¼BM\DmËÙ8Ÿÿó %¶`?”n—‚VÑŽ~¨þV£š\å½Î‹#nèˆ+9Øz¬d/œ5Ó ö¸WƒK‰»’ˆŽJÜceO7,髎/÷80ÕI xÛV’tü×n96›±Sÿ–âuŸ>zÕ<þò6“säey`91Uî´¸D«×,óM¸xÓñKÔ?ÝŒ:·[œ%Ç3»/k¯ÙnÏC^zœšgÖþS;©{kó^÷œF« „<.G¡éŸ¿§!õì´\,NÁè7½0¶w=ª·},O£ÂŒ£Ò•~`’o­Y¯NTn‰ø¿„Ì |â«Ç_–`£û3 D£ùšÓŒiKEe2AÐö«èC¸X«À(ŽîÌ„niºÂ¸µanAá÷Å})¦·Iïà ªBƒh7» iFewp¦#$og]DM”â5n!SôFÓbt, ½iD®kJ›>EsÓd 7X‹ µ*.VÕOgg=\ŒÄ_¹d ÕÀþ6€´È%Â2ΦèãÛRñSš¡ CÉP&Ó\&Cäö¨ ‰ÞÈ©ÏEÏ;(èªïIÒeÙ.{¾0~Æ@jRÆÇÐÈöUžÔ5ÀGõIüæ#˜2I‚B¬½‰6Y>ÅJ;à~Ô ‘Iª®ÛSÀ’ O¿][u^[UXJÿ7¶‚›8’ ¿ ¬\éÕº'7‹$…ã;êòHì£Ä@ÊÊiv…Wäo¡ÀATó;ªzI‰‘x,& ×—¿ÆûÓǯÓòd±PMgw)RÂG- à­É1{s•+  Ø—/›ZM~x©_~î‚FçhÔñè=›~ÇoèºfjÔ•$[›“-\ÓæËóó­BAúMuŸ˜QËe”]:D°‰ÃìQ­OìKÅ8¦ó†ººÌº¯fëè¦Q‘õC B“µHÖ?üGH$ÁŠ Ö2Œ´¬ã?ϳÚõyðì_,²Ã­¤P>»Xý9üçDh['Ñ£¤‡ÙCÉÞs—þ'=I~Qð¡ueŽZeT¾ví^Áx©p0S\ßL‡ÐZR“7ôS¸bõ1ÉÅI¿÷õ·?Æ'”Æ¥üç=œÅö¢E\*zX—(ÌnÖ ˜‘hÞsܘÀ°´¯I£Ò²Ñwƒ FÞ˶ŠMÍ%ŽGû£3Ñ[P>¡°µS¶û”5£dý}ÀnoJ—×F·Þ¨M‚ÁÞöàÖ×¢4©D?íZÎ)ç½Ô øÔ(I;ØAœ´"ÅÏÏ˶:_Rà 0°ØûMŽx/Üèˆ*¢] 4Ùù OFŒ²þ>©å¤—žØÓÖ%eamÓY‹ÃsÌðºRPáÁ‘®­RI“¯,Y‚ç6¸d}CÆŠi³ñ+°Ån;xÁ=Nð}0$‰ðý÷­•CÛ[Ó¥<9dÝEk(í—/˜‹WkôÏ(içf1‹ß@K©K«8䓽5þ|ü×ÑÕ÷ DLm£ä3¨AÈËhf<Œ¸wìLŒZiî6÷¤Þé*d÷2ü…Ø ¾=ïL˜øÌ lz ˆìâ|;Gáh). ¬E?}Ð"UyX5±zH*ˆ²„GW0-º±Ï‰Š.||™¥†ÃŒU¢ÏÕi#Vçö±òm¬³Çq&çˆ ý×+"@SÓ¥=•dEY!©üž]PƒL÷ ¶óä÷ NnsɱQPå乡œÉ#Ôvùo<‡æ1 §n©åDõRDÊßhö–´­ÇR¨.!Ù÷ÃÑöbüÙQüùƒ²Áã¼>öºÔût&gCMI‡¸µR›ÖÉyÝöL{¶µÿ´o[ží†+>žsQãspW¾`DWO5Üð¹"xŒ2PÔƒ†î¦[¹{0 ÿ¢P%¸ v.Ø,Å5á56HiI6õjí"?ÁLê6ƒæ›šñÑ;v‹TêìæÛ^{ù¡óžÄ‚np@Û|¼´UŠ¡qâ “;Ó±Yœ@3y ÔXq¤5ì3U) ¿]ú°åvcjÛQTí‹ëí>cF|‹aBìË¢•Úãl¿mhÚ¤ õŸ‹á³ÖŸ¬_tWnr¶U/æ#J´QRX­yRZW¿w°æ|ß~»®ï}xþWüñåããWüøT"³Íß@5 @n®6ÈÒés?; MiQ WìPždf¥ZvýG®ÿºElrÚ»¡¤xmžî„EÝöŠ„ÒuÍJ·¬·Dü7jŒ‘†]¬›ÄÅyÒhÉ„…üºé®'J£ÙÁ+?4æu ò÷šCª°àíêqÈÉâÑýÎz;›' /$¸ð`˜ÎuŽ‘Žì‹À­’ƒ©žK5¶#ŽðXpG×êr¶†É×saQò veޝožri.—vjËíø]Ô/-Zà¿ËWjðÔ¼®0“íã B³É_ýuÈiOŒ 7{ã¯sÆ_iÞYé €RI…ôaxËÌ‘*£Gò‹±ó®ìa4aÒÎÅÀdÇ\üy'Í~…WOÆzâTS'Ⱦú ß?^w0‘†îµ~|ë þ%Ný¿—Ñ•|ÏÕ\òÎj{ßÉwÜ©òš2ÿl`ÞXZ«5T»hgSìõô…’²Dó,Ò¼;ÎIÜþCÌžö#‹‹øê&3[ÊàÈ…ì÷«˜/S|//!STEªÄDfRw¥äH‡ÞEý»Ó÷e½“ÚO3ií´éxŠœ;£G0ÿÌàbÉÉŽS~‰Ì­å-Ó?3üí‘ {.òoˆ Üq[aY[—÷—‚± öØmnÇXH(V<Sõvù¨b Ò¥”Ïeí*ö¤^j¸á})5C¹Âîg1:•uzÉ©¡=ª+ P "ÅH•׫”4` ‘ëáotäó«ö¼\a›¢Sß•Ä\qi¶»Y€!K Çßê¿ÈíY­ižâ(M•ŸûðÏ-nNÈy<Õ7 nœÁžÇ°r¾CÙmØÇ î•z`Ã,R¾Xe%ì[r\OÆ[uä½ý¾µ_Ó,"O+œÊ´xt¿× µçsm²,$œ.A_E>Kß &ñó¶+xaû•Ž"ë¯E—YLF×ÓZ]©µˆNÔ®Ýïbkˆ¬*\•G5ÄôÒ2§öâÝ#ªJ­#:Îú CfÃw¥(Kx%‡[¦ˆ§²•§PŽˆñN bGJBÇ­¤!|¤Y®..ˉ8lë~ì%5ʨ²·è$ˆ`©qÏu©U¡„,«pè¸qT>‰ovÛ7ÛåM]t\ñò%’ùÜ °¯UÒçÌ/e¾È‰K'ÑÝ…Ã9,j= f²Ÿ’›¸¤rà­ºL :óT!tL¶¬Mû¤ö¦Œ{¯´®¥]%Œç^;Ø Òäý»’²“ˆá†ÔóüRØI’Q:®Î½ÅfR2°co1ºfÁk¨ÏÇäá ¶œñ6UÄÖ·Ž‹f¯‘»S•}dHR~Zoÿ‡Ú!^¿_fCL¹CÚ³O—mñ=쬤Îu¾Ÿ$§áaĉõ9 ÷µ±M „‡!„ß»õÙA†æé„©ˆj^lSf¦Ó +êltPÄý¥f™onG)<ãðÄ}{6œŒ#yW²;üu'©~ï3wÐm%ò†À¿Y¿ŸÎ.YŠ‹Üpú³%?3êØ BX='›{C‡Ñ&únH`sæ#Ô™?·§"lÆg®“ÛJ)«ŽÏ]iˆÙé˜$!ž`#‰êÿÜ çžM&¶ƒßèiÍPïöÞQˆ“êX)$í©3CqWÊo<0ÞÀ¬È{…Àû‹5ÃM®á›mÿf’Îͺ QdU0ü*ß–pðÁè¦\1]j=Dç/‡ÖvÂß ÝZ{‚ÏøgtÏ+íLlÕv ÞÁ¡ÖAØì^?ÃÌ+·¶±æÙ‚Zéöÿÿ„8ÓQdm»¡ÈéÆ"ë«”:Ÿ¦J·&2ÜA·© ö#L‡ îç{Þ ßŒ5|)À*HG©JÐ(s5&çÎUxFkãI‡R†5åÄZÃРªãÚÏkÓÆá#ÖÿÞìAæjt Šñ™Ú+ ‰²õ|Nô¾ ?Ú¹ì(˜’ä³bä½>ŒlQ fS#aœÐ÷0SŽ”*TZÍ3KÙ*ôî”K‡ÀUS¨Póƒ}¾Ž^ìÍd#k:Ã×jÌU0ˆ †u¬ú~é[®ï2á>í9¼[Ì»[¶¯¶—’w…·[Ü’Âé©#´ÕªÈä©lYZTi–)çwÙij#)ZÈâÎQ«Âb=« øÃÝŒ$²ö\RM †Nì;q¶W˜ (ˆNt;OÇm)F±1²=WŠïk–«±R4ü!Ày c9©) éW©íX%­5eAÑí0\Á„Z;'«¯o·Ìþ]’»¥¡3š±ðýVQ«»<+( gEq#£8ùP3F'G„9 gIÀãQ 'ÙË$ØÇFË(‘‹ªmH‚_°¹`.)ã/¸xÞšÉùÿ‚šJì(ÁåÙGü,L¢ä‚DýƒŽ`²^³ÏÄ¿åy¬áFgÔ¢ÂûÕì„!¥“Š :àf¯ù§g9Ô/ 8ËIõ(¢5AŸºËz½N±×”Òþ1•“ Ý«œeúÚŠMr>j=R{Y 3€Óð[±¿ò¢»/Q"|°¾*· ò!¤Ç@õšDÇ÷M|÷Üs€rƒ-e¥ìý =:”äº$¨(™=!À8vªõ bP‰ ¶+(ë&‚Mk¤Ôç×0^K¹îx“GÈFLq¤ÑÙ”Ãk˜ …š©ÅÏõP*XycztC߀âZN½¡êv«1¤¿.úßÙ•3íóÆ^:m¸ ì"⢒mz*Õô›$§xD"UˆæŠyfš>\Í¥K…VGÅ!*Çó8£ðè·ð†Fáú·~ªDZ࣠”[¿†è1pTøœI@w¬ ßôÇŒ‘±‰ ­©ìàzÁÙ¢s¸|‘ŸbÕüo~ÊÞ‰gwäFDñ¹@èôecpäázv¥ÌÁ\ KÿP•'Œ9Ãt4°îeœet»îá¢À «Øh–ˆN3ò-‰€Ùxþ$5šƒh¯ïÉÈ‚Áy”S²U†£cOPÔ‚•êáðPxw´ o¨+×Q“-ËI2 2ÃÚŸ6óìIâL8ZkÁbF*–4á£Rw8ïêWÊ,t j}ÁhqX#ÔdÅl úœ:¤p\Å1ÐÇ7Š‹vç‹ë91«i;©1PAß>~¶ƒYïý’«ƒ,AšlGÐÁ*ùöZÛgJ·É{/-ŠŸ>ˆ¢ÈðíÖýâÚÐÁpA þÂT,k”¸ƒÿ.NU²qÏì§—ˆÌ»½ª}}ðº5 ` \#)é0ø0°%rk–R&8ØofÊš‹Ó˜Ól€ëdz9ð&§%ÖõëÑÂùå€gáj)ÕVuû›å"ûÙ•/ï'[{þû :®n†²O©Œd …êÀö• S[CUeÚwü±ŽëIõ"~AH[AÄ£/BOPgšÈáâîNf¦& ÒÜéÑ'â[{=ÆÕf¯^v¦Œ;“°9rÖõ‡ÃªªP£šIc'<•?2f¯ž¢“øŸ¦¶¶\µñÿÙ@£X2–Ó-ËÝ‹œ+6CPä’=•ΧgkÆPtEƒ¨Ë¨ˆ7øSÜ"ºØNœÖ´ÿšg´.z༢¥ÖðËÜÆ¬hp€oNuL¤šŠA ‚'Ÿ²èðU8±@~þ‚i·à·\ù&Ž Å×…Š€j8SX¥2a: Ð…ž'vj…+qNp³k<ÆÉ)rŸŠf· ]¤3ÄD»+(lK·Mó]Õ/Ä“ÜÑÒñšì“‘3qñ0†0Îe}˜È”r·H±‡š"Eƒ9tt¢¬\ƒn]ÔwÚMõ³‰´¿¦Õ_ëjúÒ(Ôµþ¨@N8i¼PH˜UdbŒ ©>8zm ΊN˜å±«@â‚‹m.Ò iFéM‹‘Âë ‹|-XOïä©”fJ÷âìÃî,¾%¢kÙÁ|5MMpKn^Æn §3Ĺ3ÂÜ"ÑÏǨdwíêãzlMÒDZÕÊø-5Œ'ÎÃ$Ø!ü¨$ ‘ZâpàDêo§&8ÿr_Ûn ôH×A¥™³ºL£ÖîGùk¤ô :DPg'a(Çm˜¨^Ìõ¸àŽî! 8ò¼œ'ÙîŒw†la† Kñ0Öà3Зj˜\Iê0V²yÜÞêš¼Zų¥•úËAkKd_Üú2t¾ b” á]½JOûè¨þ³„Ûw½TÒÆ1­aË,£Z¶N@xŠ" ìœuѾ‹—yØtmÆË·ìwÌÐ< fÍ­@îÀ¬Ä¥H%õkC¸»£“ ±0úXFR× oµ•)’¸â>8PÀù»äÁA…yîë_àÀò…tÇ”4¢ûq@á©&ZBÓk¢6+œUÅ%«gg4ö†±}¾_ý:p¬ftµÖÆ>œ”Ms»e…}_’Å•œ×IÐUwÌzŠ o×n¶¯F%<*­"œU(Cã;%ꕵãrº6:´ÉÈ/²jw¢’qåâέº¦ÎTÔŒ{ Êeϵ+!Q"æ¤&Ø~ÕaÝñ “·}: ùÔ¨Ca(ÌתÔ%6žòpiXCÍTǺ ±öjvàî/o¼½ºzÃ[{×Èyeèòо6s™EÚ^YT£u› ËQ}/ŸÚѵÐ|œñd;„Õ¤}jAËò"œÎ:Ãk†B$“IN3ú™õ¥#üõN¶õL¿*[`_oýÿOÿƒg-;Þ[½rÔñVM¸‡(Z°î¬“uàº(aÿ¦«2,wŸ LŠJã+׳ [ŬzY×N ð r0„¨òP‹jYC}1ÀÆR•M' vpøß}èq]=×HDjE먛Äïa:ä÷S¡¢'WŒi 3>KF¾@ÁzwH¦U ØÏÌd+!X·ŸÔ;ÉÆÑÖ·_4èÄÀ™€øš—ý>‡—ððç6µŸ\'‚L í³Öî×¹iÙ¡êã䔞{I÷ÁN›XȧdEï5ÇÈ๛O§ oÜ ÎèŒ7‚ÞýÞuhñܧ ×”än™³GP]:Lvêq´ãvʯ;çîüŒWƒVöI{õöa˜u. l àÚFžŸÉ8‡žå k"ff|¯¬£î†V‘µë‰Rÿ¬jÖ eŠoÒsÉ*Ú'TÊÃÑlt[ °U)švv‡u»SiT!çª0’ÚN ‹¼¶„bâ.ÂøÐd4|¡HÓj½âô6C&.w4t•‘r 9a|‚Ë ÿ쯃IMËS/—Gª7(ž[/§Þ› =.´ïRìFö4ÕfËÙUNP),ô?@5qÅÊt{7¶œ‹eú&¼L¯j»u¬NdPgÂ+^ÃÙƒtfW y&(rð‰ª{GÉÖb’ÍhA 80#¡á[‡{Fø.¼YÖ9廨 ÷æõøÚvÜí…Ħ™‡Ïº=лÑ;SoÑRJÓŽu”qÉèD)&ã0Œ0ŠÅÙØ€É‚!Oa'â!õݼ[ç;{ÛÝ»›ÆYiL ¤cE³ø=ÈŸLíÿöÁâ4W7d}1Ò¿VÊ.j™vU¢Ì¸»LôÙIxžY-·R:?K2£‰j)ÙfBz%«3&[LfÞ †Ý ³Ú"ë«áç“£Á³¹wˆÉ iºT&PVŸZ¨œ†`=¿G¡p‚ˆàO§#í` ¬ö ,­ÏŠ¡mŠÛåöÇ Óì¶ ’<(²šÒº>‘ufM2¼1v ®ðòLkGÙÛ>螃5ü_:PÌñv¹¹îã†Ëüa Ï1án&óc›ø–ˆª+íñU|'ÕŠ•‰1ƒv¨<VwZŽ€Y}Ÿõla–˜ÇC;Ùwt FﺙYý6–o,‘M³OgJ›'Z2À[œ»}7ßáÊ5_äÞ‰8Û²£t¬a$øNh¾óWÎ5ãYh?Ͼ7ó*§Ag5A4'qSpÙöv]HÆEž«Lò0ÚH‡ëËùRÌ`jìNÈo^¼+烪‹?EAÔÎB¦Cœ›üØ“æI¾‡Ø™ô®ø2£ ¿ä*‡qç*$X/ðëÅu‡vº —xwY÷ ã‡e­Ôž¯ÔW3ðƒÖÿ¶ )Œïޤ¢Ódz«0é¿*F=It]†­mÇtc(—¨ŽGƒ4¨ÁtØËÖÎ!üþýhZš½ùî†\ÓZÄ{%_ÈÁ,ÉêÑÝDç6ÌØ–c»‹JÔD¸Æ!$Tö o'd~É;Ò¢ý¤v”rÅE§'ÁÕ&õžÑ]M¥hö qæoc¾‘ý ÛF›·V½Ùm¤Åà4rCчABãGøJóPco0ÔvzÍ[cÌÌ1G™9OÑuyjîÂüÑ¢ˆ½0ˆ+*`6܆î~òhø´R026µkÄ­¯ÒŸÜÈÙpƒ2਩'ζËXIÜu„7¦ 6±² Yü˜D_=¬J¾…ˆiÜM+—N^6ì ”´½kCõý©ª½†uçGÛ½üÞõuÍe½5“õE·h-»¼N¦´‚_c=©æwÂíHVÔ1—¤•#T¹'#Ö«#0Pà”wš¯f¹©‹ ÿ;.]ÍñŠ#Wm•AÎÀçÖâæcÚò^ðÌ FŽÊ)ü7Øú€œñ3_íÒâg´È¸ôŸs[í:ò È~ßeWÓePˆR’"ŒM³o³" ð°€+¯ HFê]†;œê ÿOÿÈEke̵¦‡,€¯â¹0.¥Š~¹hÄ·å1pd­& 3¾-¹Þt!¹†]©¾»‘X54.HÇëOr—­šÎà‰'»Ë;Í(¾cyj¨%Z˜PiÃ?U3*ÍûgÜŽèÊÂИ¾T2…dÉ&È…ØFµÓùóÓp¸ªDqRZj<ûxq8B&£€,¬AˆVá+¨Ô WSè îz¨áPÛ±)dSyÿߌsö–T‚ à-ñ¦ZÊ(ƒt|:ìëûìÒ.»,BuÄWËÒo¨>Ù¢¼8ê¬IyãRæ5ìÒXðÃÇ(ƒrò-+Ò5YÜ-¦„#YE¨»2ãí2+KYc†ªöeˆÿ|ÁšÃÚ‘É)Þ€tF€“Ø“|Á·yËÔ³Êòùë³5z49›5Él¶ìÖ…`æ'¹l4 Aâç"Çæ ÷ òƒËê/nîVæÛUP©F¸”³Â èÈïMÜê®Äù•Éõul΋’,ŠÝì'ùÛ©ÖJ8x[î\¬VΔÛÓùÛ¸Ñý;í‚bêÑü¿Ží¤Æ³K5£5‘^i#Ò tØkÓ«¬¼ðÕq<’>[‘r*Q©´é_Zß<œqg -û’9ay¥i‰Í‘¡bør‰:‚µÃ .Ñxï8“ô¥Dá§_¼’(¼à.8AÝ4‹è³.½ó)¤lx‘q1ñ€$²ÙÐ2W¡@c$÷)Oš™°£çÏ~nMˆ‘Wü¡°ò·iËLÿÉfÎBÜÌÈåðF`Yú¿òåËé?;fÒeðzb')Õr<”£˜‚Ç«?ž9ÿvŠ–ç&GiLòOSö3™lƒ1Æ’oFQhݦBðŸÛ˜M–0^b¶²ÁÈŠÔÐÑ üÃùМ­pj¹†Å* [‰“,ïyãÝJ> Sà¥$×q1ÏE­bÖ#kù„³8€‚`ØIo,r®LÛ'MŠP„’¢ú:²6Õ,0$oxó1`œíÆOb«r‹üÒÐõcþ±šâðq²Éÿ3Ååâ ½P¿ÈãÈ U5{:Ã8AÔuY d˜M^=kÍcyƒAãG9ƒóŠn8^ó5N¸¡$ƒtW\CÀ©Q1ùÉ©iAnã1k£pC‡,÷°Ú÷ØZ8Õš¤‡þz‡z2W,V|SX{@‚ºá®ãná>¶§ b^Ê]ôÃyûvá{lDYÓúÀœL»€åqs/N. f#‘£P œB¥ªY§¤Vvróž?^Ir” ”¢,  ÏÂ}µæž3·ùÈ鮽$_æÃZ9ëˆ5¨mqÀý¹Ì{Íl-4VN“:ÛàȱÉô·5¹/Èã½”RØöÝ&‹Hº­ÝHðÔ4Zc°& Ê¡ õ-R`ÿwk¹m„ ¹iìÌGœ£õóñ-‘â'ì¦rá ü Dß•$‰?—ˆùXO\G¶‚íà^¦pXݯÉMD`m®§3²”}Ö àôôë?¿âlÒn#TFìb|P¤ê@áp6ø¶RŠ…÷H´7P”g7}8îLõMº4¢³\l­×ó· „,x`é¢×PÍ[‡áºãƒ<qyú벫nÃls%Ýn¨üÄߦ/À^ê©nœåDVm½­{>1Õ K3]¾Jºq#±#W0Ù0ìÓôGXkzB¿áèüåûXSòˆõk¬@— ן õÚ=f"#® ÅdÐl*W5põúÕ-Ïz@a„eÛ›§Z”º€ÐC)W‰DOÝ¿ÈÒo†®gÈ— ¦F*è5.3퇌ÓR2êÈ<ƒvÉï ñ‘ÃÏSa))°1ÇÏ-uÙ5à{¶2“˜ÒN!¾\KÌôr?s²;-ÌqÿW…U‘c¹+4Öz°%›mƧȱī^:½¤4ayŸÖM§žÍë'[VuìwuZ^¥Èˆiâ x —¬‹ÍŸ,Ž_ʱ^öá6ÕüëJ´N0brw`Ó‚ù¼ž\®Fôz@O“ñ¯GB>¯ã¿0RU鮳ñ|P¡%ë"=„á,Šo& Çæ B½RÚ3¨(©=¯k7Dsfþ«9Å›€Ð?Áë’?¢š¨Ò˜m¿eÀSÊ=ë…Ì ãö·¾5o¥B#{õ…1ôsµðmýâ# ð‹E @ ƒt¹çYçµFjÒ ‰¢âÚû?ßÿ<\“iIv™[û*n=Mª x…œ¼å“d³Çâ¡æ}&ö°¼ÛA.äœú[A ýÂ×mPˆá*¤™†¸ãrõKΚúÞk† îz¯vŸ ÎEÆÏ,òh1ÊWã¶DkĸNнG‹Vu÷^òwl¾ÿ —eZ×ϲ\à죛kZ>pæõ½–w¹EÑø{ï‰ZL·Ôú‰C¡7ë‚Ó/„Ýo¶þ <ªT+;L6ìW̾óaÒ'ø§j€µ¬-á D«I\5Éébª»´Êû-ÔâyÒçFn&•%íç?5ÇyùVÛ|¦qŸ4Mìÿ°9š<ãÙy6ª?ö™>£þ^?`åŒo>tôžXÕ„?¯Ù•Øy¹é…ì£ß³ð­æÌ¯£ú+÷@—Ž?â_{ûø>øBMûÖʦ »W% ¿ÛU0³ù7)Z®%sè®8`¨¡Íé‡y ^dŒÐ—Ë 8[¿g|7‹ÊÖ5’?K@o">ó E‘MƒkWvÛ_)¨” }Ë6“ NX\¼Ï•n³cÃs¬Žb¼X6GJ©à´tƉ®i_<Ïóåƒ}_6E“#ƒ!l®àc DшË]'ˆ÷·Éòng“„t%%‹%Œ¬cˆŸ@2²rãÏsI͉s$åïÛXß¾½1÷%áµë@ý*èÏô'}îY ›¥õùÁHpW"ù$á Aøj˜¢XqY}Þ{ÑgýÝtÊZ*+Ö•¢Ðm0Þ‰ Þ»&´¬Ã¬Kæ!Š…‚²àUŽš\Zd³—ñæ¼:@ÎÜÕ'[ª…v0ÖÕ^ô«£÷õ€GNB»37‚W(g)…žÜÇs'^gìü/[K€G„$AR²ZáT:Õ¿Œë$p‰bìµHW6–•~‡7r·H _k>€@_µõ[œ9ö‹[`%Hëeš–%ÌBú©}½ñmi‰3d÷ŽŽÝÃ&çë>nºSc¶Pôæül¡ÃŽE„bϰÐä±u!CðH^;*Ó„j;Ÿ÷€}Ñ„#÷ÏN;80»ÿ¾ª·v 7'ðP…y£«NIg<¾ Œ Ú+µ¨«< ËÈt‘å¿EwӽùæBv€dP¦I­é(ÖÞËÝ^Zå,>A~R¦j‘ê?o‘ êÑ$é–B¥4e!hÌÆO ,„þ—gðÁZ;*ûŒOmŒXëHT‰°Ügâ›É  ‹6ØLØ •c » …ãšsƒÄš|Ц½C-€¹­&¥Mð  k,Ùšõ÷µHÁKžb ¬GPa{¿®rÅ—#Ñ#°mX¶éeN¥gLË=Vè‚øË¤s"©±®ñ?‹*{ B•xÆp‰T/ÉK û‰õá:§mãë r·TŽÛN' }ŒáéJ"—'X´IWé~€Ä¼èÑÆ‹«³n¨¤‚ߢs1#¨šØ& ÔvªÝ¯µ@yz`En›h+v©ÞkfZkÔR ¾VOF)G^–&¬ægùš™»„‡4n‹Q—ähÁýTB{s …`ù°üðE§ ìê3¢Ép:&Æ—Ä•þ= ŸîÇuW\qg°«€5!Ã=Ž5犬¸úÔ7ÚÁ|ªËØ#ø›¸™ºþeƒ8Ë:ˆo^áWl“r>ÿÎTãvÿ•žìöÅJN@^žHeŽï‹P "éu&™~OÄ]§dŒX¸{· ̉£úh˜„q6Õ Eæ˜è@èvieVû6‰ïÉúޱ+¡{Þ6œÑO6TFX-¼X¶ÁEªßªzÒÿî𣣟ü†û*·ÚwëÖ¾ O=ì4¯Ÿìt¤ïöΰß\q0»W±kR©Ø;öÕÀw¯#*E„1*tY5(À;$óè7ŽÊÀøŠUÆBèr‡µÝMfe Øyc¾dµ±{÷Ü[!1»cÑ÷ƒKÕ“ÿVèüUUË:ÿóJ<¹R“~ômp}ºà›ƒPéYBàÊÂ:8ê˜S¯VÁ·I€Õ8JÅ2¾Þ6”:yGÑå›i¨u@òvÁh2Ã1ŸuÒ$!W¯\%ÊžÏð"–?Œ®Ïh»¡³ÀE`Ù€ÍvˆvÄN+v|‘–s,.–tÜ •æ ÉOÀ˜­­L¶½+À-ú§n•âîXÎ8Ž<=Ïöô±äpV耋•I˜4 ßé.åÊwrHZ†‹$¯U‡Ò}²×T°Œ!0 $ÆÜæÜ*[‰d…ØòXlú"mõ=1YÊðêÀ’ŽÃue]  Úý'hpµ0¢-EךhsóÐ?NH^¡b 6CžJ$fï†äoOî’icüÒC»Ñ“ ŽDÇ®7¾&"|¤XÑJUÇfýÏüÀÓù㻕և_οýøþùÞž~ûø>¶V¿ñ–]óº9$€)óÈŒ2yÛìÉ èujé†X±ŸÖdš´/†ªÚä‹×¶ “áCËý}šs¡0ÉT+Í‹*¨I‘¼¼Í¹«b}èQuð}¢‘F™S/Ö`a›‡9ƒ 0¢"aåcäš ¨2ì¸Âd¬ˆYÆj†ËÂN#³ßnÓ’Ön*Æs±"áÕ'eAÝýIòÑ¥UžÆ[6Vc"¼7GEL<Ä$+êìßÑ¡¦å8£WøZ³4Ls"m)øZªÕÑ"“5¶Y”Ö–2Aú.|üÅ6€{o©Ó¸çTžzoî0R³Iwh¡Åâ÷ÄLgJ[Û®ÃÖ±êÄ/ŒxshfØb×^Ú7‡ˆa梡ODÃp#†ÃË3f°"b÷CŽô¾ºøƒNÔ˽W¨­DíÑo aÚ¨ÏÌMk˳´8*LÓSp#œ‹;Þ©…Jâ0ą̀«W̰ûeueU?11É5~h€ž+L‚Sì‡/þ›iÅx<§gøk³ ÀÜ7 a´<Ôó€™”bˆ¯¶B¨‹«‚>9Ü òÒ­iY ,ŠTÿdžv¨&ppŽŒÜÛ./eƒHÝ€ä .؆VR—ÊaÄ 2 FÎe‘Ë¥}™YÁpxþz0žá2¬ÛHy-b&/Å'y¸­ $Óòdʘ4º0"z8.ÛÈ:I|B3ÖQ$ €k3Û+D™ÏÌ(•õñSüZÒ$ÕFÇfî – ìSŠ[máå©\Ñ"ŠðýŒÆ[‚4ÆÔ™’5µ°Ùäa« üÃ~èXýTí×ÚšE«,',“¿†Éu½óÎäTD¨zh3ˆ3¬«]{_`hÔÜ!‡þóBöH#!+:ÐüÏöxŠóÈšÊÞ¯;$(hº“Ä&xëÍÞjútó^?ož‰îÆ&ü2é~î2ÎcÜ|Ú|(Va#=N“ÇUÇ£~Á%yþi˜J(®½£Âa8¯Ã꡾ŗU±¼${•T /k%™ón0.oNÍèzΩ´vfð´»4ìý°…à}H=€t‡ÂæÚ»FÂ)­U=©µÔSÄ“µ1"wýe0ã‹Ï¬Þv‹Â= ô›š ”}&‹ué“B׿¹óÚ·ÜÁ«â8Û¨VÌ;Ñ%bš;©³ ô*£ù”‘êͯ¥þhÒ$žü9owyž•Œ1zá¯è§]1ƒRZï3´:Ѿ°°xŠJòlÀ§ž"‡´kø`º8¾®ùÉÏÒkz"Jºø$`ìÄÙßÜÚ'W_åÐdÈbl¶C8†Xw%ªŸ3ëTR¯p€^© TÏà çE«Åƒ[­¿B|óÚ‚î~Í…¾Ò²r6mË Á]Ÿ¹NS¦¯þ¯ “ÇÖgT‹ˆáÅ÷Âmk1ìêª×%Ÿ çƒæ´”ëk9»¸ÝY$ùÁiÒ²‡ÍR­!€â _>»wãã(ý =¶ß# Q·–QZ™µp™Tª‚ÄéCÂAÕ¼jù{I:~Hã×;D¿&´®÷»Ÿ¥ÖDè¥|q9“sI¨ñ*{âvÄÀÍÀ«•°’–¾¡,_æ6P`s¨€5¢ë¸šè^ }¨/# }ÞÓ §®YHžKµb°ÍŠ91ˆ6¬ÖJBÃÚ'¹®³:Qfoj‚vöTŒv•JÀǾ®NËfªÉD•ÇJi™§'vâT™v¿ ­Ð£î8ªbмëéh/ñ ¬?sÚ@tÚY»S¹óM×OókJ£äOg–Mñó“‘N‡Yñ$êøƒO‹É©œäãÏ]}€°ewŽŠÐ}YØ­”ä]ºUÜÊÍÇrXCüíaËT÷ßPÄ mføŒVkçëÏÂË3 cÆ>Œ¤0Ÿêðêò­¤ædZ²^°ÓF|5/òo±Ï{÷Ëî¹²!ÛHßÑô'k3¤ÐÒCY~>ŽnÛFç/0¥¹zð®ÙöJXIFÓc¶À¬«[ÜÇþ¦½üèÒÍëÙ}|U][ýi_ûÿÕ$ý Óòüå?ñvþãÿqÍGÖ4\]ØQúWéÆY22 °Xíð‘•–}ŸÍ»aYRa!`-ËìÊTŒ‡Õt­vlAp.G©Ð°Úá©6x¤Ñ^"w®xkTÂ^Öœb‡N:`OM[(Œc‹/¹±’Á2A°ø¤çÒEŽù:“r!«Ì“ʧBD¯zAÆÑ»Í¦¾û‘Kòç|'ÔŠg•L®ªo®u?~eÞû¼ì¿*ÙpúVàßA¼CÝ^þa¤ç› 94oÃ8ÿw˜i:ÛÌÇb[eÉä¥$N61Ütž¨Ô!àî­Õ o&só }hfn°Î`ê±&|lPVN •WÍ2££–™z‹_.“ºß*ƒ—ç`BêA ̆¬8K¨~:̓sˆï²¼Ž“ Á6~F<ä,ê‚]¶ƒZ±¹œ‰há›Ý‹ÈyÀºI>Å©Ï@z„­©W$ëÒ†^ìÌy¢F°ŠÆ¶ Šƒ>ïÅÃW£´ØJôÐcÎ.nîЀ=)7V²3¹gÄ;ßõ5’É'P:-oý…`s6tÓÀ«´÷¤â=Ö"¹-ödƒêç!Y… ù …ÃcœŸVr©ã3‡­®Ò>ëØ`x­D c¶u¾ó=EÇå… ‰Iž#—Ò>Ÿ—#ÕÿÚKì—¬˜»ïýèƒj/ÎgéßÒÔf‡eÝþWnÁ¶†íÈšËäÂ2å9ƒcÀݽ²;O®Ö/9µz6t_7ï;mˆ®0åBU½[xÏÆX °ô›luŒtMÞ(”Q£÷[‚„Þä¨8\ &‰#£Ó08@b0n”¥Œ-=úÏÅ´ûŸ²]Lº¦b~ëh.ÅÐ¥´P7€IÎv„Rªüö¸òÎþ‹óN¬L/?'T‚=InðÚI:__`¹ÀàÙtøíTâ3~FL1• %ѱrÄE&vÝÄ_O]T'ÜŽÒÄ'ñÙrFkÚí­¥!ãÔ»ðÅ;‰XsŽUö ©ãÔÙ¨Ìâ!'(º ?×/ hßPHÎ+›=[Õ€•8ßé‰ûä@}QO>©¹Àü§`é*eiBM`UR3ýKƒ‹ì´dSq»êTµô‚@¡nø¸&ñAÕFºH§KþWŸ+Qd2|Š–Õ“©á(¢áš|:sG½Oöi¹Î2®΀áZE‹îƒ$Þ/kå4Æç¢ŠÒK\ÌÝ(`Œc!³©ÇüænN|GÙaL¢­:[uñ¬1ÎZ'¾…ê…€¼ìœ¢Ï€#.x9‰V‘»HþtùòÈ„°[‰D±âøGGŠyLò°J¤¾E’O ‡¤xÇÔö!ŽÝ ëcH¢Žô©¼ßø%\‰;¸”?_Úã•—ÿsüªÅo¾uÐ-w•Œ¾•1ó0˜þpdsnAÍBÿÚNCubFqJÍny—Õàcš`»‡Óœ(=4}¶‡ą̈¬.æ·ÄŒú)TœïqR!ai5}l8h[†Í†z‘:Æ5¤‘YìÀntÉù‹…GÓ$ùR ¶1:>qHH˯57­VrÝwô¤h—lþ‘ˆ<! Œ-5|>}MÁÝxÓò_OÍNŒ aÞ©Ãñ ïS5Ó²¡N¿½ày¥3v¿Ñ{×á)Yè) KÄØIÙÝ)gpÊûÚM¶¯uoÞšëYQÖA-Cß”ýð’­ èù%OÔÊÛÅ0À]F  ÓÜa±Hµ/@¥ÉàN&œ;¯Y×¹Ð7²ÝPæ€Ø±ùÖ%Å,“&j*M3Å‘™8›qE½•0Ö$§–…}¡ð²¾Ô¿Ìéh¨‚ÓÂô¤Ê&°DºQ Ç¡œ™°Ío%%¬·j0€KqnÛ‚(}!ð¹ òÉ䀎¨ør6Úl¤Kîµ×MiKô[@5#½w«\™¶GÓ2*>èÜ0‰0:WY+ÒƒXBÒ£3êÄr¬Åy¹“ÝâbÉ.À˰ß0ÙV{eÿ6¸äTóï.[Ü.ó΃y¦6O<[5aX·Ï$k’>œû¬¬áAÛÊVÏœvÏeŠâ£ïà¶]Cn¸LÀ°50bŸèŒ®„ÝÁ²T6Â’BN'f*vWV+åx³ÒyÅ!im¯chHñ¸üÈÇyIvËÃãÓ Ci—% VÙ } zc˜É>â:?{áÐ[¾,)Ä™“@–¡(OýEvT{!¶1tbYPÂ$†ùkÌD¹øô†n;ÔRÖƒ|EA‹Q+@ýæ)渳9‚¶1ÿ‡ã£i™ä^A?-Ìà}VÞÕüšÓ&®zdLæo\)vø å—Õö—ô”Ô_µipIºá[ˆtäA¤ðmVÒ¡æñâàetòWŽ÷.§ÛI+sÿœcCÂwÖÂ{¡·æÂ\/3\ª^}†‘ØÝ:-Ý|Á,ù´w¯¹ ’” ‡^á—«¾Û¬ÄW°k~¹¡E÷!'J‡ãŽ=-çöÉ3ñª§>ŽÂ†r6>:õÚ%û¼§E);xνIÙJŽîU±˜Ÿ's Së¦$3V:ÿw‰Â™Srœ6ÎC¹ÖÛã?«Œào /áV1ëÚøS;>0ìx€ô¢,~OÔŒ%Ô¤îÝâþ°6ˆ¤ÆiIüÔCѯ‹-Øÿ'‚ŠÌ)”û¨"œí\5«X_v G¥…kÝÚ™×D§êÐE™}{à—”—„Ø}øµöÄÊ&ëŠ5äÚ†ô{ñjÔZeˆ±ŽÉÂóÿ׆ ýSÒSßp]ÜÅ …æ0r«Œ¯,`n%ÑtAÙ•J4´·Fžñ?>yBMý 9_"Ë÷yr`Ò˯rªn쬃%`E{&å,ƒø^­÷$|$Á<Äh€í6l^Ò]˜bÝ”Ÿ=fº—DWØþQ°qtY6½m<\‹ðÅðGzX‘z0,ùòdIlRKYÂÂK0Ì„V“„C4˜¯ˆ«] ¹Œ§%ìÅ¿µ¸äâC ó«]ÍZ”g½Ü[é8‰DI¢‰:½u°{ih2ü< T!æ{aÏSßÙþ´NÀ0Îèƒ=goÅ÷|ú…MÁÊ$&„£ÚHuEÝÎnÎ[O•ó/ ŸHµxÍno=š.÷ˤî¸ûßÙ%@^j}üÇãØ¾.§Õšÿu¦ZåŽÕùŒ<^ÃHÚTýhž}*œ_BlmtI¬¯RLuÕÏc Š·_ÏÔ· XjtéÔ]ê¤yeZÛÅ»Xûññ]Zb\ªÓÜÖ¨Ìû(`p¨Þ×È6ÖFüàhº¬.ÂHúi*ôGQþéj¼÷¹ƒ‚•8]#ßÑî GÁ\Øé…Œ½ÁÅ’äÙÀ=H)b¨ÿüd]€‘fû<°/$Õü.¶¥Oz>J’_Iǃܫê„àƒüøòøÄKpÛ¨³¾WË{ÁíHKAÒ2>ˆ§n Oi"«<ã!~ÈÑ[ôszpåé S¼Ir)V³S~g|b½b ·É¬n;Bãb«Âu‚œm±œÁ<œ¢¹ÜWl Ð>ç!Ò<”ƒÕæˆb¿ž¤™ôº3Õì³äqŽ’”¢ ¯§Ùÿó?£™Ê¥ŠlÔOd’È:ÄébkÜ8ÎW¹È¾©ÒÁî¦9nERÞ0|Çœ‘ž6y!VƒW¬Æ»â%Œ@`_ò+nJ5Hº6Äô¡?d\˜Eý@ÙµÔ[µGª&ÍЫ ÚÓud›¼°¨´kˆfhèƒB3¦ÔÏWBÍO©Ì«9xxuÄÌFdÍ7?nÃ÷kÕàu‹ÃÓ®39-”Ñ+•‡3kì‘6vË'‚Ò0ÉÓÔ×J5õÉ.sÕä¥ÐKôîÙO•Œ½G^K¬šE²ÉÒzÓx¬Püî..1ˆÇ .X^A ·ÿ“ê€ã0áõ±k‡>#B4jS£Oÿ¶„Ÿ…j±`ô4“y•Ö!„5óÈä‚׬}lÈËÏ Mï¯ý‰eò­×¼ÄºÞYñ7x4Wú·št‹çÈ=}†>çwÞšü=´¬ØEÄùk´^T<"‹TÚ:~ǃЗ_,(ÂÔ(V…¡ž+w2ì¼H‰d´˜\z25Q˜Œ!>}óÑÈŽél{N7—´ 7'øÄ4 wPÚµ†íA$íäö´ü¸¼øSÿu°4l¡xÞ}(m)ÍŠî`†£E|tÃ18 ±wäí’\Xýz¸ÈÕó,Zë¹BK­#ĆqGl™B'C§_°>}±Y¹å>‚ÎØùHÝ+ÎŒAJ<|Mw±†Ó]Î iåä#àVÖ»ô²¯ cÙ_ŒŽ7ã}ëóUÙfûoå}²­!{@jÅ}µ¾ºYø_7ŠtšVž8] ÂP¹βәÇɆGÑ-6ºWÒ?oh‹UÆJ ŒÜrŒ³2 TE*Þe$fsŠßýÞD$Ï¿hvÐá]õÀ<àsSp½"´+°Ê : ɶ*¡—¯¸bGE6Du¦‘WTgíjB›5M¦žÒÈ®û lŸ<€«T6Ù†Ð?; õµ9¦H~Xl¦ÚRÎG>‚¹gËfp’3ý ßÙ KñÃ-•Àlø#YBsÈ vàŒÈc´3eóº`„ïÊ=P‰#3CG« à~yŒ…•Þ|ëòÉWhù´)ûÓ×Ï¿ý÷‡‹U¿bêRQ/É…¢¸‹mÆÛ‘‚b[?â÷€eãáàÛׯ8e“[×ýë«pTÌ3­5ÆÁ;¥õÓWÅ€'ƒ,ɰóÃsVtê²ÉB9Öì,Qc&¶êñl‹üA­vðÙM<+Œ^V‰°²žŠ«jÍ8¢geq†ðzCCL[ú©ëâê1.¤÷Ç£m“7×­p-¬­ËšÆ{øiê(ßu¢s©ŸÜ‡"ýs`zeáÄ÷\¿øí¿¤Ã ³ÖÎ2óNU–µ;h‘®a7/JZ{ã®:¡Y´¶ø;ý€mm³%Ø æÇêfÌ]‰"åó•Á›?Í9á­ )òVÇᡜ`wÓóócœþl Y™\2nÉ•¶ûœ¯V¿(îûÅ€åʹä]šÛa•›3å•z3&yœî3ô+ž‚|tóÝnÚ%Bú²búïf‹(;Â[ÑýÛ_ÏØ@ýfw0¶vÏ·5ý§s«á¬³:®± ¯-ñ“DÖxÁ~d±]µ``U©ÍdŒé'0öè¯æ’y=Êf7§ÌZ©k³€N´hª[îoª<«ø¢n¶UÉPŠ% 8¸e®Ÿ!>¬Mב 4ýÉɆhL÷Æ}XÐê µíI¸†ÃlPÞ›Žõ®×R »èùR‡¿zÆ´×´-=íJÐÝ÷}?ÿÀÛë/ÿ5-ðUŸlåˆñPb-N¿œ*{ÖÜL=á2®ê›>‚¤ ÃÃØ\"Ñ¢Ôa½m›É ÃýàYNn·i~ÄêÊ[n}¶¤Ípa‡FèQêà‘¯M8ÕLáí…}ûŸñ ¤÷l#ŽÝ6h "|P}Î݃ôØcÀïéÝgŠe–Í:¬sB¾|ø)mˆÍè´ÿŠÁ{Ã~Xø‹%Æ"ÿŒ%£=^ýšjÖñw—ó'8ÛU™§ôýÎÞ™1»µýîØ"oQT܃-Gg7¼7Õ‡ÑõÁ9;J…„°Ešâ‰%Ú¶P0MâW1CÄ4ŠXž™Þ=ÎsÁJüXÉ",÷g )åGOÅȈs¨GgO˜XOÉ­n“C¨c6roJâ‚ȼ3HìÒ|¾‚ÓL5êϬ+§ùËß™í/Oü[u 1b“…Ù]”p`ÇvŒv7맺¯Úá‘ã{YC¾éº&±(á£`¹84› &Å¡²f¨SRÚË sÚ|2¬œ{ío§Ðq·yF¯+Uµ'ýŠ×R9‡È¥†2þrëå†IÖ£¦‰ÐúºƒmD„w2 Ï1ŒžÅ¡MeÕ4rÙ(«PH“ŸÛ(^è›,L¥çGÅÿõ®Þ ¡ Œ.FŇ{ÕçÕ'iÜhÞ› ww³èh–;@ãá×ôŸ ¼v¨ûëˆBê^£± ¯µžÕMgÒÑ‹ü±LY‹‚)Ú—Žv9OnƒÔ÷h_*i¿µ¦SƒOîyPÓ¶?/ÿ$LÙ­ù^z<ñ¸¼zÀ6 ^ÖÔ…½ÙeœÛs!84ª÷âìW@œ˜“¹uÃäÏ8*Àâv0”Ñ6PÖ¢HÍÁÄ5ã3ŠC¦îRšxô5²Ç‹# ˸p#[äcÝÛ÷¥Ë+ò‹-õa»A1ÓÏ12âdÍ#s;ìLázbd§Ü|÷ØhÛ%–ÃZZ?bà;f:#@7Ù³¹ºðÝã±Há© òU<´Zšj4/<1úY„LÏzÉöù¥%¶[ái@bêæÎÛøkÖs—"‚lKpÙ«Þˈš`9¸]\9›Ëÿ·§§ @ü ±Sn£l[ óšÔG7zK-µ* –LOÒ¤\ê8à S—‰«]!"¹ç%º `_÷Ð!©ðõãBBÃùâ}ÕM<1¢Ÿ¸€JŽíXEj‰á¤TuÕ¾r"ÃÉ¿Ïôwµõdò$ÊüdÞŸ8eRw©Ç-—y „웚Ȱ—ýî1öÂ*Î É7¶a{yŒ=é“d¿¸ÆÐÍਲ[ºò(ñv[ºô±ÌO*ág2‰3¦ˆô+æ‹íÁ†5ŒÑY¥‘—s…/ü¾U`[¡]0¬Xú«—nñ|ÀžOeßd Ûâ~„áši²VvdaŒOÓ©.»õfµU£ÿ¸Yñ@Ò>Ây!t­xÆœÕq§HüeMA£Ý8*“+Oó %øî®è~žuH‚_]l÷´“ÙöÁò,_=°ÎÖ ?£FžÓxX Ü•C¯dö~ì³ÐvóúÓj<7jFÞU·ÚŠìš‰âzé˜×"çfʰQž~È®b´xÝÝ…uÞýLÇ#Ëb{ÿ¿ÓÖ¡Çtƒæi±ße’"¹‘¾Õ4=sßÁËcůý„çÝ*d@"óeU{[ØÁ €(̾ÝgÝ_áfÈ$X%]`q]<6«kIþÅîÀ­µè ÎÖ ÖM*ð“+yÆÔkûÏw?©¸1Eלõ o…›¤×ñÜH÷GåïhÓjP %(.§ yUwMíÛ£÷§_~÷ï]úVWSgÛ Һ閡2†Xi%mK÷òêòTô÷­HÖÇÀÕ")€÷ŽwF>åÙv Óxû,šv÷?Ôƒ›·Ÿ]ÿø9˜ „#3 ¤hMû+ÙŒJ¥(í¾þÚù'brotli-6.0.0/testdata/compressed_file.compressed000064400000000000000000001416641046102023000202000ustar 00000000000000‹×á[RE ;«@}.ŠÒŠE\IKo¯€¯xÓ4]MOl±îô!+l\ECKgç›i¦E¥¢_…|ÿ’ݹòàɽ#æIBƺQéºàŸÔL‹JEÿ†`;l h/@wL¬™ÜÔ1Ä„F@Âq(ø¥}fùQ†³VF;EF¨ÖpdqÈ‘X7ìJdhîþýÉ 2‹ˆ>³·Wû"ù¹ï§HA|‹¶ä÷#n™òê9l[=ʇh^ àñøi~_o‹û#ÿ„(aŸ¹Hÿî<·?݃®j¼ðŠ'%>QA9"tÕ,ÿ}Sû“ýp0Q6a2Q|Ï=÷,C@UE¬*  ‘ ˆ¤ªoQcHS÷:MGì¿®ÿFZ¯ù¡Ìï±&ÜõIl}¼Y¶þû}iý;ÿ»¹§ºzÞ5ÙÏ^ko€qï @Ñ#H ÙHQ ‘ð³[ûÜÈÄ ª~ÊÊ2L©ßRU`ªžQGU™UnûÙ(Ý´Ó™­Cu÷.“ !lr’¾@$z–dÙ΃vS-ëÊæ>ŸÒ×ã¢B‘ iŒ¬òmï}Ê;; ¡¨ «„{àíÚ4ph”l"ú¯&­åÙæû= ŠâÃAbÔO\Ç/ÿg¥jâõ ÉÏì1œ+´c³žéUz>Ͻž­Ÿÿÿôþ— ¯:ü¯! Ñ´Vö®£a5ùh`ÖPëx½³¶ÏùNÿTä)èЃ®Ü™nñ'>?‹OϪ¼ø;ì, 1`pÛ˜èp©g`®Ì¨ ðâܦ"H«Pß‹÷ #Å8œ†¡p&=[Qùƒ¡F0rhäÉŒÐKùÛ`}ôð™HC;¤±+xù ÔDð<`€T$‰EH^BàgÀ­Æq^d1‘^BýsºzþšmWw8-JH,_”.Î{wˆsqŠÒ·gXŽ€ÆÙ’ùÔú€Ô¨Ûu^ë:Kþö é)’wŒ‘4‘œÃ(Ö'L‰€XC8pO‚ÍA¨ µÄq»‘„$% B©,´›þTíœ)µã§g¦ÖBüm!ní¡CW ”xþ6 F}gQq =þþ?Àï ˜%Ò$EðìI¬°èJ'Áb p4×™Iã<ƒþWØË߈tÞ˜t þ–ùQež†#2œÃ f×µÁ!dZˆK¨K‘ÆO_.UæH—%?ë< ü<3P0+uÝׂ¤ ɤ’3À86¾ýº@ ÀÆ-–þe ³#›D*°°+6Ñ5’IìNŽ–ŽŒÕú5¾#P ³Bùy·jaF˜ Ž!83e¹”2 )T&˜!ì€$•r¡¬í^%=zØr<‰1PÌ—–|ªÌU¤ü_¥/Û"$ê›ãmí¤z¹G|kiV¼Ç%¬uˆD@_®ñX”ú%ÉY{€J¹ ®HB_Béݦ3 8·qÇĪD9mqĮ¯} æÅ¨.Ò÷ÔÂn9°ðñ¥€&o°n”å9DhѪžË´æêpC+ÄcÔ@3a-ÂêL)‰%mÆ)î~žÌi/¯E*úWøYw‚ï3rà°Wà¸äZß ZÄ,N¥%Ýþ³¤/¹ƒÃ@žÊ}ÆOA»”¬Õ$á`..“ ££v×¹-õ…§mR¼£.Þ&8·‡§2S¢pÒ8RA³YKаYÑdß=O j fâÙÕ<ÁÕìªJ[‘Qb:I£Å$>.jú|¢!@÷el) Š?½&\fÍ60²d­A_„ÞS½Xç2xä¾O¢¬iö¨Ú>©±~ÑžP6èÈKЧU­›wiy¨ W›‰Î[¦¶»øþ(b¶,š73¯(Lž¦Èõû)+3.´¹ô…hâMªdþ-Œ6#ƒ®#¸QÝó N›=è&F£‘“&„lçb°ÀZ =&>Tk‘H ×0ähñ›òÅ÷,„g¯ÁP×B¯¬u˜á"º–/ŒãÚËŒ¼Rk9©ü¡ŒiæY‘½«.°>>“ê'ÐJEm œn¸L_ ‚·Æ<Ã%êBHB¢·É‰\ƪjáÇ9ŠSK–cM>ö[Kh_"0ïû†Ó[Y¶Ìå?Q{°¼8ß›Dê«ID¹5˜‰^ \ ûŸùþøß¿£Ã~'Ø"„NIzžu£@:¢Ö»ÏÓk $+¤öšß}OEÉÀlWž§Ë ÍI Hbxt*mtKÍnìÔ·™ØÒC!”| ×QzÙ.ƒ¬M7{ûÿONËs•Æé¦ JF ECU8ºX|HÖ,Ÿ-•:û,‚ŒaõC{¦-mí¨øâjz.iY°«;“Zí%±3owXEï ½S#Ññ;„ÿÈZXÆq©…3DF)ú¸¦Ð"ËúøFº_~Òâd–|ÔÑR¢cKÑñUÓ2ü_$Qê ù;¿À‹_™¡&^$ë¿hüm’¦× ¦„ý7¦+ˆ´×ÅË(a!Ú0_޶všhÚ#´Ÿ ØôÐ>LÅkÿŽÞ˜\¼7Á;d’æ4¿/¼?ýþÛù·€c.C:Cj$L¹±]ÛÑÀK+kÜÎʨ¬Pw¸ÂŒEÁL9÷ï¤yàçÂË™|kOÄ¥V®²ŽjÜO3U„þÏã÷8Ð@Ïv±Z±`~„̾‚# @ öëœ, D(ˆªi"hÒ`ÝáãÃc‹¤òR)kÔ°Ä[¿û<½N&c¤F\c/x»ƒmÔ„60x͘ñ¡„d0Á·º±×§Womç´\!KÇã—ß|ÿøŸ_~ý ÈþMר1u£¡©œƒë@]í-ÊQPÓ(À¼Gë¸tò+šÎZvæ§XñÞp4nÛ‘B%òÝ¢BfFΛmMU¤ñ¦ Õ4~’>Ë E®™ÓŒ4v¦Ï˜ÈùsÒeÒN7Y˜š¬å›)9e®+3¦QÜ ‡Æç‚ª–ŒáÒê“o³ÕÛHašòýa.I5Sp¥´cU£Ž˜ÑW-ŸQJF-L™c–5ÛØ<8Jÿzï)¢ö“ *žL+Åæ´ÊÔä²:RÖ«7¯ì‚¦/A ýLDG‡kËtn—£Þ(ÿ-šØ3ã1Ó^Qx)·7û\šäìC}‰h뿉îà[=Ñ&ûrÈ! 8]^uaŽR3°áøYH, ìë–?T{ºFž|Qj jÒÛ-+2V'´„ÇÜ™ Ö®¡‹¹ÃÏCH!OP8í¤,&ÕI?ÀÜF‡PÈõ¯Á*€A+¢¢Ƈ†¼nNóDÖk¡9†ˆ®fm(ª+És’•I,EMyrà׌W8EKwBÿ¢håŒ]“À1±õ³“Fxµj•OEŒo23@¦È½ÛÌÔ «eGwêÏyQ(ûÑ—uÈüR”kFMM=u;’&”\?®p¬Ôqº]޲ƒÑ^ ÚL ø•tÖa]z©vA¬)·%+'²à§Êûyx[ÇGjÔ®Ñîkà¿áZdžá™jñ9¡GQÛ§ºLfœæ(ÐT&µ¹ï>2œl£©ûž¤‹Á+ö\EÞcµ¦äŠ |8É Š›!Œë'àˆ]&«%0šWÝ&ä!;1{ƒâ©I'GÔ7Xús¤@ŽÚtÉœbþÊŽAFŽtB8D]0e¦Ò»Ü{vÔôO7¼‹Lù¡Àäeîù™Óã:žÌŒêi7Ló+eOñ,Ri¨E÷±ïJæpç²Ïódo¡†üid|²ÆžŸúÄ;/¿ÿòëàü8Nóóºv< ÀÒRHÌ<8Õ§Û–÷ƒúOfÑy(~å3,Oþ!éëyJ;zœ^jXœùÌ3‘7ØR!¿.wÔ Ö8S›‡cD³ÊâÃ[¬¾š‘Fl>Û¬Y±'‰  ëí­-2‚Õ\É$¸]Pö»8UÛÉ44èCyH®œ ðﮃáÇîÝ2£€aͬ¢µ:.âü`çïCÖR,n~Ã{K¸UvÛÓÉÞÁtH#ì P[JJÚv߀\âŒa¥2Ú ô¬…vÛEJ?L;”ÌGp®´¹‚?N/|…þB4ܯóS§šâk:$¸À«1)µ¥a¦Å5Y°>!)ôž)#KÄ QXÝð:Ó²A#=Šà´²bÀ©DÊУê(¥}~†©p4¿îûYŽO”ʶ›™ëÆEI÷£³œ'µ?ë˜Òâ )©k»`!Š'Fˇ@cbQVËËjIàáÇvð¥ëÊQ}àÈŸÔÀ§×%&R@kÒ˜’™TKzÖn§ðöUŒÙ†X˜ó³E1sðÂ0/ÞŒ`Pn AÚÓaå@ÎNɤE$VmXW.eÍí´†C:À¿xÁÛú½ÕÜp*ôÉ/*kG³Gà´NÁ˜ÔÆ÷,S±íô"äˆÓ9Vm70J·áô'ù§éFMÇ·½1ù \FÂÁ„»Ãgûߋ֙Õ”\g­”¶×)¶üdÁ=t)í<ŠyВΩ=/8¶†‚‡!¡£ ½½zµ‘W–jg\ü‘Yzø…<Ó Íµƒ;‹º D}圌<€% òfÛ«±Ó¤á™Î÷p&šš©ÄÒÛªD&%âԜĄ.á*¾PóŽÁxÅL,ö eçŽ*R³{Óõ [û‘OQ™ÑtÔ‡tžD0a”X†«yj åUGdãÝIRÔ©”ÃPƒLLK±Ž²›w i ¶t°ÁÔòÇN»›;€±óFÞlpjné¨PùÔŒMÍÅî×@Q·ñ.!µ€I"ÅbëEdoüü~ ‹@9­Hµ})Ê«˜'šuÔMƬޮÐ(ê[Ò•céÀ7¾v˜æVgó.%0›Å®ïöÆà@¡xËd(†â…537Òù\Ž”oG7›F¹ú±jϼݟYO¡â¹a ]bãÐ%yÅ–âzÝÆ@ «d¤…^Íê­7ºÚ;{¶û Rä»k,ÀUU»Ëg‡0àhÆw Õ„æ¹&¼$ù9c\Øjø×ò10  n¼.™ &ÆAÑÕc^UÞ7Bߎdi‹ÉF¥ˆŒ¦jÛš:нJx£¶Y'ëº0!èJ6B§Ài‘6ÔjO¶®ék»j/Î9ë–Ž¦HQ¥·Ø%TC“Fìõø¦+ÝÈÀ-oûfž9庲3@£’O9×¢«vFYXI@ñ:Çoº†êÿ9Œ¹A•£<Û¦jm§žbR‹TìÆ4°$ÔMÆ›vN}–}]ú± d¥<\%±D÷v`0í ¦©ŒÏf&5¸ç»u¡|pÚ+EÓÞæ¥v„àüƶÃPM¯ì÷zžäbvG(M}$R¹UJ.ùÌmW º8XÖ ãõÏ]=#ÍöECÁ9ü\üÌ&¼á¤%ò²›=ÜdQ†R žÜ;Üù§ƒÜ÷dÔ[»}­}zW¬ÿ&¬ÅDa6¾½Z'ãÝ­þ¬P_ŒZm>±«÷Ø[!ŸGæCrK$ô£Ej¼sH1Œ^›ë0sÕßÖ쯉RÞ ¨àüZC¼æá-%3[ãðý¢H2Z‘†*°?³Ýe­t´ó ¸%ù§F$"«Z¡‹r½+¡NÌ^›m8✮ъϣ…¶TêEš£Ô6‰Sµ¡Íúí6XÛ3êP‹DꞪU‚k7‘•ŠÔŸ–ìbU£îÎcÂl³BÖÁY.-û˜q÷ÍùÐY‡"€€\7{ÛZiäñ»Dÿ"d…m¬_¼Æ1¥úŸo‡VÔ‰Â4þQ2H{½÷þ0E)šÈŒSì>gÅ;äù`‡sÈ0>Îpîêå¬eIc=zÇÇ­¿“ú*åÝÄ}ÔFEóÕc 5:Œ´×o„“Ó Ï]¦¥YÞæÎ8›™+0Ãl@OeœÀš•êSI¤MÆŠ>Gš!°€ø³`꺄҂O3ƒ•Ô¸SðAx£À½ ÕD1ýèùPû…A¥\.Òã–~àÒr©Œ>&þ*'ñ)°ÔJ ÷:”¦<´‘Ñ¡-ã[NîÝEßÏ<;DàÈ à×Öï©r¸ÛSo¤Â§g™Pò¨$}} • ÎùÉk‡¢ÎÆnð3ÝvÏTUðfx&ºm4^ùû\ï¾!ÁÜ¿–z<øÀmŠ™¯‹JµâÎÜø„“GÖœËTψ|‚… ¹ÒóF˜$¶A= Jˆ !}1¬aï;´cÄ€g…la*V™º„Ù¨¢ O ~ÏtI#éxÙ­iÉË-Œ¦¥ª`Þ~“ 2ÙkÝÔLe¾=$þ÷*V¼|¬°2`ùçê ÃÎ!+õV] å ×ÛÎY‘K-²Cl RÆV^ ºqj޶n,²²*ÞTPê\Œ:0´+Yá+ª¾Ã–ûÑGx–ßáQò¿µé<ƒ©ã TSŒcŒº@íÐ놌®Ñô¨ŸLŠ]^šÌpÀŠ¢ZΚFá”&:–­tž†ôwº°­ŽxKî,K¶šÐÂÌsH¡<‰ Ògêƒkˆû»LNmŸ{ÌÃ~èzf:EÞ²à™,ìÚþß]Ð]׆êÜ¡¡åó"‰ ¿§ÍMx!ÁùÖRý~NÍ­.>>èl¤óØV¨&K¤ÓUœk·éáÙüÛznï 7“ZC0Ñò©i©5Ò f¥Irt«=›Ë[ÿqþãdV>ÜLvkã……Ú‘ºðŠ]„8^¯-‘Æ ¡‰•ö¢c@¬Úa†tÎNt+¾Uªeí¾‡éÚ /m_{L«ÄE=†¡C­Dì—Mw¯'ÃòQ+)xôf„΃À¤Ú®èX®“ùQ¤ƒ„¦ç½!2 Kéï#ãg©} ¶*"½änh­ÊŽ9±ûÂÚ‰³Ñ•‘>T/1 ·ÅâéöŽ^ÄÆ<6ŸB(Ž¡zºöV{ÁÔ8þG·Õ{ððå…Å9¤yt™xÓÐÈ”&­*-Œ7LÙ.‹y…%$¹u^5¬´Æ»¬å;W—7%3Ì„iL)1›ÂiQO#%ììΘÊk»|«¬¸¸rVPø XRÏŠ~kSµš¿]J(?Zþ@ù0¸«v¥âS"vz ­‰-‚¨õÞóñÇÇ¿΋b‚yYÏ™ÿ»®IÃC(¸`Žkê¡f&þk¼çŽn¥"¸&'L' ¤7t~eD¦moÀKæ;ÌÚAÓɘÝVltчé8ÃiX´‚c¸‚2^fë‚ '%:þ¾Õ„žðàX/=­Í02ü}ž7Ÿ‰§·»¼CªO•.‰þ³‡ Z]ˉ3u)é•åwén•–Ä‘A?|Ý—u{ãüÇßkC­H³}IE€ ºït¤k¶[vMPFãTS-N_?yЙ&¸òÂ)®]ïÄ w †tó¸6þ37º_üØæ·a&š&JcžLÿûñ0[ h ߪ¬6HÞ~Š×Ò¼,@.Ûg±­ŒíÌ#Ä©Ÿ—F©q–KÈJaä;¡õ âNü|ú§¯‡’zÆê|T¶¾€}6SNužµ0ÀŲ§íì–³(„ß)ÕßÐ'“ D:U¢tµ?ïδ@íŽ2FèGX—¢&TQªÅ½!ª\ŽvÒd;5z'ŽÕ;‰å̦Ô""„…ÎHEºA¼Ö–Pmî8 @Ü7¬a;J­„UÔÝÓJ¡rجoulßÀ#ÿ¦EÍŒ/Ò„ (•¼¸ud…ã&…×2¬ˆö/¾s­;V€;MõmÞtI|}%ñfi§Lê2†ï…ݳî^À~|ûeÏÁ¸Oجø´Ï¡q´ƒ6+Ä|ÚZ!øÐúŸpbÍæð†ÀT¿+´,?éQYK«!°òÛGÞxÍØäК^7 Lí Xwq <²YÃRD&®0DåM¥·Ýʯð€kì罋ŸX’×uV†Ï9¦Æio¿9«S /‰§¡Â=úûafýzm.wªol@Qv2³ö­PÎu²Yj]XFø.LgÞ:‚žúÖÿ)Ç»¸E2½ì¥ÐcEõlmè¬î'9|GP“»Û>‚g^bEÿYÖ‚fˆ; Ú€}÷Í;玾¦Æ¡0¾IéNU‚J¢þ;<÷mŒ>÷êA‚|>ÓkŸWS[¸0ðÀ³^B@f­wã5C6¯ú…quðe>ĬŸ•®à5Ev$Ú§Ym™î×3u žöRb”ZÞeŠ’ÌÉBc|Ã1v`ôEÑîϹà×.¯Œ>óŽŽä±<¿M®IüÅóñWïlNÙ¸/T-ìE‡jM}äwÉe‹OðÀH‹UŽ‹Ï%,ÚÖSwâ›]šÅ£[ßcN"zRÜa¦ðÓ£ŒkÝî8‰÷w9Gü¤p oëŠHãã§›„ÙXa´4"Tu˵0°Ï—’^då€]ˆû}µ›ȹç:£†ˆ€kv»Šq±‰4™C­+œÕ=¯ÃIÊû@¥§]¼<@õáA;[ƒob&€â>ÓàÎŒJs,Ë@ÒBí±âÃÄ2ãüÃŽ¡¾§"–è£ó¥[§á§ŠfG„i×,žõàÜuœ_3)ü& ~yºRõ®¤A h¹îMËÃ?íou·¼Ž=1¬Ø™ZúJ(©ÓÇÏÅë/þU„þß.20†JpGl UÑV7ÔW—¹=¹ývÞ ¥FRš­]ÚYÆã@²špé¾Ã†Ÿuîè‡ÑøúÊ»š&3W=þÙA¾!©û6Ñ>p?(Èè½Ï?ð–͸\~‡÷`½ ‡3Ѷrr«%£ ükÃNì:ð/œ)%Õ'õ|ÓE·ï‹ílüâYz$ànæ>À¸.‹¦Ó;IÄÓ?6æò|:CÛÍ’ÚÇŸ&£¯çž=µFjº0w#ýÐÄçX¡-ô3¾¹¶4*ÞV9äãIøè²=Ÿörb3å¾³»©¾wgž;›é@­w~ØZ ›¶Æ{ÐŒ‹ž³Ïà†v¨ÿ&ÿ» ž¸Ò?+Òœbµ•^ÿQž¹÷%_qï+}bT¿ê½™±ê1XbWîçi¯ôo™ù³ñφ.®ò +ÎÐæÜ—ã¥V)ð¼br†ÒìÉçD€âÊ‹¦š·¿%G:¨š/9z¶¡â«šûUf×óÆrÙfQ8ÏFû'K^ ^¡`|ã÷óþå,Eí6bÕLÄqæ5às…þ…%ð<‘ëÌ›ØæÀV¦Hµ{Í)¤[g1½~|=a¹AŠä……ËAŽI¾ø¡R¸°.{éÙ¸wµsƒŽ$¢]Xïº=ølÙQŽJ¤çàTH{LrrßÅm2eVÉ:ì$¹É*ãσQ"öÐæÁÛo±åIÊlã=H¬¢HΩ8Ž„Mö¬‰ÂÜꆌMÆc-,+H­Aï~ Ì 2û%$èç#é+- O4Ì,ì<ßQkmwàÎäªÁ“ÂÉï"8Æ2/5<OFsï–ÛÓ2ÚÐJ©x¯øº1:7k5Ýü’á“ ×p•Ävë1Óçú Q-ÛK&Žr^üwq9n‘šlK¯*›9Õ ˜”n§£ù(ËX-8ó;ŒÇéó>ÕS«¹ešd½Hñt¬°%íDÖ3Ç[õg ‘γØVû胱²d´ÅG<åiênλ¯Nhb€r å 5kûêsˆÙ.Wâ÷¬´ ÅdWQo&ö/Â^6Ž¡Q Ø"qœ(õŽd=>‰3à &®»² †?®¬ÍëR÷0‰RBô`I¨ H’’†Äøþ Áë4‹z<ÙÔÓ‚[|\ÿqp»v„haº$r…ƒÉN@•w8 Òµ­ò•¼‚768Ì(2ý¼Ë£Ú{5š +y_œ®àýX)9\yeî©kT.à|2Œ=e“Ý€÷Å:3ÎXÏ‚÷²™òŽÀ÷¾Äq«}¸úÅ68¸a»“-€>4²R-8çÖW¤Ž?ÕÅQv˜iƒcÆjí£GHªÒI® Ö…µl=¶… ?ë~Ž>÷ªÔnøë"¿ÿ˜pÉÄ'‚öZR„Šp~,оn!†?!Þ°f4¯ü¯„Ù„e|!¸ÏËÅC¥¦ó¼U"–àî°5°&¼òk-ÖaU0jÐå#¤sÓÃùϸ?ÆBžÙÁú«ä©6N•·ïEDG‘¢þ:?7å5ÁÇržõ¦ã,¡=r”uO²(ÌG5\a’ ëžøímWQûs!ª¹9O»ì$µàÏ“ÑFIn¸hÖ”Õ]d\""~+k™Æ™ªjà¼{ŶÛœýÕ¥4^øÏìð’/n†!]dôe•›óH«ˆoƒ¿–òj%ÏwENòŠ1<ù[Yæîf¿IÍæe)D7N,ømküÃŒô^yØp[G-ÝÍØÊìw4ÝØúT¢£pñž­çéq¼ßÊó™HUz:ÿÙ†æëT‚/lµM¨=ìÓÔ¡»ñÎn(Á6¹ÑwP4ŒÌ+€èE$¹ÕiRË“y®Ñ@j. ÂVÏ3Sú= »î Âíi©´Õò½|±3«Ë2½E·rÔòø%°¨l…žy—ËþÛH˜ÉŒRçFd|Â;-ÚG8FŽ`2+¢“ÈUª›ß2(~+Ô9‚fÿ(¶²ßsúÌÚñEºxøüm’Œ?ÁT¾ˆï-³Vs²0„t«€šU„½¼|4¿Ö‚'‘l ‘i¶p.‡‹PŒÁ¦g,D+Æ.‚¾. ³¦Dk€+$ê½UÍ!Š›cŠO냂ÌáûHq¼`7§ÛôH©g}S[ã~‡4sŒ.€Rð$¶òî3LD—lµÕgÖë$4YïŠîºSq‚{ìÇ)TË*Õ’CV›rÏCÞ÷c˜ñX$Ywé¡)<Ø™¸‰#ÄÞvÔ4#Qê,;Páý—É m&ggßÙIÿ']^gú~üçþåÇ8mýhòƒ׺ê%‰ßÝe÷»Ó{67ó˜¥x¼ÎG&EfÑ9ëŽ é!Þ­T;±ãv /'«H‚ @;2¸ðKç=7zD`(2{lÕ€µž€jñ©cîÍ<¨–a\Z)€; 1بmXæñ»…¨ñoßù§ã ¢²ÑÅ“x>cE÷,µ øÑyRjýOþëìf¼f Ú˜è¢fЋD_? ”ÏVo¥!;N L]A%Ef{k £åým(i$üÍø‚ŽÚ>Ÿ &é©S%ë{¥å½Ðwz¯s} #³äó1´Ú9 u1÷â¹øžà¢Ç¡Ô&hâ«V;ƒžô † Óåy¦W<ìjÇ·eÀ8ϳJÜPŒKíÝøPˆŸaÌ߯C{ÙžmõÿÈL9îXÿvsé3¢ó~ö ‹I|-i ÊàH éBv)ˆ– x8*¤±¤*Ãh|«Z˺8³ïLçµÉ,­çÝŒOÖ›¼-àNìo´CË]ðÑK£Þh+?`ÇïrF[f?«¢‘¿SV»÷ãß_µùÌ 0+ôã–7ÙxŸÅ:68j2ĉŽiQPÃnk #ÀÀ{u?ˆ’úÔè¬!4×`fQó–ˆËõ®¸uj0^pÓ¥óüxgn|6íLU©ãóe㣻f–(i]€Ñà!—…Ÿ}ò’½¾98+|MD o›“„Åp­…¯±Ô‘1Û‡Z­ÿ@ºŸSì\öÒ>»D«¼\î”éÂAœ‹Éƒ9ΦÊOLªntˆÁ[TÖ·&hWèÜ}_ ™»BfÒ¨¼ Jåq͇…”#±Åz÷ G•`ØXý½ùÙn49ìYšÃ„´þÝ@ð­5ä#fÊ6žWAzé» (¤oPŠãj¦Æ1yh¯ 3{eÔm¸¼õAò±·rwXÕp+‹Oêavõ ¦¦“Y­„Œwm&zŸvñ øA»ÍKDHµø¬eH‘ª4ºÿþ))CìÆ)n¼´ÉQJÞcèTWdú¤hÃzF®n«ÔEõÜFÆçÜRþ9A¡=D€¼CÞWë*¡æ“PŸÃEqïíH}NÍÆçE4ÿ[±2M9§Ž¹²÷e4÷%{¯·Å™Ê ‰T‹åîÍ©Û=“¶†a¢HWžà“$áÐr;y±ƒ*ëë7ú?Xuƒ[ ŽS“9˜‰ä7y‘ýM-r9ˆ9°´§Ë‹0£ôk2Uþ Êð':SFDáä|¦Ò"yƒ¯+)4”Ú…ÿ¸ÞßÙÓ›ÛÀ{Ë:p­þ*Ø»5´Dhºôر», ˜M[…9á­jM¢ÇÖC³®³ãYH<"jödrW^ôHpÜþ’ÓYª•ãŸy’àÈLÎtð#ë—sÓc0ÿÎðüøûG&æÄl¢¯B9Á]×®z^öýg-\üžõ€+vÝ/à.Zç3ŒÇí/EÊA ôi }„[¾0t$™&¥(³iéÖîYèC[l –5ãRžÉþ?ý~)`]8mµØvIt‘"KW¨æ7³ñe˜“p¬882.g|9ßkDn1A,þãüÇÇá®ðÊ&q¼qÅÕ‘dP0šfÐ[>cYLÖGÐYª5~ÁÊ­^Ä/0T_°(Áï¡Õ¶óð-1HÀNuldÛrgµªÂŒÌ(®#â5¤¨8Ý'oǬìæ6¸DX­ÙÈ¢{U‹¿]±æ•ºÌƒàmCˆÿ'´ÀBwZ˜ÈY~“,B”±HFð  *b3²té8@'Ÿcµ[Ó‰‰¡g½eÆœ;?XÓmœ%ɤKƒg¢BjÇv&Õ³õF”.­È2,ÀÁù׆H®¤>æJIÓΧ>‚LIݪl Òn qÑ(î°µ˜iÍWK´ƒí$p†6éÑ–cTÉÞ²¼]2Ú@…©Üz¶³Ñ{“ÎÃ\ \o¦­J„ ÐM£qÁZ-Kà‰°=¬yØ\,ühdC#ù²©J¡QÎüU‹\¿[³S¦­vxAM wà¬Ögýi ŸÉ6:0ýUUÄú1WõCd©Wfv'ÛÕ:¯äù*rÃC ß xæ™)f:(ÔÊ]ñA_¿¯Òî¹ÜóÏî.R{ä^à ÆŸ¸_ôwòþ†Žò)2’=x•xeì©ÀÜáþksA·it~W`³ÛGüNn'·Ó ØùIà–¤]îÞ—V`´{x&‹ù7O•à œFÎ4—$‚?òþôË÷aÓytgEv¹©¼ÚÈLh¦ºîD½DIZ,9E"§$œ84€ò¸Â;À8BŸßŸ….P½Žy>twüÚÿ"]HjÆ ·&‚‘ÛIrŠGŸðJ~7z­–Ðü^ƒ [tàtê¸ù“YµaA³—¾˜äØÕ‰­E!Úqþ Œw:£!ESb„yi_²Ö®_ôZôª0¢˜$Ì‘½sð$ìç»μc©+Ÿ†o8å’,üý½aö¾i“ ‹ÒÐÏyÝIs”Úkk~ž1ìh`ƒ¯1a=Š_Öž˜ƒ±¼æýõ·‘¦µ·4«p¬=8w^ɺhÝÊhÁ¶*­ú_hG™\Y<Óxø&™’UæÖvõêL[×ÔÈ–ÆæÆ·— ¼ÿÇá@Zì¬Nôw¢•ºSìšdMzÙÐQ°‡¸ÈpºS7¦T…ÓÕšŒFK×…|ÙšÆîóïòP¿7²fé—¡œžÂ!©™³•¡OSÉÜj£S‘\é =2aŽJ¥ëg3r¦¾–VpAÜÜ8—ÀùçôÅk}êâ-îMË”ÁœƒGðÙäaiÝ?Ÿ½µc¾\sã˜å3Ÿœ–½"Uçkü`ÊÚ¬Ðö̽ÈÂ?a_·D%[;’‰Ë{ˆVÖ·Ï·°RÏ*ZNÓÉáì®áó­áçºNNKï°\#yw’¢öw.³?–ՌЙœ‚pL¢ I€O:¦lp¬¡¸gLYKø™dÛ·¥U ´œ­Uè?JþZÚ¥~‘Ц;ÝBÓ6½µÒ¬¤¾—£×ÒîëXá†ý K9Ë¥ ÕÊE •žÊÐvþ®;èÖ§[3ªÝhb>Ü»ú©{&G܈“Ð…Ô{uBw!œWõËž4ÂÀË.!#£…ÏtYB» ®âQS6/ºõö$ií±#$ÎÄje ¬|/·™E—‹z YÐ~BŒÆèÞ:æy·ÿáÉzpõe·ÀÒÐp+$oðöÆŠ½øŠbH¬-8¦Äª¢fä´ ü…¿NK@H’|ïæÛãoT¾k&Ù"ÿ+Ž7+ÓÏjÏÏVg4ýÖ\Çvƒ^EñÏq„±>вÁ¼‚?òÐ’ž÷È##¸¶Ä ¨A3ÎëQh]¹˜Ÿ‰{¡¥Ä4š¯¦sïm«Î;+F×kh÷NÛï¡jIvÜøÌïbÝ^çN¨!˜}÷çe‚5™N‹{±¤ë²Æ¢Ÿ‰×"ø¤P(â?íß°ì“ÄdÆÉéÏV9>nXž/}¨?úÔk4ÅÌ7½ÏÉn·VtûZnzõ†;m(¯ûÞ³šçœ“ ™«ô¶¬+?ìNª¸ š+vN•"­÷PÓ{íÒ,0eª©õPr­€2 Gè3¡à\—ß¶üRbo ®Ï)ÅÃÀf1+Ýíµ÷þV*Ó~w ¹Ø´yPÙÊ4>A5}»N yd8OÇiœQbC¶7noÎôëO{ëóÅ­ÔÓ²~è°hŸ0aHµ7Ò¸ªª+5 ƒ¼R›÷ÓÆZu'ö®ä9ÒIöÐSè-Á÷¥º¯oh]ƒøîrüf\žH«kcúV§ÌOÁQ¦¬ä£×¤ U?ÅI*×:ˆE¯šÏÁ5ÅÃ,1’T `ïü!`x¨O,%URH³½MVøËtœ•9&${×ï1_¼ÅÌáâÉJÁ䯽ŸÒBQ:oSôAÂÊ\Í-T¸[®Ð•ÖãðmCÎÄÜáV7®nŠ„º[µ íCµËƒêµÂ¿ …Ë%6OJ0[9"îãRÊ ;È }Ç`uršÔ>x´í´t¸kj—S`»X’ Kqüª–UFµ—L%I=Ña\…‰æ´ãð·:9RQâ‰|À4­­ã õõøBû¢hºé¨s‚O€x—ŸQD6AÔ6“lņÒŸøbúzl?¹šåìŠÇV[(Âj–Àî¥NI;6U܆u'ޤ¥•B¶rga>/ež¡áü ˲ìV òŸUzÙ"¥eZÒ‚õ..¿ ¥2ƒÄaú,…p¥›ßZÏŠZ°l)EJIñú Áö3Ó2êÆzIR;"ô­½Ò¾«jˆOmpÔ y¦jM69Ta“*“L[_Ì•pRk/Ëßø8ïjûº:|¥"wï áfÊÀ$eœÖ§V‡4º¯d)0è è~P£‚ûÏmPz­ªùÉ Ù7ÍQ03;¾PÚ6míH ñn8­67z œú=šü\yžÒp­ôÌgý×.×°W·.šºrtsûFè†ks]–½iûц’ÇÄånûém¬ „õ$OV.ÜK¿Sn©ZUÈ£ÐaM·êþi§ž¥V´dž®ëp×ÓŽAõO"CTÍ̱½!á6kåàáxÌj{¯Føl3p[Ë}Þ¾“©¨ õo›Fzß^꯬°(Wû6x¼heejéä<+nP:Y­@¹²…Rò²&÷8 c“¹Ø’õZÿýqÈ*£ýXáš Ì _”ÑÚ÷/PáF:@‰åÕ¿ð.˜`­ÉCÄ´[ªÅ¦̼ öŒoÀª#Eq¦dÌ“¿l kïÚÓ;•œn–§²©¡@X‘Yi„,£Hòÿþb8¿-¡’㋆‚G|_¹3צKüc]`ÈÉÖœ…v çlÛÑW…1ýÍž—äÕ.ÆÆy€Â›@–nèbxT]û Vöˆà䌽ãRM,Þ]’Z<ù’TÏowT²(K‡1Ê|¬m€Ù°fœéúDì…]¬IT§6¬‘ñô†‘ç8€÷‡µÄŸÉèƒÓé'èöØÙA\¡¾Û{áANÉ@uI¬Q¦Ùůªw©tÀªJpDOä´’/5þªw¡YÀšJOQT‡?23[³ô„ä 41j·Øê‹6=„ÉÛ=z…ŸØ4²7_Y»üDþ ÏǨ5_jxerÛ[0ëk0§—=üeåí>b½›qP…¨ãùùþG­DÒz¬ËÉ€uº¶º ÃdÚ0¼>6„äqoY?µ™<Ö ç‡Ô·2ÔÌm$·~¿>’ŒTÑ[]¨O0Ãp|Ùh ð‘)ֈͼé"d{wìåúÎxüÊ×<Nq5Hê¢kŒ{ÎÇ¿XCY{ŸƒÍµfÒ³Û¦h]DÆP˜¦£”%ƒ<ÔOüvX·§#ò¡!{äYÛ-Šø¨ÿ쪕8Œõr:ËV„D#ëþ1øo<úÇß7> ¨*Ù°ü»ýóÏïÿL8‹aÿIâ„ÕCÀª=ʺlR¦÷©R’S(œ¢ÙÙFô'&Ôí‘0Ž‘”ùêyn m`\Ò$VЦ5ûq:«H¥?GEæ%k£Ã-³Œð«ho¯m þ_0©ª¥«fÒ£Óòþ1S»,aýÅþ®Öq5Ôt½»¢TbÂîùkº®äÔ&†,ûC˜eGöãÓ„-suÓÑJÉc¯'¶tñ |jZrj[:@KnéÏëÙ±ÅG‡`èaбMšŸÒ«Yü8üÀm/þœ©a0í+‘\¥®u+ ¾²Ù, ›Ý0ÓZñMn; ½D¯aÚ›çX·¨pWÆFÇÛ—øŸnÈ «r¡5x3ãîegëż·xŒâw”ÃßO;½"–gÙas8.+{*•(† åðã0dž½DÀ½º|þ}Êþæãr az™­Žé ôcY"¤5Þl۽ϭÐbʲ§Ö<Ü™B›sVß wŽdowk—±YlÑkQŽr=U›6›{~²H­‚g7*ËMàÆfäÿâÑ#KT7jC׈ݓÞÛØ|Õ|pµáËÒ¸Ê,FÒâíaÖÕâÔd¨?§u½ß¯ƒMWôñOs¦,Yê#²˜dãXÚ¾œs9ZÙpýe ¾Ï>7Ç_~ùññi5_1dõ£äÚŸ¤T›YÌÑÂ}ÌEUV»PCä-Ý ÏϲE>ÇYf:¨l¡\$x>Ö¦h±½Äìܪ0è;_NF§4#‡ÞODŸ:²PeÞ «d¤C²š©³³P §ƒW÷s,-PnÇJ@BÀ5ïšßªB]œ¢L?näãéüëøÎ¸°’’„0#]*tÌ‘ä(DØØq.‹ ÛrRͬß;Š¢³2`amáwŠ4Ú¾§§llúåÍÀ*åõ‰#`üyn¹ÛÀoȰôBF[¨¥>{ô ôdS§›PÆ·Ãõ\<.…Áµ^;„HS¾´§ô(÷Y -#ÝK4±ÓÍTj 3ÜEFŽÃÎv;à]ûFÆáÝÎë§W¤…©ûéæÎv ‡0Ûr‰ç³ä)²6c ÂÞœÈ}¬ TsPÛáàqè599WY³JWÅ:þX*Hüñ•éLø«ØÍâgÏ;²ñjÇÕzRœÀ´Ôt÷H ÞÈtíÁ7ºr4ʯØmpÃ-Ìpò熰¹È¦·2ÊÇRHŠäºòÌJ$ãŸé®’Üì{¥¾ðIeír3còÍu.=6^°«"WI°>‘Þ/áÒⱈ·÷ŒOŒ´úF«¤‚¦´Xe†É—¾Bgq—z"&‰ÐÿJf»òS•MƒàÅP¼à¸,%’zòσã9ñ%ðÂë”á£ÊQ–eÙÚOŒ=Jãjîº 1'²‚QmõÑ%ÃO$a…mùï€Àt¿ÃF ¦ÙoA—5ÆNϘ&¼6èäQ9†=3m$Òf¦&k„¨=B/ວ²þÃ˾2hwÿüìÕ!É…G²¡q2ñ¹ œì„q€ A!DJ†‰~PêÞ;…›ívß?&ß´÷ÌT6K‘öù†šµd/eŽ|C3\UUéù(r1¡œ¶›^XÉ£žd: *˜^ÿ¤"XU•IþRlp0$î¸SðŠSø1TØ#\Û»ƒôoŠgŒÌ2FðJt-"ðÔ0ÎÔ¯qŒÜ{rp𵄰} 5 O{ýþƒP–³ã¿vP2ê\m£¯½Å– ìèí3¨ v.ûiÛ›ÐS~ÐÝêBá™À÷•éü(%)i-8õEF—Ájxºk1ØÝeg1^[Ìw°Œo¹µãcüwSžÿý¡ôß7Ÿ#ØÜ.µ•.¸‡£nÈdX1¾6Á Ë;àmlHqYà?¼cWuÜtĽBHÖ*æiÙ-w³˜ï—ON+ ˜Q`i‡Æ»Ð}iµQå]¨¼‹ŽŒxs¤‹Žà/ó´ÏPÅF{кï ã’b9ЂzÊSÆ÷~’vxßšZnç†çâÿÞ!eZø¾*þßןi=W‘³O‘pqcc»%Þme:å]ÂLì}Úï&iØ¢ìdëØ‘²s$×=2 ‰|‹Ý,ëøQÈtc%!ö{É.#té+±Ívã¼b×´"×¹pLUerhº”,”“á²ö˜©.wºÄ ÃïÊÔkx=^ “—§\ S²>Îe•Ä©ä3Ê=|³ +¹ðŶ<ÛE/rHÀ|`<%DFnTfÉ<_œ»žëáu.c <«>ch ½—©ž¡Â[1@Ï?Ò.~‰ g¯ðœôvø®;ä)¾¼ë^å¦Å™°ôªñÄôë‘ñ2Û«¢|f¾2óZ'#÷G°‚‚etX:¶áG"õÆ~36YgVÀ†²è¤SfÊPûêè”o9È™lJò§ (š€•¦¹f^2.‡¯½˜S¥Ü )áÍ\B0+c:®ƒý­fÄö¾šÁ? ïËÑÀîê+eV7¡]û]}ìûŒÂyt‚"hIJÓºd±| · r×FHøÁ=ÕÞ[<ÓæÒ:ý`ÔMcÕvâÉZ(¹|¡v2—}!Ó®5}Û‚½LZçÊ&ƒ™ôk5À¸KM;Tð´€… g<Ž‡ÓŒ,ls Æ«äžW5Ëd3ü- #˺ŠÃ‰=Çü%ýÑâõ}‹4Õyè©Iµ­Lïc÷KQë|æ¶u³†‰äQJ¿p°ó¤$ŸÔoŒPØïJ|QÊ—¤íí 2_¿-¹ÖÖfÚ—ÕÏêÂSU£UÞ%í< UßN–…½›4K¬¢øeZM»ƒ‰^²,iJ¼@ž4O@‘Ü‚]2Aªåg†í`ÇXDkÚÕQ{HY: .û’q–\%ã£IÁP³Ä¡i£!‰«ß ”ïoHÍ ÁÈ šÂmêÃCHɉqš§ÔX8â]¶÷FÁöã l4Yv‘Ï)—ÒÅ'Î\¾½¯JÂ!'ß½ þ¾^‹zãzGöŸ>ßl… ¿’Á”Ç8îÖÞëÞl¢9«¬ÝY™ý¹ñ}š-gE?]l‘ÜíÖÜ“ž§êoˆÞZ\Ûžz]G#í±VD #¨K¨É쀽|JØé8r%Ò´Ó¬ ,#‚ØØmó4(Â;ŒššRˆF|ð8kçG´'†·H üm*KyKâÊ}Ãò>唘ƒÒäêÀ±FXÔP)ok†1´JÁ‘³A¾3L*Æ ±¯ë¸A“Ú!¨ó­ªQwS â–U.< {Õ+iñìp™6»H\ç¡Ïvù‚ðjY}ÀÜíß1§ƒìáá·0°¯6~Ûžd­ÌûÆ™;qu›È,¶Œ¾#àÔTdM2'~“¼•vêP•½p°Kf5bS´âž#±¶æZT=)”¯ÈskÙ+ÉC:ÝÍ5ïžÓúhã›´ˆˆ—þ˜“m§¹2—1Û†|¬ÊÞoŸeË£eÓ}ë(ú_"¿§Ý‡Î[Ý]ƒâ–j(À"I`!ö„Ë>]‰"g1Z´êûÁˆßܶ鷛‚GîÀíØ3FHø»¾Àn@é¾—é³—ˆ} \J/Çï;†=gŠMÀµTt̪ßqRy9Í×Í„ ñUFÅ"söG µâ`n#d6Ïûf[çÁeG•¤ÕtðâŸkØQô¡f¦&±øM/Âæs±Ÿ×ðQ¹sŸVN¶*Á:ÙžÓÝï»û~î±hO‚[í­¬B6êoáZ7ùŸ²åÝŒÍ𜠽Å%éíc'm»4¤õ¶jÔêmq†ò;@æo´^ÏìP¤?ã±ì©¥3#jû>‚£4uØÝ…Í}*wuÃ:PÈØER?òík´%WG]gZÏY3™Ôç…Á•B»ÉZz¶µœËm>ÖÊRÖ~§»÷­¡lçÉ'ÈVíïáË¿T§ÑAp¶wÝE=/(w¸œ=fZ(µ3¯ÔÁjh¯ANjÞº5!z|± ð“i‰cÿØG`Ý»«ü""CƒüIÔÑgïsÔ±óþeŒà¶…š¸’Â,V"•.L°è+|Ç]µÏd;ÆôÚ«!+@kj¯zÒ”ÒÚ–$¨M®ÿ â¥Õœ²ç#ÉßO»[‹­yOpô‰‰´±È(™äBÞ½>ÿå_?¢$;×?&eî\ÒÆñ/¼ ŽÐ$µ‡#«£m`5áanõEJÝŽØl8é«ç¡pbƬ8fÖÓŸÑØ¿ÿ$1°éôHBêg|Y«¢_Gå£:¤´4/õ(îvËnj f3ÃôUž«Eô}c±™0¼SÔJ›#m¦`6rm¬£©nâæ¾ôµ"û“VϬjÃJ?!žã™œ ÿgúCÏŸµjì™w…çÓŒ?#C¡Ì¶µØWû“Pt¾ üÂùˆ`¾‚<±$M½î>ûqGŽî—œ¹UôÙÖâkw%|Íyò¤@"OMÃ3íQ˜,eT‰ãêm…L$˜Ò~6£oNMN³÷([[p#E‚(¯ÅGzÚíœæ:wäÍõxè`: ÒôAæÎ­ºEáwëaÍPÅNd«z>$S~_x›ƒ² °Ä‰Gå±·#)u–Ãm¦ìö¨ß¶/wŒð72ýDÄŽv’x°ãA}b n Y[ÍÜ:=׎²©÷—˜—"4«¨¿Ì\UŸ¸JÐíß–;58»ÉÛÿŠ À½7±{(ŠŠºû§^ñ,ÝHã(¯Ü©ov½ï°`NÉ”{O?ù¯LÍ¢Ýa{ÓÌØ–ºi_9Ž4 ~öJÚGcl³P˸x\¥n;¿ ;±oC; » nE8¿AÌ$,f * o§¡w³dÅ13ibê,e|²¸ÞÇaƒ¾ ¶”k˜\\®ÛL†ƒª²q‡,ƒõM?¯Üºÿ}¡dΩ eÔ+`lræb|Xã¦ü‘¶­¯Öö<üä–¿R%ýrÔñh´­èÍØ‘Ä=Øh5Üæ‰Ñ xpãÕ×Ññ¶ßžaŽ!Íú/Úùy¡”š£ãID,1š~“â6A]³¾Ç·°­¢´1Z7ÄŠ“F€§¦¶#PÅ:‰äÒQ4¼¡Äøê—nÑÀ2Ý/"rI¾×ûÃÛí]œß~΋lÌkßä!wýo=YƇÇ|¹"HCfEm´û Ê.k{‹ˆË€È’# ø$$mu€_ª…îPØúÙ%B¬xö®h³Û³>ÛUxçdV¨ˆó#êXjÇ‘ÿ51[r4pgLð¨°ra0²u§ÿ =^|óÝþ‰=Ç{ð×±ÿäƒ9Çì°5Çàoc ÍKUYRð©ëÐïØ#ZïE.g}P ï¸S|öG¦°:$›Äíu=íj2k)ØïŸT\ Ï$§ug‚à¹m!’âS­“Ìwáãsk†ãí'%S›ýÎø¿ëϳ$^|Œã!KùgMeʽ8£Ri…ÛŠŽR-ü¸Ùn·¢’ eZºœ9þùñOß?(%$c¤iPüÇÌ’ D—„_„¶qŸxoÒ¯öUˆ’q¿þßì†×ÏÿòËo|» Ô£ˆaVû4â7üÄÉ»¤C‰: »9–ôa|:½[‰!Q( ì(Ð:¨›¤‚áŽ#f_Û:;ðÇxœ²Ýuñ|]Zé 2ÉŒ²µXö„¶ƒÐˆ‘q™½¹¬v‚ã€ËZ2ß°•¼ ¡êÎäÌc.„ÿ ¢£|\™W„ ÕivÄ0ûºc(0_ð+]ôÇ<Ý=É` Z,Eƒyü‘a§Ñ™Mð\-ŒË4Ü¥YRü*@Û—åñ_G]€_´©²ùáQh¨ULÊÚä{I;Ñ:¨åI¹Ë´„ç@¡Ëo±‹‡wóe©5“­ÚW¡L³ÒYÞ°úä¹î8WRï zîÁËí*N6¹T[oY#ŽŸ”Ó„Un½ËGæTFnPÓÊŒá,°D=Ä·’·¡×Ki; >çRÚWèôLØ­Bt™Tަ޹ܵ¦Ïìk¾&FÂctQ ɼƒÄwª¥(Åuïe>´X„‰ÈÒT0ÉÁ@S`¯w\>%Y‡ŽÉ•8ž×kÕ-{¼¸sAƒiÖ15Ðåã Vê%°)Àט¬C÷üåù‡§ß~ÿãûü’¹ñ”hRy„¾™—ù†Xêy½¶{ ù$<ã5‹ÑÊ›%¢7—RY(ìŒÔ ªx|gV™8±Ýe$‚bå¹ÖÉ+îMì)Ëš3xð˜wFà‰„*×Xšôö`ƒô!ÔÚÕúrþ§Þsù,•žÀ¬5•÷¶økëßïã>χ…ZXW~¹ú%²¸Ñ»~ÔûÒ>!¢\äºÌ¾§Éó Fú»+°ÞxR´rOFþJ®ùÊ0 Æ$%Œç¦$D¯%ðç?&º0P¬Ö>aÊqQwkj(A2-–q€Ðé;s^ÀqXDv°“–ídæ0^¦ »ÂÁ݆ß#ªÐ Èäqã­äO_É3Xâ5F3÷̰|<Î|»[Ø¢ŸÃšŒŒÃpÄr•·Ž„gÓÂpØtA+»ñ@Wƒÿ“×+‚y±Ðc)½Å&Å5cmsÞ¥pÍ õð0¶äª<’_¥UÀLìs)鸻úôà'úö¬+3áýnÊK ““Îô•!%JPØù¦ Ë=ÄÃTƒ2qó©›ÌMh ,Ûˆ‰–Põ2º»Ÿb=Ó =¾ˆïÊ×pP pî*W´3R¾‡ëI¨íü¦¶Û³¸„¨f÷`ds®U¦ã¦Éb¥xŸnƒÓì'“£3ÕW?ó¤8­µÒù¶g9 ;Äç¹ò`eµiR(ˆ;·ÔuûEût%‰6 ÂF9z+×€%¦ǪÏO=±¸O¤*o0œ|œ6Ÿ,‹œî¢Ã˜ÒYÚ=yÉl×%)º6vZ·¥¸‡Í×HŸûmI78Q1ó¨qzE™÷ì#‚¬dÊä#bç½N¢\ë¾>?ÛØ=ÜéŸÍ.FÃÞòí²lßúšÝžŸMN°þTœšU/€8ZP ’/LàGUƒÁù ½[lR‹€«;ü| ÖAÊÿs©~¡Ø.Qj‹%}â  Àºë‰S<«M €+É<£í~?CrñК¼™unÁ»µKÁÛÏ¿/‡Ê›ôö»ßìÒ,vµq{§¿xpKÎD¶Š7N–¯j@Útk÷q.™ÆY)X6Û=6rÌ ûC-£G Ï’_v©Óï6.tÏ­3­Œ+âÖŽãݦgR*® Æ}µ]³ïYa¼hïãVþD3—5¦™«~…ðªüí jÞÅnÈ™“1ˆô•ü`!ën÷£vvlÁP™k…¢ÀÎñ›Þe‚0âXzZI½ZÂ-•„¨4 ø÷æ#\‰4޳ì9 K°ùä† ðŠå7'I±qt’Ž‚›ûê ç“Zž&¤Bkq´LXŒ¨a~¿X¾›[Û4ûðÎÿ{" ¡B€[)ÄZØš 3ª_TÒ¬ömfÉ?Ý´ÈdßÔ”öõ@ üp£*«óR0øŠGv°FŠh}Š«x¸¹ý‹ldâ9NOâQ#N×Ý|ú :›!ò¥þ²áŽ1²˜.†à{Ïaþ à)õóPbÔ7jáââ ÿ]ÎÐeÃ3”3ñí8f.ß‘Cþbì´}¼YM¼E£k嬲,È·B#wÃt§öL“©Rßç„6ŽÐÎ éûLõÌûë]5žÚÒùxœpÉáúMº¯lX_áØ˜þilQ`íX„ꊦ@„VE€»R|+ÔÃ]%Ø]X¡¦óšªÁÎß{cŠcÞsÖ€ uG÷h‰”´ê“26¼ú6h&µJ0¯À¦V*Üà¤"…-M6³Qé±ø¤:Y­Mß2”ú:M3mÅ„̳‹¯‰ï¯£ì?ÓÚùöÆpáxëH¡î1‡‘¹Ê(Þ û85 Í—ß~|—ë{ê6/%À!·|HR%åì`_Hƒ)Ýz Žæ,è“z3¢í[/sh ®gÑŠ¶p³Oöø]'Jb©Zo[1°{õ®ÂfÁ€fɾt>¼sjpY‡Q,ʹ¢ò¬¹J˜'ŒEµ+†’@›‰Å7Âó`åØÓ=…ílç†á¶ã’ñ]‰Ïèäpªe˜¦ÊyOÀº‡‹Ó²!q¥îX$ ±1Z#ZᶺÇW0.€ð}I²úƒÊמ££‰…»9cIb-©Æ w@X9Hv_+”zü[ˆR99+d±$º—9ĵïJ“]™—];¥Xýö¨Õ·îjlí3ªª¤P™jÁÂÉ#íXVœ©WUŸ¦Ï‡;eɑ̣ÝùOo#KU§ç±avó²M¿h‘6*-} ôh¶ƒÃ¥,á½qÉ€)ú>ç¯#'¢¯¯åTsú?h –Ù¥Q0K–šŒøÔAb”aI»µw=g‡<ÅnÒˆÍâ“ä9÷ÎÒK®Rkî¤÷=ó–Tƒ¶c9÷“+"•Ji “$¾… M¹ý…X¢û¢9¢¿I:Áëèáo}·ª¦ª I@v/ûNñ·¿éáÐÁ¯.ÂUj2Ìx…¾aßÃQ)F[ g!2|@ Ȱ¼É¦IaO…Cò"B#„ à)&ùE0¼pS Yó¦¥k:¯Âcâ_êÈ|S™›˜Íž¼P.lí¬ÅG¤³fˆŠ&Å­³§õfl]^á„Ä«ã‹vR1áxÕ%ÐÏÙ³f³rH²YˆyW Áx»£XRªWš¨ >z—Ÿö&k2.jKõzHm={1]µ—%U*’Ôƒ$3Ø< =*…”=û ¨ØrߢzRø«ðwü?~Ÿgd¼3M¯0è{²¥·Iê8œè$•”*š‘· Æý?óz¬M1mä#c$gGñð”Íu&‘ZÞ©ÿHW˜k%Ow¥¥m Ë}{¨]F¸’Cß¶•sÒ …ËsÛül·±ááæÁÙ¤H’õÏ„þ0%Þc<÷: €É“Sa·;êÙËÚ;í©o¸d­>(¥’»Vƒü<÷FA'¤èô‡< †O?=7ä‹‚³Õ}Ó˜à#&pñC`äÌ“Õ\ø©×??~ýñ?Ôy¨„=BCR©;ÿÜʆIUxò“¾æá@³ÔSJ¸r‚áâ¡­-,“*éÁÔGa…\‚òiq‡{ËG å[ŒiÎnuD?+gl¿QØ&ç|ÁÎ@. *ha&¸œîûWaᲄ‰ØE¶-® ÜZí@×Ô'Ù~»Ów_âL+«8eâ¨Ýîí3§üNˬð4ë *Æ­Q§] Óbœ7þ+F°pR*ºÝð,U`)îé&¥pŠ¥‹ÍgQ.BuM²ß½0©X6Ùz) ÿå)™’],w…ôj{î‹Z¼ß{DoôÎ8bÒ¡!¼´ìõ/ÏD §Ï"<¡E}߬‰·ã/ÿê1S¬é/@V`t|±¶M¬îÖ­)Ð`&CÄyi&¡W;ëelQ-õ‹93–‘f/6=äÖr½„ÇÁݱ¡l6ö‘uÈq²mHç(L®`ÇŒw\HËÁã "]Oï³Î’6¬ÚŒÛG¿¨U„ÝKÂ5>s(ÃxE¦ž!È¥½*_]-„¼ÀÓýH³^lau?¬lš’«Jxu¼R=|Ñð™1´+GépîCŸÐËÖðZsÓæ™Â¬{ëäÕÉÏ­cƒÿMÒ’ô!;+ìÎ&1¿¼¡äßÄ×â‡Eœyà•»è°»¿Yùë&žB—Rß[ÞWû]LàÖDæ+ã V*ßû‰2Ÿq¨$í%~²Åÿj_ì5þ¾_N@äk—éúÝž‘/ò¤^Md˜sάj¬BV3xà¨5ü`èñ^W*Lƒ¶ØÄDB(,¤mTi-à…þ64ï)×0lž‡·z.‡¢–ÑþŸ…í_n¡'Š}VâdíåcˆaWÙ#€úœªï”ÝB™´‚á&»Qx¨‰ªN¥pDˆÔ.€ýyAÊušÏƒb ÔÇm7/_EEÌâøðváº.…è±x¹›ëÞbdC «¥[—35LÈå¨<ÌæGÒ]&ŽÁ2õC Ù/ùòr˜öÅ®äøËã÷Ô3Þ*ä>Øùº¯´!mN¹Óçu|Z2T’ƒ`?åq}f¥`Iì9¹³÷GI©4×ÏÝÉ”§k$½ÙÎ42 YlB½¿žEš­E ÒV¨™^ð-/_ÕCvƒ÷Éø%0¦x7i.I—Zn„uy„³í6#0t wJ™éäÍP}õÙ VíÈÖ£É$bÿªÙ,Ä×BuÅ-°;´iXÚRXÚ––Ôòmz(î‡om 0Fé©w~¶e§lk‹N´Ö­Å)7·ñåCã2­†Ï½ÿèÆ¤¿üWPÖ «Çžì±§èLùI›\®Cî–‚Vê³}”-*ãA8£D¤ŠC ™gG‘ŒO?ï|úõc5[WLª©£À®Íãh7z-¥¹‹ÆB¡ŽtZ@ÙíîÞèÔ&þ—$„Ò^aƒñŸ¦Òåt#ïn\}½"¤fN9|™eçM0¤«Ml 4UŽE£d=v:[8×뼟ó¥Ð­ãÜg¯§Žvë¯al:Jf¥y>È M!OáÁÃÑl¿jJq‚L.'¬ˆïãF_—K¯Oc¾Îºã·ÄT)«›J«6U©¬±~‰W\åFc…3¶òj­ñ¯]ÏM±nqœ•öf7¥µ)ö6’®ŸêÊ<ÏL4¯‘FÃvÔ 3DÚV¥·x\²ÒÄjߣã1o¼W¯Ì]“‡+n”Ô7(‘²"$}„}¬/Îÿ?Ãó鿜#«…ží…ŒMAªðÂ5 :$xØ [çÕ27'b&­`À­Åè›hbº1Þ®ÿMs4LÎ[·)ÕÖå£]š×ųä[i,e±~RÚÊrK–Çm0Ä>ý¾´KØòÔâ©ÊØÞ=‘P´QY“™&SgÊaf/ÇF=X÷ýg°‘FŽaÁêF„+ä5‚MEÌ+Q_"ÉÝ\ªT][‰‹žúžØ#{äÙ] bÉÑcjr0¼Î}äy`°‹?JªMµLâö!>õS¶Ùk©²>ëPßSƒ¹Ãh ¨ -ýA_2‚醡~y™ÀB„?Ï3Àò­¿TfìWJ™$ÇêÍywÚ‡žä#3Jë_VmJÅÛÅ »Yá½Nå^Oûñ†*í¡åâ<Ý®Ê (-BzðÀ€í ô¤×È…Ò½ºIʧ»ÉÁióÍâKå g†pÛ#×Ãÿ)—WâïNª¬•ÙxÝÌlZ¬dMÓ3}~(\+È7ÉÝÆw$Š"ºÞï6&è­5YÀï Å5é+^áò7Ö¿p •¤ÁÂçê‚g&õ€øÖvAµÂ¤ mtÆØXw=Ð^^?rãIRåÁï×p"¾ö¼áŸÅ& SÙ+ÆOâаwÀž¼o¥¨2y‘h©ÔÑ­bè¾gš×ŠQHO×B÷Š8ý³öa[=[i²Lþ…PhÑ_ª·ÒÙÖuÏ!$z9ʹÕèÅ’FÚZëÂåm®·¶ŒNj1Ǩ­3&4—ô£.öüP)hµ3ùsx»å„¬ØÔ˜^ßL ËÚ¥dZå£q©Ô~ ¶GjGu—°È¥¬{‡8,ïîñÌ”‡“U˜,ªQ@ŠGÃÌåWí«ñn&-à8˜´2k³pÓ˜(@pRëlnÛ býxXwE1ƒ:¨ÿ9Ϥ­œã¯áºr¤ íJG0æŽ" X¢î·Z;¬_C±Á ûtÊ{gìàXµ)ظ’y¨™GºhÆ¥™O’·lóÛ›fÏ„Ok£¢‘®ºOžy|˜Y-ôfýf|="ÝÊtÁí3O!ò¾â¸ÅAÊÅsÁ#LÙÅtÁè>MÌC¹‹Ü®ˆ?¸Rx{Ð*ÜCEôLÍÿ$œª×éÌqºá½›ÉÚ«£¬þ^³b3áǧüàH4~”‘{tþs†cè ôg™Oq=¾F0s»˜Iü^¤Ç,0¯T]‚ǘ™¦a,©ù-¯i'Ž[Ôù*˼¦4tJË Vé¢ãî5… ÉÔ\‰…®‹mÄy‡t@qƒ‰¿åŽöçXk»M× #iÀ-/Øœ¬ª‚¨S5ñ õqhäÌpºe;b½SDر©ª£ÿå`íÔWÖgo sAŽtõU°šP1ûïÜœº””‡Çé§ Ð*²<Ï¢Øqøýà×i…qzÁR‹Þ½ÖÂØïtdÿ‚@Áêmþöºc°Öœ"ÊÂoü9¨ñŠ`†·Úջ”@……ƒ® 2ŠV©ÍÜOð÷«K¦¥ s]B`µƒH¾IÙ壮{qf@ æõ 9\£xÆPS#[žÀI ¿ÅƒK“„ÞsÝ{’|9ô}ø°Z%®¢~mŠ`¤˜uAy)eãp-û^3"ʱèËÔ6øC âI¨ñ7õ§¼JËÓèëi§•ÐȤ«ì}ØNj5gËÙ£: à2é¢P%£xLZ[y|Üa¶È“4ÛPô)•ø-^¿Ÿ¼BM\DmËÙ8Ÿÿó %¶`?”n—‚VÑŽ~¨þV£š\å½Î‹#nèˆ+9Øz¬d/œ5Ó ö¸WƒK‰»’ˆŽJÜceO7,髎/÷80ÕI xÛV’tü×n96›±Sÿ–âuŸ>zÕ<þò6“säey`91Uî´¸D«×,óM¸xÓñKÔ?ÝŒ:·[œ%Ç3»/k¯ÙnÏC^zœšgÖþS;©{kó^÷œF« „<.G¡éŸ¿§!õì´\,NÁè7½0¶w=ª·},O£ÂŒ£Ò•~`’o­Y¯NTn‰ø¿„Ì |â«Ç_–`£û3 D£ùšÓŒiKEe2AÐö«èC¸X«À(ŽîÌ„niºÂ¸µanAá÷Å})¦·Iïà ªBƒh7» iFewp¦#$og]DM”â5n!SôFÓbt, ½iD®kJ›>EsÓd 7X‹ µ*.VÕOgg=\ŒÄ_¹d ÕÀþ6€´È%Â2ΦèãÛRñSš¡ CÉP&Ó\&Cäö¨ ‰ÞÈ©ÏEÏ;(èªïIÒeÙ.{¾0~Æ@jRÆÇÐÈöUžÔ5ÀGõIüæ#˜2I‚B¬½‰6Y>ÅJ;à~Ô ‘Iª®ÛSÀ’ O¿][u^[UXJÿ7¶‚›8’ ¿ ¬\éÕº'7‹$…ã;êòHì£Ä@ÊÊiv…Wäo¡ÀATó;ªzI‰‘x,& ×—¿ÆûÓǯÓòd±PMgw)RÂG- à­É1{s•+  Ø—/›ZM~x©_~î‚FçhÔñè=›~ÇoèºfjÔ•$[›“-\ÓæËóó­BAúMuŸ˜QËe”]:D°‰ÃìQ­OìKÅ8¦ó†ººÌº¯fëè¦Q‘õC B“µHÖ?üGH$ÁŠ Ö2Œ´¬ã?ϳÚõyðì_,²Ã­¤P>»Xý9üçDh['Ñ£¤‡ÙCÉÞs—þ'=I~Qð¡ueŽZeT¾ví^Áx©p0S\ßL‡ÐZR“7ôS¸bõ1ÉÅI¿÷õ·?Æ'”Æ¥üç=œÅö¢E\*zX—(ÌnÖ ˜‘hÞsܘÀ°´¯I£Ò²Ñwƒ FÞ˶ŠMÍ%ŽGû£3Ñ[P>¡°µS¶û”5£dý}ÀnoJ—×F·Þ¨M‚ÁÞöàÖ×¢4©D?íZÎ)ç½Ô øÔ(I;ØAœ´"ÅÏÏ˶:_Rà 0°ØûMŽx/Üèˆ*¢] 4Ùù OFŒ²þ>©å¤—žØÓÖ%eamÓY‹ÃsÌðºRPáÁ‘®­RI“¯,Y‚ç6¸d}CÆŠi³ñ+°Ån;xÁ=Nð}0$‰ðý÷­•CÛ[Ó¥<9dÝEk(í—/˜‹WkôÏ(içf1‹ß@K©K«8䓽5þ|ü×ÑÕ÷ DLm£ä3¨AÈËhf<Œ¸wìLŒZiî6÷¤Þé*d÷2ü…Ø ¾=ïL˜øÌ lz ˆìâ|;Gáh). ¬E?}Ð"UyX5±zH*ˆ²„GW0-º±Ï‰Š.||™¥†ÃŒU¢ÏÕi#Vçö±òm¬³Çq&çˆ ý×+"@SÓ¥=•dEY!©üž]PƒL÷ ¶óä÷ NnsɱQPå乡œÉ#Ôvùo<‡æ1 §n©åDõRDÊßhö–´­ÇR¨.!Ù÷ÃÑöbüÙQüùƒ²Áã¼>öºÔût&gCMI‡¸µR›ÖÉyÝöL{¶µÿ´o[ží†+>žsQãspW¾`DWO5Üð¹"xŒ2PÔƒ†î¦[¹{0 ÿ¢P%¸ v.Ø,Å5á56HiI6õjí"?ÁLê6ƒæ›šñÑ;v‹TêìæÛ^{ù¡óžÄ‚np@Û|¼´UŠ¡qâ “;Ó±Yœ@3y ÔXq¤5ì3U) ¿]ú°åvcjÛQTí‹ëí>cF|‹aBìË¢•Úãl¿mhÚ¤ õŸ‹á³ÖŸ¬_tWnr¶U/æ#J´QRX­yRZW¿w°æ|ß~»®ï}xþWüñåããWüøT"³Íß@5 @n®6ÈÒés?; MiQ WìPždf¥ZvýG®ÿºElrÚ»¡¤xmžî„EÝöŠ„ÒuÍJ·¬·Dü7jŒ‘†]¬›ÄÅyÒhÉ„…üºé®'J£ÙÁ+?4æu ò÷šCª°àíêqÈÉâÑýÎz;›' /$¸ð`˜ÎuŽ‘Žì‹À­’ƒ©žK5¶#ŽðXpG×êr¶†É×saQò veޝožri.—vjËíø]Ô/-Zà¿ËWjðÔ¼®0“íã B³É_ýuÈiOŒ 7{ã¯sÆ_iÞYé €RI…ôaxËÌ‘*£Gò‹±ó®ìa4aÒÎÅÀdÇ\üy'Í~…WOÆzâTS'Ⱦú ß?^w0‘†îµ~|ë þ%Ný¿—Ñ•|ÏÕ\òÎj{ßÉwÜ©òš2ÿl`ÞXZ«5T»hgSìõô…’²Dó,Ò¼;ÎIÜþCÌžö#‹‹øê&3[ÊàÈ…ì÷«˜/S|//!STEªÄDfRw¥äH‡ÞEý»Ó÷e½“ÚO3ií´éxŠœ;£G0ÿÌàbÉÉŽS~‰Ì­å-Ó?3üí‘ {.òoˆ Üq[aY[—÷—‚± öØmnÇXH(V<Sõvù¨b Ò¥”Ïeí*ö¤^j¸á})5C¹Âîg1:•uzÉ©¡=ª+ P "ÅH•׫”4` ‘ëáotäó«ö¼\a›¢Sß•Ä\qi¶»Y€!K Çßê¿ÈíY­ižâ(M•ŸûðÏ-nNÈy<Õ7 nœÁžÇ°r¾CÙmØÇ î•z`Ã,R¾Xe%ì[r\OÆ[uä½ý¾µ_Ó,"O+œÊ´xt¿× µçsm²,$œ.A_E>Kß &ñó¶+xaû•Ž"ë¯E—YLF×ÓZ]©µˆNÔ®Ýïbkˆ¬*\•G5ÄôÒ2§öâÝ#ªJ­#:Îú CfÃw¥(Kx%‡[¦ˆ§²•§PŽˆñN bGJBÇ­¤!|¤Y®..ˉ8lë~ì%5ʨ²·è$ˆ`©qÏu©U¡„,«pè¸qT>‰ovÛ7ÛåM]t\ñò%’ùÜ °¯UÒçÌ/e¾È‰K'ÑÝ…Ã9,j= f²Ÿ’›¸¤rà­ºL :óT!tL¶¬Mû¤ö¦Œ{¯´®¥]%Œç^;Ø Òäý»’²“ˆá†ÔóüRØI’Q:®Î½ÅfR2°co1ºfÁk¨ÏÇäá ¶œñ6UÄÖ·Ž‹f¯‘»S•}dHR~Zoÿ‡Ú!^¿_fCL¹CÚ³O—mñ=쬤Îu¾Ÿ$§áaĉõ9 ÷µ±M „‡!„ß»õÙA†æé„©ˆj^lSf¦Ó +êltPÄý¥f™onG)<ãðÄ}{6œŒ#yW²;üu'©~ï3wÐm%ò†À¿Y¿ŸÎ.YŠ‹Üpú³%?3êØ BX='›{C‡Ñ&únH`sæ#Ô™?·§"lÆg®“ÛJ)«ŽÏ]iˆÙé˜$!ž`#‰êÿÜ çžM&¶ƒßèiÍPïöÞQˆ“êX)$í©3CqWÊo<0ÞÀ¬È{…Àû‹5ÃM®á›mÿf’Îͺ QdU0ü*ß–pðÁè¦\1]j=Dç/‡ÖvÂß ÝZ{‚ÏøgtÏ+íLlÕv ÞÁ¡ÖAØì^?ÃÌ+·¶±æÙ‚Zéöÿÿ„8ÓQdm»¡ÈéÆ"ë«”:Ÿ¦J·&2ÜA·© ö#L‡ îç{Þ ßŒ5|)À*HG©JÐ(s5&çÎUxFkãI‡R†5åÄZÃРªãÚÏkÓÆá#ÖÿÞìAæjt Šñ™Ú+ ‰²õ|Nô¾ ?Ú¹ì(˜’ä³bä½>ŒlQ fS#aœÐ÷0SŽ”*TZÍ3KÙ*ôî”K‡ÀUS¨Póƒ}¾Ž^ìÍd#k:Ã×jÌU0ˆ †u¬ú~é[®ï2á>í9¼[Ì»[¶¯¶—’w…·[Ü’Âé©#´ÕªÈä©lYZTi–)çwÙij#)ZÈâÎQ«Âb=« øÃÝŒ$²ö\RM †Nì;q¶W˜ (ˆNt;OÇm)F±1²=WŠïk–«±R4ü!Ày c9©) éW©íX%­5eAÑí0\Á„Z;'«¯o·Ìþ]’»¥¡3š±ðýVQ«»<+( gEq#£8ùP3F'G„9 gIÀãQ 'ÙË$ØÇFË(‘‹ªmH‚_°¹`.)ã/¸xÞšÉùÿ‚šJì(ÁåÙGü,L¢ä‚DýƒŽ`²^³ÏÄ¿åy¬áFgÔ¢ÂûÕì„!¥“Š :àf¯ù§g9Ô/ 8ËIõ(¢5AŸºËz½N±×”Òþ1•“ Ý«œeúÚŠMr>j=R{Y 3€Óð[±¿ò¢»/Q"|°¾*· ò!¤Ç@õšDÇ÷M|÷Üs€rƒ-e¥ìý =:”äº$¨(™=!À8vªõ bP‰ ¶+(ë&‚Mk¤Ôç×0^K¹îx“GÈFLq¤ÑÙ”Ãk˜ …š©ÅÏõP*XycztC߀âZN½¡êv«1¤¿.úßÙ•3íóÆ^:m¸ ì"⢒mz*Õô›$§xD"UˆæŠyfš>\Í¥K…VGÅ!*Çó8£ðè·ð†Fáú·~ªDZ࣠”[¿†è1pTøœI@w¬ ßôÇŒ‘±‰ ­©ìàzÁÙ¢s¸|‘ŸbÕüo~ÊÞ‰gwäFDñ¹@èôecpäázv¥ÌÁ\ KÿP•'Œ9Ãt4°îeœet»îá¢À «Øh–ˆN3ò-‰€Ùxþ$5šƒh¯ïÉÈ‚Áy”S²U†£cOPÔ‚•êáðPxw´ o¨+×Q“-ËI2 2ÃÚŸ6óìIâL8ZkÁbF*–4á£Rw8ïêWÊ,t j}ÁhqX#ÔdÅl úœ:¤p\Å1ÐÇ7Š‹vç‹ë91«i;©1PAß>~¶ƒYïý’«ƒ,AšlGÐÁ*ùöZÛgJ·É{/-ŠŸ>ˆ¢ÈðíÖýâÚÐÁpA þÂT,k”¸ƒÿ.NU²qÏì§—ˆÌ»½ª}}ðº5 ` \#)é0ø0°%rk–R&8ØofÊš‹Ó˜Ól€ëdz9ð&§%ÖõëÑÂùå€gáj)ÕVuû›å"ûÙ•/ï'[{þû :®n†²O©Œd …êÀö• S[CUeÚwü±ŽëIõ"~AH[AÄ£/BOPgšÈáâîNf¦& ÒÜéÑ'â[{=ÆÕf¯^v¦Œ;“°9rÖõ‡ÃªªP£šIc'<•?2f¯ž¢“øŸ¦¶¶\µñÿÙ@£X2–Ó-ËÝ‹œ+6CPä’=•ΧgkÆPtEƒ¨Ë¨ˆ7øSÜ"ºØNœÖ´ÿšg´.z༢¥ÖðËÜÆ¬hp€oNuL¤šŠA ‚'Ÿ²èðU8±@~þ‚i·à·\ù&Ž Å×…Š€j8SX¥2a: Ð…ž'vj…+qNp³k<ÆÉ)rŸŠf· ]¤3ÄD»+(lK·Mó]Õ/Ä“ÜÑÒñšì“‘3qñ0†0Îe}˜È”r·H±‡š"Eƒ9tt¢¬\ƒn]ÔwÚMõ³‰´¿¦Õ_ëjúÒ(Ôµþ¨@N8i¼PH˜UdbŒ ©>8zm ΊN˜å±«@â‚‹m.Ò iFéM‹‘Âë ‹|-XOïä©”fJ÷âìÃî,¾%¢kÙÁ|5MMpKn^Æn §3Ĺ3ÂÜ"ÑÏǨdwíêãzlMÒDZÕÊø-5Œ'ÎÃ$Ø!ü¨$ ‘ZâpàDêo§&8ÿr_Ûn ôH×A¥™³ºL£ÖîGùk¤ô :DPg'a(Çm˜¨^Ìõ¸àŽî! 8ò¼œ'ÙîŒw†la† Kñ0Öà3Зj˜\Iê0V²yÜÞêš¼Zų¥•úËAkKd_Üú2t¾ b” á]½JOûè¨þ³„Ûw½TÒÆ1­aË,£Z¶N@xŠ" ìœuѾ‹—yØtmÆË·ìwÌÐ< fÍ­@îÀ¬Ä¥H%õkC¸»£“ ±0úXFR× oµ•)’¸â>8PÀù»äÁA…yîë_àÀò…tÇ”4¢ûq@á©&ZBÓk¢6+œUÅ%«gg4ö†±}¾_ý:p¬ftµÖÆ>œ”Ms»e…}_’Å•œ×IÐUwÌzŠ o×n¶¯F%<*­"œU(Cã;%ꕵãrº6:´ÉÈ/²jw¢’qåâέº¦ÎTÔŒ{ Êeϵ+!Q"æ¤&Ø~ÕaÝñ “·}: ùÔ¨Ca(ÌתÔ%6žòpiXCÍTǺ ±öjvàî/o¼½ºzÃ[{×Èyeèòо6s™EÚ^YT£u› ËQ}/ŸÚѵÐ|œñd;„Õ¤}jAËò"œÎ:Ãk†B$“IN3ú™õ¥#üõN¶õL¿*[`_oýÿOÿƒg-;Þ[½rÔñVM¸‡(Z°î¬“uàº(aÿ¦«2,wŸ LŠJã+׳ [ŬzY×N ð r0„¨òP‹jYC}1ÀÆR•M' vpøß}èq]=×HDjE먛Äïa:ä÷S¡¢'WŒi 3>KF¾@ÁzwH¦U ØÏÌd+!X·ŸÔ;ÉÆÑÖ·_4èÄÀ™€øš—ý>‡—ððç6µŸ\'‚L í³Öî×¹iÙ¡êã䔞{I÷ÁN›XȧdEï5ÇÈ๛O§ oÜ ÎèŒ7‚ÞýÞuhñܧ ×”än™³GP]:Lvêq´ãvʯ;çîüŒWƒVöI{õöa˜u. l àÚFžŸÉ8‡žå k"ff|¯¬£î†V‘µë‰Rÿ¬jÖ eŠoÒsÉ*Ú'TÊÃÑlt[ °U)švv‡u»SiT!çª0’ÚN ‹¼¶„bâ.ÂøÐd4|¡HÓj½âô6C&.w4t•‘r 9a|‚Ë ÿ쯃IMËS/—Gª7(ž[/§Þ› =.´ïRìFö4ÕfËÙUNP),ô?@5qÅÊt{7¶œ‹eú&¼L¯j»u¬NdPgÂ+^ÃÙƒtfW y&(rð‰ª{GÉÖb’ÍhA 80#¡á[‡{Fø.¼YÖ9廨 ÷æõøÚvÜí…Ħ™‡Ïº=лÑ;SoÑRJÓŽu”qÉèD)&ã0Œ0ŠÅÙØ€É‚!Oa'â!õݼ[ç;{ÛÝ»›ÆYiL ¤cE³ø=ÈŸLíÿöÁâ4W7d}1Ò¿VÊ.j™vU¢Ì¸»LôÙIxžY-·R:?K2£‰j)ÙfBz%«3&[LfÞ †Ý ³Ú"ë«áç“£Á³¹wˆÉ iºT&PVŸZ¨œ†`=¿G¡p‚ˆàO§#í` ¬ö ,­ÏŠ¡mŠÛåöÇ Óì¶ ’<(²šÒº>‘ufM2¼1v ®ðòLkGÙÛ>螃5ü_:PÌñv¹¹îã†Ëüa Ï1án&óc›ø–ˆª+íñU|'ÕŠ•‰1ƒv¨<VwZŽ€Y}Ÿõla–˜ÇC;Ùwt FﺙYý6–o,‘M³OgJ›'Z2À[œ»}7ßáÊ5_äÞ‰8Û²£t¬a$øNh¾óWÎ5ãYh?Ͼ7ó*§Ag5A4'qSpÙöv]HÆEž«Lò0ÚH‡ëËùRÌ`jìNÈo^¼+烪‹?EAÔÎB¦Cœ›üØ“æI¾‡Ø™ô®ø2£ ¿ä*‡qç*$X/ðëÅu‡vº —xwY÷ ã‡e­Ôž¯ÔW3ðƒÖÿ¶ )Œïޤ¢Ódz«0é¿*F=It]†­mÇtc(—¨ŽGƒ4¨ÁtØËÖÎ!üþýhZš½ùî†\ÓZÄ{%_ÈÁ,ÉêÑÝDç6ÌØ–c»‹JÔD¸Æ!$Tö o'd~É;Ò¢ý¤v”rÅE§'ÁÕ&õžÑ]M¥hö qæoc¾‘ý ÛF›·V½Ùm¤Åà4rCчABãGøJóPco0ÔvzÍ[cÌÌ1G™9OÑuyjîÂüÑ¢ˆ½0ˆ+*`6܆î~òhø´R026µkÄ­¯ÒŸÜÈÙpƒ2਩'ζËXIÜu„7¦ 6±² Yü˜D_=¬J¾…ˆiÜM+—N^6ì ”´½kCõý©ª½†uçGÛ½üÞõuÍe½5“õE·h-»¼N¦´‚_c=©æwÂíHVÔ1—¤•#T¹'#Ö«#0Pà”wš¯f¹©‹ ÿ;.]ÍñŠ#Wm•AÎÀçÖâæcÚò^ðÌ FŽÊ)ü7Øú€œñ3_íÒâg´È¸ôŸs[í:ò È~ßeWÓePˆR’"ŒM³o³" ð°€+¯ HFê]†;œê ÿOÿÈEke̵¦‡,€¯â¹0.¥Š~¹hÄ·å1pd­& 3¾-¹Þt!¹†]©¾»‘X54.HÇëOr—­šÎà‰'»Ë;Í(¾cyj¨%Z˜PiÃ?U3*ÍûgÜŽèÊÂИ¾T2…dÉ&È…ØFµÓùóÓp¸ªDqRZj<ûxq8B&£€,¬AˆVá+¨Ô WSè îz¨áPÛ±)dSyÿߌsö–T‚ à-ñ¦ZÊ(ƒt|:ìëûìÒ.»,BuÄWËÒo¨>Ù¢¼8ê¬IyãRæ5ìÒXðÃÇ(ƒrò-+Ò5YÜ-¦„#YE¨»2ãí2+KYc†ªöeˆÿ|ÁšÃÚ‘É)Þ€tF€“Ø“|Á·yËÔ³Êòùë³5z49›5Él¶ìÖ…`æ'¹l4 Aâç"Çæ ÷ òƒËê/nîVæÛUP©F¸”³Â èÈïMÜê®Äù•Éõul΋’,ŠÝì'ùÛ©ÖJ8x[î\¬VΔÛÓùÛ¸Ñý;í‚bêÑü¿Ží¤Æ³K5£5‘^i#Ò tØkÓ«¬¼ðÕq<’>[‘r*Q©´é_Zß<œqg -û’9ay¥i‰Í‘¡bør‰:‚µÃ .Ñxï8“ô¥Dá§_¼’(¼à.8AÝ4‹è³.½ó)¤lx‘q1ñ€$²ÙÐ2W¡@c$÷)Oš™°£çÏ~nMˆ‘Wü¡°ò·iËLÿÉfÎBÜÌÈåðF`Yú¿òåËé?;fÒeðzb')Õr<”£˜‚Ç«?ž9ÿvŠ–ç&GiLòOSö3™lƒ1Æ’oFQhݦBðŸÛ˜M–0^b¶²ÁÈŠÔÐÑ üÃùМ­pj¹†Å* [‰“,ïyãÝJ> Sà¥$×q1ÏE­bÖ#kù„³8€‚`ØIo,r®LÛ'MŠP„’¢ú:²6Õ,0$oxó1`œíÆOb«r‹üÒÐõcþ±šâðq²Éÿ3Ååâ ½P¿ÈãÈ U5{:Ã8AÔuY d˜M^=kÍcyƒAãG9ƒóŠn8^ó5N¸¡$ƒtW\CÀ©Q1ùÉ©iAnã1k£pC‡,÷°Ú÷ØZ8Õš¤‡þz‡z2W,V|SX{@‚ºá®ãná>¶§ b^Ê]ôÃyûvá{lDYÓúÀœL»€åqs/N. f#‘£P œB¥ªY§¤Vvróž?^Ir” ”¢,  ÏÂ}µæž3·ùÈ鮽$_æÃZ9ëˆ5¨mqÀý¹Ì{Íl-4VN“:ÛàȱÉô·5¹/Èã½”RØöÝ&‹Hº­ÝHðÔ4Zc°& Ê¡ õ-R`ÿwk¹m„ ¹iìÌGœ£õóñ-‘â'ì¦rá ü Dß•$‰?—ˆùXO\G¶‚íà^¦pXݯÉMD`m®§3²”}Ö àôôë?¿âlÒn#TFìb|P¤ê@áp6ø¶RŠ…÷H´7P”g7}8îLõMº4¢³\l­×ó· „,x`é¢×PÍ[‡áºãƒ<qyú벫nÃls%Ýn¨üÄߦ/À^ê©nœåDVm½­{>1Õ K3]¾Jºq#±#W0Ù0ìÓôGXkzB¿áèüåûXSòˆõk¬@— ן õÚ=f"#® ÅdÐl*W5põúÕ-Ïz@a„eÛ›§Z”º€ÐC)W‰DOÝ¿ÈÒo†®gÈ— ¦F*è5.3퇌ÓR2êÈ<ƒvÉï ñ‘ÃÏSa))°1ÇÏ-uÙ5à{¶2“˜ÒN!¾\KÌôr?s²;-ÌqÿW…U‘c¹+4Öz°%›mƧȱī^:½¤4ayŸÖM§žÍë'[VuìwuZ^¥Èˆiâ x —¬‹ÍŸ,Ž_ʱ^öá6ÕüëJ´N0brw`Ó‚ù¼ž\®Fôz@O“ñ¯GB>¯ã¿0RU鮳ñ|P¡%ë"=„á,Šo& Çæ B½RÚ3¨(©=¯k7Dsfþ«9Å›€Ð?Áë’?¢š¨Ò˜m¿eÀSÊ=ë…Ì ãö·¾5o¥B#{õ…1ôsµðmýâ# ð‹E @ ƒt¹çYçµFjÒ ‰¢âÚû?ßÿ<\“iIv™[û*n=Mª x…œ¼å“d³Çâ¡æ}&ö°¼ÛA.äœú[A ýÂ×mPˆá*¤™†¸ãrõKΚúÞk† îz¯vŸ ÎEÆÏ,òh1ÊWã¶DkĸNнG‹Vu÷^òwl¾ÿ —eZ×ϲ\à죛kZ>pæõ½–w¹EÑø{ï‰ZL·Ôú‰C¡7ë‚Ó/„Ýo¶þ <ªT+;L6ìW̾óaÒ'ø§j€µ¬-á D«I\5Éébª»´Êû-ÔâyÒçFn&•%íç?5ÇyùVÛ|¦qŸ4Mìÿ°9š<ãÙy6ª?ö™>£þ^?`åŒo>tôžXÕ„?¯Ù•Øy¹é…ì£ß³ð­æÌ¯£ú+÷@—Ž?â_{ûø>øBMûÖʦ »W% ¿ÛU0³ù7)Z®%sè®8`¨¡Íé‡y ^dŒÐ—Ë 8[¿g|7‹ÊÖ5’?K@o">ó E‘MƒkWvÛ_)¨” }Ë6“ NX\¼Ï•n³cÃs¬Žb¼X6GJ©à´tƉ®i_<Ïóåƒ}_6E“#ƒ!l®àc DшË]'ˆ÷·Éòng“„t%%‹%Œ¬cˆŸ@2²rãÏsI͉s$åïÛXß¾½1÷%áµë@ý*èÏô'}îY ›¥õùÁHpW"ù$á Aøj˜¢XqY}Þ{ÑgýÝtÊZ*+Ö•¢Ðm0Þ‰ Þ»&´¬Ã¬Kæ!Š…‚²àUŽš\Zd³—ñæ¼:@ÎÜÕ'[ª…v0ÖÕ^ô«£÷õ€GNB»37‚W(g)…žÜÇs'^gìü/[K€G„$AR²ZáT:Õ¿Œë$p‰bìµHW6–•~‡7r·H _k>€@_µõ[œ9ö‹[`%Hëeš–%ÌBú©}½ñmi‰3d÷ŽŽÝÃ&çë>nºSc¶Pôæül¡ÃŽE„bϰÐä±u!CðH^;*Ó„j;Ÿ÷€}Ñ„#÷ÏN;80»ÿ¾ª·v 7'ðP…y£«NIg<¾ Œ Ú+µ¨«< ËÈt‘å¿EwӽùæBv€dP¦I­é(ÖÞËÝ^Zå,>A~R¦j‘ê?o‘ êÑ$é–B¥4e!hÌÆO ,„þ—gðÁZ;*ûŒOmŒXëHT‰°Ügâ›É  ‹6ØLØ •c » …ãšsƒÄš|Ц½C-€¹­&¥Mð  k,Ùšõ÷µHÁKžb ¬GPa{¿®rÅ—#Ñ#°mX¶éeN¥gLË=Vè‚øË¤s"©±®ñ?‹*{ B•xÆp‰T/ÉK û‰õá:§mãë r·TŽÛN' }ŒáéJ"—'X´IWé~€Ä¼èÑÆ‹«³n¨¤‚ߢs1#¨šØ& ÔvªÝ¯µ@yz`En›h+v©ÞkfZkÔR ¾VOF)G^–&¬ægùš™»„‡4n‹Q—ähÁýTB{s …`ù°üðE§ ìê3¢Ép:&Æ—Ä•þ= ŸîÇuW\qg°«€5!Ã=Ž5犬¸úÔ7ÚÁ|ªËØ#ø›¸™ºþeƒ8Ë:ˆo^áWl“r>ÿÎTãvÿ•žìöÅJN@^žHeŽï‹P "éu&™~OÄ]§dŒX¸{· ̉£úh˜„q6Õ Eæ˜è@èvieVû6‰ïÉúޱ+¡{Þ6œÑO6TFX-¼X¶ÁEªßªzÒÿî𣣟ü†û*·ÚwëÖ¾ O=ì4¯Ÿìt¤ïöΰß\q0»W±kR©Ø;öÕÀw¯#*E„1*tY5(À;$óè7ŽÊÀøŠUÆBèr‡µÝMfe Øyc¾dµ±{÷Ü[!1»cÑ÷ƒKÕ“ÿVèüUUË:ÿóJ<¹R“~ômp}ºà›ƒPéYBàÊÂ:8ê˜S¯VÁ·I€Õ8JÅ2¾Þ6”:yGÑå›i¨u@òvÁh2Ã1ŸuÒ$!W¯\%ÊžÏð"–?Œ®Ïh»¡³ÀE`Ù€ÍvˆvÄN+v|‘–s,.–tÜ •æ ÉOÀ˜­­L¶½+À-ú§n•âîXÎ8Ž<=Ïöô±äpV耋•I˜4 ßé.åÊwrHZ†‹$¯U‡Ò}²×T°Œ!0 $ÆÜæÜ*[‰d…ØòXlú"mõ=1YÊðêÀ’ŽÃue]  Úý'hpµ0¢-EךhsóÐ?NH^¡b 6CžJ$fï†äoOî’icüÒC»Ñ“ ŽDÇ®7¾&"|¤XÑJUÇfýÏüÀÓù㻕և_οýøþùÞž~ûø>¶V¿ñ–]óº9$€)óÈŒ2yÛìÉ èujé†X±ŸÖdš´/†ªÚä‹×¶ “áCËý}šs¡0ÉT+Í‹*¨I‘¼¼Í¹«b}èQuð}¢‘F™S/Ö`a›‡9ƒ 0¢"aåcäš ¨2ì¸Âd¬ˆYÆj†ËÂN#³ßnÓ’Ön*Æs±"áÕ'eAÝýIòÑ¥UžÆ[6Vc"¼7GEL<Ä$+êìßÑ¡¦å8£WøZ³4Ls"m)øZªÕÑ"“5¶Y”Ö–2Aú.|üÅ6€{o©Ó¸çTžzoî0R³Iwh¡Åâ÷ÄLgJ[Û®ÃÖ±êÄ/ŒxshfØb×^Ú7‡ˆa梡ODÃp#†ÃË3f°"b÷CŽô¾ºøƒNÔ˽W¨­DíÑo aÚ¨ÏÌMk˳´8*LÓSp#œ‹;Þ©…Jâ0ą̀«W̰ûeueU?11É5~h€ž+L‚Sì‡/þ›iÅx<§gøk³ ÀÜ7 a´<Ôó€™”bˆ¯¶B¨‹«‚>9Ü òÒ­iY ,ŠTÿdžv¨&ppŽŒÜÛ./eƒHÝ€ä .؆VR—ÊaÄ 2 FÎe‘Ë¥}™YÁpxþz0žá2¬ÛHy-b&/Å'y¸­ $Óòdʘ4º0"z8.ÛÈ:I|B3ÖQ$ €k3Û+D™ÏÌ(•õñSüZÒ$ÕFÇfî – ìSŠ[máå©\Ñ"ŠðýŒÆ[‚4ÆÔ™’5µ°Ùäa« üÃ~èXýTí×ÚšE«,',“¿†Éu½óÎäTD¨zh3ˆ3¬«]{_`hÔÜ!‡þóBöH#!+:ÐüÏöxŠóÈšÊÞ¯;$(hº“Ä&xëÍÞjútó^?ož‰îÆ&ü2é~î2ÎcÜ|Ú|(Va#=N“ÇUÇ£~Á%yþi˜J(®½£Âa8¯Ã꡾ŗU±¼${•T /k%™ón0.oNÍèzΩ´vfð´»4ìý°…à}H=€t‡ÂæÚ»FÂ)­U=©µÔSÄ“µ1"wýe0ã‹Ï¬Þv‹Â= ô›š ”}&‹ué“B׿¹óÚ·ÜÁ«â8Û¨VÌ;Ñ%bš;©³ ô*£ù”‘êͯ¥þhÒ$žü9owyž•Œ1zá¯è§]1ƒRZï3´:Ѿ°°xŠJòlÀ§ž"‡´kø`º8¾®ùÉÏÒkz"Jºø$`ìÄÙßÜÚ'W_åÐdÈbl¶C8†Xw%ªŸ3ëTR¯p€^© TÏà çE«Åƒ[­¿B|óÚ‚î~Í…¾Ò²r6mË Á]Ÿ¹NS¦¯þ¯ “ÇÖgT‹ˆáÅ÷Âmk1ìêª×%Ÿ çƒæ´”ëk9»¸ÝY$ùÁiÒ²‡ÍR­!€â _>»wãã(ý =¶ß# Q·–QZ™µp™Tª‚ÄéCÂAÕ¼jù{I:~Hã×;D¿&´®÷»Ÿ¥ÖDè¥|q9“sI¨ñ*{âvÄÀÍÀ«•°’–¾¡,_æ6P`s¨€5¢ë¸šè^ }¨/# }ÞÓ §®YHžKµb°ÍŠ91ˆ6¬ÖJBÃÚ'¹®³:Qfoj‚vöTŒv•JÀǾ®NËfªÉD•ÇJi™§'vâT™v¿ ­Ð£î8ªbмëéh/ñ ¬?sÚ@tÚY»S¹óM×OókJ£äOg–Mñó“‘N‡Yñ$êøƒO‹É©œäãÏ]}€°ewŽŠÐ}YØ­”ä]ºUÜÊÍÇrXCüíaËT÷ßPÄ mføŒVkçëÏÂË3 cÆ>Œ¤0Ÿêðêò­¤ædZ²^°ÓF|5/òo±Ï{÷Ëî¹²!ÛHßÑô'k3¤ÐÒCY~>ŽnÛFç/0¥¹zð®ÙöJXIFÓc¶À¬«[ÜÇþ¦½üèÒÍëÙ}|U][ýi_ûÿÕ$ý Óòüå?ñvþãÿqÍGÖ4\]ØQúWéÆY22 °Xíð‘•–}ŸÍ»aYRa!`-ËìÊTŒ‡Õt­vlAp.G©Ð°Úá©6x¤Ñ^"w®xkTÂ^Öœb‡N:`OM[(Œc‹/¹±’Á2A°ø¤çÒEŽù:“r!«Ì“ʧBD¯zAÆÑ»Í¦¾û‘Kòç|'ÔŠg•L®ªo®u?~eÞû¼ì¿*ÙpúVàßA¼CÝ^þa¤ç› 94oÃ8ÿw˜i:ÛÌÇb[eÉä¥$N61Ütž¨Ô!àî­Õ o&só }hfn°Î`ê±&|lPVN •WÍ2££–™z‹_.“ºß*ƒ—ç`BêA ̆¬8K¨~:̓sˆï²¼Ž“ Á6~F<ä,ê‚]¶ƒZ±¹œ‰há›Ý‹ÈyÀºI>Å©Ï@z„­©W$ëÒ†^ìÌy¢F°ŠÆ¶ Šƒ>ïÅÃW£´ØJôÐcÎ.nîЀ=)7V²3¹gÄ;ßõ5’É'P:-oý…`s6tÓÀ«´÷¤â=Ö"¹-ödƒêç!Y… ù …ÃcœŸVr©ã3‡­®Ò>ëØ`x­D c¶u¾ó=EÇå… ‰Iž#—Ò>Ÿ—#ÕÿÚKì—¬˜»ïýèƒj/ÎgéßÒÔf‡eÝþWnÁ¶†íÈšËäÂ2å9ƒcÀݽ²;O®Ö/9µz6t_7ï;mˆ®0åBU½[xÏÆX °ô›luŒtMÞ(”Q£÷[‚„Þä¨8\ &‰#£Ó08@b0n”¥Œ-=úÏÅ´ûŸ²]Lº¦b~ëh.ÅÐ¥´P7€IÎv„Rªüö¸òÎþ‹óN¬L/?'T‚=InðÚI:__`¹ÀàÙtøíTâ3~FL1• %ѱrÄE&vÝÄ_O]T'ÜŽÒÄ'ñÙrFkÚí­¥!ãÔ»ðÅ;‰XsŽUö ©ãÔÙ¨Ìâ!'(º ?×/ hßPHÎ+›=[Õ€•8ßé‰ûä@}QO>©¹Àü§`é*eiBM`UR3ýKƒ‹ì´dSq»êTµô‚@¡nø¸&ñAÕFºH§KþWŸ+Qd2|Š–Õ“©á(¢áš|:sG½Oöi¹Î2®΀áZE‹îƒ$Þ/kå4Æç¢ŠÒK\ÌÝ(`Œc!³©ÇüænN|GÙaL¢­:[uñ¬1ÎZ'¾…ê…€¼ìœ¢Ï€#.x9‰V‘»HþtùòÈ„°[‰D±âøGGŠyLò°J¤¾E’O ‡¤xÇÔö!ŽÝ ëcH¢Žô©¼ßø%\‰;¸”?_Úã•—ÿsüªÅo¾uÐ-w•Œ¾•1ó0˜þpdsnAÍBÿÚNCubFqJÍny—Õàcš`»‡Óœ(=4}¶‡ą̈¬.æ·ÄŒú)TœïqR!ai5}l8h[†Í†z‘:Æ5¤‘YìÀntÉù‹…GÓ$ùR ¶1:>qHH˯57­VrÝwô¤h—lþ‘ˆ<! Œ-5|>}MÁÝxÓò_OÍNŒ aÞ©Ãñ ïS5Ó²¡N¿½ày¥3v¿Ñ{×á)Yè) KÄØIÙÝ)gpÊûÚM¶¯uoÞšëYQÖA-Cß”ýð’­ èù%OÔÊÛÅ0À]F  ÓÜa±Hµ/@¥ÉàN&œ;¯Y×¹Ð7²ÝPæ€Ø±ùÖ%Å,“&j*M3Å‘™8›qE½•0Ö$§–…}¡ð²¾Ô¿Ìéh¨‚ÓÂô¤Ê&°DºQ Ç¡œ™°Ío%%¬·j0€KqnÛ‚(}!ð¹ òÉ䀎¨ør6Úl¤Kîµ×MiKô[@5#½w«\™¶GÓ2*>èÜ0‰0:WY+ÒƒXBÒ£3êÄr¬Åy¹“ÝâbÉ.À˰ß0ÙV{eÿ6¸äTóï.[Ü.ó΃y¦6O<[5aX·Ï$k’>œû¬¬áAÛÊVÏœvÏeŠâ£ïà¶]Cn¸LÀ°50bŸèŒ®„ÝÁ²T6Â’BN'f*vWV+åx³ÒyÅ!im¯chHñ¸üÈÇyIvËÃãÓ Ci—% VÙ } zc˜É>â:?{áÐ[¾,)Ä™“@–¡(OýEvT{!¶1tbYPÂ$†ùkÌD¹øô†n;ÔRÖƒ|EA‹Q+@ýæ)渳9‚¶1ÿ‡ã£i™ä^A?-Ìà}VÞÕüšÓ&®zdLæo\)vø å—Õö—ô”Ô_µipIºá[ˆtäA¤ðmVÒ¡æñâàetòWŽ÷.§ÛI+sÿœcCÂwÖÂ{¡·æÂ\/3\ª^}†‘ØÝ:-Ý|Á,ù´w¯¹ ’” ‡^á—«¾Û¬ÄW°k~¹¡E÷!'J‡ãŽ=-çöÉ3ñª§>ŽÂ†r6>:õÚ%û¼§E);xνIÙJŽîU±˜Ÿ's Së¦$3V:ÿw‰Â™Srœ6ÎC¹ÖÛã?«Œào /áV1ëÚøS;>0ìx€ô¢,~OÔŒ%Ô¤îÝâþ°6ˆ¤ÆiIüÔCѯ‹-Øÿ'‚ŠÌ)”û¨"œí\5«X_v G¥…kÝÚ™×D§êÐE™}{à—”—„Ø}øµöÄÊ&ëŠ5äÚ†ô{ñjÔZeˆ±ŽÉÂóÿ׆ ýSÒSßp]ÜÅ …æ0r«Œ¯,`n%ÑtAÙ•J4´·Fžñ?>yBMý 9_"Ë÷yr`Ò˯rªn쬃%`E{&å,ƒø^­÷$|$Á<Äh€í6l^Ò]˜bÝ”Ÿ=fº—DWØþQ°qtY6½m<\‹ðÅðGzX‘z0,ùòdIlRKYÂÂK0Ì„V“„C4˜¯ˆ«] ¹Œ§%ìÅ¿µ¸äâC ó«]ÍZ”g½Ü[é8‰DI¢‰:½u°{ih2ü< T!æ{aÏSßÙþ´NÀ0Îèƒ=goÅ÷|ú…MÁÊ$&„£ÚHuEÝÎnÎ[O•ó/ ŸHµxÍno=š.÷ˤî¸ûßÙ%@^j}üÇãØ¾.§Õšÿu¦ZåŽÕùŒ<^ÃHÚTýhž}*œ_BlmtI¬¯RLuÕÏc Š·_ÏÔ· XjtéÔ]ê¤yeZÛÅ»Xûññ]Zb\ªÓÜÖ¨Ìû(`p¨Þ×È6ÖFüàhº¬.ÂHúi*ôGQþéj¼÷¹ƒ‚•8]#ßÑî GÁ\Øé…Œ½ÁÅ’äÙÀ=H)b¨ÿüd]€‘fû<°/$Õü.¶¥Oz>J’_Iǃܫê„àƒüøòøÄKpÛ¨³¾WË{ÁíHKAÒ2>ˆ§n Oi"«<ã!~ÈÑ[ôszpåé S¼Ir)V³S~g|b½b ·É¬n;Bãb«Âu‚œm±œÁ<œ¢¹ÜWl Ð>ç!Ò<”ƒÕæˆb¿ž¤™ôº3Õì³äqŽ’”¢ ¯§Ùÿó?£™Ê¥ŠlÔOd’È:ÄébkÜ8ÎW¹È¾©ÒÁî¦9nERÞ0|Çœ‘ž6y!VƒW¬Æ»â%Œ@`_ò+nJ5Hº6Äô¡?d\˜Eý@ÙµÔ[µGª&ÍЫ ÚÓud›¼°¨´kˆfhèƒB3¦ÔÏWBÍO©Ì«9xxuÄÌFdÍ7?nÃ÷kÕàu‹ÃÓ®39-”Ñ+•‡3kì‘6vË'‚Ò0ÉÓÔ×J5õÉ.sÕä¥ÐKôîÙO•Œ½G^K¬šE²ÉÒzÓx¬Püî..1ˆÇ .X^A ·ÿ“ê€ã0áõ±k‡>#B4jS£Oÿ¶„Ÿ…j±`ô4“y•Ö!„5óÈä‚׬}lÈËÏ Mï¯ý‰eò­×¼ÄºÞYñ7x4Wú·št‹çÈ=}†>çwÞšü=´¬ØEÄùk´^T<"‹TÚ:~ǃЗ_,(ÂÔ(V…¡ž+w2ì¼H‰d´˜\z25Q˜Œ!>}óÑÈŽél{N7—´ 7'øÄ4 wPÚµ†íA$íäö´ü¸¼øSÿu°4l¡xÞ}(m)ÍŠî`†£E|tÃ18 ±wäí’\Xýz¸ÈÕó,Zë¹BK­#ĆqGl™B'C§_°>}±Y¹å>‚ÎØùHÝ+ÎŒAJ<|Mw±†Ó]Î iåä#àVÖ»ô²¯ cÙ_ŒŽ7ã}ëóUÙfûoå}²­!{@jÅ}µ¾ºYø_7ŠtšVž8] ÂP¹βәÇɆGÑ-6ºWÒ?oh‹UÆJ ŒÜrŒ³2 TE*Þe$fsŠßýÞD$Ï¿hvÐá]õÀ<àsSp½"´+°Ê : ɶ*¡—¯¸bGE6Du¦‘WTgíjB›5M¦žÒÈ®û lŸ<€«T6Ù†Ð?; õµ9¦H~Xl¦ÚRÎG>‚¹gËfp’3ý ßÙ KñÃ-•Àlø#YBsÈ vàŒÈc´3eóº`„ïÊ=P‰#3CG« à~yŒ…•Þ|ëòÉWhù´)ûÓ×Ï¿ý÷‡‹U¿bêRQ/É…¢¸‹mÆÛ‘‚b[?â÷€eãáàÛׯ8e“[×ýë«pTÌ3­5ÆÁ;¥õÓWÅ€'ƒ,ɰóÃsVtê²ÉB9Öì,Qc&¶êñl‹üA­vðÙM<+Œ^V‰°²žŠ«jÍ8¢geq†ðzCCL[ú©ëâê1.¤÷Ç£m“7×­p-¬­ËšÆ{øiê(ßu¢s©ŸÜ‡"ýs`zeáÄ÷\¿øí¿¤Ã ³ÖÎ2óNU–µ;h‘®a7/JZ{ã®:¡Y´¶ø;ý€mm³%Ø æÇêfÌ]‰"åó•Á›?Í9á­ )òVÇᡜ`wÓóócœþl Y™\2nÉ•¶ûœ¯V¿(îûÅ€åʹä]šÛa•›3å•z3&yœî3ô+ž‚|tóÝnÚ%Bú²búïf‹(;Â[ÑýÛ_ÏØ@ýfw0¶vÏ·5ý§s«á¬³:®± ¯-ñ“DÖxÁ~d±]µ``U©ÍdŒé'0öè¯æ’y=Êf7§ÌZ©k³€N´hª[îoª<«ø¢n¶UÉPŠ% 8¸e®Ÿ!>¬Mב 4ýÉɆhL÷Æ}XÐê µíI¸†ÃlPÞ›Žõ®×R »èùR‡¿zÆ´×´-=íJÐÝ÷}?ÿÀÛë/ÿ5-ðUŸlåˆñPb-N¿œ*{ÖÜL=á2®ê›>‚¤ ÃÃØ\"Ñ¢Ôa½m›É ÃýàYNn·i~ÄêÊ[n}¶¤Ípa‡FèQêà‘¯M8ÕLáí…}ûŸñ ¤÷l#ŽÝ6h "|P}Î݃ôØcÀïéÝgŠe–Í:¬sB¾|ø)mˆÍè´ÿŠÁ{Ã~Xø‹%Æ"ÿŒ%£=^ýšjÖñw—ó'8ÛU™§ôýÎÞ™1»µýîØ"oQT܃-Gg7¼7Õ‡ÑõÁ9;J…„°Ešâ‰%Ú¶P0MâW1CÄ4ŠXž™Þ=ÎsÁJüXÉ",÷g )åGOÅȈs¨GgO˜XOÉ­n“C¨c6roJâ‚ȼ3HìÒ|¾‚ÓL5êϬ+§ùËß™í/Oü[u 1b“…Ù]”p`ÇvŒv7맺¯Úá‘ã{YC¾éº&±(á£`¹84› &Å¡²f¨SRÚË sÚ|2¬œ{ío§Ðq·yF¯+Uµ'ýŠ×R9‡È¥†2þrëå†IÖ£¦‰ÐúºƒmD„w2 Ï1ŒžÅ¡MeÕ4rÙ(«PH“ŸÛ(^è›,L¥çGÅÿõ®Þ ¡ Œ.FŇ{ÕçÕ'iÜhÞ› ww³èh–;@ãá×ôŸ ¼v¨ûëˆBê^£± ¯µžÕMgÒÑ‹ü±LY‹‚)Ú—Žv9OnƒÔ÷h_*i¿µ¦SƒOîyPÓ¶?/ÿ$LÙ­ù^z<ñ¸¼zÀ6 ^ÖÔ…½ÙeœÛs!84ª÷âìW@œ˜“¹uÃäÏ8*Àâv0”Ñ6PÖ¢HÍÁÄ5ã3ŠC¦îRšxô5²Ç‹# ˸p#[äcÝÛ÷¥Ë+ò‹-õa»A1ÓÏ12âdÍ#s;ìLázbd§Ü|÷ØhÛ%–ÃZZ?bà;f:#@7Ù³¹ºðÝã±Há© òU<´Zšj4/<1úY„LÏzÉöù¥%¶[ái@bêæÎÛøkÖs—"‚lKpÙ«Þˈš`9¸]\9›Ëÿ·§§ @ü ±Sn£l[ óšÔG7zK-µ* –LOÒ¤\ê8à S—‰«]!"¹ç%º `_÷Ð!©ðõãBBÃùâ}ÕM<1¢Ÿ¸€JŽíXEj‰á¤TuÕ¾r"ÃÉ¿Ïôwµõdò$ÊüdÞŸ8eRw©Ç-—y „웚Ȱ—ýî1öÂ*Î É7¶a{yŒ=é“d¿¸ÆÐÍਲ[ºò(ñv[ºô±ÌO*ág2‰3¦ˆô+æ‹íÁ†5ŒÑY¥‘—s…/ü¾U`[¡]0¬Xú«—nñ|ÀžOeßd Ûâ~„áši²VvdaŒOÓ©.»õfµU£ÿ¸Yñ@Ò>Ây!t­xÆœÕq§HüeMA£Ý8*“+Oó %øî®è~žuH‚_]l÷´“ÙöÁò,_=°ÎÖ ?£FžÓxX Ü•C¯dö~ì³ÐvóúÓj<7jFÞU·ÚŠìš‰âzé˜×"çfʰQž~È®b´xÝÝ…uÞýLÇ#Ëb{ÿ¿ÓÖ¡Çtƒæi±ße’"¹‘¾Õ4=sßÁËcůý„çÝ*d@"óeU{[ØÁ €(̾ÝgÝ_áfÈ$X%]`q]<6«kIþÅîÀ­µè ÎÖ ÖM*ð“+yÆÔkûÏw?©¸1Eלõ o…›¤×ñÜH÷GåïhÓjP %(.§ yUwMíÛ£÷§_~÷ï]úVWSgÛ Һ閡2†Xi%mK÷òêòTô÷­HÖÇÀÕ")€÷ŽwF>åÙv Óxû,šv÷?Ôƒ›·Ÿ]ÿø9˜ „#3 ¤hMû+ÙŒJ¥(í¾þÚù'brotli-6.0.0/testdata/compressed_repeated000064400000000000000000004315401046102023000167020ustar 00000000000000[RE ;«@}.ŠÒŠE\IKo¯€¯xÓ4]MOl±îô!+l\ECKgç›i¦E¥¢_…|ÿ’ݹòàɽ#æIBƺQéºàŸÔL‹JEÿ†`;l h/@wL¬™ÜÔ1Ä„F@Âq(ø¥}fùQ†³VF;EF¨ÖpdqÈ‘X7ìJdhîþýÉ 2‹ˆ>³·Wû"ù¹ï§HA|‹¶ä÷#n™òê9l[=ʇh^ àñøi~_o‹û#ÿ„(aŸ¹Hÿî<·?݃®j¼ðŠ'%>QA9"tÕ,ÿ}Sû“ýp0Q6a2Q|Ï=÷,C@UE¬*  ‘ ˆ¤ªoQcHS÷:MGì¿®ÿFZ¯ù¡Ìï±&ÜõIl}¼Y¶þû}iý;ÿ»¹§ºzÞ5ÙÏ^ko€qï @Ñ#H ÙHQ ‘ð³[ûÜÈÄ ª~ÊÊ2L©ßRU`ªžQGU™UnûÙ(Ý´Ó™­Cu÷.“ !lr’¾@$z–dÙ΃vS-ëÊæ>ŸÒ×ã¢B‘ iŒ¬òmï}Ê;; ¡¨ «„{àíÚ4ph”l"ú¯&­åÙæû= ŠâÃAbÔO\Ç/ÿg¥jâõ ÉÏì1œ+´c³žéUz>Ͻž­Ÿÿÿôþ— ¯:ü¯! Ñ´Vö®£a5ùh`ÖPëx½³¶ÏùNÿTä)èЃ®Ü™nñ'>?‹OϪ¼ø;ì, 1`pÛ˜èp©g`®Ì¨ ðâܦ"H«Pß‹÷ #Å8œ†¡p&=[Qùƒ¡F0rhäÉŒÐKùÛ`}ôð™HC;¤±+xù ÔDð<`€T$‰EH^BàgÀ­Æq^d1‘^BýsºzþšmWw8-JH,_”.Î{wˆsqŠÒ·gXŽ€ÆÙ’ùÔú€Ô¨Ûu^ë:Kþö é)’wŒ‘4‘œÃ(Ö'L‰€XC8pO‚ÍA¨ µÄq»‘„$% B©,´›þTíœ)µã§g¦ÖBüm!ní¡CW ”xþ6 F}gQq =þþ?Àï ˜%Ò$EðìI¬°èJ'Áb p4×™Iã<ƒþWØË߈tÞ˜t þ–ùQež†#2œÃ f×µÁ!dZˆK¨K‘ÆO_.UæH—%?ë< ü<3P0+uÝׂ¤ ɤ’3À86¾ýº@ ÀÆ-–þe ³#›D*°°+6Ñ5’IìNŽ–ŽŒÕú5¾#P ³Bùy·jaF˜ Ž!83e¹”2 )T&˜!ì€$•r¡¬í^%=zØr<‰1PÌ—–|ªÌU¤ü_¥/Û"$ê›ãmí¤z¹G|kiV¼Ç%¬uˆD@_®ñX”ú%ÉY{€J¹ ®HB_Béݦ3 8·qÇĪD9mqĮ¯} æÅ¨.Ò÷ÔÂn9°ðñ¥€&o°n”å9DhѪžË´æêpC+ÄcÔ@3a-ÂêL)‰%mÆ)î~žÌi/¯E*úWøYw‚ï3rà°Wà¸äZß ZÄ,N¥%Ýþ³¤/¹ƒÃ@žÊ}ÆOA»”¬Õ$á`..“ ££v×¹-õ…§mR¼£.Þ&8·‡§2S¢pÒ8RA³YKаYÑdß=O j fâÙÕ<ÁÕìªJ[‘Qb:I£Å$>.jú|¢!@÷el) Š?½&\fÍ60²d­A_„ÞS½Xç2xä¾O¢¬iö¨Ú>©±~ÑžP6èÈKЧU­›wiy¨ W›‰Î[¦¶»øþ(b¶,š73¯(Lž¦Èõû)+3.´¹ô…hâMªdþ-Œ6#ƒ®#¸QÝó N›=è&F£‘“&„lçb°ÀZ =&>Tk‘H ×0ähñ›òÅ÷,„g¯ÁP×B¯¬u˜á"º–/ŒãÚËŒ¼Rk9©ü¡ŒiæY‘½«.°>>“ê'ÐJEm œn¸L_ ‚·Æ<Ã%êBHB¢·É‰\ƪjáÇ9ŠSK–cM>ö[Kh_"0ïû†Ó[Y¶Ìå?Q{°¼8ß›Dê«ID¹5˜‰^ \ ûŸùþøß¿£Ã~'Ø"„NIzžu£@:¢Ö»ÏÓk $+¤öšß}OEÉÀlWž§Ë ÍI Hbxt*mtKÍnìÔ·™ØÒC!”| ×QzÙ.ƒ¬M7{ûÿONËs•Æé¦ JF ECU8ºX|HÖ,Ÿ-•:û,‚ŒaõC{¦-mí¨øâjz.iY°«;“Zí%±3owXEï ½S#Ññ;„ÿÈZXÆq©…3DF)ú¸¦Ð"ËúøFº_~Òâd–|ÔÑR¢cKÑñUÓ2ü_$Qê ù;¿À‹_™¡&^$ë¿hüm’¦× ¦„ý7¦+ˆ´×ÅË(a!Ú0_޶všhÚ#´Ÿ ØôÐ>LÅkÿŽÞ˜\¼7Á;d’æ4¿/¼?ýþÛù·€c.C:Cj$L¹±]ÛÑÀK+kÜÎʨ¬Pw¸ÂŒEÁL9÷ï¤yàçÂË™|kOÄ¥V®²ŽjÜO3U„þÏã÷8Ð@Ïv±Z±`~„̾‚# @ öëœ, D(ˆªi"hÒ`ÝáãÃc‹¤òR)kÔ°Ä[¿û<½N&c¤F\c/x»ƒmÔ„60x͘ñ¡„d0Á·º±×§Womç´\!KÇã—ß|ÿøŸ_~ý ÈþMר1u£¡©œƒë@]í-ÊQPÓ(À¼Gë¸tò+šÎZvæ§XñÞp4nÛ‘B%òÝ¢BfFΛmMU¤ñ¦ Õ4~’>Ë E®™ÓŒ4v¦Ï˜ÈùsÒeÒN7Y˜š¬å›)9e®+3¦QÜ ‡Æç‚ª–ŒáÒê“o³ÕÛHašòýa.I5Sp¥´cU£Ž˜ÑW-ŸQJF-L™c–5ÛØ<8Jÿzï)¢ö“ *žL+Åæ´ÊÔä²:RÖ«7¯ì‚¦/A ýLDG‡kËtn—£Þ(ÿ-šØ3ã1Ó^Qx)·7û\šäìC}‰h뿉îà[=Ñ&ûrÈ! 8]^uaŽR3°áøYH, ìë–?T{ºFž|Qj jÒÛ-+2V'´„ÇÜ™ Ö®¡‹¹ÃÏCH!OP8í¤,&ÕI?ÀÜF‡PÈõ¯Á*€A+¢¢Ƈ†¼nNóDÖk¡9†ˆ®fm(ª+És’•I,EMyrà׌W8EKwBÿ¢håŒ]“À1±õ³“Fxµj•OEŒo23@¦È½ÛÌÔ «eGwêÏyQ(ûÑ—uÈüR”kFMM=u;’&”\?®p¬Ôqº]޲ƒÑ^ ÚL ø•tÖa]z©vA¬)·%+'²à§Êûyx[ÇGjÔ®Ñîkà¿áZdžá™jñ9¡GQÛ§ºLfœæ(ÐT&µ¹ï>2œl£©ûž¤‹Á+ö\EÞcµ¦äŠ |8É Š›!Œë'àˆ]&«%0šWÝ&ä!;1{ƒâ©I'GÔ7Xús¤@ŽÚtÉœbþÊŽAFŽtB8D]0e¦Ò»Ü{vÔôO7¼‹Lù¡Àäeîù™Óã:žÌŒêi7Ló+eOñ,Ri¨E÷±ïJæpç²Ïódo¡†üid|²ÆžŸúÄ;/¿ÿòëàü8Nóóºv< ÀÒRHÌ<8Õ§Û–÷ƒúOfÑy(~å3,Oþ!éëyJ;zœ^jXœùÌ3‘7ØR!¿.wÔ Ö8S›‡cD³ÊâÃ[¬¾š‘Fl>Û¬Y±'‰  ëí­-2‚Õ\É$¸]Pö»8UÛÉ44èCyH®œ ðﮃáÇîÝ2£€aͬ¢µ:.âü`çïCÖR,n~Ã{K¸UvÛÓÉÞÁtH#ì P[JJÚv߀\âŒa¥2Ú ô¬…vÛEJ?L;”ÌGp®´¹‚?N/|…þB4ܯóS§šâk:$¸À«1)µ¥a¦Å5Y°>!)ôž)#KÄ QXÝð:Ó²A#=Šà´²bÀ©DÊУê(¥}~†©p4¿îûYŽO”ʶ›™ëÆEI÷£³œ'µ?ë˜Òâ )©k»`!Š'Fˇ@cbQVËËjIàáÇvð¥ëÊQ}àÈŸÔÀ§×%&R@kÒ˜’™TKzÖn§ðöUŒÙ†X˜ó³E1sðÂ0/ÞŒ`Pn AÚÓaå@ÎNɤE$VmXW.eÍí´†C:À¿xÁÛú½ÕÜp*ôÉ/*kG³Gà´NÁ˜ÔÆ÷,S±íô"äˆÓ9Vm70J·áô'ù§éFMÇ·½1ù \FÂÁ„»Ãgûߋ֙Õ”\g­”¶×)¶üdÁ=t)í<ŠyВΩ=/8¶†‚‡!¡£ ½½zµ‘W–jg\ü‘Yzø…<Ó Íµƒ;‹º D}圌<€% òfÛ«±Ó¤á™Î÷p&šš©ÄÒÛªD&%âԜĄ.á*¾PóŽÁxÅL,ö eçŽ*R³{Óõ [û‘OQ™ÑtÔ‡tžD0a”X†«yj åUGdãÝIRÔ©”ÃPƒLLK±Ž²›w i ¶t°ÁÔòÇN»›;€±óFÞlpjné¨PùÔŒMÍÅî×@Q·ñ.!µ€I"ÅbëEdoüü~ ‹@9­Hµ})Ê«˜'šuÔMƬޮÐ(ê[Ò•céÀ7¾v˜æVgó.%0›Å®ïöÆà@¡xËd(†â…537Òù\Ž”oG7›F¹ú±jϼݟYO¡â¹a ]bãÐ%yÅ–âzÝÆ@ «d¤…^Íê­7ºÚ;{¶û Rä»k,ÀUU»Ëg‡0àhÆw Õ„æ¹&¼$ù9c\Øjø×ò10  n¼.™ &ÆAÑÕc^UÞ7Bߎdi‹ÉF¥ˆŒ¦jÛš:нJx£¶Y'ëº0!èJ6B§Ài‘6ÔjO¶®ék»j/Î9ë–Ž¦HQ¥·Ø%TC“Fìõø¦+ÝÈÀ-oûfž9庲3@£’O9×¢«vFYXI@ñ:Çoº†êÿ9Œ¹A•£<Û¦jm§žbR‹TìÆ4°$ÔMÆ›vN}–}]ú± d¥<\%±D÷v`0í ¦©ŒÏf&5¸ç»u¡|pÚ+EÓÞæ¥v„àüƶÃPM¯ì÷zžäbvG(M}$R¹UJ.ùÌmW º8XÖ ãõÏ]=#ÍöECÁ9ü\üÌ&¼á¤%ò²›=ÜdQ†R žÜ;Üù§ƒÜ÷dÔ[»}­}zW¬ÿ&¬ÅDa6¾½Z'ãÝ­þ¬P_ŒZm>±«÷Ø[!ŸGæCrK$ô£Ej¼sH1Œ^›ë0sÕßÖ쯉RÞ ¨àüZC¼æá-%3[ãðý¢H2Z‘†*°?³Ýe­t´ó ¸%ù§F$"«Z¡‹r½+¡NÌ^›m8✮ъϣ…¶TêEš£Ô6‰Sµ¡Íúí6XÛ3êP‹DꞪU‚k7‘•ŠÔŸ–ìbU£îÎcÂl³BÖÁY.-û˜q÷ÍùÐY‡"€€\7{ÛZiäñ»Dÿ"d…m¬_¼Æ1¥úŸo‡VÔ‰Â4þQ2H{½÷þ0E)šÈŒSì>gÅ;äù`‡sÈ0>Îpîêå¬eIc=zÇÇ­¿“ú*åÝÄ}ÔFEóÕc 5:Œ´×o„“Ó Ï]¦¥YÞæÎ8›™+0Ãl@OeœÀš•êSI¤MÆŠ>Gš!°€ø³`꺄҂O3ƒ•Ô¸SðAx£À½ ÕD1ýèùPû…A¥\.Òã–~àÒr©Œ>&þ*'ñ)°ÔJ ÷:”¦<´‘Ñ¡-ã[NîÝEßÏ<;DàÈ à×Öï©r¸ÛSo¤Â§g™Pò¨$}} • ÎùÉk‡¢ÎÆnð3ÝvÏTUðfx&ºm4^ùû\ï¾!ÁÜ¿–z<øÀmŠ™¯‹JµâÎÜø„“GÖœËTψ|‚… ¹ÒóF˜$¶A= Jˆ !}1¬aï;´cÄ€g…la*V™º„Ù¨¢ O ~ÏtI#éxÙ­iÉË-Œ¦¥ª`Þ~“ 2ÙkÝÔLe¾=$þ÷*V¼|¬°2`ùçê ÃÎ!+õV] å ×ÛÎY‘K-²Cl RÆV^ ºqj޶n,²²*ÞTPê\Œ:0´+Yá+ª¾Ã–ûÑGx–ßáQò¿µé<ƒ©ã TSŒcŒº@íÐ놌®Ñô¨ŸLŠ]^šÌpÀŠ¢ZΚFá”&:–­tž†ôwº°­ŽxKî,K¶šÐÂÌsH¡<‰ Ògêƒkˆû»LNmŸ{ÌÃ~èzf:EÞ²à™,ìÚþß]Ð]׆êÜ¡¡åó"‰ ¿§ÍMx!ÁùÖRý~NÍ­.>>èl¤óØV¨&K¤ÓUœk·éáÙüÛznï 7“ZC0Ñò©i©5Ò f¥Irt«=›Ë[ÿqþãdV>ÜLvkã……Ú‘ºðŠ]„8^¯-‘Æ ¡‰•ö¢c@¬Úa†tÎNt+¾Uªeí¾‡éÚ /m_{L«ÄE=†¡C­Dì—Mw¯'ÃòQ+)xôf„΃À¤Ú®èX®“ùQ¤ƒ„¦ç½!2 Kéï#ãg©} ¶*"½änh­ÊŽ9±ûÂÚ‰³Ñ•‘>T/1 ·ÅâéöŽ^ÄÆ<6ŸB(Ž¡zºöV{ÁÔ8þG·Õ{ððå…Å9¤yt™xÓÐÈ”&­*-Œ7LÙ.‹y…%$¹u^5¬´Æ»¬å;W—7%3Ì„iL)1›ÂiQO#%ììΘÊk»|«¬¸¸rVPø XRÏŠ~kSµš¿]J(?Zþ@ù0¸«v¥âS"vz ­‰-‚¨õÞóñÇÇ¿΋b‚yYÏ™ÿ»®IÃC(¸`Žkê¡f&þk¼çŽn¥"¸&'L' ¤7t~eD¦moÀKæ;ÌÚAÓɘÝVltчé8ÃiX´‚c¸‚2^fë‚ '%:þ¾Õ„žðàX/=­Í02ü}ž7Ÿ‰§·»¼CªO•.‰þ³‡ Z]ˉ3u)é•åwén•–Ä‘A?|Ý—u{ãüÇßkC­H³}IE€ ºït¤k¶[vMPFãTS-N_?yЙ&¸òÂ)®]ïÄ w †tó¸6þ37º_üØæ·a&š&JcžLÿûñ0[ h ߪ¬6HÞ~Š×Ò¼,@.Ûg±­ŒíÌ#Ä©Ÿ—F©q–KÈJaä;¡õ âNü|ú§¯‡’zÆê|T¶¾€}6SNužµ0ÀŲ§íì–³(„ß)ÕßÐ'“ D:U¢tµ?ïδ@íŽ2FèGX—¢&TQªÅ½!ª\ŽvÒd;5z'ŽÕ;‰å̦Ô""„…ÎHEºA¼Ö–Pmî8 @Ü7¬a;J­„UÔÝÓJ¡rجoulßÀ#ÿ¦EÍŒ/Ò„ (•¼¸ud…ã&…×2¬ˆö/¾s­;V€;MõmÞtI|}%ñfi§Lê2†ï…ݳî^À~|ûeÏÁ¸Oجø´Ï¡q´ƒ6+Ä|ÚZ!øÐúŸpbÍæð†ÀT¿+´,?éQYK«!°òÛGÞxÍØäК^7 Lí Xwq <²YÃRD&®0DåM¥·Ýʯð€kì罋ŸX’×uV†Ï9¦Æio¿9«S /‰§¡Â=úûafýzm.wªol@Qv2³ö­PÎu²Yj]XFø.LgÞ:‚žúÖÿ)Ç»¸E2½ì¥ÐcEõlmè¬î'9|GP“»Û>‚g^bEÿYÖ‚fˆ; Ú€}÷Í;玾¦Æ¡0¾IéNU‚J¢þ;<÷mŒ>÷êA‚|>ÓkŸWS[¸0ðÀ³^B@f­wã5C6¯ú…quðe>ĬŸ•®à5Ev$Ú§Ym™î×3u žöRb”ZÞeŠ’ÌÉBc|Ã1v`ôEÑîϹà×.¯Œ>óŽŽä±<¿M®IüÅóñWïlNÙ¸/T-ìE‡jM}äwÉe‹OðÀH‹UŽ‹Ï%,ÚÖSwâ›]šÅ£[ßcN"zRÜa¦ðÓ£ŒkÝî8‰÷w9Gü¤p oëŠHãã§›„ÙXa´4"Tu˵0°Ï—’^då€]ˆû}µ›ȹç:£†ˆ€kv»Šq±‰4™C­+œÕ=¯ÃIÊû@¥§]¼<@õáA;[ƒob&€â>ÓàÎŒJs,Ë@ÒBí±âÃÄ2ãüÃŽ¡¾§"–è£ó¥[§á§ŠfG„i×,žõàÜuœ_3)ü& ~yºRõ®¤A h¹îMËÃ?íou·¼Ž=1¬Ø™ZúJ(©ÓÇÏÅë/þU„þß.20†JpGl UÑV7ÔW—¹=¹ývÞ ¥FRš­]ÚYÆã@²špé¾Ã†Ÿuîè‡ÑøúÊ»š&3W=þÙA¾!©û6Ñ>p?(Èè½Ï?ð–͸\~‡÷`½ ‡3Ѷrr«%£ ükÃNì:ð/œ)%Õ'õ|ÓE·ï‹ílüâYz$ànæ>À¸.‹¦Ó;IÄÓ?6æò|:CÛÍ’ÚÇŸ&£¯çž=µFjº0w#ýÐÄçX¡-ô3¾¹¶4*ÞV9äãIøè²=Ÿörb3å¾³»©¾wgž;›é@­w~ØZ ›¶Æ{ÐŒ‹ž³Ïà†v¨ÿ&ÿ» ž¸Ò?+Òœbµ•^ÿQž¹÷%_qï+}bT¿ê½™±ê1XbWîçi¯ôo™ù³ñφ.®ò +ÎÐæÜ—ã¥V)ð¼br†ÒìÉçD€âÊ‹¦š·¿%G:¨š/9z¶¡â«šûUf×óÆrÙfQ8ÏFû'K^ ^¡`|ã÷óþå,Eí6bÕLÄqæ5às…þ…%ð<‘ëÌ›ØæÀV¦Hµ{Í)¤[g1½~|=a¹AŠä……ËAŽI¾ø¡R¸°.{éÙ¸wµsƒŽ$¢]Xïº=ølÙQŽJ¤çàTH{LrrßÅm2eVÉ:ì$¹É*ãσQ"öÐæÁÛo±åIÊlã=H¬¢HΩ8Ž„Mö¬‰ÂÜꆌMÆc-,+H­Aï~ Ì 2û%$èç#é+- O4Ì,ì<ßQkmwàÎäªÁ“ÂÉï"8Æ2/5<OFsï–ÛÓ2ÚÐJ©x¯øº1:7k5Ýü’á“ ×p•Ävë1Óçú Q-ÛK&Žr^üwq9n‘šlK¯*›9Õ ˜”n§£ù(ËX-8ó;ŒÇéó>ÕS«¹ešd½Hñt¬°%íDÖ3Ç[õg ‘γØVû胱²d´ÅG<åiênλ¯Nhb€r å 5kûêsˆÙ.Wâ÷¬´ ÅdWQo&ö/Â^6Ž¡Q Ø"qœ(õŽd=>‰3à &®»² †?®¬ÍëR÷0‰RBô`I¨ H’’†Äøþ Áë4‹z<ÙÔÓ‚[|\ÿqp»v„haº$r…ƒÉN@•w8 Òµ­ò•¼‚768Ì(2ý¼Ë£Ú{5š +y_œ®àýX)9\yeî©kT.à|2Œ=e“Ý€÷Å:3ÎXÏ‚÷²™òŽÀ÷¾Äq«}¸úÅ68¸a»“-€>4²R-8çÖW¤Ž?ÕÅQv˜iƒcÆjí£GHªÒI® Ö…µl=¶… ?ë~Ž>÷ªÔnøë"¿ÿ˜pÉÄ'‚öZR„Šp~,оn!†?!Þ°f4¯ü¯„Ù„e|!¸ÏËÅC¥¦ó¼U"–àî°5°&¼òk-ÖaU0jÐå#¤sÓÃùϸ?ÆBžÙÁú«ä©6N•·ïEDG‘¢þ:?7å5ÁÇržõ¦ã,¡=r”uO²(ÌG5\a’ ëžøímWQûs!ª¹9O»ì$µàÏ“ÑFIn¸hÖ”Õ]d\""~+k™Æ™ªjà¼{ŶÛœýÕ¥4^øÏìð’/n†!]dôe•›óH«ˆoƒ¿–òj%ÏwENòŠ1<ù[Yæîf¿IÍæe)D7N,ømküÃŒô^yØp[G-ÝÍØÊìw4ÝØúT¢£pñž­çéq¼ßÊó™HUz:ÿÙ†æëT‚/lµM¨=ìÓÔ¡»ñÎn(Á6¹ÑwP4ŒÌ+€èE$¹ÕiRË“y®Ñ@j. ÂVÏ3Sú= »î Âíi©´Õò½|±3«Ë2½E·rÔòø%°¨l…žy—ËþÛH˜ÉŒRçFd|Â;-ÚG8FŽ`2+¢“ÈUª›ß2(~+Ô9‚fÿ(¶²ßsúÌÚñEºxøüm’Œ?ÁT¾ˆï-³Vs²0„t«€šU„½¼|4¿Ö‚'‘l ‘i¶p.‡‹PŒÁ¦g,D+Æ.‚¾. ³¦Dk€+$ê½UÍ!Š›cŠO냂ÌáûHq¼`7§ÛôH©g}S[ã~‡4sŒ.€Rð$¶òî3LD—lµÕgÖë$4YïŠîºSq‚{ìÇ)TË*Õ’CV›rÏCÞ÷c˜ñX$Ywé¡)<Ø™¸‰#ÄÞvÔ4#Qê,;Páý—É m&ggßÙIÿ']^gú~üçþåÇ8mýhòƒ׺ê%‰ßÝe÷»Ó{67ó˜¥x¼ÎG&EfÑ9ëŽ é!Þ­T;±ãv /'«H‚ @;2¸ðKç=7zD`(2{lÕ€µž€jñ©cîÍ<¨–a\Z)€; 1بmXæñ»…¨ñoßù§ã ¢²ÑÅ“x>cE÷,µ øÑyRjýOþëìf¼f Ú˜è¢fЋD_? ”ÏVo¥!;N L]A%Ef{k £åým(i$üÍø‚ŽÚ>Ÿ &é©S%ë{¥å½Ðwz¯s} #³äó1´Ú9 u1÷â¹øžà¢Ç¡Ô&hâ«V;ƒžô † Óåy¦W<ìjÇ·eÀ8ϳJÜPŒKíÝøPˆŸaÌ߯C{ÙžmõÿÈL9îXÿvsé3¢ó~ö ‹I|-i ÊàH éBv)ˆ– x8*¤±¤*Ãh|«Z˺8³ïLçµÉ,­çÝŒOÖ›¼-àNìo´CË]ðÑK£Þh+?`ÇïrF[f?«¢‘¿SV»÷ãß_µùÌ 0+ôã–7ÙxŸÅ:68j2ĉŽiQPÃnk #ÀÀ{u?ˆ’úÔè¬!4×`fQó–ˆËõ®¸uj0^pÓ¥óüxgn|6íLU©ãóe㣻f–(i]€Ñà!—…Ÿ}ò’½¾98+|MD o›“„Åp­…¯±Ô‘1Û‡Z­ÿ@ºŸSì\öÒ>»D«¼\î”éÂAœ‹Éƒ9ΦÊOLªntˆÁ[TÖ·&hWèÜ}_ ™»BfÒ¨¼ Jåq͇…”#±Åz÷ G•`ØXý½ùÙn49ìYšÃ„´þÝ@ð­5ä#fÊ6žWAzé» (¤oPŠãj¦Æ1yh¯ 3{eÔm¸¼õAò±·rwXÕp+‹Oêavõ ¦¦“Y­„Œwm&zŸvñ øA»ÍKDHµø¬eH‘ª4ºÿþ))CìÆ)n¼´ÉQJÞcèTWdú¤hÃzF®n«ÔEõÜFÆçÜRþ9A¡=D€¼CÞWë*¡æ“PŸÃEqïíH}NÍÆçE4ÿ[±2M9§Ž¹²÷e4÷%{¯·Å™Ê ‰T‹åîÍ©Û=“¶†a¢HWžà“$áÐr;y±ƒ*ëë7ú?Xuƒ[ ŽS“9˜‰ä7y‘ýM-r9ˆ9°´§Ë‹0£ôk2Uþ Êð':SFDáä|¦Ò"yƒ¯+)4”Ú…ÿ¸ÞßÙÓ›ÛÀ{Ë:p­þ*Ø»5´Dhºôر», ˜M[…9á­jM¢ÇÖC³®³ãYH<"jödrW^ôHpÜþ’ÓYª•ãŸy’àÈLÎtð#ë—sÓc0ÿÎðüøûG&æÄl¢¯B9Á]×®z^öýg-\üžõ€+vÝ/à.Zç3ŒÇí/EÊA ôi }„[¾0t$™&¥(³iéÖîYèC[l –5ãRžÉþ?ý~)`]8mµØvIt‘"KW¨æ7³ñe˜“p¬882.g|9ßkDn1A,þãüÇÇá®ðÊ&q¼qÅÕ‘dP0šfÐ[>cYLÖGÐYª5~ÁÊ­^Ä/0T_°(Áï¡Õ¶óð-1HÀNuldÛrgµªÂŒÌ(®#â5¤¨8Ý'oǬìæ6¸DX­ÙÈ¢{U‹¿]±æ•ºÌƒàmCˆÿ'´ÀBwZ˜ÈY~“,B”±HFð  *b3²té8@'Ÿcµ[Ó‰‰¡g½eÆœ;?XÓmœ%ɤKƒg¢BjÇv&Õ³õF”.­È2,ÀÁù׆H®¤>æJIÓΧ>‚LIݪl Òn qÑ(î°µ˜iÍWK´ƒí$p†6éÑ–cTÉÞ²¼]2Ú@…©Üz¶³Ñ{“ÎÃ\ \o¦­J„ ÐM£qÁZ-Kà‰°=¬yØ\,ühdC#ù²©J¡QÎüU‹\¿[³S¦­vxAM wà¬Ögýi ŸÉ6:0ýUUÄú1WõCd©Wfv'ÛÕ:¯äù*rÃC ß xæ™)f:(ÔÊ]ñA_¿¯Òî¹ÜóÏî.R{ä^à ÆŸ¸_ôwòþ†Žò)2’=x•xeì©ÀÜáþksA·it~W`³ÛGüNn'·Ó ØùIà–¤]îÞ—V`´{x&‹ù7O•à œFÎ4—$‚?òþôË÷aÓytgEv¹©¼ÚÈLh¦ºîD½DIZ,9E"§$œ84€ò¸Â;À8BŸßŸ….P½Žy>twüÚÿ"]HjÆ ·&‚‘ÛIrŠGŸðJ~7z­–Ðü^ƒ [tàtê¸ù“YµaA³—¾˜äØÕ‰­E!Úqþ Œw:£!ESb„yi_²Ö®_ôZôª0¢˜$Ì‘½sð$ìç»μc©+Ÿ†o8å’,üý½aö¾i“ ‹ÒÐÏyÝIs”Úkk~ž1ìh`ƒ¯1a=Š_Öž˜ƒ±¼æýõ·‘¦µ·4«p¬=8w^ɺhÝÊhÁ¶*­ú_hG™\Y<Óxø&™’UæÖvõêL[×ÔÈ–ÆæÆ·— ¼ÿÇá@Zì¬Nôw¢•ºSìšdMzÙÐQ°‡¸ÈpºS7¦T…ÓÕšŒFK×…|ÙšÆîóïòP¿7²fé—¡œžÂ!©™³•¡OSÉÜj£S‘\é =2aŽJ¥ëg3r¦¾–VpAÜÜ8—ÀùçôÅk}êâ-îMË”ÁœƒGðÙäaiÝ?Ÿ½µc¾\sã˜å3Ÿœ–½"Uçkü`ÊÚ¬Ðö̽ÈÂ?a_·D%[;’‰Ë{ˆVÖ·Ï·°RÏ*ZNÓÉáì®áó­áçºNNKï°\#yw’¢öw.³?–ՌЙœ‚pL¢ I€O:¦lp¬¡¸gLYKø™dÛ·¥U ´œ­Uè?JþZÚ¥~‘Ц;ÝBÓ6½µÒ¬¤¾—£×ÒîëXá†ý K9Ë¥ ÕÊE •žÊÐvþ®;èÖ§[3ªÝhb>Ü»ú©{&G܈“Ð…Ô{uBw!œWõËž4ÂÀË.!#£…ÏtYB» ®âQS6/ºõö$ií±#$ÎÄje ¬|/·™E—‹z YÐ~BŒÆèÞ:æy·ÿáÉzpõe·ÀÒÐp+$oðöÆŠ½øŠbH¬-8¦Äª¢fä´ ü…¿NK@H’|ïæÛãoT¾k&Ù"ÿ+Ž7+ÓÏjÏÏVg4ýÖ\Çvƒ^EñÏq„±>вÁ¼‚?òÐ’ž÷È##¸¶Ä ¨A3ÎëQh]¹˜Ÿ‰{¡¥Ä4š¯¦sïm«Î;+F×kh÷NÛï¡jIvÜøÌïbÝ^çN¨!˜}÷çe‚5™N‹{±¤ë²Æ¢Ÿ‰×"ø¤P(â?íß°ì“ÄdÆÉéÏV9>nXž/}¨?úÔk4ÅÌ7½ÏÉn·VtûZnzõ†;m(¯ûÞ³šçœ“ ™«ô¶¬+?ìNª¸ š+vN•"­÷PÓ{íÒ,0eª©õPr­€2 Gè3¡à\—ß¶üRbo ®Ï)ÅÃÀf1+Ýíµ÷þV*Ó~w ¹Ø´yPÙÊ4>A5}»N yd8OÇiœQbC¶7noÎôëO{ëóÅ­ÔÓ²~è°hŸ0aHµ7Ò¸ªª+5 ƒ¼R›÷ÓÆZu'ö®ä9ÒIöÐSè-Á÷¥º¯oh]ƒøîrüf\žH«kcúV§ÌOÁQ¦¬ä£×¤ U?ÅI*×:ˆE¯šÏÁ5ÅÃ,1’T `ïü!`x¨O,%URH³½MVøËtœ•9&${×ï1_¼ÅÌáâÉJÁ䯽ŸÒBQ:oSôAÂÊ\Í-T¸[®Ð•ÖãðmCÎÄÜáV7®nŠ„º[µ íCµËƒêµÂ¿ …Ë%6OJ0[9"îãRÊ ;È }Ç`uršÔ>x´í´t¸kj—S`»X’ Kqüª–UFµ—L%I=Ña\…‰æ´ãð·:9RQâ‰|À4­­ã õõøBû¢hºé¨s‚O€x—ŸQD6AÔ6“lņÒŸøbúzl?¹šåìŠÇV[(Âj–Àî¥NI;6U܆u'ޤ¥•B¶rga>/ež¡áü ˲ìV òŸUzÙ"¥eZÒ‚õ..¿ ¥2ƒÄaú,…p¥›ßZÏŠZ°l)EJIñú Áö3Ó2êÆzIR;"ô­½Ò¾«jˆOmpÔ y¦jM69Ta“*“L[_Ì•pRk/Ëßø8ïjûº:|¥"wï áfÊÀ$eœÖ§V‡4º¯d)0è è~P£‚ûÏmPz­ªùÉ Ù7ÍQ03;¾PÚ6míH ñn8­67z œú=šü\yžÒp­ôÌgý×.×°W·.šºrtsûFè†ks]–½iûц’ÇÄånûém¬ „õ$OV.ÜK¿Sn©ZUÈ£ÐaM·êþi§ž¥V´dž®ëp×ÓŽAõO"CTÍ̱½!á6kåàáxÌj{¯Føl3p[Ë}Þ¾“©¨ õo›Fzß^꯬°(Wû6x¼heejéä<+nP:Y­@¹²…Rò²&÷8 c“¹Ø’õZÿýqÈ*£ýXáš Ì _”ÑÚ÷/PáF:@‰åÕ¿ð.˜`­ÉCÄ´[ªÅ¦̼ öŒoÀª#Eq¦dÌ“¿l kïÚÓ;•œn–§²©¡@X‘Yi„,£Hòÿþb8¿-¡’㋆‚G|_¹3צKüc]`ÈÉÖœ…v çlÛÑW…1ýÍž—äÕ.ÆÆy€Â›@–nèbxT]û Vöˆà䌽ãRM,Þ]’Z<ù’TÏowT²(K‡1Ê|¬m€Ù°fœéúDì…]¬IT§6¬‘ñô†‘ç8€÷‡µÄŸÉèƒÓé'èöØÙA\¡¾Û{áANÉ@uI¬Q¦Ùůªw©tÀªJpDOä´’/5þªw¡YÀšJOQT‡?23[³ô„ä 41j·Øê‹6=„ÉÛ=z…ŸØ4²7_Y»üDþ ÏǨ5_jxerÛ[0ëk0§—=üeåí>b½›qP…¨ãùùþG­DÒz¬ËÉ€uº¶º ÃdÚ0¼>6„äqoY?µ™<Ö ç‡Ô·2ÔÌm$·~¿>’ŒTÑ[]¨O0Ãp|Ùh ð‘)ֈͼé"d{wìåúÎxüÊ×<Nq5Hê¢kŒ{ÎÇ¿XCY{ŸƒÍµfÒ³Û¦h]DÆP˜¦£”%ƒ<ÔOüvX·§#ò¡!{äYÛ-Šø¨ÿ쪕8Œõr:ËV„D#ëþ1øo<úÇß7> ¨*Ù°ü»ýóÏïÿL8‹aÿIâ„ÕCÀª=ʺlR¦÷©R’S(œ¢ÙÙFô'&Ôí‘0Ž‘”ùêyn m`\Ò$VЦ5ûq:«H¥?GEæ%k£Ã-³Œð«ho¯m þ_0©ª¥«fÒ£Óòþ1S»,aýÅþ®Öq5Ôt½»¢TbÂîùkº®äÔ&†,ûC˜eGöãÓ„-suÓÑJÉc¯'¶tñ |jZrj[:@KnéÏëÙ±ÅG‡`èaбMšŸÒ«Yü8üÀm/þœ©a0í+‘\¥®u+ ¾²Ù, ›Ý0ÓZñMn; ½D¯aÚ›çX·¨pWÆFÇÛ—øŸnÈ «r¡5x3ãîegëż·xŒâw”ÃßO;½"–gÙas8.+{*•(† åðã0dž½DÀ½º|þ}Êþæãr az™­Žé ôcY"¤5Þl۽ϭÐbʲ§Ö<Ü™B›sVß wŽdowk—±YlÑkQŽr=U›6›{~²H­‚g7*ËMàÆfäÿâÑ#KT7jC׈ݓÞÛØ|Õ|pµáËÒ¸Ê,FÒâíaÖÕâÔd¨?§u½ß¯ƒMWôñOs¦,Yê#²˜dãXÚ¾œs9ZÙpýe ¾Ï>7Ç_~ùññi5_1dõ£äÚŸ¤T›YÌÑÂ}ÌEUV»PCä-Ý ÏϲE>ÇYf:¨l¡\$x>Ö¦h±½Äìܪ0è;_NF§4#‡ÞODŸ:²PeÞ «d¤C²š©³³P §ƒW÷s,-PnÇJ@BÀ5ïšßªB]œ¢L?näãéüëøÎ¸°’’„0#]*tÌ‘ä(DØØq.‹ ÛrRͬß;Š¢³2`amáwŠ4Ú¾§§llúåÍÀ*åõ‰#`üyn¹ÛÀoȰôBF[¨¥>{ô ôdS§›PÆ·Ãõ\<.…Áµ^;„HS¾´§ô(÷Y -#ÝK4±ÓÍTj 3ÜEFŽÃÎv;à]ûFÆáÝÎë§W¤…©ûéæÎv ‡0Ûr‰ç³ä)²6c ÂÞœÈ}¬ TsPÛáàqè599WY³JWÅ:þX*Hüñ•éLø«ØÍâgÏ;²ñjÇÕzRœÀ´Ôt÷H ÞÈtíÁ7ºr4ʯØmpÃ-Ìpò熰¹È¦·2ÊÇRHŠäºòÌJ$ãŸé®’Üì{¥¾ðIeír3còÍu.=6^°«"WI°>‘Þ/áÒⱈ·÷ŒOŒ´úF«¤‚¦´Xe†É—¾Bgq—z"&‰ÐÿJf»òS•MƒàÅP¼à¸,%’zòσã9ñ%ðÂë”á£ÊQ–eÙÚOŒ=Jãjîº 1'²‚QmõÑ%ÃO$a…mùï€Àt¿ÃF ¦ÙoA—5ÆNϘ&¼6èäQ9†=3m$Òf¦&k„¨=B/ວ²þÃ˾2hwÿüìÕ!É…G²¡q2ñ¹ œì„q€ A!DJ†‰~PêÞ;…›ívß?&ß´÷ÌT6K‘öù†šµd/eŽ|C3\UUéù(r1¡œ¶›^XÉ£žd: *˜^ÿ¤"XU•IþRlp0$î¸SðŠSø1TØ#\Û»ƒôoŠgŒÌ2FðJt-"ðÔ0ÎÔ¯qŒÜ{rp𵄰} 5 O{ýþƒP–³ã¿vP2ê\m£¯½Å– ìèí3¨ v.ûiÛ›ÐS~ÐÝêBá™À÷•éü(%)i-8õEF—Ájxºk1ØÝeg1^[Ìw°Œo¹µãcüwSžÿý¡ôß7Ÿ#ØÜ.µ•.¸‡£nÈdX1¾6Á Ë;àmlHqYà?¼cWuÜtĽBHÖ*æiÙ-w³˜ï—ON+ ˜Q`i‡Æ»Ð}iµQå]¨¼‹ŽŒxs¤‹Žà/ó´ÏPÅF{кï ã’b9ЂzÊSÆ÷~’vxßšZnç†çâÿÞ!eZø¾*þßןi=W‘³O‘pqcc»%Þme:å]ÂLì}Úï&iØ¢ìdëØ‘²s$×=2 ‰|‹Ý,ëøQÈtc%!ö{É.#té+±Ívã¼b×´"×¹pLUerhº”,”“á²ö˜©.wºÄ ÃïÊÔkx=^ “—§\ S²>Îe•Ä©ä3Ê=|³ +¹ðŶ<ÛE/rHÀ|`<%DFnTfÉ<_œ»žëáu.c <«>ch ½—©ž¡Â[1@Ï?Ò.~‰ g¯ðœôvø®;ä)¾¼ë^å¦Å™°ôªñÄôë‘ñ2Û«¢|f¾2óZ'#÷G°‚‚etX:¶áG"õÆ~36YgVÀ†²è¤SfÊPûêè”o9È™lJò§ (š€•¦¹f^2.‡¯½˜S¥Ü )áÍ\B0+c:®ƒý­fÄö¾šÁ? ïËÑÀîê+eV7¡]û]}ìûŒÂyt‚"hIJÓºd±| · r×FHøÁ=ÕÞ[<ÓæÒ:ý`ÔMcÕvâÉZ(¹|¡v2—}!Ó®5}Û‚½LZçÊ&ƒ™ôk5À¸KM;Tð´€… g<Ž‡ÓŒ,ls Æ«äžW5Ëd3ü- #˺ŠÃ‰=Çü%ýÑâõ}‹4Õyè©Iµ­Lïc÷KQë|æ¶u³†‰äQJ¿p°ó¤$ŸÔoŒPØïJ|QÊ—¤íí 2_¿-¹ÖÖfÚ—ÕÏêÂSU£UÞ%í< UßN–…½›4K¬¢øeZM»ƒ‰^²,iJ¼@ž4O@‘Ü‚]2Aªåg†í`ÇXDkÚÕQ{HY: .û’q–\%ã£IÁP³Ä¡i£!‰«ß ”ïoHÍ ÁÈ šÂmêÃCHɉqš§ÔX8â]¶÷FÁöã l4Yv‘Ï)—ÒÅ'Î\¾½¯JÂ!'ß½ þ¾^‹zãzGöŸ>ßl… ¿’Á”Ç8îÖÞëÞl¢9«¬ÝY™ý¹ñ}š-gE?]l‘ÜíÖÜ“ž§êoˆÞZ\Ûžz]G#í±VD #¨K¨É쀽|JØé8r%Ò´Ó¬ ,#‚ØØmó4(Â;ŒššRˆF|ð8kçG´'†·H üm*KyKâÊ}Ãò>唘ƒÒäêÀ±FXÔP)ok†1´JÁ‘³A¾3L*Æ ±¯ë¸A“Ú!¨ó­ªQwS â–U.< {Õ+iñìp™6»H\ç¡Ïvù‚ðjY}ÀÜíß1§ƒìáá·0°¯6~Ûžd­ÌûÆ™;qu›È,¶Œ¾#àÔTdM2'~“¼•vêP•½p°Kf5bS´âž#±¶æZT=)”¯ÈskÙ+ÉC:ÝÍ5ïžÓúhã›´ˆˆ—þ˜“m§¹2—1Û†|¬ÊÞoŸeË£eÓ}ë(ú_"¿§Ý‡Î[Ý]ƒâ–j(À"I`!ö„Ë>]‰"g1Z´êûÁˆßܶ鷛‚GîÀíØ3FHø»¾Àn@é¾—é³—ˆ} \J/Çï;†=gŠMÀµTt̪ßqRy9Í×Í„ ñUFÅ"söG µâ`n#d6Ïûf[çÁeG•¤ÕtðâŸkØQô¡f¦&±øM/Âæs±Ÿ×ðQ¹sŸVN¶*Á:ÙžÓÝï»û~î±hO‚[í­¬B6êoáZ7ùŸ²åÝŒÍ𜠽Å%éíc'm»4¤õ¶jÔêmq†ò;@æo´^ÏìP¤?ã±ì©¥3#jû>‚£4uØÝ…Í}*wuÃ:PÈØER?òík´%WG]gZÏY3™Ôç…Á•B»ÉZz¶µœËm>ÖÊRÖ~§»÷­¡lçÉ'ÈVíïáË¿T§ÑAp¶wÝE=/(w¸œ=fZ(µ3¯ÔÁjh¯ANjÞº5!z|± ð“i‰cÿØG`Ý»«ü""CƒüIÔÑgïsÔ±óþeŒà¶…š¸’Â,V"•.L°è+|Ç]µÏd;ÆôÚ«!+@kj¯zÒ”ÒÚ–$¨M®ÿ â¥Õœ²ç#ÉßO»[‹­yOpô‰‰´±È(™äBÞ½>ÿå_?¢$;×?&eî\ÒÆñ/¼ ŽÐ$µ‡#«£m`5áanõEJÝŽØl8é«ç¡pbƬ8fÖÓŸÑØ¿ÿ$1°éôHBêg|Y«¢_Gå£:¤´4/õ(îvËnj f3ÃôUž«Eô}c±™0¼SÔJ›#m¦`6rm¬£©nâæ¾ôµ"û“VϬjÃJ?!žã™œ ÿgúCÏŸµjì™w…çÓŒ?#C¡Ì¶µØWû“Pt¾ üÂùˆ`¾‚<±$M½î>ûqGŽî—œ¹UôÙÖâkw%|Íyò¤@"OMÃ3íQ˜,eT‰ãêm…L$˜Ò~6£oNMN³÷([[p#E‚(¯ÅGzÚíœæ:wäÍõxè`: ÒôAæÎ­ºEáwëaÍPÅNd«z>$S~_x›ƒ² °Ä‰Gå±·#)u–Ãm¦ìö¨ß¶/wŒð72ýDÄŽv’x°ãA}b n Y[ÍÜ:=׎²©÷—˜—"4«¨¿Ì\UŸ¸JÐíß–;58»ÉÛÿŠ À½7±{(ŠŠºû§^ñ,ÝHã(¯Ü©ov½ï°`NÉ”{O?ù¯LÍ¢Ýa{ÓÌØ–ºi_9Ž4 ~öJÚGcl³P˸x\¥n;¿ ;±oC; » nE8¿AÌ$,f * o§¡w³dÅ13ibê,e|²¸ÞÇaƒ¾ ¶”k˜\\®ÛL†ƒª²q‡,ƒõM?¯Üºÿ}¡dΩ eÔ+`lræb|Xã¦ü‘¶­¯Öö<üä–¿R%ýrÔñh´­èÍØ‘Ä=Øh5Üæ‰Ñ xpãÕ×Ññ¶ßžaŽ!Íú/Úùy¡”š£ãID,1š~“â6A]³¾Ç·°­¢´1Z7ÄŠ“F€§¦¶#PÅ:‰äÒQ4¼¡Äøê—nÑÀ2Ý/"rI¾×ûÃÛí]œß~΋lÌkßä!wýo=YƇÇ|¹"HCfEm´û Ê.k{‹ˆË€È’# ø$$mu€_ª…îPØúÙ%B¬xö®h³Û³>ÛUxçdV¨ˆó#êXjÇ‘ÿ51[r4pgLð¨°ra0²u§ÿ =^|óÝþ‰=Ç{ð×±ÿäƒ9Çì°5Çàoc ÍKUYRð©ëÐïØ#ZïE.g}P ï¸S|öG¦°:$›Äíu=íj2k)ØïŸT\ Ï$§ug‚à¹m!’âS­“Ìwáãsk†ãí'%S›ýÎø¿ëϳ$^|Œã!KùgMeʽ8£Ri…ÛŠŽR-ü¸Ùn·¢’ eZºœ9þùñOß?(%$c¤iPüÇÌ’ D—„_„¶qŸxoÒ¯öUˆ’q¿þßì†×ÏÿòËo|» Ô£ˆaVû4â7üÄÉ»¤C‰: »9–ôa|:½[‰!Q( ì(Ð:¨›¤‚áŽ#f_Û:;ðÇxœ²Ýuñ|]Zé 2ÉŒ²µXö„¶ƒÐˆ‘q™½¹¬v‚ã€ËZ2ß°•¼ ¡êÎäÌc.„ÿ ¢£|\™W„ ÕivÄ0ûºc(0_ð+]ôÇ<Ý=É` Z,Eƒyü‘a§Ñ™Mð\-ŒË4Ü¥YRü*@Û—åñ_G]€_´©²ùáQh¨ULÊÚä{I;Ñ:¨åI¹Ë´„ç@¡Ëo±‹‡wóe©5“­ÚW¡L³ÒYÞ°úä¹î8WRï zîÁËí*N6¹T[oY#ŽŸ”Ó„Un½ËGæTFnPÓÊŒá,°D=Ä·’·¡×Ki; >çRÚWèôLØ­Bt™Tަ޹ܵ¦Ïìk¾&FÂctQ ɼƒÄwª¥(Åuïe>´X„‰ÈÒT0ÉÁ@S`¯w\>%Y‡ŽÉ•8ž×kÕ-{¼¸sAƒiÖ15Ðåã Vê%°)Àט¬C÷üåù‡§ß~ÿãûü’¹ñ”hRy„¾™—ù†Xêy½¶{ ù$<ã5‹ÑÊ›%¢7—RY(ìŒÔ ªx|gV™8±Ýe$‚bå¹ÖÉ+îMì)Ëš3xð˜wFà‰„*×Xšôö`ƒô!ÔÚÕúrþ§Þsù,•žÀ¬5•÷¶økëßïã>χ…ZXW~¹ú%²¸Ñ»~ÔûÒ>!¢\äºÌ¾§Éó Fú»+°ÞxR´rOFþJ®ùÊ0 Æ$%Œç¦$D¯%ðç?&º0P¬Ö>aÊqQwkj(A2-–q€Ðé;s^ÀqXDv°“–ídæ0^¦ »ÂÁ݆ß#ªÐ Èäqã­äO_É3Xâ5F3÷̰|<Î|»[Ø¢ŸÃšŒŒÃpÄr•·Ž„gÓÂpØtA+»ñ@Wƒÿ“×+‚y±Ðc)½Å&Å5cmsÞ¥pÍ õð0¶äª<’_¥UÀLìs)鸻úôà'úö¬+3áýnÊK ““Îô•!%JPØù¦ Ë=ÄÃTƒ2qó©›ÌMh ,Ûˆ‰–Põ2º»Ÿb=Ó =¾ˆïÊ×pP pî*W´3R¾‡ëI¨íü¦¶Û³¸„¨f÷`ds®U¦ã¦Éb¥xŸnƒÓì'“£3ÕW?ó¤8­µÒù¶g9 ;Äç¹ò`eµiR(ˆ;·ÔuûEût%‰6 ÂF9z+×€%¦ǪÏO=±¸O¤*o0œ|œ6Ÿ,‹œî¢Ã˜ÒYÚ=yÉl×%)º6vZ·¥¸‡Í×HŸûmI78Q1ó¨qzE™÷ì#‚¬dÊä#bç½N¢\ë¾>?ÛØ=ÜéŸÍ.FÃÞòí²lßúšÝžŸMN°þTœšU/€8ZP ’/LàGUƒÁù ½[lR‹€«;ü| ÖAÊÿs©~¡Ø.Qj‹%}â  Àºë‰S<«M €+É<£í~?CrñК¼™unÁ»µKÁÛÏ¿/‡Ê›ôö»ßìÒ,vµq{§¿xpKÎD¶Š7N–¯j@Útk÷q.™ÆY)X6Û=6rÌ ûC-£G Ï’_v©Óï6.tÏ­3­Œ+âÖŽãݦgR*® Æ}µ]³ïYa¼hïãVþD3—5¦™«~…ðªüí jÞÅnÈ™“1ˆô•ü`!ën÷£vvlÁP™k…¢ÀÎñ›Þe‚0âXzZI½ZÂ-•„¨4 ø÷æ#\‰4޳ì9 K°ùä† ðŠå7'I±qt’Ž‚›ûê ç“Zž&¤Bkq´LXŒ¨a~¿X¾›[Û4ûðÎÿ{" ¡B€[)ÄZØš 3ª_TÒ¬ömfÉ?Ý´ÈdßÔ”öõ@ üp£*«óR0øŠGv°FŠh}Š«x¸¹ý‹ldâ9NOâQ#N×Ý|ú :›!ò¥þ²áŽ1²˜.†à{Ïaþ à)õóPbÔ7jáââ ÿ]ÎÐeÃ3”3ñí8f.ß‘Cþbì´}¼YM¼E£k嬲,È·B#wÃt§öL“©Rßç„6ŽÐÎ éûLõÌûë]5žÚÒùxœpÉáúMº¯lX_áØ˜þilQ`íX„ꊦ@„VE€»R|+ÔÃ]%Ø]X¡¦óšªÁÎß{cŠcÞsÖ€ uG÷h‰”´ê“26¼ú6h&µJ0¯À¦V*Üà¤"…-M6³Qé±ø¤:Y­Mß2”ú:M3mÅ„̳‹¯‰ï¯£ì?ÓÚùöÆpáxëH¡î1‡‘¹Ê(Þ û85 Í—ß~|—ë{ê6/%À!·|HR%åì`_Hƒ)Ýz Žæ,è“z3¢í[/sh ®gÑŠ¶p³Oöø]'Jb©Zo[1°{õ®ÂfÁ€fɾt>¼sjpY‡Q,ʹ¢ò¬¹J˜'ŒEµ+†’@›‰Å7Âó`åØÓ=…ílç†á¶ã’ñ]‰Ïèäpªe˜¦ÊyOÀº‡‹Ó²!q¥îX$ ±1Z#ZᶺÇW0.€ð}I²úƒÊמ££‰…»9cIb-©Æ w@X9Hv_+”zü[ˆR99+d±$º—9ĵïJ“]™—];¥Xýö¨Õ·îjlí3ªª¤P™jÁÂÉ#íXVœ©WUŸ¦Ï‡;eɑ̣ÝùOo#KU§ç±avó²M¿h‘6*-} ôh¶ƒÃ¥,á½qÉ€)ú>ç¯#'¢¯¯åTsú?h –Ù¥Q0K–šŒøÔAb”aI»µw=g‡<ÅnÒˆÍâ“ä9÷ÎÒK®Rkî¤÷=ó–Tƒ¶c9÷“+"•Ji “$¾… M¹ý…X¢û¢9¢¿I:Áëèáo}·ª¦ª I@v/ûNñ·¿éáÐÁ¯.ÂUj2Ìx…¾aßÃQ)F[ g!2|@ Ȱ¼É¦IaO…Cò"B#„ à)&ùE0¼pS Yó¦¥k:¯Âcâ_êÈ|S™›˜Íž¼P.lí¬ÅG¤³fˆŠ&Å­³§õfl]^á„Ä«ã‹vR1áxÕ%ÐÏÙ³f³rH²YˆyW Áx»£XRªWš¨ >z—Ÿö&k2.jKõzHm={1]µ—%U*’Ôƒ$3Ø< =*…”=û ¨ØrߢzRø«ðwü?~Ÿgd¼3M¯0è{²¥·Iê8œè$•”*š‘· Æý?óz¬M1mä#c$gGñð”Íu&‘ZÞ©ÿHW˜k%Ow¥¥m Ë}{¨]F¸’Cß¶•sÒ …ËsÛül·±ááæÁÙ¤H’õÏ„þ0%Þc<÷: €É“Sa·;êÙËÚ;í©o¸d­>(¥’»Vƒü<÷FA'¤èô‡< †O?=7ä‹‚³Õ}Ó˜à#&pñC`äÌ“Õ\ø©×??~ýñ?Ôy¨„=BCR©;ÿÜʆIUxò“¾æá@³ÔSJ¸r‚áâ¡­-,“*éÁÔGa…\‚òiq‡{ËG å[ŒiÎnuD?+gl¿QØ&ç|ÁÎ@. *ha&¸œîûWaᲄ‰ØE¶-® ÜZí@×Ô'Ù~»Ów_âL+«8eâ¨Ýîí3§üNˬð4ë *Æ­Q§] Óbœ7þ+F°pR*ºÝð,U`)îé&¥pŠ¥‹ÍgQ.BuM²ß½0©X6Ùz) ÿå)™’],w…ôj{î‹Z¼ß{DoôÎ8bÒ¡!¼´ìõ/ÏD §Ï"<¡E}߬‰·ã/ÿê1S¬é/@V`t|±¶M¬îÖ­)Ð`&CÄyi&¡W;ëelQ-õ‹93–‘f/6=äÖr½„ÇÁݱ¡l6ö‘uÈq²mHç(L®`ÇŒw\HËÁã "]Oï³Î’6¬ÚŒÛG¿¨U„ÝKÂ5>s(ÃxE¦ž!È¥½*_]-„¼ÀÓýH³^lau?¬lš’«Jxu¼R=|Ñð™1´+GépîCŸÐËÖðZsÓæ™Â¬{ëäÕÉÏ­cƒÿMÒ’ô!;+ìÎ&1¿¼¡äßÄ×â‡Eœyà•»è°»¿Yùë&žB—Rß[ÞWû]LàÖDæ+ã V*ßû‰2Ÿq¨$í%~²Åÿj_ì5þ¾_N@äk—éúÝž‘/ò¤^Md˜sάj¬BV3xà¨5ü`èñ^W*Lƒ¶ØÄDB(,¤mTi-à…þ64ï)×0lž‡·z.‡¢–ÑþŸ…í_n¡'Š}VâdíåcˆaWÙ#€úœªï”ÝB™´‚á&»Qx¨‰ªN¥pDˆÔ.€ýyAÊušÏƒb ÔÇm7/_EEÌâøðváº.…è±x¹›ëÞbdC «¥[—35LÈå¨<ÌæGÒ]&ŽÁ2õC Ù/ùòr˜öÅ®äøËã÷Ô3Þ*ä>Øùº¯´!mN¹Óçu|Z2T’ƒ`?åq}f¥`Iì9¹³÷GI©4×ÏÝÉ”§k$½ÙÎ42 YlB½¿žEš­E ÒV¨™^ð-/_ÕCvƒ÷Éø%0¦x7i.I—Zn„uy„³í6#0t wJ™éäÍP}õÙ VíÈÖ£É$bÿªÙ,Ä×BuÅ-°;´iXÚRXÚ––Ôòmz(î‡om 0Fé©w~¶e§lk‹N´Ö­Å)7·ñåCã2­†Ï½ÿèÆ¤¿üWPÖ «Çžì±§èLùI›\®Cî–‚Vê³}”-*ãA8£D¤ŠC ™gG‘ŒO?ï|úõc5[WLª©£À®Íãh7z-¥¹‹ÆB¡ŽtZ@ÙíîÞèÔ&þ—$„Ò^aƒñŸ¦Òåt#ïn\}½"¤fN9|™eçM0¤«Ml 4UŽE£d=v:[8×뼟ó¥Ð­ãÜg¯§Žvë¯al:Jf¥y>È M!OáÁÃÑl¿jJq‚L.'¬ˆïãF_—K¯Oc¾Îºã·ÄT)«›J«6U©¬±~‰W\åFc…3¶òj­ñ¯]ÏM±nqœ•öf7¥µ)ö6’®ŸêÊ<ÏL4¯‘FÃvÔ 3DÚV¥·x\²ÒÄjߣã1o¼W¯Ì]“‡+n”Ô7(‘²"$}„}¬/Îÿ?Ãó鿜#«…ží…ŒMAªðÂ5 :$xØ [çÕ27'b&­`À­Åè›hbº1Þ®ÿMs4LÎ[·)ÕÖå£]š×ųä[i,e±~RÚÊrK–Çm0Ä>ý¾´KØòÔâ©ÊØÞ=‘P´QY“™&SgÊaf/ÇF=X÷ýg°‘FŽaÁêF„+ä5‚MEÌ+Q_"ÉÝ\ªT][‰‹žúžØ#{äÙ] bÉÑcjr0¼Î}äy`°‹?JªMµLâö!>õS¶Ùk©²>ëPßSƒ¹Ãh ¨ -ýA_2‚醡~y™ÀB„?Ï3Àò­¿TfìWJ™$ÇêÍywÚ‡žä#3Jë_VmJÅÛÅ »Yá½Nå^Oûñ†*í¡åâ<Ý®Ê (-BzðÀ€í ô¤×È…Ò½ºIʧ»ÉÁióÍâKå g†pÛ#×Ãÿ)—WâïNª¬•ÙxÝÌlZ¬dMÓ3}~(\+È7ÉÝÆw$Š"ºÞï6&è­5YÀï Å5é+^áò7Ö¿p •¤ÁÂçê‚g&õ€øÖvAµÂ¤ mtÆØXw=Ð^^?rãIRåÁï×p"¾ö¼áŸÅ& SÙ+ÆOâаwÀž¼o¥¨2y‘h©ÔÑ­bè¾gš×ŠQHO×B÷Š8ý³öa[=[i²Lþ…PhÑ_ª·ÒÙÖuÏ!$z9ʹÕèÅ’FÚZëÂåm®·¶ŒNj1Ǩ­3&4—ô£.öüP)hµ3ùsx»å„¬ØÔ˜^ßL ËÚ¥dZå£q©Ô~ ¶GjGu—°È¥¬{‡8,ïîñÌ”‡“U˜,ªQ@ŠGÃÌåWí«ñn&-à8˜´2k³pÓ˜(@pRëlnÛ býxXwE1ƒ:¨ÿ9Ϥ­œã¯áºr¤ íJG0æŽ" X¢î·Z;¬_C±Á ûtÊ{gìàXµ)ظ’y¨™GºhÆ¥™O’·lóÛ›fÏ„Ok£¢‘®ºOžy|˜Y-ôfýf|="ÝÊtÁí3O!ò¾â¸ÅAÊÅsÁ#LÙÅtÁè>MÌC¹‹Ü®ˆ?¸Rx{Ð*ÜCEôLÍÿ$œª×éÌqºá½›ÉÚ«£¬þ^³b3áǧüàH4~”‘{tþs†cè ôg™Oq=¾F0s»˜Iü^¤Ç,0¯T]‚ǘ™¦a,©ù-¯i'Ž[Ôù*˼¦4tJË Vé¢ãî5… ÉÔ\‰…®‹mÄy‡t@qƒ‰¿åŽöçXk»M× #iÀ-/Øœ¬ª‚¨S5ñ õqhäÌpºe;b½SDر©ª£ÿå`íÔWÖgo sAŽtõU°šP1ûïÜœº””‡Çé§ Ð*²<Ï¢Øqøýà×i…qzÁR‹Þ½ÖÂØïtdÿ‚@Áêmþöºc°Öœ"ÊÂoü9¨ñŠ`†·Úջ”@……ƒ® 2ŠV©ÍÜOð÷«K¦¥ s]B`µƒH¾IÙ壮{qf@ æõ 9\£xÆPS#[žÀI ¿ÅƒK“„ÞsÝ{’|9ô}ø°Z%®¢~mŠ`¤˜uAy)eãp-û^3"ʱèËÔ6øC âI¨ñ7õ§¼JËÓèëi§•ÐȤ«ì}ØNj5gËÙ£: à2é¢P%£xLZ[y|Üa¶È“4ÛPô)•ø-^¿Ÿ¼BM\DmËÙ8Ÿÿó %¶`?”n—‚VÑŽ~¨þV£š\å½Î‹#nèˆ+9Øz¬d/œ5Ó ö¸WƒK‰»’ˆŽJÜceO7,髎/÷80ÕI xÛV’tü×n96›±Sÿ–âuŸ>zÕ<þò6“säey`91Uî´¸D«×,óM¸xÓñKÔ?ÝŒ:·[œ%Ç3»/k¯ÙnÏC^zœšgÖþS;©{kó^÷œF« „<.G¡éŸ¿§!õì´\,NÁè7½0¶w=ª·},O£ÂŒ£Ò•~`’o­Y¯NTn‰ø¿„Ì |â«Ç_–`£û3 D£ùšÓŒiKEe2AÐö«èC¸X«À(ŽîÌ„niºÂ¸µanAá÷Å})¦·Iïà ªBƒh7» iFewp¦#$og]DM”â5n!SôFÓbt, ½iD®kJ›>EsÓd 7X‹ µ*.VÕOgg=\ŒÄ_¹d ÕÀþ6€´È%Â2ΦèãÛRñSš¡ CÉP&Ó\&Cäö¨ ‰ÞÈ©ÏEÏ;(èªïIÒeÙ.{¾0~Æ@jRÆÇÐÈöUžÔ5ÀGõIüæ#˜2I‚B¬½‰6Y>ÅJ;à~Ô ‘Iª®ÛSÀ’ O¿][u^[UXJÿ7¶‚›8’ ¿ ¬\éÕº'7‹$…ã;êòHì£Ä@ÊÊiv…Wäo¡ÀATó;ªzI‰‘x,& ×—¿ÆûÓǯÓòd±PMgw)RÂG- à­É1{s•+  Ø—/›ZM~x©_~î‚FçhÔñè=›~ÇoèºfjÔ•$[›“-\ÓæËóó­BAúMuŸ˜QËe”]:D°‰ÃìQ­OìKÅ8¦ó†ººÌº¯fëè¦Q‘õC B“µHÖ?üGH$ÁŠ Ö2Œ´¬ã?ϳÚõyðì_,²Ã­¤P>»Xý9üçDh['Ñ£¤‡ÙCÉÞs—þ'=I~Qð¡ueŽZeT¾ví^Áx©p0S\ßL‡ÐZR“7ôS¸bõ1ÉÅI¿÷õ·?Æ'”Æ¥üç=œÅö¢E\*zX—(ÌnÖ ˜‘hÞsܘÀ°´¯I£Ò²Ñwƒ FÞ˶ŠMÍ%ŽGû£3Ñ[P>¡°µS¶û”5£dý}ÀnoJ—×F·Þ¨M‚ÁÞöàÖ×¢4©D?íZÎ)ç½Ô øÔ(I;ØAœ´"ÅÏÏ˶:_Rà 0°ØûMŽx/Üèˆ*¢] 4Ùù OFŒ²þ>©å¤—žØÓÖ%eamÓY‹ÃsÌðºRPáÁ‘®­RI“¯,Y‚ç6¸d}CÆŠi³ñ+°Ån;xÁ=Nð}0$‰ðý÷­•CÛ[Ó¥<9dÝEk(í—/˜‹WkôÏ(içf1‹ß@K©K«8䓽5þ|ü×ÑÕ÷ DLm£ä3¨AÈËhf<Œ¸wìLŒZiî6÷¤Þé*d÷2ü…Ø ¾=ïL˜øÌ lz ˆìâ|;Gáh). ¬E?}Ð"UyX5±zH*ˆ²„GW0-º±Ï‰Š.||™¥†ÃŒU¢ÏÕi#Vçö±òm¬³Çq&çˆ ý×+"@SÓ¥=•dEY!©üž]PƒL÷ ¶óä÷ NnsɱQPå乡œÉ#Ôvùo<‡æ1 §n©åDõRDÊßhö–´­ÇR¨.!Ù÷ÃÑöbüÙQüùƒ²Áã¼>öºÔût&gCMI‡¸µR›ÖÉyÝöL{¶µÿ´o[ží†+>žsQãspW¾`DWO5Üð¹"xŒ2PÔƒ†î¦[¹{0 ÿ¢P%¸ v.Ø,Å5á56HiI6õjí"?ÁLê6ƒæ›šñÑ;v‹TêìæÛ^{ù¡óžÄ‚np@Û|¼´UŠ¡qâ “;Ó±Yœ@3y ÔXq¤5ì3U) ¿]ú°åvcjÛQTí‹ëí>cF|‹aBìË¢•Úãl¿mhÚ¤ õŸ‹á³ÖŸ¬_tWnr¶U/æ#J´QRX­yRZW¿w°æ|ß~»®ï}xþWüñåããWüøT"³Íß@5 @n®6ÈÒés?; MiQ WìPždf¥ZvýG®ÿºElrÚ»¡¤xmžî„EÝöŠ„ÒuÍJ·¬·Dü7jŒ‘†]¬›ÄÅyÒhÉ„…üºé®'J£ÙÁ+?4æu ò÷šCª°àíêqÈÉâÑýÎz;›' /$¸ð`˜ÎuŽ‘Žì‹À­’ƒ©žK5¶#ŽðXpG×êr¶†É×saQò veޝožri.—vjËíø]Ô/-Zà¿ËWjðÔ¼®0“íã B³É_ýuÈiOŒ 7{ã¯sÆ_iÞYé €RI…ôaxËÌ‘*£Gò‹±ó®ìa4aÒÎÅÀdÇ\üy'Í~…WOÆzâTS'Ⱦú ß?^w0‘†îµ~|ë þ%Ný¿—Ñ•|ÏÕ\òÎj{ßÉwÜ©òš2ÿl`ÞXZ«5T»hgSìõô…’²Dó,Ò¼;ÎIÜþCÌžö#‹‹øê&3[ÊàÈ…ì÷«˜/S|//!STEªÄDfRw¥äH‡ÞEý»Ó÷e½“ÚO3ií´éxŠœ;£G0ÿÌàbÉÉŽS~‰Ì­å-Ó?3üí‘ {.òoˆ Üq[aY[—÷—‚± öØmnÇXH(V<Sõvù¨b Ò¥”Ïeí*ö¤^j¸á})5C¹Âîg1:•uzÉ©¡=ª+ P "ÅH•׫”4` ‘ëáotäó«ö¼\a›¢Sß•Ä\qi¶»Y€!K Çßê¿ÈíY­ižâ(M•ŸûðÏ-nNÈy<Õ7 nœÁžÇ°r¾CÙmØÇ î•z`Ã,R¾Xe%ì[r\OÆ[uä½ý¾µ_Ó,"O+œÊ´xt¿× µçsm²,$œ.A_E>Kß &ñó¶+xaû•Ž"ë¯E—YLF×ÓZ]©µˆNÔ®Ýïbkˆ¬*\•G5ÄôÒ2§öâÝ#ªJ­#:Îú CfÃw¥(Kx%‡[¦ˆ§²•§PŽˆñN bGJBÇ­¤!|¤Y®..ˉ8lë~ì%5ʨ²·è$ˆ`©qÏu©U¡„,«pè¸qT>‰ovÛ7ÛåM]t\ñò%’ùÜ °¯UÒçÌ/e¾È‰K'ÑÝ…Ã9,j= f²Ÿ’›¸¤rà­ºL :óT!tL¶¬Mû¤ö¦Œ{¯´®¥]%Œç^;Ø Òäý»’²“ˆá†ÔóüRØI’Q:®Î½ÅfR2°co1ºfÁk¨ÏÇäá ¶œñ6UÄÖ·Ž‹f¯‘»S•}dHR~Zoÿ‡Ú!^¿_fCL¹CÚ³O—mñ=쬤Îu¾Ÿ$§áaĉõ9 ÷µ±M „‡!„ß»õÙA†æé„©ˆj^lSf¦Ó +êltPÄý¥f™onG)<ãðÄ}{6œŒ#yW²;üu'©~ï3wÐm%ò†À¿Y¿ŸÎ.YŠ‹Üpú³%?3êØ BX='›{C‡Ñ&únH`sæ#Ô™?·§"lÆg®“ÛJ)«ŽÏ]iˆÙé˜$!ž`#‰êÿÜ çžM&¶ƒßèiÍPïöÞQˆ“êX)$í©3CqWÊo<0ÞÀ¬È{…Àû‹5ÃM®á›mÿf’Îͺ QdU0ü*ß–pðÁè¦\1]j=Dç/‡ÖvÂß ÝZ{‚ÏøgtÏ+íLlÕv ÞÁ¡ÖAØì^?ÃÌ+·¶±æÙ‚Zéöÿÿ„8ÓQdm»¡ÈéÆ"ë«”:Ÿ¦J·&2ÜA·© ö#L‡ îç{Þ ßŒ5|)À*HG©JÐ(s5&çÎUxFkãI‡R†5åÄZÃРªãÚÏkÓÆá#ÖÿÞìAæjt Šñ™Ú+ ‰²õ|Nô¾ ?Ú¹ì(˜’ä³bä½>ŒlQ fS#aœÐ÷0SŽ”*TZÍ3KÙ*ôî”K‡ÀUS¨Póƒ}¾Ž^ìÍd#k:Ã×jÌU0ˆ †u¬ú~é[®ï2á>í9¼[Ì»[¶¯¶—’w…·[Ü’Âé©#´ÕªÈä©lYZTi–)çwÙij#)ZÈâÎQ«Âb=« øÃÝŒ$²ö\RM †Nì;q¶W˜ (ˆNt;OÇm)F±1²=WŠïk–«±R4ü!Ày c9©) éW©íX%­5eAÑí0\Á„Z;'«¯o·Ìþ]’»¥¡3š±ðýVQ«»<+( gEq#£8ùP3F'G„9 gIÀãQ 'ÙË$ØÇFË(‘‹ªmH‚_°¹`.)ã/¸xÞšÉùÿ‚šJì(ÁåÙGü,L¢ä‚DýƒŽ`²^³ÏÄ¿åy¬áFgÔ¢ÂûÕì„!¥“Š :àf¯ù§g9Ô/ 8ËIõ(¢5AŸºËz½N±×”Òþ1•“ Ý«œeúÚŠMr>j=R{Y 3€Óð[±¿ò¢»/Q"|°¾*· ò!¤Ç@õšDÇ÷M|÷Üs€rƒ-e¥ìý =:”äº$¨(™=!À8vªõ bP‰ ¶+(ë&‚Mk¤Ôç×0^K¹îx“GÈFLq¤ÑÙ”Ãk˜ …š©ÅÏõP*XycztC߀âZN½¡êv«1¤¿.úßÙ•3íóÆ^:m¸ ì"⢒mz*Õô›$§xD"UˆæŠyfš>\Í¥K…VGÅ!*Çó8£ðè·ð†Fáú·~ªDZ࣠”[¿†è1pTøœI@w¬ ßôÇŒ‘±‰ ­©ìàzÁÙ¢s¸|‘ŸbÕüo~ÊÞ‰gwäFDñ¹@èôecpäázv¥ÌÁ\ KÿP•'Œ9Ãt4°îeœet»îá¢À «Øh–ˆN3ò-‰€Ùxþ$5šƒh¯ïÉÈ‚Áy”S²U†£cOPÔ‚•êáðPxw´ o¨+×Q“-ËI2 2ÃÚŸ6óìIâL8ZkÁbF*–4á£Rw8ïêWÊ,t j}ÁhqX#ÔdÅl úœ:¤p\Å1ÐÇ7Š‹vç‹ë91«i;©1PAß>~¶ƒYïý’«ƒ,AšlGÐÁ*ùöZÛgJ·É{/-ŠŸ>ˆ¢ÈðíÖýâÚÐÁpA þÂT,k”¸ƒÿ.NU²qÏì§—ˆÌ»½ª}}ðº5 ` \#)é0ø0°%rk–R&8ØofÊš‹Ó˜Ól€ëdz9ð&§%ÖõëÑÂùå€gáj)ÕVuû›å"ûÙ•/ï'[{þû :®n†²O©Œd …êÀö• S[CUeÚwü±ŽëIõ"~AH[AÄ£/BOPgšÈáâîNf¦& ÒÜéÑ'â[{=ÆÕf¯^v¦Œ;“°9rÖõ‡ÃªªP£šIc'<•?2f¯ž¢“øŸ¦¶¶\µñÿÙ@£X2–Ó-ËÝ‹œ+6CPä’=•ΧgkÆPtEƒ¨Ë¨ˆ7øSÜ"ºØNœÖ´ÿšg´.z༢¥ÖðËÜÆ¬hp€oNuL¤šŠA ‚'Ÿ²èðU8±@~þ‚i·à·\ù&Ž Å×…Š€j8SX¥2a: Ð…ž'vj…+qNp³k<ÆÉ)rŸŠf· ]¤3ÄD»+(lK·Mó]Õ/Ä“ÜÑÒñšì“‘3qñ0†0Îe}˜È”r·H±‡š"Eƒ9tt¢¬\ƒn]ÔwÚMõ³‰´¿¦Õ_ëjúÒ(Ôµþ¨@N8i¼PH˜UdbŒ ©>8zm ΊN˜å±«@â‚‹m.Ò iFéM‹‘Âë ‹|-XOïä©”fJ÷âìÃî,¾%¢kÙÁ|5MMpKn^Æn §3Ĺ3ÂÜ"ÑÏǨdwíêãzlMÒDZÕÊø-5Œ'ÎÃ$Ø!ü¨$ ‘ZâpàDêo§&8ÿr_Ûn ôH×A¥™³ºL£ÖîGùk¤ô :DPg'a(Çm˜¨^Ìõ¸àŽî! 8ò¼œ'ÙîŒw†la† Kñ0Öà3Зj˜\Iê0V²yÜÞêš¼Zų¥•úËAkKd_Üú2t¾ b” á]½JOûè¨þ³„Ûw½TÒÆ1­aË,£Z¶N@xŠ" ìœuѾ‹—yØtmÆË·ìwÌÐ< fÍ­@îÀ¬Ä¥H%õkC¸»£“ ±0úXFR× oµ•)’¸â>8PÀù»äÁA…yîë_àÀò…tÇ”4¢ûq@á©&ZBÓk¢6+œUÅ%«gg4ö†±}¾_ý:p¬ftµÖÆ>œ”Ms»e…}_’Å•œ×IÐUwÌzŠ o×n¶¯F%<*­"œU(Cã;%ꕵãrº6:´ÉÈ/²jw¢’qåâέº¦ÎTÔŒ{ Êeϵ+!Q"æ¤&Ø~ÕaÝñ “·}: ùÔ¨Ca(ÌתÔ%6žòpiXCÍTǺ ±öjvàî/o¼½ºzÃ[{×Èyeèòо6s™EÚ^YT£u› ËQ}/ŸÚѵÐ|œñd;„Õ¤}jAËò"œÎ:Ãk†B$“IN3ú™õ¥#üõN¶õL¿*[`_oýÿOÿƒg-;Þ[½rÔñVM¸‡(Z°î¬“uàº(aÿ¦«2,wŸ LŠJã+׳ [ŬzY×N ð r0„¨òP‹jYC}1ÀÆR•M' vpøß}èq]=×HDjE먛Äïa:ä÷S¡¢'WŒi 3>KF¾@ÁzwH¦U ØÏÌd+!X·ŸÔ;ÉÆÑÖ·_4èÄÀ™€øš—ý>‡—ððç6µŸ\'‚L í³Öî×¹iÙ¡êã䔞{I÷ÁN›XȧdEï5ÇÈ๛O§ oÜ ÎèŒ7‚ÞýÞuhñܧ ×”än™³GP]:Lvêq´ãvʯ;çîüŒWƒVöI{õöa˜u. l àÚFžŸÉ8‡žå k"ff|¯¬£î†V‘µë‰Rÿ¬jÖ eŠoÒsÉ*Ú'TÊÃÑlt[ °U)švv‡u»SiT!çª0’ÚN ‹¼¶„bâ.ÂøÐd4|¡HÓj½âô6C&.w4t•‘r 9a|‚Ë ÿ쯃IMËS/—Gª7(ž[/§Þ› =.´ïRìFö4ÕfËÙUNP),ô?@5qÅÊt{7¶œ‹eú&¼L¯j»u¬NdPgÂ+^ÃÙƒtfW y&(rð‰ª{GÉÖb’ÍhA 80#¡á[‡{Fø.¼YÖ9廨 ÷æõøÚvÜí…Ħ™‡Ïº=лÑ;SoÑRJÓŽu”qÉèD)&ã0Œ0ŠÅÙØ€É‚!Oa'â!õݼ[ç;{ÛÝ»›ÆYiL ¤cE³ø=ÈŸLíÿöÁâ4W7d}1Ò¿VÊ.j™vU¢Ì¸»LôÙIxžY-·R:?K2£‰j)ÙfBz%«3&[LfÞ †Ý ³Ú"ë«áç“£Á³¹wˆÉ iºT&PVŸZ¨œ†`=¿G¡p‚ˆàO§#í` ¬ö ,­ÏŠ¡mŠÛåöÇ Óì¶ ’<(²šÒº>‘ufM2¼1v ®ðòLkGÙÛ>螃5ü_:PÌñv¹¹îã†Ëüa Ï1án&óc›ø–ˆª+íñU|'ÕŠ•‰1ƒv¨<VwZŽ€Y}Ÿõla–˜ÇC;Ùwt FﺙYý6–o,‘M³OgJ›'Z2À[œ»}7ßáÊ5_äÞ‰8Û²£t¬a$øNh¾óWÎ5ãYh?Ͼ7ó*§Ag5A4'qSpÙöv]HÆEž«Lò0ÚH‡ëËùRÌ`jìNÈo^¼+烪‹?EAÔÎB¦Cœ›üØ“æI¾‡Ø™ô®ø2£ ¿ä*‡qç*$X/ðëÅu‡vº —xwY÷ ã‡e­Ôž¯ÔW3ðƒÖÿ¶ )Œïޤ¢Ódz«0é¿*F=It]†­mÇtc(—¨ŽGƒ4¨ÁtØËÖÎ!üþýhZš½ùî†\ÓZÄ{%_ÈÁ,ÉêÑÝDç6ÌØ–c»‹JÔD¸Æ!$Tö o'd~É;Ò¢ý¤v”rÅE§'ÁÕ&õžÑ]M¥hö qæoc¾‘ý ÛF›·V½Ùm¤Åà4rCчABãGøJóPco0ÔvzÍ[cÌÌ1G™9OÑuyjîÂüÑ¢ˆ½0ˆ+*`6܆î~òhø´R026µkÄ­¯ÒŸÜÈÙpƒ2਩'ζËXIÜu„7¦ 6±² Yü˜D_=¬J¾…ˆiÜM+—N^6ì ”´½kCõý©ª½†uçGÛ½üÞõuÍe½5“õE·h-»¼N¦´‚_c=©æwÂíHVÔ1—¤•#T¹'#Ö«#0Pà”wš¯f¹©‹ ÿ;.]ÍñŠ#Wm•AÎÀçÖâæcÚò^ðÌ FŽÊ)ü7Øú€œñ3_íÒâg´È¸ôŸs[í:ò È~ßeWÓePˆR’"ŒM³o³" ð°€+¯ HFê]†;œê ÿOÿÈEke̵¦‡,€¯â¹0.¥Š~¹hÄ·å1pd­& 3¾-¹Þt!¹†]©¾»‘X54.HÇëOr—­šÎà‰'»Ë;Í(¾cyj¨%Z˜PiÃ?U3*ÍûgÜŽèÊÂИ¾T2…dÉ&È…ØFµÓùóÓp¸ªDqRZj<ûxq8B&£€,¬AˆVá+¨Ô WSè îz¨áPÛ±)dSyÿߌsö–T‚ à-ñ¦ZÊ(ƒt|:ìëûìÒ.»,BuÄWËÒo¨>Ù¢¼8ê¬IyãRæ5ìÒXðÃÇ(ƒrò-+Ò5YÜ-¦„#YE¨»2ãí2+KYc†ªöeˆÿ|ÁšÃÚ‘É)Þ€tF€“Ø“|Á·yËÔ³Êòùë³5z49›5Él¶ìÖ…`æ'¹l4 Aâç"Çæ ÷ òƒËê/nîVæÛUP©F¸”³Â èÈïMÜê®Äù•Éõul΋’,ŠÝì'ùÛ©ÖJ8x[î\¬VΔÛÓùÛ¸Ñý;í‚bêÑü¿Ží¤Æ³K5£5‘^i#Ò tØkÓ«¬¼ðÕq<’>[‘r*Q©´é_Zß<œqg -û’9ay¥i‰Í‘¡bør‰:‚µÃ .Ñxï8“ô¥Dá§_¼’(¼à.8AÝ4‹è³.½ó)¤lx‘q1ñ€$²ÙÐ2W¡@c$÷)Oš™°£çÏ~nMˆ‘Wü¡°ò·iËLÿÉfÎBÜÌÈåðF`Yú¿òåËé?;fÒeðzb')Õr<”£˜‚Ç«?ž9ÿvŠ–ç&GiLòOSö3™lƒ1Æ’oFQhݦBðŸÛ˜M–0^b¶²ÁÈŠÔÐÑ üÃùМ­pj¹†Å* [‰“,ïyãÝJ> Sà¥$×q1ÏE­bÖ#kù„³8€‚`ØIo,r®LÛ'MŠP„’¢ú:²6Õ,0$oxó1`œíÆOb«r‹üÒÐõcþ±šâðq²Éÿ3Ååâ ½P¿ÈãÈ U5{:Ã8AÔuY d˜M^=kÍcyƒAãG9ƒóŠn8^ó5N¸¡$ƒtW\CÀ©Q1ùÉ©iAnã1k£pC‡,÷°Ú÷ØZ8Õš¤‡þz‡z2W,V|SX{@‚ºá®ãná>¶§ b^Ê]ôÃyûvá{lDYÓúÀœL»€åqs/N. f#‘£P œB¥ªY§¤Vvróž?^Ir” ”¢,  ÏÂ}µæž3·ùÈ鮽$_æÃZ9ëˆ5¨mqÀý¹Ì{Íl-4VN“:ÛàȱÉô·5¹/Èã½”RØöÝ&‹Hº­ÝHðÔ4Zc°& Ê¡ õ-R`ÿwk¹m„ ¹iìÌGœ£õóñ-‘â'ì¦rá ü Dß•$‰?—ˆùXO\G¶‚íà^¦pXݯÉMD`m®§3²”}Ö àôôë?¿âlÒn#TFìb|P¤ê@áp6ø¶RŠ…÷H´7P”g7}8îLõMº4¢³\l­×ó· „,x`é¢×PÍ[‡áºãƒ<qyú벫nÃls%Ýn¨üÄߦ/À^ê©nœåDVm½­{>1Õ K3]¾Jºq#±#W0Ù0ìÓôGXkzB¿áèüåûXSòˆõk¬@— ן õÚ=f"#® ÅdÐl*W5põúÕ-Ïz@a„eÛ›§Z”º€ÐC)W‰DOÝ¿ÈÒo†®gÈ— ¦F*è5.3퇌ÓR2êÈ<ƒvÉï ñ‘ÃÏSa))°1ÇÏ-uÙ5à{¶2“˜ÒN!¾\KÌôr?s²;-ÌqÿW…U‘c¹+4Öz°%›mƧȱī^:½¤4ayŸÖM§žÍë'[VuìwuZ^¥Èˆiâ x —¬‹ÍŸ,Ž_ʱ^öá6ÕüëJ´N0brw`Ó‚ù¼ž\®Fôz@O“ñ¯GB>¯ã¿0RU鮳ñ|P¡%ë"=„á,Šo& Çæ B½RÚ3¨(©=¯k7Dsfþ«9Å›€Ð?Áë’?¢š¨Ò˜m¿eÀSÊ=ë…Ì ãö·¾5o¥B#{õ…1ôsµðmýâ# ð‹E @ ƒt¹çYçµFjÒ ‰¢âÚû?ßÿ<\“iIv™[û*n=Mª x…œ¼å“d³Çâ¡æ}&ö°¼ÛA.äœú[A ýÂ×mPˆá*¤™†¸ãrõKΚúÞk† îz¯vŸ ÎEÆÏ,òh1ÊWã¶DkĸNнG‹Vu÷^òwl¾ÿ —eZ×ϲ\à죛kZ>pæõ½–w¹EÑø{ï‰ZL·Ôú‰C¡7ë‚Ó/„Ýo¶þ <ªT+;L6ìW̾óaÒ'ø§j€µ¬-á D«I\5Éébª»´Êû-ÔâyÒçFn&•%íç?5ÇyùVÛ|¦qŸ4Mìÿ°9š<ãÙy6ª?ö™>£þ^?`åŒo>tôžXÕ„?¯Ù•Øy¹é…ì£ß³ð­æÌ¯£ú+÷@—Ž?â_{ûø>øBMûÖʦ »W% ¿ÛU0³ù7)Z®%sè®8`¨¡Íé‡y ^dŒÐ—Ë 8[¿g|7‹ÊÖ5’?K@o">ó E‘MƒkWvÛ_)¨” }Ë6“ NX\¼Ï•n³cÃs¬Žb¼X6GJ©à´tƉ®i_<Ïóåƒ}_6E“#ƒ!l®àc DшË]'ˆ÷·Éòng“„t%%‹%Œ¬cˆŸ@2²rãÏsI͉s$åïÛXß¾½1÷%áµë@ý*èÏô'}îY ›¥õùÁHpW"ù$á Aøj˜¢XqY}Þ{ÑgýÝtÊZ*+Ö•¢Ðm0Þ‰ Þ»&´¬Ã¬Kæ!Š…‚²àUŽš\Zd³—ñæ¼:@ÎÜÕ'[ª…v0ÖÕ^ô«£÷õ€GNB»37‚W(g)…žÜÇs'^gìü/[K€G„$AR²ZáT:Õ¿Œë$p‰bìµHW6–•~‡7r·H _k>€@_µõ[œ9ö‹[`%Hëeš–%ÌBú©}½ñmi‰3d÷ŽŽÝÃ&çë>nºSc¶Pôæül¡ÃŽE„bϰÐä±u!CðH^;*Ó„j;Ÿ÷€}Ñ„#÷ÏN;80»ÿ¾ª·v 7'ðP…y£«NIg<¾ Œ Ú+µ¨«< ËÈt‘å¿EwӽùæBv€dP¦I­é(ÖÞËÝ^Zå,>A~R¦j‘ê?o‘ êÑ$é–B¥4e!hÌÆO ,„þ—gðÁZ;*ûŒOmŒXëHT‰°Ügâ›É  ‹6ØLØ •c » …ãšsƒÄš|Ц½C-€¹­&¥Mð  k,Ùšõ÷µHÁKžb ¬GPa{¿®rÅ—#Ñ#°mX¶éeN¥gLË=Vè‚øË¤s"©±®ñ?‹*{ B•xÆp‰T/ÉK û‰õá:§mãë r·TŽÛN' }ŒáéJ"—'X´IWé~€Ä¼èÑÆ‹«³n¨¤‚ߢs1#¨šØ& ÔvªÝ¯µ@yz`En›h+v©ÞkfZkÔR ¾VOF)G^–&¬ægùš™»„‡4n‹Q—ähÁýTB{s …`ù°üðE§ ìê3¢Ép:&Æ—Ä•þ= ŸîÇuW\qg°«€5!Ã=Ž5犬¸úÔ7ÚÁ|ªËØ#ø›¸™ºþeƒ8Ë:ˆo^áWl“r>ÿÎTãvÿ•žìöÅJN@^žHeŽï‹P "éu&™~OÄ]§dŒX¸{· ̉£úh˜„q6Õ Eæ˜è@èvieVû6‰ïÉúޱ+¡{Þ6œÑO6TFX-¼X¶ÁEªßªzÒÿî𣣟ü†û*·ÚwëÖ¾ O=ì4¯Ÿìt¤ïöΰß\q0»W±kR©Ø;öÕÀw¯#*E„1*tY5(À;$óè7ŽÊÀøŠUÆBèr‡µÝMfe Øyc¾dµ±{÷Ü[!1»cÑ÷ƒKÕ“ÿVèüUUË:ÿóJ<¹R“~ômp}ºà›ƒPéYBàÊÂ:8ê˜S¯VÁ·I€Õ8JÅ2¾Þ6”:yGÑå›i¨u@òvÁh2Ã1ŸuÒ$!W¯\%ÊžÏð"–?Œ®Ïh»¡³ÀE`Ù€ÍvˆvÄN+v|‘–s,.–tÜ •æ ÉOÀ˜­­L¶½+À-ú§n•âîXÎ8Ž<=Ïöô±äpV耋•I˜4 ßé.åÊwrHZ†‹$¯U‡Ò}²×T°Œ!0 $ÆÜæÜ*[‰d…ØòXlú"mõ=1YÊðêÀ’ŽÃue]  Úý'hpµ0¢-EךhsóÐ?NH^¡b 6CžJ$fï†äoOî’icüÒC»Ñ“ ŽDÇ®7¾&"|¤XÑJUÇfýÏüÀÓù㻕և_οýøþùÞž~ûø>¶V¿ñ–]óº9$€)óÈŒ2yÛìÉ èujé†X±ŸÖdš´/†ªÚä‹×¶ “áCËý}šs¡0ÉT+Í‹*¨I‘¼¼Í¹«b}èQuð}¢‘F™S/Ö`a›‡9ƒ 0¢"aåcäš ¨2ì¸Âd¬ˆYÆj†ËÂN#³ßnÓ’Ön*Æs±"áÕ'eAÝýIòÑ¥UžÆ[6Vc"¼7GEL<Ä$+êìßÑ¡¦å8£WøZ³4Ls"m)øZªÕÑ"“5¶Y”Ö–2Aú.|üÅ6€{o©Ó¸çTžzoî0R³Iwh¡Åâ÷ÄLgJ[Û®ÃÖ±êÄ/ŒxshfØb×^Ú7‡ˆa梡ODÃp#†ÃË3f°"b÷CŽô¾ºøƒNÔ˽W¨­DíÑo aÚ¨ÏÌMk˳´8*LÓSp#œ‹;Þ©…Jâ0ą̀«W̰ûeueU?11É5~h€ž+L‚Sì‡/þ›iÅx<§gøk³ ÀÜ7 a´<Ôó€™”bˆ¯¶B¨‹«‚>9Ü òÒ­iY ,ŠTÿdžv¨&ppŽŒÜÛ./eƒHÝ€ä .؆VR—ÊaÄ 2 FÎe‘Ë¥}™YÁpxþz0žá2¬ÛHy-b&/Å'y¸­ $Óòdʘ4º0"z8.ÛÈ:I|B3ÖQ$ €k3Û+D™ÏÌ(•õñSüZÒ$ÕFÇfî – ìSŠ[máå©\Ñ"ŠðýŒÆ[‚4ÆÔ™’5µ°Ùäa« üÃ~èXýTí×ÚšE«,',“¿†Éu½óÎäTD¨zh3ˆ3¬«]{_`hÔÜ!‡þóBöH#!+:ÐüÏöxŠóÈšÊÞ¯;$(hº“Ä&xëÍÞjútó^?ož‰îÆ&ü2é~î2ÎcÜ|Ú|(Va#=N“ÇUÇ£~Á%yþi˜J(®½£Âa8¯Ã꡾ŗU±¼${•T /k%™ón0.oNÍèzΩ´vfð´»4ìý°…à}H=€t‡ÂæÚ»FÂ)­U=©µÔSÄ“µ1"wýe0ã‹Ï¬Þv‹Â= ô›š ”}&‹ué“B׿¹óÚ·ÜÁ«â8Û¨VÌ;Ñ%bš;©³ ô*£ù”‘êͯ¥þhÒ$žü9owyž•Œ1zá¯è§]1ƒRZï3´:Ѿ°°xŠJòlÀ§ž"‡´kø`º8¾®ùÉÏÒkz"Jºø$`ìÄÙßÜÚ'W_åÐdÈbl¶C8†Xw%ªŸ3ëTR¯p€^© TÏà çE«Åƒ[­¿B|óÚ‚î~Í…¾Ò²r6mË Á]Ÿ¹NS¦¯þ¯ “ÇÖgT‹ˆáÅ÷Âmk1ìêª×%Ÿ çƒæ´”ëk9»¸ÝY$ùÁiÒ²‡ÍR­!€â _>»wãã(ý =¶ß# Q·–QZ™µp™Tª‚ÄéCÂAÕ¼jù{I:~Hã×;D¿&´®÷»Ÿ¥ÖDè¥|q9“sI¨ñ*{âvÄÀÍÀ«•°’–¾¡,_æ6P`s¨€5¢ë¸šè^ }¨/# }ÞÓ §®YHžKµb°ÍŠ91ˆ6¬ÖJBÃÚ'¹®³:Qfoj‚vöTŒv•JÀǾ®NËfªÉD•ÇJi™§'vâT™v¿ ­Ð£î8ªbмëéh/ñ ¬?sÚ@tÚY»S¹óM×OókJ£äOg–Mñó“‘N‡Yñ$êøƒO‹É©œäãÏ]}€°ewŽŠÐ}YØ­”ä]ºUÜÊÍÇrXCüíaËT÷ßPÄ mføŒVkçëÏÂË3 cÆ>Œ¤0Ÿêðêò­¤ædZ²^°ÓF|5/òo±Ï{÷Ëî¹²!ÛHßÑô'k3¤ÐÒCY~>ŽnÛFç/0¥¹zð®ÙöJXIFÓc¶À¬«[ÜÇþ¦½üèÒÍëÙ}|U][ýi_ûÿÕ$ý Óòüå?ñvþãÿqÍGÖ4\]ØQúWéÆY22 °Xíð‘•–}ŸÍ»aYRa!`-ËìÊTŒ‡Õt­vlAp.G©Ð°Úá©6x¤Ñ^"w®xkTÂ^Öœb‡N:`OM[(Œc‹/¹±’Á2A°ø¤çÒEŽù:“r!«Ì“ʧBD¯zAÆÑ»Í¦¾û‘Kòç|'ÔŠg•L®ªo®u?~eÞû¼ì¿*ÙpúVàßA¼CÝ^þa¤ç› 94oÃ8ÿw˜i:ÛÌÇb[eÉä¥$N61Ütž¨Ô!àî­Õ o&só }hfn°Î`ê±&|lPVN •WÍ2££–™z‹_.“ºß*ƒ—ç`BêA ̆¬8K¨~:̓sˆï²¼Ž“ Á6~F<ä,ê‚]¶ƒZ±¹œ‰há›Ý‹ÈyÀºI>Å©Ï@z„­©W$ëÒ†^ìÌy¢F°ŠÆ¶ Šƒ>ïÅÃW£´ØJôÐcÎ.nîЀ=)7V²3¹gÄ;ßõ5’É'P:-oý…`s6tÓÀ«´÷¤â=Ö"¹-ödƒêç!Y… ù …ÃcœŸVr©ã3‡­®Ò>ëØ`x­D c¶u¾ó=EÇå… ‰Iž#—Ò>Ÿ—#ÕÿÚKì—¬˜»ïýèƒj/ÎgéßÒÔf‡eÝþWnÁ¶†íÈšËäÂ2å9ƒcÀݽ²;O®Ö/9µz6t_7ï;mˆ®0åBU½[xÏÆX °ô›luŒtMÞ(”Q£÷[‚„Þä¨8\ &‰#£Ó08@b0n”¥Œ-=úÏÅ´ûŸ²]Lº¦b~ëh.ÅÐ¥´P7€IÎv„Rªüö¸òÎþ‹óN¬L/?'T‚=InðÚI:__`¹ÀàÙtøíTâ3~FL1• %ѱrÄE&vÝÄ_O]T'ÜŽÒÄ'ñÙrFkÚí­¥!ãÔ»ðÅ;‰XsŽUö ©ãÔÙ¨Ìâ!'(º ?×/ hßPHÎ+›=[Õ€•8ßé‰ûä@}QO>©¹Àü§`é*eiBM`UR3ýKƒ‹ì´dSq»êTµô‚@¡nø¸&ñAÕFºH§KþWŸ+Qd2|Š–Õ“©á(¢áš|:sG½Oöi¹Î2®΀áZE‹îƒ$Þ/kå4Æç¢ŠÒK\ÌÝ(`Œc!³©ÇüænN|GÙaL¢­:[uñ¬1ÎZ'¾…ê…€¼ìœ¢Ï€#.x9‰V‘»HþtùòÈ„°[‰D±âøGGŠyLò°J¤¾E’O ‡¤xÇÔö!ŽÝ ëcH¢Žô©¼ßø%\‰;¸”?_Úã•—ÿsüªÅo¾uÐ-w•Œ¾•1ó0˜þpdsnAÍBÿÚNCubFqJÍny—Õàcš`»‡Óœ(=4}¶‡ą̈¬.æ·ÄŒú)TœïqR!ai5}l8h[†Í†z‘:Æ5¤‘YìÀntÉù‹…GÓ$ùR ¶1:>qHH˯57­VrÝwô¤h—lþ‘ˆ<! Œ-5|>}MÁÝxÓò_OÍNŒ aÞ©Ãñ ïS5Ó²¡N¿½ày¥3v¿Ñ{×á)Yè) KÄØIÙÝ)gpÊûÚM¶¯uoÞšëYQÖA-Cß”ýð’­ èù%OÔÊÛÅ0À]F  ÓÜa±Hµ/@¥ÉàN&œ;¯Y×¹Ð7²ÝPæ€Ø±ùÖ%Å,“&j*M3Å‘™8›qE½•0Ö$§–…}¡ð²¾Ô¿Ìéh¨‚ÓÂô¤Ê&°DºQ Ç¡œ™°Ío%%¬·j0€KqnÛ‚(}!ð¹ òÉ䀎¨ør6Úl¤Kîµ×MiKô[@5#½w«\™¶GÓ2*>èÜ0‰0:WY+ÒƒXBÒ£3êÄr¬Åy¹“ÝâbÉ.À˰ß0ÙV{eÿ6¸äTóï.[Ü.ó΃y¦6O<[5aX·Ï$k’>œû¬¬áAÛÊVÏœvÏeŠâ£ïà¶]Cn¸LÀ°50bŸèŒ®„ÝÁ²T6Â’BN'f*vWV+åx³ÒyÅ!im¯chHñ¸üÈÇyIvËÃãÓ Ci—% VÙ } zc˜É>â:?{áÐ[¾,)Ä™“@–¡(OýEvT{!¶1tbYPÂ$†ùkÌD¹øô†n;ÔRÖƒ|EA‹Q+@ýæ)渳9‚¶1ÿ‡ã£i™ä^A?-Ìà}VÞÕüšÓ&®zdLæo\)vø å—Õö—ô”Ô_µipIºá[ˆtäA¤ðmVÒ¡æñâàetòWŽ÷.§ÛI+sÿœcCÂwÖÂ{¡·æÂ\/3\ª^}†‘ØÝ:-Ý|Á,ù´w¯¹ ’” ‡^á—«¾Û¬ÄW°k~¹¡E÷!'J‡ãŽ=-çöÉ3ñª§>ŽÂ†r6>:õÚ%û¼§E);xνIÙJŽîU±˜Ÿ's Së¦$3V:ÿw‰Â™Srœ6ÎC¹ÖÛã?«Œào /áV1ëÚøS;>0ìx€ô¢,~OÔŒ%Ô¤îÝâþ°6ˆ¤ÆiIüÔCѯ‹-Øÿ'‚ŠÌ)”û¨"œí\5«X_v G¥…kÝÚ™×D§êÐE™}{à—”—„Ø}øµöÄÊ&ëŠ5äÚ†ô{ñjÔZeˆ±ŽÉÂóÿ׆ ýSÒSßp]ÜÅ …æ0r«Œ¯,`n%ÑtAÙ•J4´·Fžñ?>yBMý 9_"Ë÷yr`Ò˯rªn쬃%`E{&å,ƒø^­÷$|$Á<Äh€í6l^Ò]˜bÝ”Ÿ=fº—DWØþQ°qtY6½m<\‹ðÅðGzX‘z0,ùòdIlRKYÂÂK0Ì„V“„C4˜¯ˆ«] ¹Œ§%ìÅ¿µ¸äâC ó«]ÍZ”g½Ü[é8‰DI¢‰:½u°{ih2ü< T!æ{aÏSßÙþ´NÀ0Îèƒ=goÅ÷|ú…MÁÊ$&„£ÚHuEÝÎnÎ[O•ó/ ŸHµxÍno=š.÷ˤî¸ûßÙ%@^j}üÇãØ¾.§Õšÿu¦ZåŽÕùŒ<^ÃHÚTýhž}*œ_BlmtI¬¯RLuÕÏc Š·_ÏÔ· XjtéÔ]ê¤yeZÛÅ»Xûññ]Zb\ªÓÜÖ¨Ìû(`p¨Þ×È6ÖFüàhº¬.ÂHúi*ôGQþéj¼÷¹ƒ‚•8]#ßÑî GÁ\Øé…Œ½ÁÅ’äÙÀ=H)b¨ÿüd]€‘fû<°/$Õü.¶¥Oz>J’_Iǃܫê„àƒüøòøÄKpÛ¨³¾WË{ÁíHKAÒ2>ˆ§n Oi"«<ã!~ÈÑ[ôszpåé S¼Ir)V³S~g|b½b ·É¬n;Bãb«Âu‚œm±œÁ<œ¢¹ÜWl Ð>ç!Ò<”ƒÕæˆb¿ž¤™ôº3Õì³äqŽ’”¢ ¯§Ùÿó?£™Ê¥ŠlÔOd’È:ÄébkÜ8ÎW¹È¾©ÒÁî¦9nERÞ0|Çœ‘ž6y!VƒW¬Æ»â%Œ@`_ò+nJ5Hº6Äô¡?d\˜Eý@ÙµÔ[µGª&ÍЫ ÚÓud›¼°¨´kˆfhèƒB3¦ÔÏWBÍO©Ì«9xxuÄÌFdÍ7?nÃ÷kÕàu‹ÃÓ®39-”Ñ+•‡3kì‘6vË'‚Ò0ÉÓÔ×J5õÉ.sÕä¥ÐKôîÙO•Œ½G^K¬šE²ÉÒzÓx¬Püî..1ˆÇ .X^A ·ÿ“ê€ã0áõ±k‡>#B4jS£Oÿ¶„Ÿ…j±`ô4“y•Ö!„5óÈä‚׬}lÈËÏ Mï¯ý‰eò­×¼ÄºÞYñ7x4Wú·št‹çÈ=}†>çwÞšü=´¬ØEÄùk´^T<"‹TÚ:~ǃЗ_,(ÂÔ(V…¡ž+w2ì¼H‰d´˜\z25Q˜Œ!>}óÑÈŽél{N7—´ 7'øÄ4 wPÚµ†íA$íäö´ü¸¼øSÿu°4l¡xÞ}(m)ÍŠî`†£E|tÃ18 ±wäí’\Xýz¸ÈÕó,Zë¹BK­#ĆqGl™B'C§_°>}±Y¹å>‚ÎØùHÝ+ÎŒAJ<|Mw±†Ó]Î iåä#àVÖ»ô²¯ cÙ_ŒŽ7ã}ëóUÙfûoå}²­!{@jÅ}µ¾ºYø_7ŠtšVž8] ÂP¹βәÇɆGÑ-6ºWÒ?oh‹UÆJ ŒÜrŒ³2 TE*Þe$fsŠßýÞD$Ï¿hvÐá]õÀ<àsSp½"´+°Ê : ɶ*¡—¯¸bGE6Du¦‘WTgíjB›5M¦žÒÈ®û lŸ<€«T6Ù†Ð?; õµ9¦H~Xl¦ÚRÎG>‚¹gËfp’3ý ßÙ KñÃ-•Àlø#YBsÈ vàŒÈc´3eóº`„ïÊ=P‰#3CG« à~yŒ…•Þ|ëòÉWhù´)ûÓ×Ï¿ý÷‡‹U¿bêRQ/É…¢¸‹mÆÛ‘‚b[?â÷€eãáàÛׯ8e“[×ýë«pTÌ3­5ÆÁ;¥õÓWÅ€'ƒ,ɰóÃsVtê²ÉB9Öì,Qc&¶êñl‹üA­vðÙM<+Œ^V‰°²žŠ«jÍ8¢geq†ðzCCL[ú©ëâê1.¤÷Ç£m“7×­p-¬­ËšÆ{øiê(ßu¢s©ŸÜ‡"ýs`zeáÄ÷\¿øí¿¤Ã ³ÖÎ2óNU–µ;h‘®a7/JZ{ã®:¡Y´¶ø;ý€mm³%Ø æÇêfÌ]‰"åó•Á›?Í9á­ )òVÇᡜ`wÓóócœþl Y™\2nÉ•¶ûœ¯V¿(îûÅ€åʹä]šÛa•›3å•z3&yœî3ô+ž‚|tóÝnÚ%Bú²búïf‹(;Â[ÑýÛ_ÏØ@ýfw0¶vÏ·5ý§s«á¬³:®± ¯-ñ“DÖxÁ~d±]µ``U©ÍdŒé'0öè¯æ’y=Êf7§ÌZ©k³€N´hª[îoª<«ø¢n¶UÉPŠ% 8¸e®Ÿ!>¬Mב 4ýÉɆhL÷Æ}XÐê µíI¸†ÃlPÞ›Žõ®×R »èùR‡¿zÆ´×´-=íJÐÝ÷}?ÿÀÛë/ÿ5-ðUŸlåˆñPb-N¿œ*{ÖÜL=á2®ê›>‚¤ ÃÃØ\"Ñ¢Ôa½m›É ÃýàYNn·i~ÄêÊ[n}¶¤Ípa‡FèQêà‘¯M8ÕLáí…}ûŸñ ¤÷l#ŽÝ6h "|P}Î݃ôØcÀïéÝgŠe–Í:¬sB¾|ø)mˆÍè´ÿŠÁ{Ã~Xø‹%Æ"ÿŒ%£=^ýšjÖñw—ó'8ÛU™§ôýÎÞ™1»µýîØ"oQT܃-Gg7¼7Õ‡ÑõÁ9;J…„°Ešâ‰%Ú¶P0MâW1CÄ4ŠXž™Þ=ÎsÁJüXÉ",÷g )åGOÅȈs¨GgO˜XOÉ­n“C¨c6roJâ‚ȼ3HìÒ|¾‚ÓL5êϬ+§ùËß™í/Oü[u 1b“…Ù]”p`ÇvŒv7맺¯Úá‘ã{YC¾éº&±(á£`¹84› &Å¡²f¨SRÚË sÚ|2¬œ{ío§Ðq·yF¯+Uµ'ýŠ×R9‡È¥†2þrëå†IÖ£¦‰ÐúºƒmD„w2 Ï1ŒžÅ¡MeÕ4rÙ(«PH“ŸÛ(^è›,L¥çGÅÿõ®Þ ¡ Œ.FŇ{ÕçÕ'iÜhÞ› ww³èh–;@ãá×ôŸ ¼v¨ûëˆBê^£± ¯µžÕMgÒÑ‹ü±LY‹‚)Ú—Žv9OnƒÔ÷h_*i¿µ¦SƒOîyPÓ¶?/ÿ$LÙ­ù^z<ñ¸¼zÀ6 ^ÖÔ…½ÙeœÛs!84ª÷âìW@œ˜“¹uÃäÏ8*Àâv0”Ñ6PÖ¢HÍÁÄ5ã3ŠC¦îRšxô5²Ç‹# ˸p#[äcÝÛ÷¥Ë+ò‹-õa»A1ÓÏ12âdÍ#s;ìLázbd§Ü|÷ØhÛ%–ÃZZ?bà;f:#@7Ù³¹ºðÝã±Há© òU<´Zšj4/<1úY„LÏzÉöù¥%¶[ái@bêæÎÛøkÖs—"‚lKpÙ«Þˈš`9¸]\9›Ëÿ·§§ @ü ±Sn£l[ óšÔG7zK-µ* –LOÒ¤\ê8à S—‰«]!"¹ç%º `_÷Ð!©ðõãBBÃùâ}ÕM<1¢Ÿ¸€JŽíXEj‰á¤TuÕ¾r"ÃÉ¿Ïôwµõdò$ÊüdÞŸ8eRw©Ç-—y „웚Ȱ—ýî1öÂ*Î É7¶a{yŒ=é“d¿¸ÆÐÍਲ[ºò(ñv[ºô±ÌO*ág2‰3¦ˆô+æ‹íÁ†5ŒÑY¥‘—s…/ü¾U`[¡]0¬Xú«—nñ|ÀžOeßd Ûâ~„áši²VvdaŒOÓ©.»õfµU£ÿ¸Yñ@Ò>Ây!t­xÆœÕq§HüeMA£Ý8*“+Oó %øî®è~žuH‚_]l÷´“ÙöÁò,_=°ÎÖ ?£FžÓxX Ü•C¯dö~ì³ÐvóúÓj<7jFÞU·ÚŠìš‰âzé˜×"çfʰQž~È®b´xÝÝ…uÞýLÇ#Ëb{ÿ¿ÓÖ¡Çtƒæi±ße’"¹‘¾Õ4=sßÁËcůý„çÝ*d@"óeU{[ØÁ €(̾ÝgÝ_áfÈ$X%]`q]<6«kIþÅîÀ­µè ÎÖ ÖM*ð“+yÆÔkûÏw?©¸1Eלõ o…›¤×ñÜH÷GåïhÓjP %(.§ yUwMíÛ£÷§_~÷ï]úVWSgÛ Һ閡2†Xi%mK÷òêòTô÷­HÖÇÀÕ")€÷ŽwF>åÙv Óxû,šv÷?Ôƒ›·Ÿ]ÿø9˜ „#3 ¤hMû+ÙŒJ¥(í¾þÚù'The quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dog[RE ;«@}.ŠÒŠE\IKo¯€¯xÓ4]MOl±îô!+l\ECKgç›i¦E¥¢_…|ÿ’ݹòàɽ#æIBƺQéºàŸÔL‹JEÿ†`;l h/@wL¬™ÜÔ1Ä„F@Âq(ø¥}fùQ†³VF;EF¨ÖpdqÈ‘X7ìJdhîþýÉ 2‹ˆ>³·Wû"ù¹ï§HA|‹¶ä÷#n™òê9l[=ʇh^ àñøi~_o‹û#ÿ„(aŸ¹Hÿî<·?݃®j¼ðŠ'%>QA9"tÕ,ÿ}Sû“ýp0Q6a2Q|Ï=÷,C@UE¬*  ‘ ˆ¤ªoQcHS÷:MGì¿®ÿFZ¯ù¡Ìï±&ÜõIl}¼Y¶þû}iý;ÿ»¹§ºzÞ5ÙÏ^ko€qï @Ñ#H ÙHQ ‘ð³[ûÜÈÄ ª~ÊÊ2L©ßRU`ªžQGU™UnûÙ(Ý´Ó™­Cu÷.“ !lr’¾@$z–dÙ΃vS-ëÊæ>ŸÒ×ã¢B‘ iŒ¬òmï}Ê;; ¡¨ «„{àíÚ4ph”l"ú¯&­åÙæû= ŠâÃAbÔO\Ç/ÿg¥jâõ ÉÏì1œ+´c³žéUz>Ͻž­Ÿÿÿôþ— ¯:ü¯! Ñ´Vö®£a5ùh`ÖPëx½³¶ÏùNÿTä)èЃ®Ü™nñ'>?‹OϪ¼ø;ì, 1`pÛ˜èp©g`®Ì¨ ðâܦ"H«Pß‹÷ #Å8œ†¡p&=[Qùƒ¡F0rhäÉŒÐKùÛ`}ôð™HC;¤±+xù ÔDð<`€T$‰EH^BàgÀ­Æq^d1‘^BýsºzþšmWw8-JH,_”.Î{wˆsqŠÒ·gXŽ€ÆÙ’ùÔú€Ô¨Ûu^ë:Kþö é)’wŒ‘4‘œÃ(Ö'L‰€XC8pO‚ÍA¨ µÄq»‘„$% B©,´›þTíœ)µã§g¦ÖBüm!ní¡CW ”xþ6 F}gQq =þþ?Àï ˜%Ò$EðìI¬°èJ'Áb p4×™Iã<ƒþWØË߈tÞ˜t þ–ùQež†#2œÃ f×µÁ!dZˆK¨K‘ÆO_.UæH—%?ë< ü<3P0+uÝׂ¤ ɤ’3À86¾ýº@ ÀÆ-–þe ³#›D*°°+6Ñ5’IìNŽ–ŽŒÕú5¾#P ³Bùy·jaF˜ Ž!83e¹”2 )T&˜!ì€$•r¡¬í^%=zØr<‰1PÌ—–|ªÌU¤ü_¥/Û"$ê›ãmí¤z¹G|kiV¼Ç%¬uˆD@_®ñX”ú%ÉY{€J¹ ®HB_Béݦ3 8·qÇĪD9mqĮ¯} æÅ¨.Ò÷ÔÂn9°ðñ¥€&o°n”å9DhѪžË´æêpC+ÄcÔ@3a-ÂêL)‰%mÆ)î~žÌi/¯E*úWøYw‚ï3rà°Wà¸äZß ZÄ,N¥%Ýþ³¤/¹ƒÃ@žÊ}ÆOA»”¬Õ$á`..“ ££v×¹-õ…§mR¼£.Þ&8·‡§2S¢pÒ8RA³YKаYÑdß=O j fâÙÕ<ÁÕìªJ[‘Qb:I£Å$>.jú|¢!@÷el) Š?½&\fÍ60²d­A_„ÞS½Xç2xä¾O¢¬iö¨Ú>©±~ÑžP6èÈKЧU­›wiy¨ W›‰Î[¦¶»øþ(b¶,š73¯(Lž¦Èõû)+3.´¹ô…hâMªdþ-Œ6#ƒ®#¸QÝó N›=è&F£‘“&„lçb°ÀZ =&>Tk‘H ×0ähñ›òÅ÷,„g¯ÁP×B¯¬u˜á"º–/ŒãÚËŒ¼Rk9©ü¡ŒiæY‘½«.°>>“ê'ÐJEm œn¸L_ ‚·Æ<Ã%êBHB¢·É‰\ƪjáÇ9ŠSK–cM>ö[Kh_"0ïû†Ó[Y¶Ìå?Q{°¼8ß›Dê«ID¹5˜‰^ \ ûŸùþøß¿£Ã~'Ø"„NIzžu£@:¢Ö»ÏÓk $+¤öšß}OEÉÀlWž§Ë ÍI Hbxt*mtKÍnìÔ·™ØÒC!”| ×QzÙ.ƒ¬M7{ûÿONËs•Æé¦ JF ECU8ºX|HÖ,Ÿ-•:û,‚ŒaõC{¦-mí¨øâjz.iY°«;“Zí%±3owXEï ½S#Ññ;„ÿÈZXÆq©…3DF)ú¸¦Ð"ËúøFº_~Òâd–|ÔÑR¢cKÑñUÓ2ü_$Qê ù;¿À‹_™¡&^$ë¿hüm’¦× ¦„ý7¦+ˆ´×ÅË(a!Ú0_޶všhÚ#´Ÿ ØôÐ>LÅkÿŽÞ˜\¼7Á;d’æ4¿/¼?ýþÛù·€c.C:Cj$L¹±]ÛÑÀK+kÜÎʨ¬Pw¸ÂŒEÁL9÷ï¤yàçÂË™|kOÄ¥V®²ŽjÜO3U„þÏã÷8Ð@Ïv±Z±`~„̾‚# @ öëœ, D(ˆªi"hÒ`ÝáãÃc‹¤òR)kÔ°Ä[¿û<½N&c¤F\c/x»ƒmÔ„60x͘ñ¡„d0Á·º±×§Womç´\!KÇã—ß|ÿøŸ_~ý ÈþMר1u£¡©œƒë@]í-ÊQPÓ(À¼Gë¸tò+šÎZvæ§XñÞp4nÛ‘B%òÝ¢BfFΛmMU¤ñ¦ Õ4~’>Ë E®™ÓŒ4v¦Ï˜ÈùsÒeÒN7Y˜š¬å›)9e®+3¦QÜ ‡Æç‚ª–ŒáÒê“o³ÕÛHašòýa.I5Sp¥´cU£Ž˜ÑW-ŸQJF-L™c–5ÛØ<8Jÿzï)¢ö“ *žL+Åæ´ÊÔä²:RÖ«7¯ì‚¦/A ýLDG‡kËtn—£Þ(ÿ-šØ3ã1Ó^Qx)·7û\šäìC}‰h뿉îà[=Ñ&ûrÈ! 8]^uaŽR3°áøYH, ìë–?T{ºFž|Qj jÒÛ-+2V'´„ÇÜ™ Ö®¡‹¹ÃÏCH!OP8í¤,&ÕI?ÀÜF‡PÈõ¯Á*€A+¢¢Ƈ†¼nNóDÖk¡9†ˆ®fm(ª+És’•I,EMyrà׌W8EKwBÿ¢håŒ]“À1±õ³“Fxµj•OEŒo23@¦È½ÛÌÔ «eGwêÏyQ(ûÑ—uÈüR”kFMM=u;’&”\?®p¬Ôqº]޲ƒÑ^ ÚL ø•tÖa]z©vA¬)·%+'²à§Êûyx[ÇGjÔ®Ñîkà¿áZdžá™jñ9¡GQÛ§ºLfœæ(ÐT&µ¹ï>2œl£©ûž¤‹Á+ö\EÞcµ¦äŠ |8É Š›!Œë'àˆ]&«%0šWÝ&ä!;1{ƒâ©I'GÔ7Xús¤@ŽÚtÉœbþÊŽAFŽtB8D]0e¦Ò»Ü{vÔôO7¼‹Lù¡Àäeîù™Óã:žÌŒêi7Ló+eOñ,Ri¨E÷±ïJæpç²Ïódo¡†üid|²ÆžŸúÄ;/¿ÿòëàü8Nóóºv< ÀÒRHÌ<8Õ§Û–÷ƒúOfÑy(~å3,Oþ!éëyJ;zœ^jXœùÌ3‘7ØR!¿.wÔ Ö8S›‡cD³ÊâÃ[¬¾š‘Fl>Û¬Y±'‰  ëí­-2‚Õ\É$¸]Pö»8UÛÉ44èCyH®œ ðﮃáÇîÝ2£€aͬ¢µ:.âü`çïCÖR,n~Ã{K¸UvÛÓÉÞÁtH#ì P[JJÚv߀\âŒa¥2Ú ô¬…vÛEJ?L;”ÌGp®´¹‚?N/|…þB4ܯóS§šâk:$¸À«1)µ¥a¦Å5Y°>!)ôž)#KÄ QXÝð:Ó²A#=Šà´²bÀ©DÊУê(¥}~†©p4¿îûYŽO”ʶ›™ëÆEI÷£³œ'µ?ë˜Òâ )©k»`!Š'Fˇ@cbQVËËjIàáÇvð¥ëÊQ}àÈŸÔÀ§×%&R@kÒ˜’™TKzÖn§ðöUŒÙ†X˜ó³E1sðÂ0/ÞŒ`Pn AÚÓaå@ÎNɤE$VmXW.eÍí´†C:À¿xÁÛú½ÕÜp*ôÉ/*kG³Gà´NÁ˜ÔÆ÷,S±íô"äˆÓ9Vm70J·áô'ù§éFMÇ·½1ù \FÂÁ„»Ãgûߋ֙Õ”\g­”¶×)¶üdÁ=t)í<ŠyВΩ=/8¶†‚‡!¡£ ½½zµ‘W–jg\ü‘Yzø…<Ó Íµƒ;‹º D}圌<€% òfÛ«±Ó¤á™Î÷p&šš©ÄÒÛªD&%âԜĄ.á*¾PóŽÁxÅL,ö eçŽ*R³{Óõ [û‘OQ™ÑtÔ‡tžD0a”X†«yj åUGdãÝIRÔ©”ÃPƒLLK±Ž²›w i ¶t°ÁÔòÇN»›;€±óFÞlpjné¨PùÔŒMÍÅî×@Q·ñ.!µ€I"ÅbëEdoüü~ ‹@9­Hµ})Ê«˜'šuÔMƬޮÐ(ê[Ò•céÀ7¾v˜æVgó.%0›Å®ïöÆà@¡xËd(†â…537Òù\Ž”oG7›F¹ú±jϼݟYO¡â¹a ]bãÐ%yÅ–âzÝÆ@ «d¤…^Íê­7ºÚ;{¶û Rä»k,ÀUU»Ëg‡0àhÆw Õ„æ¹&¼$ù9c\Øjø×ò10  n¼.™ &ÆAÑÕc^UÞ7Bߎdi‹ÉF¥ˆŒ¦jÛš:нJx£¶Y'ëº0!èJ6B§Ài‘6ÔjO¶®ék»j/Î9ë–Ž¦HQ¥·Ø%TC“Fìõø¦+ÝÈÀ-oûfž9庲3@£’O9×¢«vFYXI@ñ:Çoº†êÿ9Œ¹A•£<Û¦jm§žbR‹TìÆ4°$ÔMÆ›vN}–}]ú± d¥<\%±D÷v`0í ¦©ŒÏf&5¸ç»u¡|pÚ+EÓÞæ¥v„àüƶÃPM¯ì÷zžäbvG(M}$R¹UJ.ùÌmW º8XÖ ãõÏ]=#ÍöECÁ9ü\üÌ&¼á¤%ò²›=ÜdQ†R žÜ;Üù§ƒÜ÷dÔ[»}­}zW¬ÿ&¬ÅDa6¾½Z'ãÝ­þ¬P_ŒZm>±«÷Ø[!ŸGæCrK$ô£Ej¼sH1Œ^›ë0sÕßÖ쯉RÞ ¨àüZC¼æá-%3[ãðý¢H2Z‘†*°?³Ýe­t´ó ¸%ù§F$"«Z¡‹r½+¡NÌ^›m8✮ъϣ…¶TêEš£Ô6‰Sµ¡Íúí6XÛ3êP‹DꞪU‚k7‘•ŠÔŸ–ìbU£îÎcÂl³BÖÁY.-û˜q÷ÍùÐY‡"€€\7{ÛZiäñ»Dÿ"d…m¬_¼Æ1¥úŸo‡VÔ‰Â4þQ2H{½÷þ0E)šÈŒSì>gÅ;äù`‡sÈ0>Îpîêå¬eIc=zÇÇ­¿“ú*åÝÄ}ÔFEóÕc 5:Œ´×o„“Ó Ï]¦¥YÞæÎ8›™+0Ãl@OeœÀš•êSI¤MÆŠ>Gš!°€ø³`꺄҂O3ƒ•Ô¸SðAx£À½ ÕD1ýèùPû…A¥\.Òã–~àÒr©Œ>&þ*'ñ)°ÔJ ÷:”¦<´‘Ñ¡-ã[NîÝEßÏ<;DàÈ à×Öï©r¸ÛSo¤Â§g™Pò¨$}} • ÎùÉk‡¢ÎÆnð3ÝvÏTUðfx&ºm4^ùû\ï¾!ÁÜ¿–z<øÀmŠ™¯‹JµâÎÜø„“GÖœËTψ|‚… ¹ÒóF˜$¶A= Jˆ !}1¬aï;´cÄ€g…la*V™º„Ù¨¢ O ~ÏtI#éxÙ­iÉË-Œ¦¥ª`Þ~“ 2ÙkÝÔLe¾=$þ÷*V¼|¬°2`ùçê ÃÎ!+õV] å ×ÛÎY‘K-²Cl RÆV^ ºqj޶n,²²*ÞTPê\Œ:0´+Yá+ª¾Ã–ûÑGx–ßáQò¿µé<ƒ©ã TSŒcŒº@íÐ놌®Ñô¨ŸLŠ]^šÌpÀŠ¢ZΚFá”&:–­tž†ôwº°­ŽxKî,K¶šÐÂÌsH¡<‰ Ògêƒkˆû»LNmŸ{ÌÃ~èzf:EÞ²à™,ìÚþß]Ð]׆êÜ¡¡åó"‰ ¿§ÍMx!ÁùÖRý~NÍ­.>>èl¤óØV¨&K¤ÓUœk·éáÙüÛznï 7“ZC0Ñò©i©5Ò f¥Irt«=›Ë[ÿqþãdV>ÜLvkã……Ú‘ºðŠ]„8^¯-‘Æ ¡‰•ö¢c@¬Úa†tÎNt+¾Uªeí¾‡éÚ /m_{L«ÄE=†¡C­Dì—Mw¯'ÃòQ+)xôf„΃À¤Ú®èX®“ùQ¤ƒ„¦ç½!2 Kéï#ãg©} ¶*"½änh­ÊŽ9±ûÂÚ‰³Ñ•‘>T/1 ·ÅâéöŽ^ÄÆ<6ŸB(Ž¡zºöV{ÁÔ8þG·Õ{ððå…Å9¤yt™xÓÐÈ”&­*-Œ7LÙ.‹y…%$¹u^5¬´Æ»¬å;W—7%3Ì„iL)1›ÂiQO#%ììΘÊk»|«¬¸¸rVPø XRÏŠ~kSµš¿]J(?Zþ@ù0¸«v¥âS"vz ­‰-‚¨õÞóñÇÇ¿΋b‚yYÏ™ÿ»®IÃC(¸`Žkê¡f&þk¼çŽn¥"¸&'L' ¤7t~eD¦moÀKæ;ÌÚAÓɘÝVltчé8ÃiX´‚c¸‚2^fë‚ '%:þ¾Õ„žðàX/=­Í02ü}ž7Ÿ‰§·»¼CªO•.‰þ³‡ Z]ˉ3u)é•åwén•–Ä‘A?|Ý—u{ãüÇßkC­H³}IE€ ºït¤k¶[vMPFãTS-N_?yЙ&¸òÂ)®]ïÄ w †tó¸6þ37º_üØæ·a&š&JcžLÿûñ0[ h ߪ¬6HÞ~Š×Ò¼,@.Ûg±­ŒíÌ#Ä©Ÿ—F©q–KÈJaä;¡õ âNü|ú§¯‡’zÆê|T¶¾€}6SNužµ0ÀŲ§íì–³(„ß)ÕßÐ'“ D:U¢tµ?ïδ@íŽ2FèGX—¢&TQªÅ½!ª\ŽvÒd;5z'ŽÕ;‰å̦Ô""„…ÎHEºA¼Ö–Pmî8 @Ü7¬a;J­„UÔÝÓJ¡rجoulßÀ#ÿ¦EÍŒ/Ò„ (•¼¸ud…ã&…×2¬ˆö/¾s­;V€;MõmÞtI|}%ñfi§Lê2†ï…ݳî^À~|ûeÏÁ¸Oجø´Ï¡q´ƒ6+Ä|ÚZ!øÐúŸpbÍæð†ÀT¿+´,?éQYK«!°òÛGÞxÍØäК^7 Lí Xwq <²YÃRD&®0DåM¥·Ýʯð€kì罋ŸX’×uV†Ï9¦Æio¿9«S /‰§¡Â=úûafýzm.wªol@Qv2³ö­PÎu²Yj]XFø.LgÞ:‚žúÖÿ)Ç»¸E2½ì¥ÐcEõlmè¬î'9|GP“»Û>‚g^bEÿYÖ‚fˆ; Ú€}÷Í;玾¦Æ¡0¾IéNU‚J¢þ;<÷mŒ>÷êA‚|>ÓkŸWS[¸0ðÀ³^B@f­wã5C6¯ú…quðe>ĬŸ•®à5Ev$Ú§Ym™î×3u žöRb”ZÞeŠ’ÌÉBc|Ã1v`ôEÑîϹà×.¯Œ>óŽŽä±<¿M®IüÅóñWïlNÙ¸/T-ìE‡jM}äwÉe‹OðÀH‹UŽ‹Ï%,ÚÖSwâ›]šÅ£[ßcN"zRÜa¦ðÓ£ŒkÝî8‰÷w9Gü¤p oëŠHãã§›„ÙXa´4"Tu˵0°Ï—’^då€]ˆû}µ›ȹç:£†ˆ€kv»Šq±‰4™C­+œÕ=¯ÃIÊû@¥§]¼<@õáA;[ƒob&€â>ÓàÎŒJs,Ë@ÒBí±âÃÄ2ãüÃŽ¡¾§"–è£ó¥[§á§ŠfG„i×,žõàÜuœ_3)ü& ~yºRõ®¤A h¹îMËÃ?íou·¼Ž=1¬Ø™ZúJ(©ÓÇÏÅë/þU„þß.20†JpGl UÑV7ÔW—¹=¹ývÞ ¥FRš­]ÚYÆã@²špé¾Ã†Ÿuîè‡ÑøúÊ»š&3W=þÙA¾!©û6Ñ>p?(Èè½Ï?ð–͸\~‡÷`½ ‡3Ѷrr«%£ ükÃNì:ð/œ)%Õ'õ|ÓE·ï‹ílüâYz$ànæ>À¸.‹¦Ó;IÄÓ?6æò|:CÛÍ’ÚÇŸ&£¯çž=µFjº0w#ýÐÄçX¡-ô3¾¹¶4*ÞV9äãIøè²=Ÿörb3å¾³»©¾wgž;›é@­w~ØZ ›¶Æ{ÐŒ‹ž³Ïà†v¨ÿ&ÿ» ž¸Ò?+Òœbµ•^ÿQž¹÷%_qï+}bT¿ê½™±ê1XbWîçi¯ôo™ù³ñφ.®ò +ÎÐæÜ—ã¥V)ð¼br†ÒìÉçD€âÊ‹¦š·¿%G:¨š/9z¶¡â«šûUf×óÆrÙfQ8ÏFû'K^ ^¡`|ã÷óþå,Eí6bÕLÄqæ5às…þ…%ð<‘ëÌ›ØæÀV¦Hµ{Í)¤[g1½~|=a¹AŠä……ËAŽI¾ø¡R¸°.{éÙ¸wµsƒŽ$¢]Xïº=ølÙQŽJ¤çàTH{LrrßÅm2eVÉ:ì$¹É*ãσQ"öÐæÁÛo±åIÊlã=H¬¢HΩ8Ž„Mö¬‰ÂÜꆌMÆc-,+H­Aï~ Ì 2û%$èç#é+- O4Ì,ì<ßQkmwàÎäªÁ“ÂÉï"8Æ2/5<OFsï–ÛÓ2ÚÐJ©x¯øº1:7k5Ýü’á“ ×p•Ävë1Óçú Q-ÛK&Žr^üwq9n‘šlK¯*›9Õ ˜”n§£ù(ËX-8ó;ŒÇéó>ÕS«¹ešd½Hñt¬°%íDÖ3Ç[õg ‘γØVû胱²d´ÅG<åiênλ¯Nhb€r å 5kûêsˆÙ.Wâ÷¬´ ÅdWQo&ö/Â^6Ž¡Q Ø"qœ(õŽd=>‰3à &®»² †?®¬ÍëR÷0‰RBô`I¨ H’’†Äøþ Áë4‹z<ÙÔÓ‚[|\ÿqp»v„haº$r…ƒÉN@•w8 Òµ­ò•¼‚768Ì(2ý¼Ë£Ú{5š +y_œ®àýX)9\yeî©kT.à|2Œ=e“Ý€÷Å:3ÎXÏ‚÷²™òŽÀ÷¾Äq«}¸úÅ68¸a»“-€>4²R-8çÖW¤Ž?ÕÅQv˜iƒcÆjí£GHªÒI® Ö…µl=¶… ?ë~Ž>÷ªÔnøë"¿ÿ˜pÉÄ'‚öZR„Šp~,оn!†?!Þ°f4¯ü¯„Ù„e|!¸ÏËÅC¥¦ó¼U"–àî°5°&¼òk-ÖaU0jÐå#¤sÓÃùϸ?ÆBžÙÁú«ä©6N•·ïEDG‘¢þ:?7å5ÁÇržõ¦ã,¡=r”uO²(ÌG5\a’ ëžøímWQûs!ª¹9O»ì$µàÏ“ÑFIn¸hÖ”Õ]d\""~+k™Æ™ªjà¼{ŶÛœýÕ¥4^øÏìð’/n†!]dôe•›óH«ˆoƒ¿–òj%ÏwENòŠ1<ù[Yæîf¿IÍæe)D7N,ømküÃŒô^yØp[G-ÝÍØÊìw4ÝØúT¢£pñž­çéq¼ßÊó™HUz:ÿÙ†æëT‚/lµM¨=ìÓÔ¡»ñÎn(Á6¹ÑwP4ŒÌ+€èE$¹ÕiRË“y®Ñ@j. ÂVÏ3Sú= »î Âíi©´Õò½|±3«Ë2½E·rÔòø%°¨l…žy—ËþÛH˜ÉŒRçFd|Â;-ÚG8FŽ`2+¢“ÈUª›ß2(~+Ô9‚fÿ(¶²ßsúÌÚñEºxøüm’Œ?ÁT¾ˆï-³Vs²0„t«€šU„½¼|4¿Ö‚'‘l ‘i¶p.‡‹PŒÁ¦g,D+Æ.‚¾. ³¦Dk€+$ê½UÍ!Š›cŠO냂ÌáûHq¼`7§ÛôH©g}S[ã~‡4sŒ.€Rð$¶òî3LD—lµÕgÖë$4YïŠîºSq‚{ìÇ)TË*Õ’CV›rÏCÞ÷c˜ñX$Ywé¡)<Ø™¸‰#ÄÞvÔ4#Qê,;Páý—É m&ggßÙIÿ']^gú~üçþåÇ8mýhòƒ׺ê%‰ßÝe÷»Ó{67ó˜¥x¼ÎG&EfÑ9ëŽ é!Þ­T;±ãv /'«H‚ @;2¸ðKç=7zD`(2{lÕ€µž€jñ©cîÍ<¨–a\Z)€; 1بmXæñ»…¨ñoßù§ã ¢²ÑÅ“x>cE÷,µ øÑyRjýOþëìf¼f Ú˜è¢fЋD_? ”ÏVo¥!;N L]A%Ef{k £åým(i$üÍø‚ŽÚ>Ÿ &é©S%ë{¥å½Ðwz¯s} #³äó1´Ú9 u1÷â¹øžà¢Ç¡Ô&hâ«V;ƒžô † Óåy¦W<ìjÇ·eÀ8ϳJÜPŒKíÝøPˆŸaÌ߯C{ÙžmõÿÈL9îXÿvsé3¢ó~ö ‹I|-i ÊàH éBv)ˆ– x8*¤±¤*Ãh|«Z˺8³ïLçµÉ,­çÝŒOÖ›¼-àNìo´CË]ðÑK£Þh+?`ÇïrF[f?«¢‘¿SV»÷ãß_µùÌ 0+ôã–7ÙxŸÅ:68j2ĉŽiQPÃnk #ÀÀ{u?ˆ’úÔè¬!4×`fQó–ˆËõ®¸uj0^pÓ¥óüxgn|6íLU©ãóe㣻f–(i]€Ñà!—…Ÿ}ò’½¾98+|MD o›“„Åp­…¯±Ô‘1Û‡Z­ÿ@ºŸSì\öÒ>»D«¼\î”éÂAœ‹Éƒ9ΦÊOLªntˆÁ[TÖ·&hWèÜ}_ ™»BfÒ¨¼ Jåq͇…”#±Åz÷ G•`ØXý½ùÙn49ìYšÃ„´þÝ@ð­5ä#fÊ6žWAzé» (¤oPŠãj¦Æ1yh¯ 3{eÔm¸¼õAò±·rwXÕp+‹Oêavõ ¦¦“Y­„Œwm&zŸvñ øA»ÍKDHµø¬eH‘ª4ºÿþ))CìÆ)n¼´ÉQJÞcèTWdú¤hÃzF®n«ÔEõÜFÆçÜRþ9A¡=D€¼CÞWë*¡æ“PŸÃEqïíH}NÍÆçE4ÿ[±2M9§Ž¹²÷e4÷%{¯·Å™Ê ‰T‹åîÍ©Û=“¶†a¢HWžà“$áÐr;y±ƒ*ëë7ú?Xuƒ[ ŽS“9˜‰ä7y‘ýM-r9ˆ9°´§Ë‹0£ôk2Uþ Êð':SFDáä|¦Ò"yƒ¯+)4”Ú…ÿ¸ÞßÙÓ›ÛÀ{Ë:p­þ*Ø»5´Dhºôر», ˜M[…9á­jM¢ÇÖC³®³ãYH<"jödrW^ôHpÜþ’ÓYª•ãŸy’àÈLÎtð#ë—sÓc0ÿÎðüøûG&æÄl¢¯B9Á]×®z^öýg-\üžõ€+vÝ/à.Zç3ŒÇí/EÊA ôi }„[¾0t$™&¥(³iéÖîYèC[l –5ãRžÉþ?ý~)`]8mµØvIt‘"KW¨æ7³ñe˜“p¬882.g|9ßkDn1A,þãüÇÇá®ðÊ&q¼qÅÕ‘dP0šfÐ[>cYLÖGÐYª5~ÁÊ­^Ä/0T_°(Áï¡Õ¶óð-1HÀNuldÛrgµªÂŒÌ(®#â5¤¨8Ý'oǬìæ6¸DX­ÙÈ¢{U‹¿]±æ•ºÌƒàmCˆÿ'´ÀBwZ˜ÈY~“,B”±HFð  *b3²té8@'Ÿcµ[Ó‰‰¡g½eÆœ;?XÓmœ%ɤKƒg¢BjÇv&Õ³õF”.­È2,ÀÁù׆H®¤>æJIÓΧ>‚LIݪl Òn qÑ(î°µ˜iÍWK´ƒí$p†6éÑ–cTÉÞ²¼]2Ú@…©Üz¶³Ñ{“ÎÃ\ \o¦­J„ ÐM£qÁZ-Kà‰°=¬yØ\,ühdC#ù²©J¡QÎüU‹\¿[³S¦­vxAM wà¬Ögýi ŸÉ6:0ýUUÄú1WõCd©Wfv'ÛÕ:¯äù*rÃC ß xæ™)f:(ÔÊ]ñA_¿¯Òî¹ÜóÏî.R{ä^à ÆŸ¸_ôwòþ†Žò)2’=x•xeì©ÀÜáþksA·it~W`³ÛGüNn'·Ó ØùIà–¤]îÞ—V`´{x&‹ù7O•à œFÎ4—$‚?òþôË÷aÓytgEv¹©¼ÚÈLh¦ºîD½DIZ,9E"§$œ84€ò¸Â;À8BŸßŸ….P½Žy>twüÚÿ"]HjÆ ·&‚‘ÛIrŠGŸðJ~7z­–Ðü^ƒ [tàtê¸ù“YµaA³—¾˜äØÕ‰­E!Úqþ Œw:£!ESb„yi_²Ö®_ôZôª0¢˜$Ì‘½sð$ìç»μc©+Ÿ†o8å’,üý½aö¾i“ ‹ÒÐÏyÝIs”Úkk~ž1ìh`ƒ¯1a=Š_Öž˜ƒ±¼æýõ·‘¦µ·4«p¬=8w^ɺhÝÊhÁ¶*­ú_hG™\Y<Óxø&™’UæÖvõêL[×ÔÈ–ÆæÆ·— ¼ÿÇá@Zì¬Nôw¢•ºSìšdMzÙÐQ°‡¸ÈpºS7¦T…ÓÕšŒFK×…|ÙšÆîóïòP¿7²fé—¡œžÂ!©™³•¡OSÉÜj£S‘\é =2aŽJ¥ëg3r¦¾–VpAÜÜ8—ÀùçôÅk}êâ-îMË”ÁœƒGðÙäaiÝ?Ÿ½µc¾\sã˜å3Ÿœ–½"Uçkü`ÊÚ¬Ðö̽ÈÂ?a_·D%[;’‰Ë{ˆVÖ·Ï·°RÏ*ZNÓÉáì®áó­áçºNNKï°\#yw’¢öw.³?–ՌЙœ‚pL¢ I€O:¦lp¬¡¸gLYKø™dÛ·¥U ´œ­Uè?JþZÚ¥~‘Ц;ÝBÓ6½µÒ¬¤¾—£×ÒîëXá†ý K9Ë¥ ÕÊE •žÊÐvþ®;èÖ§[3ªÝhb>Ü»ú©{&G܈“Ð…Ô{uBw!œWõËž4ÂÀË.!#£…ÏtYB» ®âQS6/ºõö$ií±#$ÎÄje ¬|/·™E—‹z YÐ~BŒÆèÞ:æy·ÿáÉzpõe·ÀÒÐp+$oðöÆŠ½øŠbH¬-8¦Äª¢fä´ ü…¿NK@H’|ïæÛãoT¾k&Ù"ÿ+Ž7+ÓÏjÏÏVg4ýÖ\Çvƒ^EñÏq„±>вÁ¼‚?òÐ’ž÷È##¸¶Ä ¨A3ÎëQh]¹˜Ÿ‰{¡¥Ä4š¯¦sïm«Î;+F×kh÷NÛï¡jIvÜøÌïbÝ^çN¨!˜}÷çe‚5™N‹{±¤ë²Æ¢Ÿ‰×"ø¤P(â?íß°ì“ÄdÆÉéÏV9>nXž/}¨?úÔk4ÅÌ7½ÏÉn·VtûZnzõ†;m(¯ûÞ³šçœ“ ™«ô¶¬+?ìNª¸ š+vN•"­÷PÓ{íÒ,0eª©õPr­€2 Gè3¡à\—ß¶üRbo ®Ï)ÅÃÀf1+Ýíµ÷þV*Ó~w ¹Ø´yPÙÊ4>A5}»N yd8OÇiœQbC¶7noÎôëO{ëóÅ­ÔÓ²~è°hŸ0aHµ7Ò¸ªª+5 ƒ¼R›÷ÓÆZu'ö®ä9ÒIöÐSè-Á÷¥º¯oh]ƒøîrüf\žH«kcúV§ÌOÁQ¦¬ä£×¤ U?ÅI*×:ˆE¯šÏÁ5ÅÃ,1’T `ïü!`x¨O,%URH³½MVøËtœ•9&${×ï1_¼ÅÌáâÉJÁ䯽ŸÒBQ:oSôAÂÊ\Í-T¸[®Ð•ÖãðmCÎÄÜáV7®nŠ„º[µ íCµËƒêµÂ¿ …Ë%6OJ0[9"îãRÊ ;È }Ç`uršÔ>x´í´t¸kj—S`»X’ Kqüª–UFµ—L%I=Ña\…‰æ´ãð·:9RQâ‰|À4­­ã õõøBû¢hºé¨s‚O€x—ŸQD6AÔ6“lņÒŸøbúzl?¹šåìŠÇV[(Âj–Àî¥NI;6U܆u'ޤ¥•B¶rga>/ež¡áü ˲ìV òŸUzÙ"¥eZÒ‚õ..¿ ¥2ƒÄaú,…p¥›ßZÏŠZ°l)EJIñú Áö3Ó2êÆzIR;"ô­½Ò¾«jˆOmpÔ y¦jM69Ta“*“L[_Ì•pRk/Ëßø8ïjûº:|¥"wï áfÊÀ$eœÖ§V‡4º¯d)0è è~P£‚ûÏmPz­ªùÉ Ù7ÍQ03;¾PÚ6míH ñn8­67z œú=šü\yžÒp­ôÌgý×.×°W·.šºrtsûFè†ks]–½iûц’ÇÄånûém¬ „õ$OV.ÜK¿Sn©ZUÈ£ÐaM·êþi§ž¥V´dž®ëp×ÓŽAõO"CTÍ̱½!á6kåàáxÌj{¯Føl3p[Ë}Þ¾“©¨ õo›Fzß^꯬°(Wû6x¼heejéä<+nP:Y­@¹²…Rò²&÷8 c“¹Ø’õZÿýqÈ*£ýXáš Ì _”ÑÚ÷/PáF:@‰åÕ¿ð.˜`­ÉCÄ´[ªÅ¦̼ öŒoÀª#Eq¦dÌ“¿l kïÚÓ;•œn–§²©¡@X‘Yi„,£Hòÿþb8¿-¡’㋆‚G|_¹3צKüc]`ÈÉÖœ…v çlÛÑW…1ýÍž—äÕ.ÆÆy€Â›@–nèbxT]û Vöˆà䌽ãRM,Þ]’Z<ù’TÏowT²(K‡1Ê|¬m€Ù°fœéúDì…]¬IT§6¬‘ñô†‘ç8€÷‡µÄŸÉèƒÓé'èöØÙA\¡¾Û{áANÉ@uI¬Q¦Ùůªw©tÀªJpDOä´’/5þªw¡YÀšJOQT‡?23[³ô„ä 41j·Øê‹6=„ÉÛ=z…ŸØ4²7_Y»üDþ ÏǨ5_jxerÛ[0ëk0§—=üeåí>b½›qP…¨ãùùþG­DÒz¬ËÉ€uº¶º ÃdÚ0¼>6„äqoY?µ™<Ö ç‡Ô·2ÔÌm$·~¿>’ŒTÑ[]¨O0Ãp|Ùh ð‘)ֈͼé"d{wìåúÎxüÊ×<Nq5Hê¢kŒ{ÎÇ¿XCY{ŸƒÍµfÒ³Û¦h]DÆP˜¦£”%ƒ<ÔOüvX·§#ò¡!{äYÛ-Šø¨ÿ쪕8Œõr:ËV„D#ëþ1øo<úÇß7> ¨*Ù°ü»ýóÏïÿL8‹aÿIâ„ÕCÀª=ʺlR¦÷©R’S(œ¢ÙÙFô'&Ôí‘0Ž‘”ùêyn m`\Ò$VЦ5ûq:«H¥?GEæ%k£Ã-³Œð«ho¯m þ_0©ª¥«fÒ£Óòþ1S»,aýÅþ®Öq5Ôt½»¢TbÂîùkº®äÔ&†,ûC˜eGöãÓ„-suÓÑJÉc¯'¶tñ |jZrj[:@KnéÏëÙ±ÅG‡`èaбMšŸÒ«Yü8üÀm/þœ©a0í+‘\¥®u+ ¾²Ù, ›Ý0ÓZñMn; ½D¯aÚ›çX·¨pWÆFÇÛ—øŸnÈ «r¡5x3ãîegëż·xŒâw”ÃßO;½"–gÙas8.+{*•(† åðã0dž½DÀ½º|þ}Êþæãr az™­Žé ôcY"¤5Þl۽ϭÐbʲ§Ö<Ü™B›sVß wŽdowk—±YlÑkQŽr=U›6›{~²H­‚g7*ËMàÆfäÿâÑ#KT7jC׈ݓÞÛØ|Õ|pµáËÒ¸Ê,FÒâíaÖÕâÔd¨?§u½ß¯ƒMWôñOs¦,Yê#²˜dãXÚ¾œs9ZÙpýe ¾Ï>7Ç_~ùññi5_1dõ£äÚŸ¤T›YÌÑÂ}ÌEUV»PCä-Ý ÏϲE>ÇYf:¨l¡\$x>Ö¦h±½Äìܪ0è;_NF§4#‡ÞODŸ:²PeÞ «d¤C²š©³³P §ƒW÷s,-PnÇJ@BÀ5ïšßªB]œ¢L?näãéüëøÎ¸°’’„0#]*tÌ‘ä(DØØq.‹ ÛrRͬß;Š¢³2`amáwŠ4Ú¾§§llúåÍÀ*åõ‰#`üyn¹ÛÀoȰôBF[¨¥>{ô ôdS§›PÆ·Ãõ\<.…Áµ^;„HS¾´§ô(÷Y -#ÝK4±ÓÍTj 3ÜEFŽÃÎv;à]ûFÆáÝÎë§W¤…©ûéæÎv ‡0Ûr‰ç³ä)²6c ÂÞœÈ}¬ TsPÛáàqè599WY³JWÅ:þX*Hüñ•éLø«ØÍâgÏ;²ñjÇÕzRœÀ´Ôt÷H ÞÈtíÁ7ºr4ʯØmpÃ-Ìpò熰¹È¦·2ÊÇRHŠäºòÌJ$ãŸé®’Üì{¥¾ðIeír3còÍu.=6^°«"WI°>‘Þ/áÒⱈ·÷ŒOŒ´úF«¤‚¦´Xe†É—¾Bgq—z"&‰ÐÿJf»òS•MƒàÅP¼à¸,%’zòσã9ñ%ðÂë”á£ÊQ–eÙÚOŒ=Jãjîº 1'²‚QmõÑ%ÃO$a…mùï€Àt¿ÃF ¦ÙoA—5ÆNϘ&¼6èäQ9†=3m$Òf¦&k„¨=B/ວ²þÃ˾2hwÿüìÕ!É…G²¡q2ñ¹ œì„q€ A!DJ†‰~PêÞ;…›ívß?&ß´÷ÌT6K‘öù†šµd/eŽ|C3\UUéù(r1¡œ¶›^XÉ£žd: *˜^ÿ¤"XU•IþRlp0$î¸SðŠSø1TØ#\Û»ƒôoŠgŒÌ2FðJt-"ðÔ0ÎÔ¯qŒÜ{rp𵄰} 5 O{ýþƒP–³ã¿vP2ê\m£¯½Å– ìèí3¨ v.ûiÛ›ÐS~ÐÝêBá™À÷•éü(%)i-8õEF—Ájxºk1ØÝeg1^[Ìw°Œo¹µãcüwSžÿý¡ôß7Ÿ#ØÜ.µ•.¸‡£nÈdX1¾6Á Ë;àmlHqYà?¼cWuÜtĽBHÖ*æiÙ-w³˜ï—ON+ ˜Q`i‡Æ»Ð}iµQå]¨¼‹ŽŒxs¤‹Žà/ó´ÏPÅF{кï ã’b9ЂzÊSÆ÷~’vxßšZnç†çâÿÞ!eZø¾*þßןi=W‘³O‘pqcc»%Þme:å]ÂLì}Úï&iØ¢ìdëØ‘²s$×=2 ‰|‹Ý,ëøQÈtc%!ö{É.#té+±Ívã¼b×´"×¹pLUerhº”,”“á²ö˜©.wºÄ ÃïÊÔkx=^ “—§\ S²>Îe•Ä©ä3Ê=|³ +¹ðŶ<ÛE/rHÀ|`<%DFnTfÉ<_œ»žëáu.c <«>ch ½—©ž¡Â[1@Ï?Ò.~‰ g¯ðœôvø®;ä)¾¼ë^å¦Å™°ôªñÄôë‘ñ2Û«¢|f¾2óZ'#÷G°‚‚etX:¶áG"õÆ~36YgVÀ†²è¤SfÊPûêè”o9È™lJò§ (š€•¦¹f^2.‡¯½˜S¥Ü )áÍ\B0+c:®ƒý­fÄö¾šÁ? ïËÑÀîê+eV7¡]û]}ìûŒÂyt‚"hIJÓºd±| · r×FHøÁ=ÕÞ[<ÓæÒ:ý`ÔMcÕvâÉZ(¹|¡v2—}!Ó®5}Û‚½LZçÊ&ƒ™ôk5À¸KM;Tð´€… g<Ž‡ÓŒ,ls Æ«äžW5Ëd3ü- #˺ŠÃ‰=Çü%ýÑâõ}‹4Õyè©Iµ­Lïc÷KQë|æ¶u³†‰äQJ¿p°ó¤$ŸÔoŒPØïJ|QÊ—¤íí 2_¿-¹ÖÖfÚ—ÕÏêÂSU£UÞ%í< UßN–…½›4K¬¢øeZM»ƒ‰^²,iJ¼@ž4O@‘Ü‚]2Aªåg†í`ÇXDkÚÕQ{HY: .û’q–\%ã£IÁP³Ä¡i£!‰«ß ”ïoHÍ ÁÈ šÂmêÃCHɉqš§ÔX8â]¶÷FÁöã l4Yv‘Ï)—ÒÅ'Î\¾½¯JÂ!'ß½ þ¾^‹zãzGöŸ>ßl… ¿’Á”Ç8îÖÞëÞl¢9«¬ÝY™ý¹ñ}š-gE?]l‘ÜíÖÜ“ž§êoˆÞZ\Ûžz]G#í±VD #¨K¨É쀽|JØé8r%Ò´Ó¬ ,#‚ØØmó4(Â;ŒššRˆF|ð8kçG´'†·H üm*KyKâÊ}Ãò>唘ƒÒäêÀ±FXÔP)ok†1´JÁ‘³A¾3L*Æ ±¯ë¸A“Ú!¨ó­ªQwS â–U.< {Õ+iñìp™6»H\ç¡Ïvù‚ðjY}ÀÜíß1§ƒìáá·0°¯6~Ûžd­ÌûÆ™;qu›È,¶Œ¾#àÔTdM2'~“¼•vêP•½p°Kf5bS´âž#±¶æZT=)”¯ÈskÙ+ÉC:ÝÍ5ïžÓúhã›´ˆˆ—þ˜“m§¹2—1Û†|¬ÊÞoŸeË£eÓ}ë(ú_"¿§Ý‡Î[Ý]ƒâ–j(À"I`!ö„Ë>]‰"g1Z´êûÁˆßܶ鷛‚GîÀíØ3FHø»¾Àn@é¾—é³—ˆ} \J/Çï;†=gŠMÀµTt̪ßqRy9Í×Í„ ñUFÅ"söG µâ`n#d6Ïûf[çÁeG•¤ÕtðâŸkØQô¡f¦&±øM/Âæs±Ÿ×ðQ¹sŸVN¶*Á:ÙžÓÝï»û~î±hO‚[í­¬B6êoáZ7ùŸ²åÝŒÍ𜠽Å%éíc'm»4¤õ¶jÔêmq†ò;@æo´^ÏìP¤?ã±ì©¥3#jû>‚£4uØÝ…Í}*wuÃ:PÈØER?òík´%WG]gZÏY3™Ôç…Á•B»ÉZz¶µœËm>ÖÊRÖ~§»÷­¡lçÉ'ÈVíïáË¿T§ÑAp¶wÝE=/(w¸œ=fZ(µ3¯ÔÁjh¯ANjÞº5!z|± ð“i‰cÿØG`Ý»«ü""CƒüIÔÑgïsÔ±óþeŒà¶…š¸’Â,V"•.L°è+|Ç]µÏd;ÆôÚ«!+@kj¯zÒ”ÒÚ–$¨M®ÿ â¥Õœ²ç#ÉßO»[‹­yOpô‰‰´±È(™äBÞ½>ÿå_?¢$;×?&eî\ÒÆñ/¼ ŽÐ$µ‡#«£m`5áanõEJÝŽØl8é«ç¡pbƬ8fÖÓŸÑØ¿ÿ$1°éôHBêg|Y«¢_Gå£:¤´4/õ(îvËnj f3ÃôUž«Eô}c±™0¼SÔJ›#m¦`6rm¬£©nâæ¾ôµ"û“VϬjÃJ?!žã™œ ÿgúCÏŸµjì™w…çÓŒ?#C¡Ì¶µØWû“Pt¾ üÂùˆ`¾‚<±$M½î>ûqGŽî—œ¹UôÙÖâkw%|Íyò¤@"OMÃ3íQ˜,eT‰ãêm…L$˜Ò~6£oNMN³÷([[p#E‚(¯ÅGzÚíœæ:wäÍõxè`: ÒôAæÎ­ºEáwëaÍPÅNd«z>$S~_x›ƒ² °Ä‰Gå±·#)u–Ãm¦ìö¨ß¶/wŒð72ýDÄŽv’x°ãA}b n Y[ÍÜ:=׎²©÷—˜—"4«¨¿Ì\UŸ¸JÐíß–;58»ÉÛÿŠ À½7±{(ŠŠºû§^ñ,ÝHã(¯Ü©ov½ï°`NÉ”{O?ù¯LÍ¢Ýa{ÓÌØ–ºi_9Ž4 ~öJÚGcl³P˸x\¥n;¿ ;±oC; » nE8¿AÌ$,f * o§¡w³dÅ13ibê,e|²¸ÞÇaƒ¾ ¶”k˜\\®ÛL†ƒª²q‡,ƒõM?¯Üºÿ}¡dΩ eÔ+`lræb|Xã¦ü‘¶­¯Öö<üä–¿R%ýrÔñh´­èÍØ‘Ä=Øh5Üæ‰Ñ xpãÕ×Ññ¶ßžaŽ!Íú/Úùy¡”š£ãID,1š~“â6A]³¾Ç·°­¢´1Z7ÄŠ“F€§¦¶#PÅ:‰äÒQ4¼¡Äøê—nÑÀ2Ý/"rI¾×ûÃÛí]œß~΋lÌkßä!wýo=YƇÇ|¹"HCfEm´û Ê.k{‹ˆË€È’# ø$$mu€_ª…îPØúÙ%B¬xö®h³Û³>ÛUxçdV¨ˆó#êXjÇ‘ÿ51[r4pgLð¨°ra0²u§ÿ =^|óÝþ‰=Ç{ð×±ÿäƒ9Çì°5Çàoc ÍKUYRð©ëÐïØ#ZïE.g}P ï¸S|öG¦°:$›Äíu=íj2k)ØïŸT\ Ï$§ug‚à¹m!’âS­“Ìwáãsk†ãí'%S›ýÎø¿ëϳ$^|Œã!KùgMeʽ8£Ri…ÛŠŽR-ü¸Ùn·¢’ eZºœ9þùñOß?(%$c¤iPüÇÌ’ D—„_„¶qŸxoÒ¯öUˆ’q¿þßì†×ÏÿòËo|» Ô£ˆaVû4â7üÄÉ»¤C‰: »9–ôa|:½[‰!Q( ì(Ð:¨›¤‚áŽ#f_Û:;ðÇxœ²Ýuñ|]Zé 2ÉŒ²µXö„¶ƒÐˆ‘q™½¹¬v‚ã€ËZ2ß°•¼ ¡êÎäÌc.„ÿ ¢£|\™W„ ÕivÄ0ûºc(0_ð+]ôÇ<Ý=É` Z,Eƒyü‘a§Ñ™Mð\-ŒË4Ü¥YRü*@Û—åñ_G]€_´©²ùáQh¨ULÊÚä{I;Ñ:¨åI¹Ë´„ç@¡Ëo±‹‡wóe©5“­ÚW¡L³ÒYÞ°úä¹î8WRï zîÁËí*N6¹T[oY#ŽŸ”Ó„Un½ËGæTFnPÓÊŒá,°D=Ä·’·¡×Ki; >çRÚWèôLØ­Bt™Tަ޹ܵ¦Ïìk¾&FÂctQ ɼƒÄwª¥(Åuïe>´X„‰ÈÒT0ÉÁ@S`¯w\>%Y‡ŽÉ•8ž×kÕ-{¼¸sAƒiÖ15Ðåã Vê%°)Àט¬C÷üåù‡§ß~ÿãûü’¹ñ”hRy„¾™—ù†Xêy½¶{ ù$<ã5‹ÑÊ›%¢7—RY(ìŒÔ ªx|gV™8±Ýe$‚bå¹ÖÉ+îMì)Ëš3xð˜wFà‰„*×Xšôö`ƒô!ÔÚÕúrþ§Þsù,•žÀ¬5•÷¶økëßïã>χ…ZXW~¹ú%²¸Ñ»~ÔûÒ>!¢\äºÌ¾§Éó Fú»+°ÞxR´rOFþJ®ùÊ0 Æ$%Œç¦$D¯%ðç?&º0P¬Ö>aÊqQwkj(A2-–q€Ðé;s^ÀqXDv°“–ídæ0^¦ »ÂÁ݆ß#ªÐ Èäqã­äO_É3Xâ5F3÷̰|<Î|»[Ø¢ŸÃšŒŒÃpÄr•·Ž„gÓÂpØtA+»ñ@Wƒÿ“×+‚y±Ðc)½Å&Å5cmsÞ¥pÍ õð0¶äª<’_¥UÀLìs)鸻úôà'úö¬+3áýnÊK ““Îô•!%JPØù¦ Ë=ÄÃTƒ2qó©›ÌMh ,Ûˆ‰–Põ2º»Ÿb=Ó =¾ˆïÊ×pP pî*W´3R¾‡ëI¨íü¦¶Û³¸„¨f÷`ds®U¦ã¦Éb¥xŸnƒÓì'“£3ÕW?ó¤8­µÒù¶g9 ;Äç¹ò`eµiR(ˆ;·ÔuûEût%‰6 ÂF9z+×€%¦ǪÏO=±¸O¤*o0œ|œ6Ÿ,‹œî¢Ã˜ÒYÚ=yÉl×%)º6vZ·¥¸‡Í×HŸûmI78Q1ó¨qzE™÷ì#‚¬dÊä#bç½N¢\ë¾>?ÛØ=ÜéŸÍ.FÃÞòí²lßúšÝžŸMN°þTœšU/€8ZP ’/LàGUƒÁù ½[lR‹€«;ü| ÖAÊÿs©~¡Ø.Qj‹%}â  Àºë‰S<«M €+É<£í~?CrñК¼™unÁ»µKÁÛÏ¿/‡Ê›ôö»ßìÒ,vµq{§¿xpKÎD¶Š7N–¯j@Útk÷q.™ÆY)X6Û=6rÌ ûC-£G Ï’_v©Óï6.tÏ­3­Œ+âÖŽãݦgR*® Æ}µ]³ïYa¼hïãVþD3—5¦™«~…ðªüí jÞÅnÈ™“1ˆô•ü`!ën÷£vvlÁP™k…¢ÀÎñ›Þe‚0âXzZI½ZÂ-•„¨4 ø÷æ#\‰4޳ì9 K°ùä† ðŠå7'I±qt’Ž‚›ûê ç“Zž&¤Bkq´LXŒ¨a~¿X¾›[Û4ûðÎÿ{" ¡B€[)ÄZØš 3ª_TÒ¬ömfÉ?Ý´ÈdßÔ”öõ@ üp£*«óR0øŠGv°FŠh}Š«x¸¹ý‹ldâ9NOâQ#N×Ý|ú :›!ò¥þ²áŽ1²˜.†à{Ïaþ à)õóPbÔ7jáââ ÿ]ÎÐeÃ3”3ñí8f.ß‘Cþbì´}¼YM¼E£k嬲,È·B#wÃt§öL“©Rßç„6ŽÐÎ éûLõÌûë]5žÚÒùxœpÉáúMº¯lX_áØ˜þilQ`íX„ꊦ@„VE€»R|+ÔÃ]%Ø]X¡¦óšªÁÎß{cŠcÞsÖ€ uG÷h‰”´ê“26¼ú6h&µJ0¯À¦V*Üà¤"…-M6³Qé±ø¤:Y­Mß2”ú:M3mÅ„̳‹¯‰ï¯£ì?ÓÚùöÆpáxëH¡î1‡‘¹Ê(Þ û85 Í—ß~|—ë{ê6/%À!·|HR%åì`_Hƒ)Ýz Žæ,è“z3¢í[/sh ®gÑŠ¶p³Oöø]'Jb©Zo[1°{õ®ÂfÁ€fɾt>¼sjpY‡Q,ʹ¢ò¬¹J˜'ŒEµ+†’@›‰Å7Âó`åØÓ=…ílç†á¶ã’ñ]‰Ïèäpªe˜¦ÊyOÀº‡‹Ó²!q¥îX$ ±1Z#ZᶺÇW0.€ð}I²úƒÊמ££‰…»9cIb-©Æ w@X9Hv_+”zü[ˆR99+d±$º—9ĵïJ“]™—];¥Xýö¨Õ·îjlí3ªª¤P™jÁÂÉ#íXVœ©WUŸ¦Ï‡;eɑ̣ÝùOo#KU§ç±avó²M¿h‘6*-} ôh¶ƒÃ¥,á½qÉ€)ú>ç¯#'¢¯¯åTsú?h –Ù¥Q0K–šŒøÔAb”aI»µw=g‡<ÅnÒˆÍâ“ä9÷ÎÒK®Rkî¤÷=ó–Tƒ¶c9÷“+"•Ji “$¾… M¹ý…X¢û¢9¢¿I:Áëèáo}·ª¦ª I@v/ûNñ·¿éáÐÁ¯.ÂUj2Ìx…¾aßÃQ)F[ g!2|@ Ȱ¼É¦IaO…Cò"B#„ à)&ùE0¼pS Yó¦¥k:¯Âcâ_êÈ|S™›˜Íž¼P.lí¬ÅG¤³fˆŠ&Å­³§õfl]^á„Ä«ã‹vR1áxÕ%ÐÏÙ³f³rH²YˆyW Áx»£XRªWš¨ >z—Ÿö&k2.jKõzHm={1]µ—%U*’Ôƒ$3Ø< =*…”=û ¨ØrߢzRø«ðwü?~Ÿgd¼3M¯0è{²¥·Iê8œè$•”*š‘· Æý?óz¬M1mä#c$gGñð”Íu&‘ZÞ©ÿHW˜k%Ow¥¥m Ë}{¨]F¸’Cß¶•sÒ …ËsÛül·±ááæÁÙ¤H’õÏ„þ0%Þc<÷: €É“Sa·;êÙËÚ;í©o¸d­>(¥’»Vƒü<÷FA'¤èô‡< †O?=7ä‹‚³Õ}Ó˜à#&pñC`äÌ“Õ\ø©×??~ýñ?Ôy¨„=BCR©;ÿÜʆIUxò“¾æá@³ÔSJ¸r‚áâ¡­-,“*éÁÔGa…\‚òiq‡{ËG å[ŒiÎnuD?+gl¿QØ&ç|ÁÎ@. *ha&¸œîûWaᲄ‰ØE¶-® ÜZí@×Ô'Ù~»Ów_âL+«8eâ¨Ýîí3§üNˬð4ë *Æ­Q§] Óbœ7þ+F°pR*ºÝð,U`)îé&¥pŠ¥‹ÍgQ.BuM²ß½0©X6Ùz) ÿå)™’],w…ôj{î‹Z¼ß{DoôÎ8bÒ¡!¼´ìõ/ÏD §Ï"<¡E}߬‰·ã/ÿê1S¬é/@V`t|±¶M¬îÖ­)Ð`&CÄyi&¡W;ëelQ-õ‹93–‘f/6=äÖr½„ÇÁݱ¡l6ö‘uÈq²mHç(L®`ÇŒw\HËÁã "]Oï³Î’6¬ÚŒÛG¿¨U„ÝKÂ5>s(ÃxE¦ž!È¥½*_]-„¼ÀÓýH³^lau?¬lš’«Jxu¼R=|Ñð™1´+GépîCŸÐËÖðZsÓæ™Â¬{ëäÕÉÏ­cƒÿMÒ’ô!;+ìÎ&1¿¼¡äßÄ×â‡Eœyà•»è°»¿Yùë&žB—Rß[ÞWû]LàÖDæ+ã V*ßû‰2Ÿq¨$í%~²Åÿj_ì5þ¾_N@äk—éúÝž‘/ò¤^Md˜sάj¬BV3xà¨5ü`èñ^W*Lƒ¶ØÄDB(,¤mTi-à…þ64ï)×0lž‡·z.‡¢–ÑþŸ…í_n¡'Š}VâdíåcˆaWÙ#€úœªï”ÝB™´‚á&»Qx¨‰ªN¥pDˆÔ.€ýyAÊušÏƒb ÔÇm7/_EEÌâøðváº.…è±x¹›ëÞbdC «¥[—35LÈå¨<ÌæGÒ]&ŽÁ2õC Ù/ùòr˜öÅ®äøËã÷Ô3Þ*ä>Øùº¯´!mN¹Óçu|Z2T’ƒ`?åq}f¥`Iì9¹³÷GI©4×ÏÝÉ”§k$½ÙÎ42 YlB½¿žEš­E ÒV¨™^ð-/_ÕCvƒ÷Éø%0¦x7i.I—Zn„uy„³í6#0t wJ™éäÍP}õÙ VíÈÖ£É$bÿªÙ,Ä×BuÅ-°;´iXÚRXÚ––Ôòmz(î‡om 0Fé©w~¶e§lk‹N´Ö­Å)7·ñåCã2­†Ï½ÿèÆ¤¿üWPÖ «Çžì±§èLùI›\®Cî–‚Vê³}”-*ãA8£D¤ŠC ™gG‘ŒO?ï|úõc5[WLª©£À®Íãh7z-¥¹‹ÆB¡ŽtZ@ÙíîÞèÔ&þ—$„Ò^aƒñŸ¦Òåt#ïn\}½"¤fN9|™eçM0¤«Ml 4UŽE£d=v:[8×뼟ó¥Ð­ãÜg¯§Žvë¯al:Jf¥y>È M!OáÁÃÑl¿jJq‚L.'¬ˆïãF_—K¯Oc¾Îºã·ÄT)«›J«6U©¬±~‰W\åFc…3¶òj­ñ¯]ÏM±nqœ•öf7¥µ)ö6’®ŸêÊ<ÏL4¯‘FÃvÔ 3DÚV¥·x\²ÒÄjߣã1o¼W¯Ì]“‡+n”Ô7(‘²"$}„}¬/Îÿ?Ãó鿜#«…ží…ŒMAªðÂ5 :$xØ [çÕ27'b&­`À­Åè›hbº1Þ®ÿMs4LÎ[·)ÕÖå£]š×ųä[i,e±~RÚÊrK–Çm0Ä>ý¾´KØòÔâ©ÊØÞ=‘P´QY“™&SgÊaf/ÇF=X÷ýg°‘FŽaÁêF„+ä5‚MEÌ+Q_"ÉÝ\ªT][‰‹žúžØ#{äÙ] bÉÑcjr0¼Î}äy`°‹?JªMµLâö!>õS¶Ùk©²>ëPßSƒ¹Ãh ¨ -ýA_2‚醡~y™ÀB„?Ï3Àò­¿TfìWJ™$ÇêÍywÚ‡žä#3Jë_VmJÅÛÅ »Yá½Nå^Oûñ†*í¡åâ<Ý®Ê (-BzðÀ€í ô¤×È…Ò½ºIʧ»ÉÁióÍâKå g†pÛ#×Ãÿ)—WâïNª¬•ÙxÝÌlZ¬dMÓ3}~(\+È7ÉÝÆw$Š"ºÞï6&è­5YÀï Å5é+^áò7Ö¿p •¤ÁÂçê‚g&õ€øÖvAµÂ¤ mtÆØXw=Ð^^?rãIRåÁï×p"¾ö¼áŸÅ& SÙ+ÆOâаwÀž¼o¥¨2y‘h©ÔÑ­bè¾gš×ŠQHO×B÷Š8ý³öa[=[i²Lþ…PhÑ_ª·ÒÙÖuÏ!$z9ʹÕèÅ’FÚZëÂåm®·¶ŒNj1Ǩ­3&4—ô£.öüP)hµ3ùsx»å„¬ØÔ˜^ßL ËÚ¥dZå£q©Ô~ ¶GjGu—°È¥¬{‡8,ïîñÌ”‡“U˜,ªQ@ŠGÃÌåWí«ñn&-à8˜´2k³pÓ˜(@pRëlnÛ býxXwE1ƒ:¨ÿ9Ϥ­œã¯áºr¤ íJG0æŽ" X¢î·Z;¬_C±Á ûtÊ{gìàXµ)ظ’y¨™GºhÆ¥™O’·lóÛ›fÏ„Ok£¢‘®ºOžy|˜Y-ôfýf|="ÝÊtÁí3O!ò¾â¸ÅAÊÅsÁ#LÙÅtÁè>MÌC¹‹Ü®ˆ?¸Rx{Ð*ÜCEôLÍÿ$œª×éÌqºá½›ÉÚ«£¬þ^³b3áǧüàH4~”‘{tþs†cè ôg™Oq=¾F0s»˜Iü^¤Ç,0¯T]‚ǘ™¦a,©ù-¯i'Ž[Ôù*˼¦4tJË Vé¢ãî5… ÉÔ\‰…®‹mÄy‡t@qƒ‰¿åŽöçXk»M× #iÀ-/Øœ¬ª‚¨S5ñ õqhäÌpºe;b½SDر©ª£ÿå`íÔWÖgo sAŽtõU°šP1ûïÜœº””‡Çé§ Ð*²<Ï¢Øqøýà×i…qzÁR‹Þ½ÖÂØïtdÿ‚@Áêmþöºc°Öœ"ÊÂoü9¨ñŠ`†·Úջ”@……ƒ® 2ŠV©ÍÜOð÷«K¦¥ s]B`µƒH¾IÙ壮{qf@ æõ 9\£xÆPS#[žÀI ¿ÅƒK“„ÞsÝ{’|9ô}ø°Z%®¢~mŠ`¤˜uAy)eãp-û^3"ʱèËÔ6øC âI¨ñ7õ§¼JËÓèëi§•ÐȤ«ì}ØNj5gËÙ£: à2é¢P%£xLZ[y|Üa¶È“4ÛPô)•ø-^¿Ÿ¼BM\DmËÙ8Ÿÿó %¶`?”n—‚VÑŽ~¨þV£š\å½Î‹#nèˆ+9Øz¬d/œ5Ó ö¸WƒK‰»’ˆŽJÜceO7,髎/÷80ÕI xÛV’tü×n96›±Sÿ–âuŸ>zÕ<þò6“säey`91Uî´¸D«×,óM¸xÓñKÔ?ÝŒ:·[œ%Ç3»/k¯ÙnÏC^zœšgÖþS;©{kó^÷œF« „<.G¡éŸ¿§!õì´\,NÁè7½0¶w=ª·},O£ÂŒ£Ò•~`’o­Y¯NTn‰ø¿„Ì |â«Ç_–`£û3 D£ùšÓŒiKEe2AÐö«èC¸X«À(ŽîÌ„niºÂ¸µanAá÷Å})¦·Iïà ªBƒh7» iFewp¦#$og]DM”â5n!SôFÓbt, ½iD®kJ›>EsÓd 7X‹ µ*.VÕOgg=\ŒÄ_¹d ÕÀþ6€´È%Â2ΦèãÛRñSš¡ CÉP&Ó\&Cäö¨ ‰ÞÈ©ÏEÏ;(èªïIÒeÙ.{¾0~Æ@jRÆÇÐÈöUžÔ5ÀGõIüæ#˜2I‚B¬½‰6Y>ÅJ;à~Ô ‘Iª®ÛSÀ’ O¿][u^[UXJÿ7¶‚›8’ ¿ ¬\éÕº'7‹$…ã;êòHì£Ä@ÊÊiv…Wäo¡ÀATó;ªzI‰‘x,& ×—¿ÆûÓǯÓòd±PMgw)RÂG- à­É1{s•+  Ø—/›ZM~x©_~î‚FçhÔñè=›~ÇoèºfjÔ•$[›“-\ÓæËóó­BAúMuŸ˜QËe”]:D°‰ÃìQ­OìKÅ8¦ó†ººÌº¯fëè¦Q‘õC B“µHÖ?üGH$ÁŠ Ö2Œ´¬ã?ϳÚõyðì_,²Ã­¤P>»Xý9üçDh['Ñ£¤‡ÙCÉÞs—þ'=I~Qð¡ueŽZeT¾ví^Áx©p0S\ßL‡ÐZR“7ôS¸bõ1ÉÅI¿÷õ·?Æ'”Æ¥üç=œÅö¢E\*zX—(ÌnÖ ˜‘hÞsܘÀ°´¯I£Ò²Ñwƒ FÞ˶ŠMÍ%ŽGû£3Ñ[P>¡°µS¶û”5£dý}ÀnoJ—×F·Þ¨M‚ÁÞöàÖ×¢4©D?íZÎ)ç½Ô øÔ(I;ØAœ´"ÅÏÏ˶:_Rà 0°ØûMŽx/Üèˆ*¢] 4Ùù OFŒ²þ>©å¤—žØÓÖ%eamÓY‹ÃsÌðºRPáÁ‘®­RI“¯,Y‚ç6¸d}CÆŠi³ñ+°Ån;xÁ=Nð}0$‰ðý÷­•CÛ[Ó¥<9dÝEk(í—/˜‹WkôÏ(içf1‹ß@K©K«8䓽5þ|ü×ÑÕ÷ DLm£ä3¨AÈËhf<Œ¸wìLŒZiî6÷¤Þé*d÷2ü…Ø ¾=ïL˜øÌ lz ˆìâ|;Gáh). ¬E?}Ð"UyX5±zH*ˆ²„GW0-º±Ï‰Š.||™¥†ÃŒU¢ÏÕi#Vçö±òm¬³Çq&çˆ ý×+"@SÓ¥=•dEY!©üž]PƒL÷ ¶óä÷ NnsɱQPå乡œÉ#Ôvùo<‡æ1 §n©åDõRDÊßhö–´­ÇR¨.!Ù÷ÃÑöbüÙQüùƒ²Áã¼>öºÔût&gCMI‡¸µR›ÖÉyÝöL{¶µÿ´o[ží†+>žsQãspW¾`DWO5Üð¹"xŒ2PÔƒ†î¦[¹{0 ÿ¢P%¸ v.Ø,Å5á56HiI6õjí"?ÁLê6ƒæ›šñÑ;v‹TêìæÛ^{ù¡óžÄ‚np@Û|¼´UŠ¡qâ “;Ó±Yœ@3y ÔXq¤5ì3U) ¿]ú°åvcjÛQTí‹ëí>cF|‹aBìË¢•Úãl¿mhÚ¤ õŸ‹á³ÖŸ¬_tWnr¶U/æ#J´QRX­yRZW¿w°æ|ß~»®ï}xþWüñåããWüøT"³Íß@5 @n®6ÈÒés?; MiQ WìPždf¥ZvýG®ÿºElrÚ»¡¤xmžî„EÝöŠ„ÒuÍJ·¬·Dü7jŒ‘†]¬›ÄÅyÒhÉ„…üºé®'J£ÙÁ+?4æu ò÷šCª°àíêqÈÉâÑýÎz;›' /$¸ð`˜ÎuŽ‘Žì‹À­’ƒ©žK5¶#ŽðXpG×êr¶†É×saQò veޝožri.—vjËíø]Ô/-Zà¿ËWjðÔ¼®0“íã B³É_ýuÈiOŒ 7{ã¯sÆ_iÞYé €RI…ôaxËÌ‘*£Gò‹±ó®ìa4aÒÎÅÀdÇ\üy'Í~…WOÆzâTS'Ⱦú ß?^w0‘†îµ~|ë þ%Ný¿—Ñ•|ÏÕ\òÎj{ßÉwÜ©òš2ÿl`ÞXZ«5T»hgSìõô…’²Dó,Ò¼;ÎIÜþCÌžö#‹‹øê&3[ÊàÈ…ì÷«˜/S|//!STEªÄDfRw¥äH‡ÞEý»Ó÷e½“ÚO3ií´éxŠœ;£G0ÿÌàbÉÉŽS~‰Ì­å-Ó?3üí‘ {.òoˆ Üq[aY[—÷—‚± öØmnÇXH(V<Sõvù¨b Ò¥”Ïeí*ö¤^j¸á})5C¹Âîg1:•uzÉ©¡=ª+ P "ÅH•׫”4` ‘ëáotäó«ö¼\a›¢Sß•Ä\qi¶»Y€!K Çßê¿ÈíY­ižâ(M•ŸûðÏ-nNÈy<Õ7 nœÁžÇ°r¾CÙmØÇ î•z`Ã,R¾Xe%ì[r\OÆ[uä½ý¾µ_Ó,"O+œÊ´xt¿× µçsm²,$œ.A_E>Kß &ñó¶+xaû•Ž"ë¯E—YLF×ÓZ]©µˆNÔ®Ýïbkˆ¬*\•G5ÄôÒ2§öâÝ#ªJ­#:Îú CfÃw¥(Kx%‡[¦ˆ§²•§PŽˆñN bGJBÇ­¤!|¤Y®..ˉ8lë~ì%5ʨ²·è$ˆ`©qÏu©U¡„,«pè¸qT>‰ovÛ7ÛåM]t\ñò%’ùÜ °¯UÒçÌ/e¾È‰K'ÑÝ…Ã9,j= f²Ÿ’›¸¤rà­ºL :óT!tL¶¬Mû¤ö¦Œ{¯´®¥]%Œç^;Ø Òäý»’²“ˆá†ÔóüRØI’Q:®Î½ÅfR2°co1ºfÁk¨ÏÇäá ¶œñ6UÄÖ·Ž‹f¯‘»S•}dHR~Zoÿ‡Ú!^¿_fCL¹CÚ³O—mñ=쬤Îu¾Ÿ$§áaĉõ9 ÷µ±M „‡!„ß»õÙA†æé„©ˆj^lSf¦Ó +êltPÄý¥f™onG)<ãðÄ}{6œŒ#yW²;üu'©~ï3wÐm%ò†À¿Y¿ŸÎ.YŠ‹Üpú³%?3êØ BX='›{C‡Ñ&únH`sæ#Ô™?·§"lÆg®“ÛJ)«ŽÏ]iˆÙé˜$!ž`#‰êÿÜ çžM&¶ƒßèiÍPïöÞQˆ“êX)$í©3CqWÊo<0ÞÀ¬È{…Àû‹5ÃM®á›mÿf’Îͺ QdU0ü*ß–pðÁè¦\1]j=Dç/‡ÖvÂß ÝZ{‚ÏøgtÏ+íLlÕv ÞÁ¡ÖAØì^?ÃÌ+·¶±æÙ‚Zéöÿÿ„8ÓQdm»¡ÈéÆ"ë«”:Ÿ¦J·&2ÜA·© ö#L‡ îç{Þ ßŒ5|)À*HG©JÐ(s5&çÎUxFkãI‡R†5åÄZÃРªãÚÏkÓÆá#ÖÿÞìAæjt Šñ™Ú+ ‰²õ|Nô¾ ?Ú¹ì(˜’ä³bä½>ŒlQ fS#aœÐ÷0SŽ”*TZÍ3KÙ*ôî”K‡ÀUS¨Póƒ}¾Ž^ìÍd#k:Ã×jÌU0ˆ †u¬ú~é[®ï2á>í9¼[Ì»[¶¯¶—’w…·[Ü’Âé©#´ÕªÈä©lYZTi–)çwÙij#)ZÈâÎQ«Âb=« øÃÝŒ$²ö\RM †Nì;q¶W˜ (ˆNt;OÇm)F±1²=WŠïk–«±R4ü!Ày c9©) éW©íX%­5eAÑí0\Á„Z;'«¯o·Ìþ]’»¥¡3š±ðýVQ«»<+( gEq#£8ùP3F'G„9 gIÀãQ 'ÙË$ØÇFË(‘‹ªmH‚_°¹`.)ã/¸xÞšÉùÿ‚šJì(ÁåÙGü,L¢ä‚DýƒŽ`²^³ÏÄ¿åy¬áFgÔ¢ÂûÕì„!¥“Š :àf¯ù§g9Ô/ 8ËIõ(¢5AŸºËz½N±×”Òþ1•“ Ý«œeúÚŠMr>j=R{Y 3€Óð[±¿ò¢»/Q"|°¾*· ò!¤Ç@õšDÇ÷M|÷Üs€rƒ-e¥ìý =:”äº$¨(™=!À8vªõ bP‰ ¶+(ë&‚Mk¤Ôç×0^K¹îx“GÈFLq¤ÑÙ”Ãk˜ …š©ÅÏõP*XycztC߀âZN½¡êv«1¤¿.úßÙ•3íóÆ^:m¸ ì"⢒mz*Õô›$§xD"UˆæŠyfš>\Í¥K…VGÅ!*Çó8£ðè·ð†Fáú·~ªDZ࣠”[¿†è1pTøœI@w¬ ßôÇŒ‘±‰ ­©ìàzÁÙ¢s¸|‘ŸbÕüo~ÊÞ‰gwäFDñ¹@èôecpäázv¥ÌÁ\ KÿP•'Œ9Ãt4°îeœet»îá¢À «Øh–ˆN3ò-‰€Ùxþ$5šƒh¯ïÉÈ‚Áy”S²U†£cOPÔ‚•êáðPxw´ o¨+×Q“-ËI2 2ÃÚŸ6óìIâL8ZkÁbF*–4á£Rw8ïêWÊ,t j}ÁhqX#ÔdÅl úœ:¤p\Å1ÐÇ7Š‹vç‹ë91«i;©1PAß>~¶ƒYïý’«ƒ,AšlGÐÁ*ùöZÛgJ·É{/-ŠŸ>ˆ¢ÈðíÖýâÚÐÁpA þÂT,k”¸ƒÿ.NU²qÏì§—ˆÌ»½ª}}ðº5 ` \#)é0ø0°%rk–R&8ØofÊš‹Ó˜Ól€ëdz9ð&§%ÖõëÑÂùå€gáj)ÕVuû›å"ûÙ•/ï'[{þû :®n†²O©Œd …êÀö• S[CUeÚwü±ŽëIõ"~AH[AÄ£/BOPgšÈáâîNf¦& ÒÜéÑ'â[{=ÆÕf¯^v¦Œ;“°9rÖõ‡ÃªªP£šIc'<•?2f¯ž¢“øŸ¦¶¶\µñÿÙ@£X2–Ó-ËÝ‹œ+6CPä’=•ΧgkÆPtEƒ¨Ë¨ˆ7øSÜ"ºØNœÖ´ÿšg´.z༢¥ÖðËÜÆ¬hp€oNuL¤šŠA ‚'Ÿ²èðU8±@~þ‚i·à·\ù&Ž Å×…Š€j8SX¥2a: Ð…ž'vj…+qNp³k<ÆÉ)rŸŠf· ]¤3ÄD»+(lK·Mó]Õ/Ä“ÜÑÒñšì“‘3qñ0†0Îe}˜È”r·H±‡š"Eƒ9tt¢¬\ƒn]ÔwÚMõ³‰´¿¦Õ_ëjúÒ(Ôµþ¨@N8i¼PH˜UdbŒ ©>8zm ΊN˜å±«@â‚‹m.Ò iFéM‹‘Âë ‹|-XOïä©”fJ÷âìÃî,¾%¢kÙÁ|5MMpKn^Æn §3Ĺ3ÂÜ"ÑÏǨdwíêãzlMÒDZÕÊø-5Œ'ÎÃ$Ø!ü¨$ ‘ZâpàDêo§&8ÿr_Ûn ôH×A¥™³ºL£ÖîGùk¤ô :DPg'a(Çm˜¨^Ìõ¸àŽî! 8ò¼œ'ÙîŒw†la† Kñ0Öà3Зj˜\Iê0V²yÜÞêš¼Zų¥•úËAkKd_Üú2t¾ b” á]½JOûè¨þ³„Ûw½TÒÆ1­aË,£Z¶N@xŠ" ìœuѾ‹—yØtmÆË·ìwÌÐ< fÍ­@îÀ¬Ä¥H%õkC¸»£“ ±0úXFR× oµ•)’¸â>8PÀù»äÁA…yîë_àÀò…tÇ”4¢ûq@á©&ZBÓk¢6+œUÅ%«gg4ö†±}¾_ý:p¬ftµÖÆ>œ”Ms»e…}_’Å•œ×IÐUwÌzŠ o×n¶¯F%<*­"œU(Cã;%ꕵãrº6:´ÉÈ/²jw¢’qåâέº¦ÎTÔŒ{ Êeϵ+!Q"æ¤&Ø~ÕaÝñ “·}: ùÔ¨Ca(ÌתÔ%6žòpiXCÍTǺ ±öjvàî/o¼½ºzÃ[{×Èyeèòо6s™EÚ^YT£u› ËQ}/ŸÚѵÐ|œñd;„Õ¤}jAËò"œÎ:Ãk†B$“IN3ú™õ¥#üõN¶õL¿*[`_oýÿOÿƒg-;Þ[½rÔñVM¸‡(Z°î¬“uàº(aÿ¦«2,wŸ LŠJã+׳ [ŬzY×N ð r0„¨òP‹jYC}1ÀÆR•M' vpøß}èq]=×HDjE먛Äïa:ä÷S¡¢'WŒi 3>KF¾@ÁzwH¦U ØÏÌd+!X·ŸÔ;ÉÆÑÖ·_4èÄÀ™€øš—ý>‡—ððç6µŸ\'‚L í³Öî×¹iÙ¡êã䔞{I÷ÁN›XȧdEï5ÇÈ๛O§ oÜ ÎèŒ7‚ÞýÞuhñܧ ×”än™³GP]:Lvêq´ãvʯ;çîüŒWƒVöI{õöa˜u. l àÚFžŸÉ8‡žå k"ff|¯¬£î†V‘µë‰Rÿ¬jÖ eŠoÒsÉ*Ú'TÊÃÑlt[ °U)švv‡u»SiT!çª0’ÚN ‹¼¶„bâ.ÂøÐd4|¡HÓj½âô6C&.w4t•‘r 9a|‚Ë ÿ쯃IMËS/—Gª7(ž[/§Þ› =.´ïRìFö4ÕfËÙUNP),ô?@5qÅÊt{7¶œ‹eú&¼L¯j»u¬NdPgÂ+^ÃÙƒtfW y&(rð‰ª{GÉÖb’ÍhA 80#¡á[‡{Fø.¼YÖ9廨 ÷æõøÚvÜí…Ħ™‡Ïº=лÑ;SoÑRJÓŽu”qÉèD)&ã0Œ0ŠÅÙØ€É‚!Oa'â!õݼ[ç;{ÛÝ»›ÆYiL ¤cE³ø=ÈŸLíÿöÁâ4W7d}1Ò¿VÊ.j™vU¢Ì¸»LôÙIxžY-·R:?K2£‰j)ÙfBz%«3&[LfÞ †Ý ³Ú"ë«áç“£Á³¹wˆÉ iºT&PVŸZ¨œ†`=¿G¡p‚ˆàO§#í` ¬ö ,­ÏŠ¡mŠÛåöÇ Óì¶ ’<(²šÒº>‘ufM2¼1v ®ðòLkGÙÛ>螃5ü_:PÌñv¹¹îã†Ëüa Ï1án&óc›ø–ˆª+íñU|'ÕŠ•‰1ƒv¨<VwZŽ€Y}Ÿõla–˜ÇC;Ùwt FﺙYý6–o,‘M³OgJ›'Z2À[œ»}7ßáÊ5_äÞ‰8Û²£t¬a$øNh¾óWÎ5ãYh?Ͼ7ó*§Ag5A4'qSpÙöv]HÆEž«Lò0ÚH‡ëËùRÌ`jìNÈo^¼+烪‹?EAÔÎB¦Cœ›üØ“æI¾‡Ø™ô®ø2£ ¿ä*‡qç*$X/ðëÅu‡vº —xwY÷ ã‡e­Ôž¯ÔW3ðƒÖÿ¶ )Œïޤ¢Ódz«0é¿*F=It]†­mÇtc(—¨ŽGƒ4¨ÁtØËÖÎ!üþýhZš½ùî†\ÓZÄ{%_ÈÁ,ÉêÑÝDç6ÌØ–c»‹JÔD¸Æ!$Tö o'd~É;Ò¢ý¤v”rÅE§'ÁÕ&õžÑ]M¥hö qæoc¾‘ý ÛF›·V½Ùm¤Åà4rCчABãGøJóPco0ÔvzÍ[cÌÌ1G™9OÑuyjîÂüÑ¢ˆ½0ˆ+*`6܆î~òhø´R026µkÄ­¯ÒŸÜÈÙpƒ2਩'ζËXIÜu„7¦ 6±² Yü˜D_=¬J¾…ˆiÜM+—N^6ì ”´½kCõý©ª½†uçGÛ½üÞõuÍe½5“õE·h-»¼N¦´‚_c=©æwÂíHVÔ1—¤•#T¹'#Ö«#0Pà”wš¯f¹©‹ ÿ;.]ÍñŠ#Wm•AÎÀçÖâæcÚò^ðÌ FŽÊ)ü7Øú€œñ3_íÒâg´È¸ôŸs[í:ò È~ßeWÓePˆR’"ŒM³o³" ð°€+¯ HFê]†;œê ÿOÿÈEke̵¦‡,€¯â¹0.¥Š~¹hÄ·å1pd­& 3¾-¹Þt!¹†]©¾»‘X54.HÇëOr—­šÎà‰'»Ë;Í(¾cyj¨%Z˜PiÃ?U3*ÍûgÜŽèÊÂИ¾T2…dÉ&È…ØFµÓùóÓp¸ªDqRZj<ûxq8B&£€,¬AˆVá+¨Ô WSè îz¨áPÛ±)dSyÿߌsö–T‚ à-ñ¦ZÊ(ƒt|:ìëûìÒ.»,BuÄWËÒo¨>Ù¢¼8ê¬IyãRæ5ìÒXðÃÇ(ƒrò-+Ò5YÜ-¦„#YE¨»2ãí2+KYc†ªöeˆÿ|ÁšÃÚ‘É)Þ€tF€“Ø“|Á·yËÔ³Êòùë³5z49›5Él¶ìÖ…`æ'¹l4 Aâç"Çæ ÷ òƒËê/nîVæÛUP©F¸”³Â èÈïMÜê®Äù•Éõul΋’,ŠÝì'ùÛ©ÖJ8x[î\¬VΔÛÓùÛ¸Ñý;í‚bêÑü¿Ží¤Æ³K5£5‘^i#Ò tØkÓ«¬¼ðÕq<’>[‘r*Q©´é_Zß<œqg -û’9ay¥i‰Í‘¡bør‰:‚µÃ .Ñxï8“ô¥Dá§_¼’(¼à.8AÝ4‹è³.½ó)¤lx‘q1ñ€$²ÙÐ2W¡@c$÷)Oš™°£çÏ~nMˆ‘Wü¡°ò·iËLÿÉfÎBÜÌÈåðF`Yú¿òåËé?;fÒeðzb')Õr<”£˜‚Ç«?ž9ÿvŠ–ç&GiLòOSö3™lƒ1Æ’oFQhݦBðŸÛ˜M–0^b¶²ÁÈŠÔÐÑ üÃùМ­pj¹†Å* [‰“,ïyãÝJ> Sà¥$×q1ÏE­bÖ#kù„³8€‚`ØIo,r®LÛ'MŠP„’¢ú:²6Õ,0$oxó1`œíÆOb«r‹üÒÐõcþ±šâðq²Éÿ3Ååâ ½P¿ÈãÈ U5{:Ã8AÔuY d˜M^=kÍcyƒAãG9ƒóŠn8^ó5N¸¡$ƒtW\CÀ©Q1ùÉ©iAnã1k£pC‡,÷°Ú÷ØZ8Õš¤‡þz‡z2W,V|SX{@‚ºá®ãná>¶§ b^Ê]ôÃyûvá{lDYÓúÀœL»€åqs/N. f#‘£P œB¥ªY§¤Vvróž?^Ir” ”¢,  ÏÂ}µæž3·ùÈ鮽$_æÃZ9ëˆ5¨mqÀý¹Ì{Íl-4VN“:ÛàȱÉô·5¹/Èã½”RØöÝ&‹Hº­ÝHðÔ4Zc°& Ê¡ õ-R`ÿwk¹m„ ¹iìÌGœ£õóñ-‘â'ì¦rá ü Dß•$‰?—ˆùXO\G¶‚íà^¦pXݯÉMD`m®§3²”}Ö àôôë?¿âlÒn#TFìb|P¤ê@áp6ø¶RŠ…÷H´7P”g7}8îLõMº4¢³\l­×ó· „,x`é¢×PÍ[‡áºãƒ<qyú벫nÃls%Ýn¨üÄߦ/À^ê©nœåDVm½­{>1Õ K3]¾Jºq#±#W0Ù0ìÓôGXkzB¿áèüåûXSòˆõk¬@— ן õÚ=f"#® ÅdÐl*W5põúÕ-Ïz@a„eÛ›§Z”º€ÐC)W‰DOÝ¿ÈÒo†®gÈ— ¦F*è5.3퇌ÓR2êÈ<ƒvÉï ñ‘ÃÏSa))°1ÇÏ-uÙ5à{¶2“˜ÒN!¾\KÌôr?s²;-ÌqÿW…U‘c¹+4Öz°%›mƧȱī^:½¤4ayŸÖM§žÍë'[VuìwuZ^¥Èˆiâ x —¬‹ÍŸ,Ž_ʱ^öá6ÕüëJ´N0brw`Ó‚ù¼ž\®Fôz@O“ñ¯GB>¯ã¿0RU鮳ñ|P¡%ë"=„á,Šo& Çæ B½RÚ3¨(©=¯k7Dsfþ«9Å›€Ð?Áë’?¢š¨Ò˜m¿eÀSÊ=ë…Ì ãö·¾5o¥B#{õ…1ôsµðmýâ# ð‹E @ ƒt¹çYçµFjÒ ‰¢âÚû?ßÿ<\“iIv™[û*n=Mª x…œ¼å“d³Çâ¡æ}&ö°¼ÛA.äœú[A ýÂ×mPˆá*¤™†¸ãrõKΚúÞk† îz¯vŸ ÎEÆÏ,òh1ÊWã¶DkĸNнG‹Vu÷^òwl¾ÿ —eZ×ϲ\à죛kZ>pæõ½–w¹EÑø{ï‰ZL·Ôú‰C¡7ë‚Ó/„Ýo¶þ <ªT+;L6ìW̾óaÒ'ø§j€µ¬-á D«I\5Éébª»´Êû-ÔâyÒçFn&•%íç?5ÇyùVÛ|¦qŸ4Mìÿ°9š<ãÙy6ª?ö™>£þ^?`åŒo>tôžXÕ„?¯Ù•Øy¹é…ì£ß³ð­æÌ¯£ú+÷@—Ž?â_{ûø>øBMûÖʦ »W% ¿ÛU0³ù7)Z®%sè®8`¨¡Íé‡y ^dŒÐ—Ë 8[¿g|7‹ÊÖ5’?K@o">ó E‘MƒkWvÛ_)¨” }Ë6“ NX\¼Ï•n³cÃs¬Žb¼X6GJ©à´tƉ®i_<Ïóåƒ}_6E“#ƒ!l®àc DшË]'ˆ÷·Éòng“„t%%‹%Œ¬cˆŸ@2²rãÏsI͉s$åïÛXß¾½1÷%áµë@ý*èÏô'}îY ›¥õùÁHpW"ù$á Aøj˜¢XqY}Þ{ÑgýÝtÊZ*+Ö•¢Ðm0Þ‰ Þ»&´¬Ã¬Kæ!Š…‚²àUŽš\Zd³—ñæ¼:@ÎÜÕ'[ª…v0ÖÕ^ô«£÷õ€GNB»37‚W(g)…žÜÇs'^gìü/[K€G„$AR²ZáT:Õ¿Œë$p‰bìµHW6–•~‡7r·H _k>€@_µõ[œ9ö‹[`%Hëeš–%ÌBú©}½ñmi‰3d÷ŽŽÝÃ&çë>nºSc¶Pôæül¡ÃŽE„bϰÐä±u!CðH^;*Ó„j;Ÿ÷€}Ñ„#÷ÏN;80»ÿ¾ª·v 7'ðP…y£«NIg<¾ Œ Ú+µ¨«< ËÈt‘å¿EwӽùæBv€dP¦I­é(ÖÞËÝ^Zå,>A~R¦j‘ê?o‘ êÑ$é–B¥4e!hÌÆO ,„þ—gðÁZ;*ûŒOmŒXëHT‰°Ügâ›É  ‹6ØLØ •c » …ãšsƒÄš|Ц½C-€¹­&¥Mð  k,Ùšõ÷µHÁKžb ¬GPa{¿®rÅ—#Ñ#°mX¶éeN¥gLË=Vè‚øË¤s"©±®ñ?‹*{ B•xÆp‰T/ÉK û‰õá:§mãë r·TŽÛN' }ŒáéJ"—'X´IWé~€Ä¼èÑÆ‹«³n¨¤‚ߢs1#¨šØ& ÔvªÝ¯µ@yz`En›h+v©ÞkfZkÔR ¾VOF)G^–&¬ægùš™»„‡4n‹Q—ähÁýTB{s …`ù°üðE§ ìê3¢Ép:&Æ—Ä•þ= ŸîÇuW\qg°«€5!Ã=Ž5犬¸úÔ7ÚÁ|ªËØ#ø›¸™ºþeƒ8Ë:ˆo^áWl“r>ÿÎTãvÿ•žìöÅJN@^žHeŽï‹P "éu&™~OÄ]§dŒX¸{· ̉£úh˜„q6Õ Eæ˜è@èvieVû6‰ïÉúޱ+¡{Þ6œÑO6TFX-¼X¶ÁEªßªzÒÿî𣣟ü†û*·ÚwëÖ¾ O=ì4¯Ÿìt¤ïöΰß\q0»W±kR©Ø;öÕÀw¯#*E„1*tY5(À;$óè7ŽÊÀøŠUÆBèr‡µÝMfe Øyc¾dµ±{÷Ü[!1»cÑ÷ƒKÕ“ÿVèüUUË:ÿóJ<¹R“~ômp}ºà›ƒPéYBàÊÂ:8ê˜S¯VÁ·I€Õ8JÅ2¾Þ6”:yGÑå›i¨u@òvÁh2Ã1ŸuÒ$!W¯\%ÊžÏð"–?Œ®Ïh»¡³ÀE`Ù€ÍvˆvÄN+v|‘–s,.–tÜ •æ ÉOÀ˜­­L¶½+À-ú§n•âîXÎ8Ž<=Ïöô±äpV耋•I˜4 ßé.åÊwrHZ†‹$¯U‡Ò}²×T°Œ!0 $ÆÜæÜ*[‰d…ØòXlú"mõ=1YÊðêÀ’ŽÃue]  Úý'hpµ0¢-EךhsóÐ?NH^¡b 6CžJ$fï†äoOî’icüÒC»Ñ“ ŽDÇ®7¾&"|¤XÑJUÇfýÏüÀÓù㻕և_οýøþùÞž~ûø>¶V¿ñ–]óº9$€)óÈŒ2yÛìÉ èujé†X±ŸÖdš´/†ªÚä‹×¶ “áCËý}šs¡0ÉT+Í‹*¨I‘¼¼Í¹«b}èQuð}¢‘F™S/Ö`a›‡9ƒ 0¢"aåcäš ¨2ì¸Âd¬ˆYÆj†ËÂN#³ßnÓ’Ön*Æs±"áÕ'eAÝýIòÑ¥UžÆ[6Vc"¼7GEL<Ä$+êìßÑ¡¦å8£WøZ³4Ls"m)øZªÕÑ"“5¶Y”Ö–2Aú.|üÅ6€{o©Ó¸çTžzoî0R³Iwh¡Åâ÷ÄLgJ[Û®ÃÖ±êÄ/ŒxshfØb×^Ú7‡ˆa梡ODÃp#†ÃË3f°"b÷CŽô¾ºøƒNÔ˽W¨­DíÑo aÚ¨ÏÌMk˳´8*LÓSp#œ‹;Þ©…Jâ0ą̀«W̰ûeueU?11É5~h€ž+L‚Sì‡/þ›iÅx<§gøk³ ÀÜ7 a´<Ôó€™”bˆ¯¶B¨‹«‚>9Ü òÒ­iY ,ŠTÿdžv¨&ppŽŒÜÛ./eƒHÝ€ä .؆VR—ÊaÄ 2 FÎe‘Ë¥}™YÁpxþz0žá2¬ÛHy-b&/Å'y¸­ $Óòdʘ4º0"z8.ÛÈ:I|B3ÖQ$ €k3Û+D™ÏÌ(•õñSüZÒ$ÕFÇfî – ìSŠ[máå©\Ñ"ŠðýŒÆ[‚4ÆÔ™’5µ°Ùäa« üÃ~èXýTí×ÚšE«,',“¿†Éu½óÎäTD¨zh3ˆ3¬«]{_`hÔÜ!‡þóBöH#!+:ÐüÏöxŠóÈšÊÞ¯;$(hº“Ä&xëÍÞjútó^?ož‰îÆ&ü2é~î2ÎcÜ|Ú|(Va#=N“ÇUÇ£~Á%yþi˜J(®½£Âa8¯Ã꡾ŗU±¼${•T /k%™ón0.oNÍèzΩ´vfð´»4ìý°…à}H=€t‡ÂæÚ»FÂ)­U=©µÔSÄ“µ1"wýe0ã‹Ï¬Þv‹Â= ô›š ”}&‹ué“B׿¹óÚ·ÜÁ«â8Û¨VÌ;Ñ%bš;©³ ô*£ù”‘êͯ¥þhÒ$žü9owyž•Œ1zá¯è§]1ƒRZï3´:Ѿ°°xŠJòlÀ§ž"‡´kø`º8¾®ùÉÏÒkz"Jºø$`ìÄÙßÜÚ'W_åÐdÈbl¶C8†Xw%ªŸ3ëTR¯p€^© TÏà çE«Åƒ[­¿B|óÚ‚î~Í…¾Ò²r6mË Á]Ÿ¹NS¦¯þ¯ “ÇÖgT‹ˆáÅ÷Âmk1ìêª×%Ÿ çƒæ´”ëk9»¸ÝY$ùÁiÒ²‡ÍR­!€â _>»wãã(ý =¶ß# Q·–QZ™µp™Tª‚ÄéCÂAÕ¼jù{I:~Hã×;D¿&´®÷»Ÿ¥ÖDè¥|q9“sI¨ñ*{âvÄÀÍÀ«•°’–¾¡,_æ6P`s¨€5¢ë¸šè^ }¨/# }ÞÓ §®YHžKµb°ÍŠ91ˆ6¬ÖJBÃÚ'¹®³:Qfoj‚vöTŒv•JÀǾ®NËfªÉD•ÇJi™§'vâT™v¿ ­Ð£î8ªbмëéh/ñ ¬?sÚ@tÚY»S¹óM×OókJ£äOg–Mñó“‘N‡Yñ$êøƒO‹É©œäãÏ]}€°ewŽŠÐ}YØ­”ä]ºUÜÊÍÇrXCüíaËT÷ßPÄ mføŒVkçëÏÂË3 cÆ>Œ¤0Ÿêðêò­¤ædZ²^°ÓF|5/òo±Ï{÷Ëî¹²!ÛHßÑô'k3¤ÐÒCY~>ŽnÛFç/0¥¹zð®ÙöJXIFÓc¶À¬«[ÜÇþ¦½üèÒÍëÙ}|U][ýi_ûÿÕ$ý Óòüå?ñvþãÿqÍGÖ4\]ØQúWéÆY22 °Xíð‘•–}ŸÍ»aYRa!`-ËìÊTŒ‡Õt­vlAp.G©Ð°Úá©6x¤Ñ^"w®xkTÂ^Öœb‡N:`OM[(Œc‹/¹±’Á2A°ø¤çÒEŽù:“r!«Ì“ʧBD¯zAÆÑ»Í¦¾û‘Kòç|'ÔŠg•L®ªo®u?~eÞû¼ì¿*ÙpúVàßA¼CÝ^þa¤ç› 94oÃ8ÿw˜i:ÛÌÇb[eÉä¥$N61Ütž¨Ô!àî­Õ o&só }hfn°Î`ê±&|lPVN •WÍ2££–™z‹_.“ºß*ƒ—ç`BêA ̆¬8K¨~:̓sˆï²¼Ž“ Á6~F<ä,ê‚]¶ƒZ±¹œ‰há›Ý‹ÈyÀºI>Å©Ï@z„­©W$ëÒ†^ìÌy¢F°ŠÆ¶ Šƒ>ïÅÃW£´ØJôÐcÎ.nîЀ=)7V²3¹gÄ;ßõ5’É'P:-oý…`s6tÓÀ«´÷¤â=Ö"¹-ödƒêç!Y… ù …ÃcœŸVr©ã3‡­®Ò>ëØ`x­D c¶u¾ó=EÇå… ‰Iž#—Ò>Ÿ—#ÕÿÚKì—¬˜»ïýèƒj/ÎgéßÒÔf‡eÝþWnÁ¶†íÈšËäÂ2å9ƒcÀݽ²;O®Ö/9µz6t_7ï;mˆ®0åBU½[xÏÆX °ô›luŒtMÞ(”Q£÷[‚„Þä¨8\ &‰#£Ó08@b0n”¥Œ-=úÏÅ´ûŸ²]Lº¦b~ëh.ÅÐ¥´P7€IÎv„Rªüö¸òÎþ‹óN¬L/?'T‚=InðÚI:__`¹ÀàÙtøíTâ3~FL1• %ѱrÄE&vÝÄ_O]T'ÜŽÒÄ'ñÙrFkÚí­¥!ãÔ»ðÅ;‰XsŽUö ©ãÔÙ¨Ìâ!'(º ?×/ hßPHÎ+›=[Õ€•8ßé‰ûä@}QO>©¹Àü§`é*eiBM`UR3ýKƒ‹ì´dSq»êTµô‚@¡nø¸&ñAÕFºH§KþWŸ+Qd2|Š–Õ“©á(¢áš|:sG½Oöi¹Î2®΀áZE‹îƒ$Þ/kå4Æç¢ŠÒK\ÌÝ(`Œc!³©ÇüænN|GÙaL¢­:[uñ¬1ÎZ'¾…ê…€¼ìœ¢Ï€#.x9‰V‘»HþtùòÈ„°[‰D±âøGGŠyLò°J¤¾E’O ‡¤xÇÔö!ŽÝ ëcH¢Žô©¼ßø%\‰;¸”?_Úã•—ÿsüªÅo¾uÐ-w•Œ¾•1ó0˜þpdsnAÍBÿÚNCubFqJÍny—Õàcš`»‡Óœ(=4}¶‡ą̈¬.æ·ÄŒú)TœïqR!ai5}l8h[†Í†z‘:Æ5¤‘YìÀntÉù‹…GÓ$ùR ¶1:>qHH˯57­VrÝwô¤h—lþ‘ˆ<! Œ-5|>}MÁÝxÓò_OÍNŒ aÞ©Ãñ ïS5Ó²¡N¿½ày¥3v¿Ñ{×á)Yè) KÄØIÙÝ)gpÊûÚM¶¯uoÞšëYQÖA-Cß”ýð’­ èù%OÔÊÛÅ0À]F  ÓÜa±Hµ/@¥ÉàN&œ;¯Y×¹Ð7²ÝPæ€Ø±ùÖ%Å,“&j*M3Å‘™8›qE½•0Ö$§–…}¡ð²¾Ô¿Ìéh¨‚ÓÂô¤Ê&°DºQ Ç¡œ™°Ío%%¬·j0€KqnÛ‚(}!ð¹ òÉ䀎¨ør6Úl¤Kîµ×MiKô[@5#½w«\™¶GÓ2*>èÜ0‰0:WY+ÒƒXBÒ£3êÄr¬Åy¹“ÝâbÉ.À˰ß0ÙV{eÿ6¸äTóï.[Ü.ó΃y¦6O<[5aX·Ï$k’>œû¬¬áAÛÊVÏœvÏeŠâ£ïà¶]Cn¸LÀ°50bŸèŒ®„ÝÁ²T6Â’BN'f*vWV+åx³ÒyÅ!im¯chHñ¸üÈÇyIvËÃãÓ Ci—% VÙ } zc˜É>â:?{áÐ[¾,)Ä™“@–¡(OýEvT{!¶1tbYPÂ$†ùkÌD¹øô†n;ÔRÖƒ|EA‹Q+@ýæ)渳9‚¶1ÿ‡ã£i™ä^A?-Ìà}VÞÕüšÓ&®zdLæo\)vø å—Õö—ô”Ô_µipIºá[ˆtäA¤ðmVÒ¡æñâàetòWŽ÷.§ÛI+sÿœcCÂwÖÂ{¡·æÂ\/3\ª^}†‘ØÝ:-Ý|Á,ù´w¯¹ ’” ‡^á—«¾Û¬ÄW°k~¹¡E÷!'J‡ãŽ=-çöÉ3ñª§>ŽÂ†r6>:õÚ%û¼§E);xνIÙJŽîU±˜Ÿ's Së¦$3V:ÿw‰Â™Srœ6ÎC¹ÖÛã?«Œào /áV1ëÚøS;>0ìx€ô¢,~OÔŒ%Ô¤îÝâþ°6ˆ¤ÆiIüÔCѯ‹-Øÿ'‚ŠÌ)”û¨"œí\5«X_v G¥…kÝÚ™×D§êÐE™}{à—”—„Ø}øµöÄÊ&ëŠ5äÚ†ô{ñjÔZeˆ±ŽÉÂóÿ׆ ýSÒSßp]ÜÅ …æ0r«Œ¯,`n%ÑtAÙ•J4´·Fžñ?>yBMý 9_"Ë÷yr`Ò˯rªn쬃%`E{&å,ƒø^­÷$|$Á<Äh€í6l^Ò]˜bÝ”Ÿ=fº—DWØþQ°qtY6½m<\‹ðÅðGzX‘z0,ùòdIlRKYÂÂK0Ì„V“„C4˜¯ˆ«] ¹Œ§%ìÅ¿µ¸äâC ó«]ÍZ”g½Ü[é8‰DI¢‰:½u°{ih2ü< T!æ{aÏSßÙþ´NÀ0Îèƒ=goÅ÷|ú…MÁÊ$&„£ÚHuEÝÎnÎ[O•ó/ ŸHµxÍno=š.÷ˤî¸ûßÙ%@^j}üÇãØ¾.§Õšÿu¦ZåŽÕùŒ<^ÃHÚTýhž}*œ_BlmtI¬¯RLuÕÏc Š·_ÏÔ· XjtéÔ]ê¤yeZÛÅ»Xûññ]Zb\ªÓÜÖ¨Ìû(`p¨Þ×È6ÖFüàhº¬.ÂHúi*ôGQþéj¼÷¹ƒ‚•8]#ßÑî GÁ\Øé…Œ½ÁÅ’äÙÀ=H)b¨ÿüd]€‘fû<°/$Õü.¶¥Oz>J’_Iǃܫê„àƒüøòøÄKpÛ¨³¾WË{ÁíHKAÒ2>ˆ§n Oi"«<ã!~ÈÑ[ôszpåé S¼Ir)V³S~g|b½b ·É¬n;Bãb«Âu‚œm±œÁ<œ¢¹ÜWl Ð>ç!Ò<”ƒÕæˆb¿ž¤™ôº3Õì³äqŽ’”¢ ¯§Ùÿó?£™Ê¥ŠlÔOd’È:ÄébkÜ8ÎW¹È¾©ÒÁî¦9nERÞ0|Çœ‘ž6y!VƒW¬Æ»â%Œ@`_ò+nJ5Hº6Äô¡?d\˜Eý@ÙµÔ[µGª&ÍЫ ÚÓud›¼°¨´kˆfhèƒB3¦ÔÏWBÍO©Ì«9xxuÄÌFdÍ7?nÃ÷kÕàu‹ÃÓ®39-”Ñ+•‡3kì‘6vË'‚Ò0ÉÓÔ×J5õÉ.sÕä¥ÐKôîÙO•Œ½G^K¬šE²ÉÒzÓx¬Püî..1ˆÇ .X^A ·ÿ“ê€ã0áõ±k‡>#B4jS£Oÿ¶„Ÿ…j±`ô4“y•Ö!„5óÈä‚׬}lÈËÏ Mï¯ý‰eò­×¼ÄºÞYñ7x4Wú·št‹çÈ=}†>çwÞšü=´¬ØEÄùk´^T<"‹TÚ:~ǃЗ_,(ÂÔ(V…¡ž+w2ì¼H‰d´˜\z25Q˜Œ!>}óÑÈŽél{N7—´ 7'øÄ4 wPÚµ†íA$íäö´ü¸¼øSÿu°4l¡xÞ}(m)ÍŠî`†£E|tÃ18 ±wäí’\Xýz¸ÈÕó,Zë¹BK­#ĆqGl™B'C§_°>}±Y¹å>‚ÎØùHÝ+ÎŒAJ<|Mw±†Ó]Î iåä#àVÖ»ô²¯ cÙ_ŒŽ7ã}ëóUÙfûoå}²­!{@jÅ}µ¾ºYø_7ŠtšVž8] ÂP¹βәÇɆGÑ-6ºWÒ?oh‹UÆJ ŒÜrŒ³2 TE*Þe$fsŠßýÞD$Ï¿hvÐá]õÀ<àsSp½"´+°Ê : ɶ*¡—¯¸bGE6Du¦‘WTgíjB›5M¦žÒÈ®û lŸ<€«T6Ù†Ð?; õµ9¦H~Xl¦ÚRÎG>‚¹gËfp’3ý ßÙ KñÃ-•Àlø#YBsÈ vàŒÈc´3eóº`„ïÊ=P‰#3CG« à~yŒ…•Þ|ëòÉWhù´)ûÓ×Ï¿ý÷‡‹U¿bêRQ/É…¢¸‹mÆÛ‘‚b[?â÷€eãáàÛׯ8e“[×ýë«pTÌ3­5ÆÁ;¥õÓWÅ€'ƒ,ɰóÃsVtê²ÉB9Öì,Qc&¶êñl‹üA­vðÙM<+Œ^V‰°²žŠ«jÍ8¢geq†ðzCCL[ú©ëâê1.¤÷Ç£m“7×­p-¬­ËšÆ{øiê(ßu¢s©ŸÜ‡"ýs`zeáÄ÷\¿øí¿¤Ã ³ÖÎ2óNU–µ;h‘®a7/JZ{ã®:¡Y´¶ø;ý€mm³%Ø æÇêfÌ]‰"åó•Á›?Í9á­ )òVÇᡜ`wÓóócœþl Y™\2nÉ•¶ûœ¯V¿(îûÅ€åʹä]šÛa•›3å•z3&yœî3ô+ž‚|tóÝnÚ%Bú²búïf‹(;Â[ÑýÛ_ÏØ@ýfw0¶vÏ·5ý§s«á¬³:®± ¯-ñ“DÖxÁ~d±]µ``U©ÍdŒé'0öè¯æ’y=Êf7§ÌZ©k³€N´hª[îoª<«ø¢n¶UÉPŠ% 8¸e®Ÿ!>¬Mב 4ýÉɆhL÷Æ}XÐê µíI¸†ÃlPÞ›Žõ®×R »èùR‡¿zÆ´×´-=íJÐÝ÷}?ÿÀÛë/ÿ5-ðUŸlåˆñPb-N¿œ*{ÖÜL=á2®ê›>‚¤ ÃÃØ\"Ñ¢Ôa½m›É ÃýàYNn·i~ÄêÊ[n}¶¤Ípa‡FèQêà‘¯M8ÕLáí…}ûŸñ ¤÷l#ŽÝ6h "|P}Î݃ôØcÀïéÝgŠe–Í:¬sB¾|ø)mˆÍè´ÿŠÁ{Ã~Xø‹%Æ"ÿŒ%£=^ýšjÖñw—ó'8ÛU™§ôýÎÞ™1»µýîØ"oQT܃-Gg7¼7Õ‡ÑõÁ9;J…„°Ešâ‰%Ú¶P0MâW1CÄ4ŠXž™Þ=ÎsÁJüXÉ",÷g )åGOÅȈs¨GgO˜XOÉ­n“C¨c6roJâ‚ȼ3HìÒ|¾‚ÓL5êϬ+§ùËß™í/Oü[u 1b“…Ù]”p`ÇvŒv7맺¯Úá‘ã{YC¾éº&±(á£`¹84› &Å¡²f¨SRÚË sÚ|2¬œ{ío§Ðq·yF¯+Uµ'ýŠ×R9‡È¥†2þrëå†IÖ£¦‰ÐúºƒmD„w2 Ï1ŒžÅ¡MeÕ4rÙ(«PH“ŸÛ(^è›,L¥çGÅÿõ®Þ ¡ Œ.FŇ{ÕçÕ'iÜhÞ› ww³èh–;@ãá×ôŸ ¼v¨ûëˆBê^£± ¯µžÕMgÒÑ‹ü±LY‹‚)Ú—Žv9OnƒÔ÷h_*i¿µ¦SƒOîyPÓ¶?/ÿ$LÙ­ù^z<ñ¸¼zÀ6 ^ÖÔ…½ÙeœÛs!84ª÷âìW@œ˜“¹uÃäÏ8*Àâv0”Ñ6PÖ¢HÍÁÄ5ã3ŠC¦îRšxô5²Ç‹# ˸p#[äcÝÛ÷¥Ë+ò‹-õa»A1ÓÏ12âdÍ#s;ìLázbd§Ü|÷ØhÛ%–ÃZZ?bà;f:#@7Ù³¹ºðÝã±Há© òU<´Zšj4/<1úY„LÏzÉöù¥%¶[ái@bêæÎÛøkÖs—"‚lKpÙ«Þˈš`9¸]\9›Ëÿ·§§ @ü ±Sn£l[ óšÔG7zK-µ* –LOÒ¤\ê8à S—‰«]!"¹ç%º `_÷Ð!©ðõãBBÃùâ}ÕM<1¢Ÿ¸€JŽíXEj‰á¤TuÕ¾r"ÃÉ¿Ïôwµõdò$ÊüdÞŸ8eRw©Ç-—y „웚Ȱ—ýî1öÂ*Î É7¶a{yŒ=é“d¿¸ÆÐÍਲ[ºò(ñv[ºô±ÌO*ág2‰3¦ˆô+æ‹íÁ†5ŒÑY¥‘—s…/ü¾U`[¡]0¬Xú«—nñ|ÀžOeßd Ûâ~„áši²VvdaŒOÓ©.»õfµU£ÿ¸Yñ@Ò>Ây!t­xÆœÕq§HüeMA£Ý8*“+Oó %øî®è~žuH‚_]l÷´“ÙöÁò,_=°ÎÖ ?£FžÓxX Ü•C¯dö~ì³ÐvóúÓj<7jFÞU·ÚŠìš‰âzé˜×"çfʰQž~È®b´xÝÝ…uÞýLÇ#Ëb{ÿ¿ÓÖ¡Çtƒæi±ße’"¹‘¾Õ4=sßÁËcůý„çÝ*d@"óeU{[ØÁ €(̾ÝgÝ_áfÈ$X%]`q]<6«kIþÅîÀ­µè ÎÖ ÖM*ð“+yÆÔkûÏw?©¸1Eלõ o…›¤×ñÜH÷GåïhÓjP %(.§ yUwMíÛ£÷§_~÷ï]úVWSgÛ Һ閡2†Xi%mK÷òêòTô÷­HÖÇÀÕ")€÷ŽwF>åÙv Óxû,šv÷?Ôƒ›·Ÿ]ÿø9˜ „#3 ¤hMû+ÙŒJ¥(í¾þÚù'brotli-6.0.0/testdata/compressed_repeated.compressed000064400000000000000000001421731046102023000210460ustar 00000000000000[_3QÅüWà炾ï$ÆÒjŽccý¤‘Hå*{VD¸ð$¥,Z±`cl¬Ýë Õa¿Çe@ÐÆPB-àÆ©€÷¥‹ÂZŠÕA””¶¯¨GòXfÑ•E“·iD½{!¤¶Ñ–6?϶,--ÒõùOÚí|:˜ì%>“ ìR¼LèJ8È_‘‰–ý‹5à¶² p—©ÉÜÁ_aÁ r¤ø(õ5ûÄV kVã«Xs0qœHÔ`¿Á”2±¸ûû@I˜ƒB`ŠŽàknWÿ†'ûì¼/—ô‰n;A}'¶Ë|ºâ´Ñæš ·Ðƒ9xü°ôÓ·FEÿ&þ¢0Ìï”ø¿ãiçß ®³‚ïÁzˆ"'åSä$rY¥ù÷UþÆJþu`Pd3dRô™ç}¤Pª¡‚*H$€(Á¨²W4–ˆU~ç’¿é¯ûÓªÿ,œ¹o$Ûy•´ñíÑlûûöµüåþÏíî,ÇëÂ÷ÚcΜ׳¶p¼‡XD@ – Ø„PD"HDzhÖþÞ™‰-¨òK˜O˜b’©DÚWRÅ4¨ÊSÌWÍTµûÞ¤ØmYάÆq}§KFƒ$´AÌuJê€'ñJ3Ùœ vSF¤½ž:ãË_Z?.J$€°Œ©y²½÷âæÆ-(¬ €¬Aö>¸ Übq°H±!úª'«Í=Ý<ûæ…: 4Z‘×§ÿ7/µ:z…šœ¿aÌ¡n1nλTõâ›ïÍ«Íÿ÷ÿ}ùK‡­çú©'„ZlQ{«+6Äcý´0XS¸öèõon›ÿ”ûGT9¡¼Xö¯ÛÉ´ Ä|$çã–Ÿ¯êùྡf4pØÆÌH¸p¨47¨›©€~8Ú+#’¨VØ~‡%åÈA +t@#á…ІWDü .cp²8™ŒY@”þÜ6ð}yÈ”æ.I€o¤öø„]yà1HP!‰•Ð:0¨sÔ3aŒMÔúuîòú˲Uwâ –’ ÑO¡›óvGŒp@FvŒZj7׈ €ƒÛLú\ù X©ØvÕ»æ’þ{ƒ¾¤Lr‡ˆIdI͆ X#—‰ ÐæBrš¬€FjqìN !Á$-ª¤iÉþSºÍ¡l>.G5‡(CCYú±%´»-NP‡Iñøcƒó5WtŒ‡òçýûãH¸‡ƒÌ õ_"}¸A–¬i¸Ê%4‚tH`YÏ”<æ þSGܘÞpÙCÈp!øKûT4Í #fʆ1[oE$4ÑŠÀ‘®ÆN“÷×§S=C•H'åÇÄGJ¸æ!øáaV` vÝ],!˜,Igàdƒïû퀣ÅJû3‚l&É¡j@lÀÄ¢f[dM’¼‘‹K‹‹AYýbí#V húôl·2‹Í€Ã@!ä`Ž7íLb‚¦T!Ë Ä¿ Iu*„¨¹Õ#ÅàõÚpâ‰dT˜IOó©šQ-ùÑ/¥ß&"¹Ê>¶½-A÷ê÷±¶Të'­q…ˆAÐÏŨ{ÔHù"Ôôê$¨“ÒºÌÝ-cFAä@hw©á´u”œ©¨÷-8­D¤[Âz_²ãl@yx, ³o°K9à±X„¨Ê›n9»r¦1^@g6¤º’¡Œ$…·£Ä¸ƒðË›±¤ª¥úRÿÐtºgv:hP?è8ÑBÙ‡Ò¡D”CD(E$Ýýk†(¡ì ÈC˜ò“îN©Y%94££K†,.v[Çë¤} -ÇÄ´Uê)¦Û#ãh/gR.r@‡XâPlÖ”Žj×\4Ù畇²"@7;Ú\åA\½©B“ÒNT4â•,%á£Ã²Êýò)"x7µ¡„ŒBæï%CÑ1ƒŸ…`Ãbh2©ÔÙSîÅÐ8gò8è“/ª±|«Øâ«lô[ÌSH@b»˜ŽÂ-WE¬ÍÆt·ô¬€ÄRÏŽœÐ.këþøƒ§0j¦Ébg®§À•É+›zý¦¤f¦ké| µ8’­2ù£a#F N¨#îPÜ}N€“Ëæ½ +NÄI& ±97jЂâ%æCS·N”€Zg8±ÀŽ}Ì~}§ 1¯TÀXǪ¯qÍ8$êÂO£9Þš‹éQ¶æ¬ü)Œ±<ÓLì­¦kàãK¾"_µ%ȱëч jã&½’B/jÇ›DŽÔ«²:áLˆR–N3–å{Ó–¶Ð'b¸ÿÃ\ÖÖl›A=åWônèáØÏ¹ª–Áëd͈ԃÒùÎÿüûØÇï/ö#GØ ‚‘“ôÊs-àÂ*B\ëž_¶†"¡.ñËÚ÷•°QÏ+Ÿ†œ•,0òp¡²u‘žµ»ñÇÆ^iÏÜX&LñA€]PD÷Ú¤ ¨‘eÇòþþ——›FrN»,ƒ–+VåèÒð‘X£É§Kåú¦ Š1|ö.£µ½­ø8²ò¢³Ô„k¨æNÖ‚»%md¶w×½GîUÆ!^|äùŸ@ÑÒsD« eA£üê@*[ šþÂÿëÒ÷[:2IóYYT*2–^|T]fúÑ'Q¼*øäîˆÖÏ,$Ó#¹î·Àø±MÂ)[‡) ù…K`/£ŽhY¦0$ÜbÐÇks˲Ø"nɇÚÀ}Yàó—ÁµþÛË@Õéaä6I:cÂÅî§ïáÿýÛÆ÷ÿl0¦æÂ¶"I@•élÔÝ^¦¶Þ™›ª¨QpïðŠ”áÄy¿/ñ<@:ÇšÎô±F’A,U«kŠ³Ú‘gV ù›?~çXÀ˜wkÔj4ð ™éC "†Â€y»Î¡¡ˆ¨²Œ'²X6Ø=<6Ž. DyR¢´^iÑîÿæé•#3.ÁÓ1¦÷èÆ ¶] acð˜Íx, ñ7alïj\/ÇW··=oÑ!”?Nß÷÷ùÿÈ×÷û…žø“]ß`w-.¬Ì ¾ొ„êv‚%´žâ)Ñ{/0¾ÿâz¢“Mæ`ÙtªžŠØK2ÌéB×7ªÇÀñ$ÈM@¼'¤ õ Þ.-s‚‡}÷ó|†™Uoq;e»GS!Ù”~Y)!dÐKHvYìÿV ±¥ÄDa¿VÀ^8K-“ì5Ì5Æ¥ˆ¾ÉÅ’:øÅóQÛY„¬iî*Eˆh‰ÜTÖ¶þ’Wî¹Ì {fvœÅ6½‡ ¶}^ðPÜwY~‡UUªu“¼’d|çdMê§Ž.K nÄíÒA}„À€óÅ  WCÂH2fΈ÷µGÔ»ïFctxÈtl cõ_€…Gâ-©•‚ö²Fد3™&{ô`ebÂÅ­ú ‡æMÂ[Cìòäïç!¦=šñs¸7öÏIñ´õZOcÚR@†ìË-8¡'l©XÑ0@€ Õ,5•âGÔì­éÓÿ­±±Š‹JìÐM"†I8áD›õö™$ý‹)@¸<ÍB ÕLJÀV±Ðsíxݹó˜3“¨˜¿Ñëã¥ðe€qr·^óµV3¡­rÃ=?õšˆø!Î0([öýÖ2ݬü¢0 ï¸AqLÉq°zlmæ©1œë Öö-ç%>{Ë3s¦ý|'H‚‹ìKˆÉ¶š¯D\óH=t0žšgCô7¼)ƒo2 Õ¸EƒW¤톋qŒ!¢Á‰­Ýšd8*‚ÔŸ`·6øG›`ò—ÙPºß –áţ㠭S‚ ›)Á×_œÎ«úAe@qF-)›ŽƒµB÷^‰ºU‰f¹ú[ƒFB™&½)Õ-® ÚÆk'úÔ^¨y‘«øzK–©4,&˜sž6&•½˜Ì`¢€øÙ'Z ·c°Êí|iê~ý'±[í"8æ e0¡m2RyàÓ½¥…˜ŠUTX¦è¿Žípy¢ÌšÓr;+×xÜs`±ÛN"}Ü-Š5ۋ϶EU-ÁBy,ÇYeñKÂᛆ­CÇÊD\ŽaqÃ(›ÇȘøt^2]’c×ÌȪ9Ϧä4­£f.CVÜ ;ªJ‹9\ºJ¶o^݆—0Ìzú 4¤Ã•dUv(m6V-ŽÃÌXT§ÍW”£•É4NcÝÞàáúÅóº§,zK†¥Ê“A§=k™Z9iâRZ«f¯¿ +£„ü•·žv±K/Þ£ø§ÍÚ`>f\ÖSôÀ¥lgÿÖÉ:¹Fñ´¸î¼;ÐæE]$ûvš „â@AÕÕs5ŒSbnÀ>DøÐ” Á†½¹NãWñîËCóQ±"°ZÚ¦M fR#o ßɇYCĬ+ŒîDÅž– ”Wà¼+¡![•äØ W˜x¯¤ ¤.*B 뱓{YC·.ä ‹¨3³¥¨¢žtN‚@M•¤Eõt:XQçE‘vú/²@?ňÑM`l|mNóhµJ–±ed(›@FíÝžYª6w¿š÷DDU¤ø^ÄJwEšøQJ±“•åuåN"KÐáÇ­s¨YqìÒk ^Ô+Ø’ÁùHuY3Ôõªt¬¡l'¥&o:(ŸúöôÀÑ·ZÁ«[¼³:è?Ô2É;Ì´zä,WÜ.ï’1Ë9£X@U!kí¼çcʱ)®üË+‰¤~ÓÝÃ5nÅ*;‰‚òᘄÊF%Œ¹&?ˆÐ%«&eÈRß%;A#äFdô>¨D–$_a×ør.ˆØr™Ì1ú›ŠÃƒÃ‹sâÑe0-C[êÞñv[y‘gù,81½øÌ\Æ?æÊ›‰¹²d—y¦4…¤Q²¬}o¼—:s8oš6±/ü±4ñiËËÿᦇïÿºö?øá{~îrã)XR’˜ááX-ßNãñ Þ&Sž®¤ƒßJp;–áo Ç>t¬…ÁúrAØËÿ»¿0O+j1Öþ«â²ÚPZ¹å8¸¥æÄŠÈö»ÚÍtìªÔHî/ÌÙ8=®V§ÙÎ¥´¶z”{2 úÅêã¥ajH#4M‚/‹†}fl7öà­'wöÞ#â6ÒÙ–?ÒoYaÏïÜøöü;æÿ_eYëRšÇÇ57¥ eŒ>Ú»)5V(¾:ärl"»=ÆÈõ4âÌr“Úušó¤63oúqÌRe.¡zo3ñu+uS™oß·«ÄÀ#Ä„òüº}wÙpŒ}2+Qñè3ƲKÚ¬Ãû£’¸¦(U¶K{wŒ ¿0ŽjPkW;|ú3Ê‘ÕDðII¶@"awŠÝÛ¢wZF­¬€Deçm’5þ{éÏ÷!vŸ°LX)XÐs&C=×qJD5Bm®’k ¨èBo8F.£ãàðWŒ`öm•VD÷(¶Ê‡¹J”³Ícïêt ÚщqQg‚×)Ù”P½gÏ͈7?›yÑcŠŸ×FÒ-!س0ãÖåyæPÿpMv~õ;E?ÎêÔgOê{5%`¨…){:K.ø1èÞïE]%¨CfcR¹Ë¯ÓsIX1}Çú†ÊøßÑŠ¯<“½(7x½Áigñ–]ã±à{þ’Gˆ7[ô¤ð;eF§‘ÿ#¼Ä¿ö”âóÊѳÒÈùœaÆHdßP"ìÏ¥s_]ãPÎ7ož:Ö®éËJ³áÛ®Ñl$$(¸¾­¥e ZÕ™D#é€ÓUxëæPÝœda¿ö”¨Ë|¸¯ >¿Ûe*0œÅ©)jä¢;ú18¿^CT¢±óö–îÀTuÛ^žÜt‘ ¾Á†TЖ’Ú‚sÛ@Õ91,eÚ‚}© uÛ•â—áN™w¨ké â—£÷AÅúÃbÙ©V.ËŠ=³æ"é¨f¤Œo-5,CeÕlà#Ä‚§|íà$Ž•RÔÆÚ}@âZnD æ:hi2¨™Z(¾‚ˆÇ¥(õõ «t`é¿ûÖŒ“O™mËμÆÎ•|‡/nÎ!oåÇG½ÎX:‚¡¬´îŽ5 Œ"›À76UT›ž¶’<8w{(½žRô=˜È_(_'Å'S°^ÊHÊT‘öZ³.xSÙ ÓÈÀnet~b ß‹1P°#ÜZ6<˜“›,%Q³ÕP§7½l Cæè÷Üþê]ÝqÀ¦z™¤§²o?h‘ÌX{§Qn¼}!:‰XæT³egj?|!ÿ„+¿“oïeü„ÕI é6ÿÞ^ËYIÑ1¯Mi[§lû1äu¡¼å‰ò\Hš«ä¥çj ',„/†ííEôjMTO˵2×ùIÔôúÅàY†™m äŽî*@ñ=͉ñçñ@À&Å+x2Û®n\.9Ìœ{w@%ÃÎʪYJØ®ò!#=ZÉ ¡Ã9¤êSxŽC÷áqÓYů|Áû¿KŒÕÅÛ áËÙ&?Pb°ˆ`ÒföYŠ0”G“`ì)D ÜŽaü£#X‹H… Ö—Œ{-'Þ=Mæ&¿QRX&G=4Yè\'ë\wû¢»&”ÃÆ“b´¼+̧"R¦®M|láÉßûŒÚJßü`]ãa\Ð?.è?Ó/Ð-¾6γ‚ –¹S‹0‘mÑã—Š `fŒ}ËiËÓŠ)·pI—³±®à¨¾çȨӾÌV SLæQÞ8`‹" ãN0Ê9¡`…¸ãë2øN…Å¢1%t`%9‚Ð;!íSÒ™}]h}r1¤Ì›ÿ#“‘Ší)@ñ >¶(ê_ÍË¡,·ä-8DÅó&X“ðúçwÝæçGóöøÖùW³ï¯R]½—±ú?ù²Hš\•þÍOž‘šNDÜ€þÙNAl^lÊD@¹5s ‡Ñ~ÿd¢‘Íøy£Žr3÷Õäh ÛÊc3² æuPåŠåŸ €‰ÖÊÛ™“PoêHG ÊyÔPëè@2¢yêÂ56‘IÍdHWrÜ))¢»·ÿ7êT¡~ƒ}­?½¯³`}R4i…G±ª©_±bqÒ œÎ®;½ÅÉÍ\Ñ[Ù×ÓŽüçþõ¯ ż%p~±}¹a[xÜT1´êXç“¡yƒ2=£Rjö^~-ÐÆúN”WÌ\ÄÄwY wÉa0LÑ«ö´‚"öo`D©£ E=’§è[’šÒ®­ãANŸ į”–¹»— ஜœt云é|&Ó¬¨“|5X>ÙÒPK Ç¿•áJÒdµIxv/¹Ÿ¬ØÂ]‚ì^7ZT‹¥ÕUFÃæž—ŠÔæ®ãU’¥¬Ã窆ÀÇ¡Ž,T,äŸÁÒà\È^еX;_ÀÁÊçÜ&K„<oÉõ ]´>â3«„üåhx ~EZ×ÿ¶hIfP·1sÝð–I ê\ŽíÏVQÉÏ ®a éÙ‹=[ÉñbZ•›m2•mbPÄfCYYYâê¸é³ûs’±ëä¿L_ƒ€6òÇ•ÜS96*üð¸õèg"É·PR 9Ä®‰ŒþóS¦äËæÝ1Q S‚ÍÛáÞù,Þy2‰]Ñîö­õõQ¯ù'«1dëëÕ"?Þ­õÿ«ÁQÐѲåk®~ßÐ&Ì?vÆ’&y)µêq–`ŒÑȾfp^Ý_»©TÚƒB¯8øÑî9;¤%eÕ>~ø-’`ÒJ £jàoÞ5­uiy.è@ ý,C"#ªÖ*Œvê¥.”›ÑËÆ³å8ÊAC«[Œš/mS¹Í*^aËTn-œýºeÓØfƹ TˆÆ¹Ê«R ²fOŒOZÉO»1R-¾›3²AkZÔ¤£ýÎp|žý\Ð ' Ða÷ÞÖ²…ê:ʸ+=!òp­¤Bû¼« nÇ£T'¿š=œmkfäôåù‹rˆÂPШë_(¢{ŽÆ:óFhMž‡sO.¹£À?y\ÁÅøô^ÎS¤J2ìú-Ò—Q×´lé´ÓÖô@V\ä­ ¦ ¦¨–8½}r£C‚’:Žœ"RÔ¼l Ût¦EÂöÆq¡A=:™mÌ;Ðý±!ÝOJd@><5•Ö x·ŒÁ­º #‘ŸÃ˜'ЬÛEÌ "R5 "`xkÜ06bδôÑ÷ž¢z'8Ú߈,†ÜÂ=;×s›ÐùÖg ~;ÀVèš.gœµר–[™jêëx0Jª6qƒî”iIŠÎ±‹n'Œ$dR‚‚Û'Š*æÐý¹´y/Äz©aÞ4Œy5»^x3êw. ©'Õ¤É9õ «Œ°šÓ00Ò¡èwHÖdÒ÷³8â1Ùì_×F”PÜ}æÈ…'æ…}mÔ£? ÅqWgw¶6t˜¶6µ’¥KNâG‚ “J_· K‡á©êeB¿ŒJµStHLL•aAG:®>nÚr W³Ý,ÕSËbytÀh¦Ûw!„,c4jÒóÖ›üApüÏì® V'iêuDÙͶ\G¥Þ!i±¸I,L£\ÐŽÊ[«VŒ²d:M¯JBÇÅ-]å0“)xquîƒç ]2BòSú’w?ÈKNSöžÏØkµëãõXC‡<²p7<‚\céèbiS“!ihlaZn[@pdP׿‚y’:qÌȵ$´½=%! ‹ZƒTTšMзútrøãÉf\j¨oþ&ܦ% ¬l*¶{J©ØÊ‘‹Ë/ÿÿ™—AÀKŸfüÝ8B`õ@̾> – Á(Ï_—}¸Ýª ?Y.Õ‹ÇØ²ì`¾$E ³øãõN€·±¥2Ò÷3Œ ¬J/$Û˜oÎ]vÔÌE•4ŒÓ,æ$Í`è÷ûÊî¶²¹ä­dž¸RíQ‡ ê"6fÎ5–@Å#ê4Jq(Cg0æ¡KnXALexïÖC\Q¯W!} –a6JÎ|ªB!-‰Y[Pxƒ[”­Z‹(?Sç`—**ÙãÛmþH(T‘Mn™!Œ§Ør»Uõ±µ¥g {aôp¢$µ ßEZ¥eñ L:¬‡W¶WDPÉæ‹ ôe¬1¼çn1 0µ1¤RËì Ù¬(‚’‡ö›wÁ‘$¾ôجµœœ¦)+­2@ñGØCÆ÷K†I`ÂÛ´Þ]‘1íãÅ"ù{§RëñA­i`2øL8¿‚ž#¤~UÓ%8…\ßžÓL”Ƥm¶)PSÓƒír´Šk³£Áij¢ÚSP¸ÒÁ‰ábh¡Ö<ŒE¥®êNû[÷HÛ?T|êGo½ä ®<†ÄSQŽ1Žé¸]¸‹ª[|©È—‰ÒÕËšqˆB,ÒšË;ŒO!ãJ«uÁÏC {qïj¨ò¾£‘nËZšq–(䉄\2¿ ¶Žøî–‘³Í÷F›Fñ»ð2ãÝk:Ȥ¹ÙúÛ×]Ð]»ÚÁ*,<}&Š„ê/›•õ ü\Súõ“›­¥ãÃáC½°‰/yÞP« “.ñ_Vͳn¿<ÜüÙö²»‡dOÖfX|B®´¬d]‚5+•ts©æÍžÖþwü;6QãÜ‘q³> ÝJìzˆÒ áЫ§Mƒ-ŒL |+2¨Ù2 s™“sÁ¥îS­2½í ¿Ü‚‚§·Õ÷–©å +®¹I—u¯'~R¤¦Äõx1 ˜ (Ùª»Ð¨KþT* );ï%d‚‘¾¼'>6¯ô…m£" ì=±³¨ŠãlüÚŠDn^LMäSA¢gD…m=º|‹ÓAàaË¢ˆ+ôòï@~SóD\áøi‡Zõ~x8 Åå,ñtñÏôX^˜H!«¥¢a—ÙD¦‹ö %%ÁïtÕcE®iëF©9åVOg'e†Ÿ ±”¡d̲T”'&½¹™ÃȘ²îöÁ«®éèpRS@û€ÕPšÂó³VnÍê×ÅB¥à×úødè¨v+=R&ró"€«Eˆ¤ ªxÝ{~‹†7 òŒ×œÏüﮓ¦è0ˆ³¾*4#û³î9³+%ê Ã&ç1ÆÕËPÔ †aúsTB÷RŒÌ®³Œì§DL5¶¤åwGlÑ¢p [°[]yx¢IÓÙÙnP*ŒÓÍL¶{ àÑsQµ…•×Á ƒ¬ÌTÝÀ* _·²œ µÜÎ4,!è|B¨›éíZ}®} ”s„K›«´5é-–Ðo ÀuŒB¨™Y”ŠËÔG¨VT†€!ÃІù®N2èµ|¼]ÏfJ;\8¨È?‘-uê3ý… Á›/?íðе$CÙÝ Ý<æøË¼jFÃZ¼Z&Ý »üLu?¸jÍÒRŠNÏÓ2d‚dyV¬lûöUÍ 1Äg±DQi‹Ü _9 àþc@›¯m[‰~fg}•Ë„þ9+'©­KÀûU]€¨÷ËtT¢iGéP~}ÛZeB†µ”­ ÷RgÒ.„ó­4Li¸0a%—Pxnšt`©Fµœ_èg­S^å-¿,,Á6ä.Öæ JëÔ’¢¨TÒôÍ8“gQ9²;q®ÔŠj Ô7„«Tdèal¹gö_r¬ù”‚±UfUHd!¹–é múŽ"[ÔœÛ+­ ÅšveØÙL¨,bÞ7¹¶i®Ç¶Ø”¤J5`‡Nq”kÔ{Ù¼›Á¹Jâž#%§Ä¾ y" 'ïÇÉÓpúÙñP²K<òPT{bÒoTëz®XíÓJ¹®âÈ“$ëOa[‘bæ<%óZz€´NµP¸× mœZÜÓïͼøéôñ؋י6]Î×ø0pï•PënসÖä5Œ1Qò>·-‚í¤‘Òû'น˜eåö2d7ÑRŸ q %“ì®Å…oDÝ>í-„ïwÉX¢2AôÅ…õ’ùZ¢Ùá²ß»^³Ú8Xý2–X[ÇX) ÁòðçBS@~ sñG€m9á`öžÅš8öç¼ ¦D¡d´_¦k†ÐøŠá$‡‚¸¼NJDgkñú†X7kîçDæ¦ÝXtƒ† jZîÔÝÆÖâ-T¦0ÉxÝ\ªë™~z(d~qY…ÔQ4Oû lND†4¦ø$/.ëùÝŽlÀ1\sƒVw0†q”S%k,úa~ü×n5Nf$/ñWŒ [”'ù[¬Œ‘¾U¦w€DOØÍ$N‘NxW¾Æ«#nåM¢5½¹â æUɯT3 ý {œÎ¼U²£+XSGL‹øÊÄ‘TõìËÈ©ƒÁÕÉ­¢žŠ²€=F¾ð ¶-§\Ÿòl€ ‚§Ñu3–ÏâþjWNÃ>;è¶rEìnÍD‰’ÙØëŒ“Î'Åü€lßÛà?$9À’¬3Õ¬ «U]vT€FÓjI®3ÉmzŽ‚é²ÒIêà“!‡)‰ewñ3)³µ@>ãžAÜ\žÌ@ÙUC¶qY ¿ä¶ÄÐh Â6î bÒ3»‚!'åúë[ É{8Рç­e`úñÍcÏ,oïî®’O¥‹ük‡ÕÒŽdv¥¼L=u¿´ÃIMIä÷ÙMwõ>þß·®•hö• €îºw)±nÓv“U;VQ¦•Óç÷\È&ëx¢¬Ó½)@r‡sA|î`ûcfGîÒÿÙÀ8k7$Ë"“2Γ üGü~dÐ&°€Ý¯ªa“Øó‹[_ê¡ Û6o¬¹!©ÌO«tL“F2<á.|…<’ûñù*ǯOò»òQië ðeS–sÍkem*¿½IkF@¦ñß§\Ý_ O&áREÃ+Âqiå±<±t¢§Ñrý3AØS‰oîÚÌɰU]­/ÿY3Ð3[M~ØéC -„M¤.’R]Z™«,Ž+…ØÝrÌʼ|Ò—Ö†¾òÁŽy‹Öß_+ñ¨ˆUJÞ).ÞúîêáÄqè•ϵà­Ás½J ²(j3¬£PNNN¡º †´6‹BÞ/GÊN ƒÕ^‡Ô³Ñ#ƪ\øaç>¥;“`q=—>Ñ8ènWëb//6\(ÄsGeyÊ2ÙÔºýw^hN;MaÀt^½é ÕGº”Ä`+äQ°“pv©wònÛA)†‘Œxu[DŸ„…t;ì÷ø¶îVùùnÈ^dbCüŠ£P £­ î¥|ŽÔ±Xv _$õvÞi`½ª£®©’0™Hs˜Î—§Z G´KFNÅgª"’ _Êì€G2îå ñÃtS¿²\HoêZ̃„éMË¢ÒL:hC¾’A?뢶/tþlI{´®«ìԨɼ7ÛàêÊð1@2Ë|#;C¶Ú Â(߸W›¨ãI#ŠÑ¸Öˆh:«ëÄqœ•f½t+ €.A“J²¹^!q\Fމ—ÿÝW—Ì…Ù›û}ÐõWvïÚQ¢òrÎ.ûgMÒ°’}¨9Óu¦³ëª/Áêß ©À”ËBĉ澮á"Ô®u’¦ÜfWq ‰¦“ƒ ú Æ“'ç‘Y¤k#—zÇ¢ñ•X­Á¯¾`ä©… û>Wª¹¹Vœ,‘]«_4jľ<®Þ©µ"ˆ¢€*‰nF º"3Ó›§ë3àmª ¥;WÜh®u­´‚™Ü¬ô&ÍMš–m’4SJÆ)zaÚ‡ìùó•òžn-”ÕâpƒiHv’Ô5sjå㿟Ãn¸c ¼ÓH/"SAP¬í%¬Ò‰s[2áfõB ÃÁZåŽ<)[!$ “íìIXKS°½ã€Øa¯ 4Äà–ª Q]ÙMX–*ÄsÚ¨±wµÙG þ/¡\ ¡Híép5 =& ]gª‰x£ïs®åV à–}µÝs‘ôñÅ&}4³,Ï•¹b »Ým¾Óðóù6ìߨùh™/t l f£ñÙÂÔÂ%„ÿXøÊw0š={Pé§n¡á¿TÔ”®&lxÚÆßó˜Ý8YÈÒc‡–¹…ƒÖpwDƒäiÒV!«c9•-mߪ°¾9ïÎ×HZwU ›ç,³´ïGã¬V†¡,/âýú64þõ²¥s¯²·Ptcj~ªU˜smÊÕ´ÒÕû “5ßã ÊøÂ_Cû§ïîeÂï½)ÅZ0}µ±½¨¹#çôWHîÞÆâ 2×3ý×\ 2‹à†Ù ð…ŸÅä†;ë++d퓼”S ’*Bùãæy·á{¿ òá[F·ÎWWÖî`xÀoÖ0«u?ff«ÿ ut}0å©ÁÉO­;`u#Ù*״ͼ[gvÅ€Ê{S2JÑÚ3ÂKš™2Æóft3x]¼›ï†+ÏÙÔ0la!Rqneh›OOÒ39 Ðøöm͆Ÿè<ç*‹°vëŽrlŒÄeή¥ÎYå­–œú(-×êáx=„àÖ³ÇÁ1" 8â[>˜‹‘r¦™Xºi<a:þŽ+Äí+'J»(~.Õ.Ç=,Ž2±\G¥É{=Ø tÍÑg¦ü!ƒLðóìRz­+„²è¼“æ¿E¶w lï‰ãe¬ÙÈÔú•¢¨„^Ÿ½¦ÿS I@…øÛ§cb@Á “r·BU]Tc_QOïäíüuÛC‡)Sʪåq^æšF—–nW@ÏñªMn!6\×´-íà‚§¤húÀû€³´[¥xsŠÔ"˜eNÊré¬ÈèÌéÀnì-¸É/:ÎlóVmd¢ý?ŒäÓÝÒC?@jÊr¸ìËw½Ã¾_üøšêÎ"cVçýÛì#¬üf[„çs৘¸èçH›íÐñ 7è-g^lsrª&-N€ý±–»ázð§Ï¡$]%õYm¿¾µù „?ÒôÁ$9°;ãè ‹.[æ–Yægó?{òáÞžMÚBÏ'+®?Ïãm³êbp'þ]9×(¤aîëlc¡ÚSã<9–ü¸ÀlâÍs2b>íkîÆ­ìs7ÏãÎÆ¾D¨uÏõÛÀÔ‚Énó†Xˆ‰Îkž?sƒ¨ø$þï&ÈëXâ§ÆYÊ1jMÕûWÌÃì|'ÅÓw¼§ö5Ré¿êÍDn¼bÔ0R¿;°¬±ÏDÿl~L˜£«{‚¡ž[8ÛI?.R£|è1r [»™< 8šŠ.Ëjï'ç¯È§ç ôj+<ªÎúV5[~sÚ4 Tä™óÿ#‡Ö+Ð+4ð9~†ÿC?¥E¹e3Z•ÇsŒ=c;pý %}àI¼žÉÞ8P+“hõž¥,Ñ6gìõóá5BìŒ:  Œ“ìûÇ(TŠGîh ó¾Üì@souŽ#)ÒÕ¸ïâý°ÙTŒ“*9?P‘ð–qrÚµe2U›äº!éœD£J8žV$z[8ܶo<•œ²9敨‰/•˜Ã«äˆ ‘}«‰Ú¹ ‹‘3¦¥ñ§–¨¼÷ƒšbú&%A»8'¾¤¦ƒ’Gd™¡Ç¾áÙW´¶u?˜;©ÂLš¼'â@c¢då—s¾OÛ^fÚZªô¨ÿèbäbµfÙýI:L.XwHEIp»f\>ÿ"P¤ÅÚ–&‹sÒûqwä´K̲ñ—®§Êä\…ÎK±+/þ¤˜Ö åx掿|æ[U®î4ÅË2é•xt©i ½YcÆ×~5/HœkÞPû¾nDn2iÅç9µ¹²›ë®—³7 p‚=…ñgµþ¾BpŽØ¤S?n¯i)5QW´'{£ÊÕc‹+TL Ø€ rÌ¥xÃ2áå‹d>€%«ën‚ 㯩ÁAœ½VzGcˆTz1¬€‘HJ ùý+¼f‰öâÎ\YÒöÑûwtèv ±0ì"q ž”Huç‡Zj­…Ë}Jí bg㘡`úí™.ÞòÆfÅÊ‚F¦öÔÏ© <øÕ DãÄ×ñ4½«´V¥;ðaŠÁä5Mß zåbžÓ˜zoÂÈ|Šxïq¬öíýeãÀï0ìN¦ÅÂàcÁo‚S¢ä8_Q/‰ã_Ut˰ 6³º-—¨Z’¬ƒ\ mµáo M€"à®ö‹ã{G¨Z±ûÀB¾&êÿGÎ@Er˜!Ç BÓR ‰rð£‰ê³# ã'Ük0c©ÿ©Ù 1õ!윟.-{îQ%J;¸kgm ëy²¦]3Te°Z8%.q^þœíàÊÛDüª>©dCKm¿O,Aýãâc?evÊ‹}-;¦)äuJq•o¢˜gÕ1L‚¼Î ü¸µUSüv&¬êä”ï¾Á#i=˜O^“´ë°XKYÕ5Ñ!"ò£¶ÆÍˬ²:èñmCßÎù]-eÑû˜÷GºyˆM¢· #Ô5y1MÍ~–¨Ž°†èO{²"wÅ–{ŠgäùÔÆÀÔ<»6ë—œ=3¥aÇ—£ù@N°µþÁŽyÑóÜpЧÝݘºqgAØÝøR)*vxÌ«=¿tìÙŸzΔPõåúß ;»V ¢·‡h•­à½Y^)Äí~œ³£dëôÇ[tW`‰™¡¸õ'é\µTšNˆ÷¬[°¢ƒ„R›gVþâ…龃F†ºµ¬lY}êöidƯžf ìmwZyú m¨² ÍóLŸþۖȘŒQ:3ñâ¦Ýç‹ó7`¢Î-JžP­ÊÞg¢ð£ÆYá 2Ãú§hkÚÇtþšÛzDíòøøA´ÅOŠáT鋸§mVunbÁt©FÈR éÅíñaAè_ "O´ñ‡I´ls Ã Vˆ,3§Á £ ê£#@Åj.± &¹êUEš%ŒÊ6Ž’¿š€8ü–pì1`/ß~‘¨4÷UFÖ>ö gqŽ¡ Pz iƒ{ºc–I·i]5Ç^ ¼N aѼºÃïRv ò¾§TA™¦ZOVËvšÞ{7ÎxÔ Ñu¿,¤äÙÈìÈ$ÙsÃXa!V¼¢áV8üÅHŸ„±%37ßß”ü'×Õ3ÿòû9÷ÿ;ç°Eüµx F^ïº"DÙß5}ï^ófÃaFË(õè™'5[ä¼öƒ¾$Ü«Uánçe÷1 `Šõ¶Y hÍ °z¬4¾›å©H3ÔÁÑ¢ à† dܨ°Õ:{ì­x³ßÿ,?†-jZMöà7}§i…‡ÄüXôT²ú•ÿ»¾1Cè1ƒÞʸ(2[@ŠÑç/H™W³/%䯔+Ñ$5óF¶†*?ýµ¥°$ù™EúôŠÛâË' »¬T&½ö.=í]p÷ªwö…!n>yflÙâD(pe|?ÂëüÈ;(G)\!³8ªVãÎ{#X> ô,Sç¹±o7à˜o”ÂÙQˆ‘¾ÝýPˆÈ7ÌÙöÞ̳}ýŸáD¿Óøws¾d.zö{#ˆF“ôÁ£Å·ƒ:€€¾r£ŒH+Àôà *i,¡¶ð©ÖšîBáh¾—Á:Å !KêW4‚Û›!_' fùÂd&’{©§ ÁÀ.t^…¦´´}x"ºÅŠFYYàK5ØÕøíýÜ´cá¼ÑÌiùÛÀ{¨eÅ?!6›bËSôºì†¤(±Wˆ:¶*cô´¨ƒ/`ö6]±íèy|jlw‚p×Xu Ž–G¾2Dp{…-+KÖ¬ ‰q·%óÂÈw{ćüìž•ÆIhýÀG¯1Å”H¬béúÿ£¤¾£´ëi™T”Ú3¾PQ7ù*±ö«³«^}EÜ;ßQúã,ä èÞS¿¦Â)Çeù×n„c’å,ëlz7ey'õ©ÇoÍŒŸ‚€‰T‰>½›­ÜæM…hC 3,’PÏ;H&9\pâöDh ¦º¾fÿâ×p F×.ˆSNæÌˆ‹×”à!²Jx3qR×{‘pØIøKZÖ¬J=Î÷L:˜™sy ¾Nw^4føŸ{øùø';±)ªâÔ]¯óÒ{Cú5§ÕùÉ{  vÛ¥? Ó:gŽ¿¥„y±„ôEÁÑîcp!É$+¥h¶¼\»Ó¼ÖµIc…;VÊóŸüãÿÅð£4Ðå°mÝp“tI$’V¯8Ãao~4ÍHv¨áà`¢3÷áÜ·±c¤ù;þ?¬{Àœ"sìq]M4Q`È2[Іà3Ö”Y_ЬbõœªÕ¡g@AVÖo ¼/\m{~ e”À”sµÁ1Ùv2o­Š™¡¨#†;Âg-ÁªàØ%·¯¹9cêѨݜ(òVEŠî×m°Žø'oÁŠpׂ˘ÐôÃM¦Ji”À{ # 2bir¸ä Ï7nÕ^ŽŒ,4ï5CÁÍáâ×X¶Í!,‘6/‚³w#[m~ L¡«`¢ü\“¨+á<“’ÄZž+ä “‘ ܪB²)X²ƒ„u\¤¸khͰœU—n ¾%qc»\ÄH‹E2V™ÜƒhêÑeÚ­Üñjk^ôNžÖ!ÈÕ±/«• ]-vÔ¢•>ˆlà­ñÜСù±0&þlª”*TœûQÖ ì×nV-«Esó”…vG?¨Y3ÿµ„ÉŸdãbøÍUUùbT6©T7s#ß^åª÷?ù¤r†Ù‡ö8ˤ4ã¢X™Ò}Ôï¯_ºëÜyž¿Ã Sò> Ô; ËïÐq ü ‹{¢dJâõHõˆ5½©Ø9„ý³vÄo·tñS7hÞÿ‘ö#o_†Úø”Î8ÁdÎÏIë%R=·þÁ2˜ÚªYxŸéâ7Ôo!ÕæNŠœöŽP[kŸooP›§Ò’[ž<¼¬;|®Í=<ï’““¾oÐ!ö„pO*zs§læO[YÈÌ r)‚” ç*³q¨)ì0—ÁÑD—þÈ4Ùn/U…iÉ©U½à—úÓÚ*õK\@/ãÞZfCëm]ª)éK/^_º»Ö8 Ãþ…–FâŒ.…]Å/HÍ›Zpû«ã¾X+×f®Úµ0âÛ‰ïþªô&߉H^]ñvr'ÌQ΋g@¦#$.wъ톩;RÄRf£ïÊ}}#±¼m$&™±2Å$€ªñ¡oÏMö‚Ò^ðŠúØã:ólÿ?œôrx5mXZp &±xƒ‹‚èýˆ2’¨¡å(©*2;lü Íí—“ðOò ¼?Û>¶Wé³&ÛÄ#ú§ŽcǤ^ž·šŸW3gù]Ów Ö}žw iä‹Bmì âZHÊ{Ÿ &îhªdÆž»NP´ÐíDÍÈô.,Íaá‘*‚U`K6¹ëÞUŸn–]³\'ïsÝ.sÕŒ‹Ïô<Õ^€P(aÍç.†¦’&_N °„¡T~#Yl©ÐåÝn¼ÎCÓ‘¤n šI_>Z“ùwTJ|š‰¨iÝ­ßTIOæ®—ÊMÿ¡šM&‹ÙØrà.‡h§ú6ûï$(Œ¤\ÇDç˪/KpÆ»·­žã¦[·¶x—Û¾/´’tÛù˜¹7BØÕ;—« Ìð}?7 bJÈ”‹ö†h,¹n+Ê\'ú(Q €?â¿Ýo¸I1›¼œWãä³ÓÀΣ÷­àÿZ±fÁaGÀkW‹…pùÖ²ón ã¶¥¨ÇþÞkÎ:ÎI.Ȭ~i«¡æ¿‘«ê€É¢v“KÅ#ª}WXö¾]ò§a0­ª|Upª `‚¿`.<ÐIßoûQ2²/¨›§Å0c¤Þ½m}çQŽ`úi¬¤ äôžÃ]éíJ®YhYÐgçÍÏ.1vxP “??®pŸ©Ö´Á}|òÔ ðµ‚ØmÔ1›e"eØE ª“ç¡üz0©bưºmÓÜ-~áç§¾eä†Å«Ñvå`GÌ ‚%·#G$*–>–×ÂwP›%v•~\_£»×3´ÒT÷f!Ø@<1!\#G{¯[akp¤ ßKiÎå=¥<7‹-Hù˜}ÈYõ¤Ðè!=œ ³uOs­ËÆä “~RAwJØ@ë"À ú}<,AÀ¸U29 òüÙ40¥l-¾ ¢1*ü{Î|ñ!. «Ä$lHüu.‚"Œ d›‰24X{>{O$U0Vº·xBÍ# }ªI4;‹4Lrkدƒ%Äü¶'áq‰ø‰_w—ˆ‚³…ÉÆôáÞÎÅÚ71‘ü𾏵õ7Kãÿ?âO>³¢"‡\ucls©ÑÔŠ/Lä ]íØ´’°W²{S@âùµÒ‚“3^XuíXÜf›Ðªbüï>8 •š3[ËØW³iA@U‘tîôì·PKÆ,°š/iÉ­Ç,ÉÏ[TÁóJ޹ÌUKAø.’˜ÕÜô$ˆJ6Æ€xW\" iY{†*sº{»ŒÓÔFè 8“8îÛ5CêÐ87“ʽu'’*ÀntKB*Ãò†Z°sŠë£Ýý|p´T×ÞÏ›©ôl„æÜ(K¾`4Tïœ7‹µ”ö(4ÇÎ#Å×}ô÷¡º„ßõxþRö9ˆÉÜìf´•é øNøÎGÝ(º\¤¾~.i” Ý¢Ih;̨2´§‚6 ôKËo–¶<ßv~B€mk›Ï0èJƒõøŸšÞŸRõrœŽïYÊ·whep ¼êÅ7ÒhtǺ$û¶ÑNr¶PÁUBFÖdèeƒ³n[ly®Pj݇µÓl_²Š•¢©o—¡QÔ`z]ÿ¬õhD"ÔòÔ´ l¶´%@œ ÈøLJÌ/ñˆXâÿS£Zös‡éÜhñDRØœbádõ픃ö4á·DÎQ4nc·³ŸÃ~¹–÷¾~­]Ynò»h°Èg0”he_ꨪ¢f-îQBÌ~_Ór%ƒ¯;á\’|[P¾ |/íª··Ð þ¸Csú1ÓË“À¯¶F7þR+Ÿ‘GT,«9)^/Q啤Z犭Ϛd¦aLR)0¸ÿ!4ð¨§É%UU’hî•UCùÀœvÉIå$#Ið^¿G`Ôï9<š”B<©GêÌ_Rä²W~šÒ™¥UéÐN¨ \H];†°žÙ9Tc¯³‹ éÒn…¾n¾jBî' &e“—bÐæ$B»;Vš‚Bäž…ñ7puÊZŠåóh¹mqé°¶JW6èÖH‚•wü©JSkM—!•Äá]4Ô =8ô˜±òƪû°`vÐÆœöÅÞëK®¬€ôµ÷ÏóBØ×»ªG¯i Pÿfóè±0å‘ÈW¢OTŒûÑj%˜ÍÄêÀ±çn˜É)ÊI-+ÚÐP±çef2é­’p×R€Âa#¸~@ÎkÁã•5*}Y¤Ms³ÌB«$OŒÄBD¸eE+¬†¨‘¬çHs£»)–M5ñˆò¢ö–‹Âé(ܳÖà õ6lù¸f=Hdï1`lók|°„$k¥‘AʤÞu?žˆ¦ú ½5FÌ4n£ÚÐa¿}+‚çðÿý{ÌÿOºµŽºÆÙ’ŠÃwHëÖ1’“0Wi°¥§üðÊbw¾{èÑ`7ìÄÙRÙ"9´.çƒðG6µº<á¡¶SàÊÕ¬èŒoB Uzj"{ç(0NÆÄëÜHzÕúÿuœ *þÕ8̆šÖOYÛz§W8ƒãˆD<]í Ë0¨öiÑ®-éy‹ÁƳ¨"ÅpÄ(3™I)°¾ßZæNͱK+oª,ÀÓHÔĶ ¡)–|úÿ3âè§-L:Ž ‚÷Ñïd^/“þ1×5˜˜\È uƒ>·Ù^TeüŸÍK?Y¥Ãó Ê@O³»0òPÑý†R{‹88‰é=V’¥ÙÓMÒâùLR™·wWi¢gœò©± Øl0˹„Èý¹ Ñ­‘S)e«I|| K<çxoÉš¼^¼$¿~ÛØÔ)ëËÝö>”›pÅ‘¬QL(Û­¯‚w¯t¨’rˆ‘?AlI¢fý«v(ÔÈÀ“’WTÁ çgbÖn~ ÑÜN ú¨ø¿©BLåˆywâšV !¾þcü°çÉýßgç+¨ Úløéþ}ŽŸ¿ÿ—áˆ6ü—< Yå1L£xÙ¸íWOeËu5} Ì*ƒxPƒÎ0+˜ÎÅ\¨c÷jc”l1)»EŸpà)âŒg\&µc+²n Ú:û½{ü@f×Mа@ë³38›±êI%•ý L ybÃ&Mç’Õ\ïÜœ®ýcOö[öa]ƒFk Ô™> ¹hw¡|\w9ÕSâ¨âê²Q*~¯TJRN È)ÚÜÄ{!'[¹KdˆKLù¼ò´ƒ²5ÐYÊ%ÁP[À+cýv䪖)å=#µ.¦mŽy¨¶ð·‡À¯·-øÓg¨„«*­6[*ÆYŽúcTŽï¦1üý«[Csd]qéí.R1ºû´îª;Y! £ùÎ@5;^¡uvÅY^”š4®'osyÌ%ð±ÒrB°Òæ¶»œ¿ÞlÇ5H¸0Œj”ÍÊ_ªÖüAäø°¥ÿË©4d¸§NÔ,…¯s¥†ékÚ¤ÊÞeXÖz”µã†ì©7ÜÊ>Ôh¯pPßNÿȷÚ€©v*dõ`>¾35O¸íÁk÷ˆÉ=rOÁÞ—çî%J3ß4tæ £ö¦J¥+8}8f‡ ëèíòùóú;;v"0ôʬ»„y1Ö$*aݳَí¯]0šÊm*_ãÙÉ„ÊvVÛ‡q3±w·NoÔ´Y´VŒsâUÌfËöök’¨ 2g§š=3;ù?Z$–VaÇ·^ØMÞÛÞ@ðYõsh=œ^꘢[:º5\[=Z1©à/wíݯ–Uy”w.£Ñ¼"nÊ09FÒØêËqæÔBÞtø5…é›çcÇ×÷û||DµdÕgð7y->ÙÊ/QÉÖD˜Yò‰UUëV>¤Ý…™Ÿoå×D0㪰)Ô!ñà[+³hì¹Ù©b¸àÖ—+g!ßC’ÉçjR0݃ª6)ÁnʪlnV€*VwF£¡U°—`½ÌÚ¯ÒÍ)’á·;?¾ü¹þ˜ëhHÂM Ac Ö¥r™I<¡ÙÙp¤‹†ÞvRš­ÙçŽ*jF`º+ª60´=tbÙê+/ǵ±ù: :}$6øñ´KèܰŸhxÓ®(åó~!x1Q.ÏVk~ÕAâ¡ lÕã‘Pîk)¡x×D# %Þ•Fbi\FU±ò‡fÞËžsã†8Ðý;Ü».W, ­ü¾<›sÄ gÙvŠ=o>¡lb3†ÚË™ð­ÂVqVØ><Àv¼`åäT×l–RåúÓ ’øyLE¼”ù¨Þ˜=2Ÿçnz´Â_õRÊÁhYqy—€Ú›p¹ŒgïrŠe™ªß´ÅÇw¦Ávx:kèœ(kgšW’ˆ:ézš‘"9ÆÍ¿¬KÚ¹ñ+í{4½tb6~šu¥ãeó×k¨&R—lEàKD Ü£?„[:jŒh‘iù«. *kÑ0 ›Lï2wL÷" ‹\ø—J2ë~RN• Ž?Uè9Àê !Mòz‚ŸÇ >æ|ÄA$}ºN9,žRL3ÝÙ’á•:¶ºë‚b$o R´}…[$–'1 µú¼péƒ-Û´Lg“›Ï ëa»8Qä ƒàe¶%Y2+#³öÁ®à¢?è*oúžîc²€wÿÿ¹Y%œ o*tdzì$ȹ q €$‘B óôS¸Úã;uÛçG$ÛoyŸÁWa“MLxû Ë‚o5¡7ŠófÖWUŹü¤pa,ÌiËÍÖÓˆŸ,Î3ႦÊÐû/!ÒPM•üS²q` ¹ëP~ˆRFü`TÙ ÖAÚî~±2™a{ráQ°×ëã>L/õ0k–ó½ÀÿÁÀÅ#È„{nogÊþç¯ŠÂÆJªÔüÿT—y’Óapˆ¡“A*y›aä£%Â{XÁf[«wŒÙñvrxh ið…aE-÷þý VHk>ŽïwS`ºÒ±-®ïMƒÂ¾¹¸e®€v£û¶ÜÎ^Pö[ؽÂBõ?ÌxO½ü¡ ¥´¤åxK´Bõè²fÜØ55gÔÓžqo@Eˆ±ïl=Æ4þqWÆÌ‹ÿÿ-|ÙgÏ'ÞØ¡kM¥ë/¶›0ÁDÐaÄëcó‚L˜æ>°µ‘sÔ<àï1VwÝÁƒpÁé’X£:³Ü¤…soθO——£Ä‚ÌP4° ë^ÀõµlU<ÕŬ艎‹ñp.‰Ž; n™Wó^èº/8N‚3â\òšRÃ|÷KrÃòÚÏÒ²;;?úß#4Õúè£úÛ_Ï·äUOl–Otp46î&ݳ5å:ÕEÁ’¹Aðݺ'³Ü(º1¹ÞHlr#Yçe‚Jˆô‰Þ¥¹þPœp1Æ%%|óžL #v¹¤nœu;î1Zo!ZïtAP5u²èJ¡II>lz˨¤sï)¾ŸZ±†‹õàÕƒJN/×Á‡UÆmâ›3M©t¥3&àÁ­æ3¶€éM¯Ì+DÒf˜ç_¢óÃÄ‹„ÄÃ2¯ÈyqûÈ­‹Íå>¡ìëÁ»Ö;-Ílx©z„y¹N|dÚ®.ò1ÃêÃezÖ"'~o 2uÑàj;'zócfÓ4Pkº(‰WF5›Rø¾ºH±çœÈ´‘z*‡B¤È H-ë4Óc¢ ¯ïÍÀS.Ý# <œÕb 6æª þ­5yëË䇽F_¸»¢6Uc/ÔýÖô¸‡øŽòt "²–”Zî2Ahô„ l‡qZ“øä]ÝÓæY>F\âú5X‘5^u;šÔ¢èô-tcJ÷%\®cõÝê•Ñ:Ÿ% Î|Á±fõè–åVyÀk -0ç‰ _Ž¡±Au†‡«>ÊÃVgŽÎ5aþ¡…!žîŠŽäÿ!ý]?zõfA[ÅA󼨔l­•¹5†—V¼ð9ksmŠo $k—@"ø±¥’ö”>šòÎ}â;MÉ^:¹BhÓXQ ´¶cl‘LlŒíc–¡K€m¬¿îLÞ"¬x®­RÄsW.8JCV¥ã)ð^¥¶|¼qÈdë–€Ó9/œwû z°ÒôعÝg,¾9XQ1‘e"÷COîIu»RHíEËEwh6cÅ4Rn9Ê#nl;ÓRá¥ÄK©ŸàQ Zß8(ÿpÅ~U£^óE(ÖÚü-‹ƒøwî }¾wņtïcÓfHýÏ ŸJ3è 7!ûÒSÚÎMÞ¶T§%¨ªÙóQýH-Ò íð¬“y:ÓÜ-k¦xP¬+puÈ-¡E‘¹òvü f† Ùp…fG#ÒÆÈu>¶é‚HÐàê¦VQÒ††™úÐÀÖsŽÉÖ;¹h³Š–«.^]%9%Ò{åŠòêZë(IKÚÝ`üèÂø^õc6©–=IÔLl!:AH÷£bŸ;p,¢alÔüȃItSJÐPkívKúž°áuh °•ÇÎ þ=M)¦·Ÿ/Ý\òÝÕZ—Jü®¸ +é0Ýô{ú±-ô²þ`E¶Cä‰_˜ÂoO]™u„i0Gçe£ªû¹ô2v?œSêcB*«ÿ_¿õ×—ÿìTÏ#Í¥÷È3â,³mEs;°•ðh‚¦SD7èm4onð'ªúLA²åYK| }“ •‡öBdì2c+iÇÙwÀs›%Ö"s oÔ=h²ƒ¢2·“ù° ´R¡¢(͈•lÝ'sY¡EÀb»­­¡×˜4òíMàsŽµÞ¤žæÚe½Ï[þʵ8În‰ŒHýËH¶-ïdJgÜó©A˜Ú³ÏGB4…˜+6]ö½F£øÒ'ê/ßÅŸÓÞÅÖ ;J³¢ ’ŒE1 | ™æÓ$2gÔj»úŒØßi»lÏ¿¸Ý`“øèî°ÀK¸ìK¿lNð…ÅБ¢¿çã5’h…GUq™©JØwTò„GMàœ]‡Ÿ ‰%xTE%r~‡Fn=2°#6a›GÿŽ7Ó>Ä6O-Yuy8Ê·ÞP|/4+#kü¥:snÌ_PìDsÎW“k£ÂäÚÌ[Þ½ïþö»k´B×¾­­b»Â´?ÔbÿÌo:Ý™}Èì%½¼5Æ%·íf)ym³Š_¹³u {â8³oÑ›¿Q(á?n¼©,e&¶úFâC *fqÛØ õ¥rw†çR˜ØERâOxºµn!U×5‡Óš×d†È\9LêžÔòjkÍ™´å[ŸRÇ\ó+ï}­-´9ǘ$G›P»½?œîW)_tjsß奧p‡èÈá5Ó¢heÆ©_´²¨”³Úëb…#ôòi„|H¶Œ4þß7Øí®þ!"þ‘\Y4¿wÆ\i|ú39h ÍêHB¢Q#J¥“i¸ ö×i5á{ÙB­&D£°¶ ¬ðZJYÚJ#©­û‡=*]Íi:'žÜÇGëÖŽ®õ”wx‰Œliœ È<Úëåóÿ?Õç/"ÁâF_ç%Ë5½ÓYó¤ïŒ[ i '®.ö·5Èg=4´{•Úŋ۰Ḭ>/t0«Aá0[[Î_DÞèÿ'al¸|A–B½2÷Ó¬.Ò?-æ*iAe¡¥¸s›¶³‚2c~QÅΫÅñ5nÌdèQFY‘Ê&¶-3`s²õ¯)®´;:ë{i%úNV›¯±–âG$Ì;ÎÌú7ÿžÏoµºAÈt=_Žá'.œikÝPÿNVpéƒþÂCÿŒ0è ‚ài$‘í½ãûv»KÏîT}Ù\;²v'õ™õ|* ’—f¾UÌ 1U‰<¾² •É%ÉXòc+¶—“•k~§ÐÖv  ¢¨÷ÚºÍ9ãÂsÇË=™}õ¸0à‚‚Zz<˜«í=Äu¿6œUE•3©öâ#QöÓ÷Èn‚m‰?m l'¦tM¶-»y«Ùo£wy`gú‰sKòh8ôÍ5"À±ƒÕÔžÝáâ]kª|OÏÀO'b©Ž¯èŸÑQÍïB\¸ÝOãfÅäèžÜþ*èeoô¦ˆ Œêú.×{¤Ø•8¦¨ç±ÿv—‚‹ÈöÑ7Þ†{·Ú?Šë•\[uŸÔ¶ÔC«ܳ%HS´µù~¡anܪ6`„sxÿ·„Nÿùw?¨+Xo[ægÜ{fªá\È«ÉR`wܘ8¡_±ª5êòeiݺnÆ€Ëÿýü4®oS^êš W 8X­,šX©?Î?v\­‘-úNE8V.ì’c–†MP{»¬¨žñÜaY¤Ò0«7_âÛª´wë½o0›Ló–çÿ¬—™-Ú5ô^ÆžÙ€÷GIë²ÔGáŒcñÃ{“Ú7¶iöW˜ÊEèðÐ.µãì‡ån´æ†ê†±Kˆåèœ!¡1ƒ¡‚´//toÆ2ed¶4º¢1õiêØ7 îƒmK±ÎÐÑ©ÛF ®jr § ~•EãG¬ßéú÷-4™«‚Â5]¡6°q:3òÑ8F*ûIl«­_{ãù9OëW"ýõwZ |´h©½˜Ý@HáݰcÝ9‹\,ðp8^]ÇX|lÛÏ3Œ#œý¢ßúô,MÉ*>–¡aDÌòK>bÔmÆíoo¨-jaÔb‰J (/k#VåŠD$ËØÉ³`qý0ôgC[f´EÃQ•¾#¡pžŒ‡èš©”ùtᬙ%üû'eó šÊ¨H󊼎osºŽ\Ö,0|§ÿfXìC½KápÔqkHN»59cÐ+ƒéÜ óß!®Z€œ8q<ƪ=A‘ןdÖ8bcnŸiõá™óéÖÞ(‚ÈΊA‰vqJm 1_rØpÁ¤î~PþO^¥òlÄ\0¦ìE%e5F¶uÞ+u˜…Ä |}`hÃ;©âIÒG/U¹w¦¼ìèþz8 ÿz«¡fÆ=Døµ›’Æ)HNžC}I%$•UØø,ƒšæV fr|®Ìž‘µ€¥ÙŽÈOSxeêêÎ7â]†æí‹¸ŸZwP€w¸£RofVê ¿–©¸ý)kÛnî©6{70q®S-;.›L0*õÈ· ^¾!O(f^Uç.á¨m]úl3ç„ä9÷ï|20mµT¢ˆànÇ_qýýv!…ÈŒeƒãô¢^ -C¯š—çmì/¡²gÈñÉaˤ‰FιC/ÎXÂÕÜâõœ´Y‡Ç%¥ìbsÓj/íˆ Ÿ]—Èÿ¶ ”dçPdD}®pôÍ|¿!Fª1™B:!6:Çë•-Š×¹îããßÞàݹ̟¥Þ‹}ºm²ÙO€øÊÚÍË—•køSÉÉRG£ÇàÐR€MB¡—9W ü„éÕ¶QЍæþñYœúw®ôC)Ü CU´Š&õ=‚AèBºŽTæ©–% žä)¾õãvzÄÁ\ÍêÉtµîn•܆Ÿï§Ç ŸÊzyëÞ¿Y¢qkuô.ïOðpÀ—ži‹b—K«·Ør±~w¤ËÓ¤Ô`Ãßæesšù¦-F‡žOÒw«\¾g£s™¯Ee®¡>Â[‹;Þ-3W¢ªƒómÕm¾×4D鱿Ç9VûaNg-ˬö }¨ú¹%°Úµ›ÈLfŒxIý1 ô¿¶{/vs³TÈ„°-˜{ÌÞ3 b8ÒðÒ’ìÕ¢M ©`)øx?#Ö‰dÁk¾á„‘Fjø< ƒ|ˆ:Åe'—lttIí Êþ¾‚9OÖÊ#+²vl‘ÑÀC‹ááð`Ÿä ÔR›þjŸ—å1d7(5[˜•ì`+rü²Ýð·¾MòµÁ.œ\ØuítPrxæY4±àÁ2èü#ˆ²6{ð›?’¤ ;ÈÀÏ/™ †”|ë¦IÀ«2ˆE oX’à“j‰åæ}µÍ"óuÏ®dIùôM"~(1´„¿ÂùºÐ;šñózGdßýbëM–¹õ¥Êm¼1”§Bð~}¾¥ä«À7ôë×èËÖÞfAü~˜û÷&‚) ЦÉÕÚÈ‚e®ÑWYªy³5›äÇØm™0Ùǃ_ÉÅÇKyC}€úq(Æ ª~†Tbøˆwk‹²ÀCôªöêèÌý¶19┓?R$–[ßõù‚ÁæÊ&Ä{*ýk:ŒclÊ  ;ðƘ7ü+8 |~V0Za·:<:"ø×[0fNa~®å0£ÛODþ3ºiñíÑLïÁ-¶>­i¢™h"vv)“I®TÚÇ?Ça‹[˜ƒºü–yù¾ÖÅdÍÃÝZú ôÈq˜<Äþ’ÅÑÐ?ÜÈøC´´Q4€»Õ¹Š* Q ëVò¦^Ö%ÝÐÕ(,{ÆËªœÛ÷6Ž2Þs^‹(pGz·ˆLi¹Jfbëùb³ k•b¨( T£Ú9(!B ¥EÌ•ekV¼lü(áÒ¬•ÝgJùâ—Eg´… ÁŸiŽ®¼¯/¾áG]Þÿ|s8ô¸–(¼c O윢Ø#øæ`%˜Mß÷óI¿ö¾b£' l÷ ”P"=½1З¦Üõ‚;£¹Höb.ºÕ¦wŽ·(¨3_Œjsh–ûÐ%—2ªÔ²ÇÖflð~E¯2 @5›ìsAäëqƱrÓ W¡™Bðï,zªé”Ê mŧÆKÈŽez68…ØX†ç ½µ9;l;NJxÔœ¿8q¨Â7Í(›ò”è ^n"t,½Ö jdÔ"Ö:ÄjêGP‹e  xð•lú žZÏ+.Ž íæ4–4¢­ƒuÀÓàD“pÓ§NÁ÷úÑŽTâä¤6i$éJçÁk½BLÖÍLÔå.Õÿ}«Xn¿³²¹e®ª*QÈ´š$¾ÕPË©TWÍ/›ç6EŸLœ)Þý”·'–V-G:o4t{n’ë·Hd£B¤õ-xÁµh.¥9ìu™  üâ;¯'&/ª¯?Uqþâ·(ÀKÛ,UdNËŠùX4J1”ÄÆînuç5çµ[Š˜=J>á|Ÿ[•®S²®+yç}NS n3æ|O¦&J•²D†J!é %íü Õ(ú.â,ê—ä¼¾8´÷m¯*«‚‘p£ÿ–{lï¿<\¬§RµbŠñí3ÜV¤Ó†5'dòÈõÇ‚Ÿhè™,“0”~""< $ûeèqP.Ð|.+µæ¨Ç2>Ò¿šðQÎÌΘÍCêQ ³¹­/i6‹ˆ"­m.5³ÉÕÕ; ‰¯>ŽvSb<Äò]%]žßl6‹mv’hÒŒðT‡ôè.ÖPªRϪ€åóBHÏ#³f£‹Ç¶’~õ’°åõfÔmM'U¥JZŽ'aÞà!ॠMáý&¨ØpŠÝ/òRÂÃÿ¨~pÿAâ÷ËÇ57éa–­g¸ðn*m“D¾äȉE¼ IM¡ÊJl‡Åûåöª‘e´=!6"1|H™uÍ%KÔÚ«üG—P϶&•w/-µ…öõ®ÐëHÞoÃLu^*vÞþ±io=<<ÄÙ,‘€KzEŸùd Ý3æyç‚ ˜LU6lç¾ÚœÞâ¾­´ï0©à£(MêV þâ€{D'/¹x ç “ç‡àe?AŒòo^õ]ŽÍ8 &sx68™I^Õù¨\çç÷û}ä_ñ¬áVªäþGÛÁ™“ÄSõxJîÃ9:h^Q–êp :<)¬¥¥I¦º\7 Õ z²t ÷ž‚<ÕŽ±œ³sá§6·éWÄÝ K8÷Áœ + ²0D ëȹûV7˪ñ¾>Yœ¯5þ—]Jz!䦾™#cìï)<ÙAY‡Ç: Íñ†R£ŠÝÿŽdÊw¬ ¹%õký·Ò¿aýëÓ—Ã8±N¿üÚÍK¤*Ñ“5Épž«±ªRcö8¨`ý1¸xÔS§Ê• †oÛ¢ )±U±¤=ýcc¹§\g°É o÷¢ /J[ü˽AÖ·+$òU;Â6¹=5Ž0Tß$ÈýÊA¬ºOÙÊlÁ:$ëVô¨ˆ¬’+u‰X¡ øõœrÍšF5"X·e§ÇÕC<ú|Ht;ì¢ ½hôè̾Þ32Æ"@¨.ÕNgf•™8­ÀDå™9ÇXÒ%‹dBG}&ؤÿ|rÊx­;ù˜>~ÇÇ_aFÚ£:áÛøDìªo!´•ë\>wõÑbRI 6à? tô5+5¼Áåìˆo~—¬dYŸßL)·&éÝD˜ca*дêíÏͪÅ%XR«ÈÔ{ ¥×_v ~Ÿü e(óÀa·¤“Lײ qõ i¾Å`‹%fÃqu—ʼ<™Uð{Ý,P»ÅõŸX+ž$1ú¯Ú¤ˆYrÍ¥màn±ÔØRÒØBLK[y²Eò¢¸ ··…b»„¯t÷k3-·±ŽF‘kY«¥do<>fBޝM›ïÅý¿+éÿÉUWX#¨Ï»i,¿ù”ÌÖG®ƒ¾K R»jŽ÷M¡¥B<ä()‰†Î4OŒ‘ç¿÷ùz5fÕV—©ª)¨›=¶`÷¢-íŒ*ŒsÑÞ¼½Û»X!ûK'ÁYÒ3 ~Ì/[:uA!¾·Óñí%*1“CçôÉ4=Oe-©–µfQ-6áuÃ@æÒæX¿îAÊ.]¨=Þ6¯/s»®7´á’2+õ䛀“%”?D^²é·’r ’¡#¯‰¸?ÓO—®—7ë‚?nQA¦¬Î–ªfS­¬ÁhÄñ‹T×93en{²ª}¬×—m´wÄÊI}G6c/m¥|cKªCοšâ™—a©Ov[cÙRC/m÷ÐiZ±Ú/>f´ïQ¯ŸÑM§¶KY`§€Ol""ñ ñ­¡Ÿûç~¾ìÏ!®ÆÍ» ‘¬zòg…ä"ñØ€Õ>_eBa'7"«Å2¨ŹHȶ0êdÜ«û—uf‘™Ón§\]9-ÖEÍ‚_m>Ѷ¤1mDõSÚšr’N·eáûík‘ÞxZ9ªœÚØãMThQÃÖLÎ!S†3Ÿ24£ãÕxÿ5oÀO‹3¼ ¡Æ8a ’A¤VÔ'šÜÕ©RÑÕŠŒÎûÊÛÀ%ö>ÛÔ…6š\4¶rb€ïñŸó=ñ4hˆæÇ•ª’Ej•9z#ä{UÆhCÝ´®lâ»VØWî¶@,¨@‡¡ýÔg º +ôCõÌ áÇŸgxªíW1»Q—Ê$¿šõtß Ï;!f–ºÖW³”Ý…êÖ<ì•;Õ“ÿ~ £J¸-<=BâÙ­œ‚¥ òzÀ¼…})YŸ]êí’œÂ.ïÆ˜´|ž.’>Ń1sØ&^þ§LW?º—«ªIÝôØÅ›±Ñª1‘]föõC¡Ð¡ž`ŸÄÙs'‰"êÚ»g#»¨eÕ¸/À d½¤Ö;|b_ëw€MÅ.:¿ 2'{ ø@\sDm*´uÛÐpÇä]ÐÆ×ãw:–R: ¼_w ê{Ãï‰?Ì%#PÞ¤“?Z€npÈÍë±/­`òŒO´¨Œ]Yô¯5¸è3‡ÏZÇŽR”_zâøm~3ÔæÍÕ¶l’ù U°@_Ô¯j_Ú\s'$ñBãDœŠï\½ÀMÛÒºÆ:Å´­Ãoo‹‘C´b«¨e&cI)¦{ûQ ´heþtöè> ©ÙXÉ€×Û‘!˜ÞB)5Ñ:-v¬\ñ+h·ÂwEÂLo˜(­ñç ¹¿{ÌI OVÍ ©Rˆž9U¿E¬~´C £=àÈha²nvXΠpPº¶±Û†5ÿõÀÕpe æÂ©øçœ/©Í9F¯?ìr*)¼•g8CŽ#‚Ô@F)ºk×â®AÔn„ýv™Âñ6¿9Ѐh¥ÙèHò¬@Èï²+Í”Oj³yÞÆÈ6›‘·F+.J¬ë’ÏóôÉФ}1û5óá%Úr¼e–'|Âé;êœuD!–ÙuD»à“îŒÞ©‹àïPòð^ Ú}‘™ýÇ%É©Z¿œqì:Dë͞ܨ.®ùÓk6b>/ÿ9`ñKIôvùs3½€z1Ï”wäícpê΄‡ûÑ+§a¨UÑ JÏÈ,3¤©ü¤­·$Ó^ù¤šî)ƒgq‘š.Pø,ò?¿f …D›„[ÁÒ‰Œ­‹†³ñ wÁp Žê?Mˆ{;×°î–]‡!°€£¥ßÈ©© ªPf}D)xu´8™qè2å6êUÙhô¬¬*þ?E1¸]QG[3·‡tŒCwyUmÈR`ü¾ßÉéJI ¿,‡Z jâ™/Úpüü=X· uôT‹Fßë]ÚÀ»w1ù¼²ý{ë0nXË!šB´ÿá¬xŒBD4kߺ++XíN E®Ë%`ŠR«œÝ‘x¯”.+E‚qÖ2Àm –è“ÄÚ<-®óv4C(8{…æÔ)öSP&FÔÎÄ„ê –NÙsÞõNòá|ñýhÐ"M@©+ŠM@ð³2(É€@sô¤4=v ýÖc&šj¼˜^aûÆ‚<’¬xĈg-FX¾¸¶,O]˜(Á®¾ñݳb5ŸÞ,Fâ‚<`º,R -öÑÒöôÙ1l›HfÙVx¡DMú ÕÃë÷Ïï’ձşÞÌåÈ÷ÿOÀxæqE6}Ô±ñ _I Ôœú6±.««½j̼Ӝƒÿsi Yw´Ã÷¦ô¡PBDwŒgqœÅ9Q”¥,Õ l¥tCázv–ñ:‘¼ •ÈÑk…ÅÊx¨’°f;±(Q ª]hí{—γùˆŒ¥l­N¢³“<½¸i•• W417JK@¼ê°>ZSšL‘ºeD^/4ù:ž¯ǘ^«§O·%Êü£êïa쾋ºŠhRÔZ¡‘t;Š ‘Â_4ã§·’{sfÃ$#ïí%qp¬ƒ.k%'t ‹äÈÝ "ÑËhŒ@9ûŠ?ï¼"‚Ž×”LG¿$©v5r[MV‹k©í ™ؘj D_}~‚$\î¿Ï2¹çº¹ô-Kr¶49­œ°õVª$)Ž Ð³ e{.'„ƒáÏÑ©^ÚùŠæÆRàyXöŒ%gt/Q_5ƒ,Ù¯aãƒ$m3àO±KR[ŒCñ«øS/ÎÒ9íŒ&¶»@Š æÜÀ…÷ª1¡Ïa]†yëP–ŽìN‰À‹“Ú16•g§¹¬Ž£ç`XE’$ðØVKrùÁ^·Ãâd‹ÏnTþO;rÍçóZåù{bKv>1õ4àdT½ké©^§y–í@ñXn”^áßÁåj×Î!g®ß´›ÖóËÉ2_ûSæ®ô¶~Ö{Ï«&á¡/¼ÌÇê/'|½iÑ¡‘¼`ïehsç­j÷¥‘/Š)^Jõ3H·¯Õ¬—S±‹üè™Áƒô÷9ª×O3(þfÆ#)þÌZޱ”5e\@Ç«¾îˆÕ¨ ˆ»› ±³Äíêh5´<|õ¥,k—¼?€ª ¶`Œ3uw(#&±7×A“M9bµ#T~áшƘ?k}Öàºø¿&ýëðl6FWªReÑ”8Ú· ÃàœØãÐwŠCV’vÔ¶ÙÝN·à¿0ïí4ãdø2KRߟᕠ-Ôm²?¤ú â‘-‰º•š#íO›šíB›C i¥öto’!Ç;óDl"R©Hýÿs¡Ï^°a³à 銒JíRîÙcÜs;¶Ok£ † I>y€ f:ÓòôY5/Ñÿ¹°èoI¢ð2dÖ'5#’-5[:§ê[mÉ_Ã,vv¼—‰¼¤«¦ì[ï3‚îM?p †šqoe*WkëêÉg&dIÙèYo˜ôâˆLañ3hÖî`¶M%m(l¹•½( ê¬\U +¡Z¨|X¿tB¿äi@5³„ñmÂÅ;u–ÚäÖßÞR7ı±Ç\Æ´vö˜¡dÐhÖôM y·%¶t<â[6Šu¢ìµ©ƒ°–ÊÆãuÆX6!`׈†i¡¢S[•77çÕ‰Ñï4)Xøc h™ bš+»8ÞVB|TÎ*„žT [Ö!>y«€ŒÜ›¨œ禸¨º—\2ݤóîcð°R_À›ˆSÍ[aÅGõ—ü9#FÈ`’ ªédCÐŒÅæâ>ð[L’¬ªÛVH"ï×ÕvÕÓVÕúgo ÊæH‚ѹ\í"g& =æ¾z’¸A)˜š²t U?±OÀÈ-Tyæ®ò‘ŒLô¤!#XOïû^¯_~2jDW5w§T§…=¨dôvN¥.€ÚH§ÏÖ’õó¨Ô÷» ;·Xy¼ÀçÍö·¿è‚7³B^I%ÑÎN¦ÕY>›~~®Dý•uÍÏPœ6MÑåiˆ¾Q¬•¿‘å({ ë‚ïšéª7ù¾(SDMÄy†BJn•XãÿÁ— Ž‚‡/XcŠi¯9ÎåŸoÞzÅñ|¸Ñ§i®-QàCìFÑøåü9Á·Ð&_,. ßžßÃpNÿ#ç•D÷S|(t5Ó2ÅSés»…Óô¨t`PFÑÁÙ‡ G_ÐUJfQî0neœ•ìmç#O+ýÁƒ;çÍ}+Õ¡òÒH§@Eš±ÃZƒÌH´ØsÞÉhh©—,^jZt†Û›nŠ’%Çý.f^ÔQà+lhUnûNa,6ùõ°³—J_kß« Ü{;X[/bA¬Aà¿Õš£<ï]úÀ]¡ˆ•äÆÛÌAj!ŸŸnãÒW†fhØø–óˆ¥ßÁ¼ˆ Â(Ò-`ÙüÄ…’‹iúãé<(IÏÛX^#Å75´]ÖŒÆwžyèRR8L¬«U’L®§Ñ :gë€7ñ‹²l~¤Fkµãöä•{ðe ‰Ì}ø}¯MÞÖ^.åá4Ùµ¦¸M§Ï@DŒV·~™§À´<7cŒÞ®”®æ8IîeýóùY_\}‡‘±->a®œ™¶0á‰ép¿‘‰Ñ²¼c{/Ù»¤2ygú Å ÜÀ„îã½—Éø˜ °ñ‚Œ¸9ò™í?´À£¤+@®å÷] RõÔ`mDö’ Šh GQg íjœŒ¢óñÉ, ŽQ- œ]µ$V;óo|²­Áiw$;€ý]§&T^/åM5Õ$¬üÉÓU–y‡i{>y/³sžlTT8=é,Ì™$^qû´ç ?c„*·«<yU™ڷxKk©Wª #Ü|^|3úÙTüù n<îá{ëZùv!3–• ïhUÊFZ›ôÜ}“ñnkýo±×Fλ £æƒÈsVlÆYɯÑwQ·sŠoS¥?#–jQTÒ@«õTÒRïwo8óß÷ë®»÷õøSÿy<=>VÿùP!jžÝ`-€@°«c›Xºtæç†”µT„V¿QÈ31+Õ‚pû¯ûïµqÚêF*,ñ°Í» Ý}‹B Yr•j¯iùaG·ŠI ƒÐ­EÊõ\²ÀŸ ý麬#—*Þ¤æg9sʼnzÏ®jÀ8¸¿rœ˜®wÓ·ÜÓ¼„ P’ }1ô˜žI¤*Bˆn|®»1d1\šC0Öù‰õô'Ÿõ U—ó:RQ&Ÿèû‚Ýç×sgH ‹¿kÅöCñ¹.ø#•ûí÷O_LõA›_Õyš³òFߟtß©|Êbú·1ØÓЂ¨fUï¶0W¾y} Mjy¦Yêáž“ÜùžÉ{%ŽŽþ€»"cÖž:˜ży¯Î Wö¡§"TV­0SBw/=‘ßýíŽ_Æ{7íMÜ’g¶Ä»m¹ôˆBÍá.ÇeGüŸ90šœŒSö‹œ©=¥]Æågþ¹M„ö¦{²€ÙqÔ6ÔÔNO‚h„zÛ°µ× PãAPFnõwû¬0‚]*M™7½¥z+ѳêˆ=ô¥dî‚¿3gäJuõš¬,ä­¢.@W( •H]¯Na1 H¼>´w9y®~ëÑ1Ì.RÞOÉÕq´ÄiëÖ 'Œ•†߿Ꟁ¿Õ¬µÌ;¢MÍÿ~˜Ç¢µ“›ðäYe‡±ËÌopê޴݇¹Kõ3¦QêÓ0%½ÑvÒ‘ÃÑv=éýík…Ð_¦Á#’§Î™jñpéX'h=w¶m¢!ÉÁ Õå“Þ'ÀE%{|n£ö0üN#º®M×”[_ÖÒ­l[©Û½7²Ž¨¡ÒIgÁ |Ya*;Ú%®’ª%æšû*6vG(¥ö Å ×.‹@)oJ-WˆÃŠx”ƒ4—¯-'ô)Ѩ££›Žá°¹ö»!eªhj¿ ‰0¨tœw­T- ¡©v¸èpTዲwÛfß>•ÕuÑy|"MúÜA,h¨W]:Ÿ¡‡7”&_Ü æ ±â…2kÊOÊî(q:¨í’æzV!t‘i«‘ý.y+‹ñ®‡h©ó/ÍÕ%9×ãÞˆ‡\:ùíNjJŽ8 [yþQÚ„HW䪛ë5Sbj0¶÷gìB4´®€Ë?8$hËydSA]k‹6«OìVNõ5‘PòÓ²ÿß"DÕë×7–éDÞj–O·~Œç½©)™síË')? D6‰|å,xÇmEj”… … Ùï~Ý ;» ©Œ°ÂÔ³Q6+[†ƒ¤¾²qQ@Gù-5Ë´·§ä9~ñõfˉ!öToâýqE$¯ô»gv_³%} @î×ìÇΟ£ÃÑŒŠÞqøj&åg¾Ú(Òà%Ïö_$Cú²“0p>#^Íäo/'²3¯OÞ–B ªŽ›×±ŒØ¼Ì#!Ì3 ޼Âúß9Ï“%k Þ¿°œU¸ÛSŒH¾Ò $¹­dÆÁvTŸ²Gäaب™ðF €ûŽf–­;̶ý7Kž›í"P4Qeø¡ÚOsx¼(ÓaÔµâ9¥_sÚ/ÝÕòšÿ0w™§¾•±YuƒÞÃ,\ܸÑãž¡noCk<Û Òº|ûÿGáXV4±í.ʸ„#º®IáÊ/j'cÚlÇ­„z#– ‡¼;÷ÞƒÚaõ¡ ’¯”BKX pf%;ŸSõ³>“ W c=Ñ^(¨:FÚš·F_;$^ûÜ»<³r‰zÌÜ¢†ŠlÂ{õ‘{é+àß꼡ÈH:i6:é勱QL€ö7S 6ÌYxgPŽK¡RÑše–ÞÄ z¹K‘PU®PxöíC‰Ó»™5!¶æF^·šQeˆ(ów­ùò»Ô®»g:ä»åìAÒžéÖn«oKOrm×ÞIº¬$nY­š8Á¬´ÑÔR·L£%úÞL¥¿'×öþû†âª³ k’¯Œ1½xK…„WÖV5ÝJpÿiŒK¸–|%ò”Ò)¦’W0Ïš8Ì=º“3+C ƒ‡^Ú¹\DÄ#?Òöæ[5K¨ÇÔs+‹áNnˆåtZ{ ®ªR(Î’4†'çIågÂ6«Ï+JþÈ/kkBÕi}üß(Ö`JN¦ŽÝΡ†cV8IâM‹/7DzSpEF¯˜®ˆ`ÿPÞ!êÚËYkùÏ2Çm¤ó:èÁE/*]{˜Þ«Éµ€Ãv°—s•)ÉŠ„ "ÏoºxPåhðû ²l?h×ù$‹ƒ] °âPÖ(e2ä‚]Í#w³B ¥v”sh¶æ›¤tÊ2k‡Õ…/‰géFÉ¥¦°‘n—Í}Ö] IÞY\z̸INDav|dCf˜3õÍÀšHqj—h Ï" ætApò/ªÑ ¶Ó]qß’}…oŽlé/[Õ¹¶úZ¢Xiý«ã°ìQÀËPÍ51ÂÆ­äãð²…Dš‹’Ë8m¬8B ж¥ \‚²º”NJ¸.ˆö¡Õ¿?©DK1“z?ºν£éà -²Øôa•Å—u¶Ó³ƒ)gédFÚ!ÁZœ¯0r¿½:ö²‘]ÑZú e!Ÿ&ÙÀ ü© !€BLÔ:r8¹²/'ãûwÒß¶ƒz‘X,Ílî’)^»ÿ´.yäÁV0'7¤·Í¨Ð›yí8ˆ»#„áÀxêÉ!ß¼‹p ³1 ƒ‘~dX;`^H·ÊБ½bPkòÜÙ»ÊÂèA×l.Mýš´N@6ÑßùògréC‚4J!8ÔÅê•’Çù¾¨økÙvïUYc¬5œ¦)Öj“ð€""À»Éq]ì‹N÷Üv±ÜFÂm¿qŸYà)0›­Àº¨)• }µîé.ÆKF#hdøÒÃVZG.°oME¤Lê8âãPÀþì>A‚ õ¼Ã¸Ö<x uÇJa)úv8¬$ÓÂ_¶.b£ÎQ%­6ÇÀÄ0gy kôíÓÿår¨1si]ãËJ‘uî6 õÕOMEÉY—LXPuŸñŠ‚µ_·k«#塪%ÊQ¥@>æ&½Jm=vêbãj™œ o²r/Jr<=š«í*›S\Añ.œ2o¥&T$:C*!ÛðC^ÅÃ7Ü}„Ni÷å‚ý\©2¤˜Y¯Z!eË{r°ÄÑžWï‚i|³r;¸£·ïé…IèòŽÕö^Ÿð4½xZècsÎÝÒÓT)vÍö‡šŽUô¥ÏßZl]ðÉ4áY-ñµœ~"Ê™Cç¶C"I–”aþÊ|-M þ{•Co{•é§Ò6зÿý—ÿF4§åÞÓîuZyT“õïÀ Ç Ðj¸ ¬Iv=è¢0ü/«f¢qχ–‰’B;¦^l†Ñ­ñÒ\—(x(pbÁ¬xRˆ¶Òöe@CQJM%‡rCwøØ÷½pÔåEŠGX—±½®@˹7ä:yÇQ.,"W±„dæƒÃ’ƒëôrÇ“(S%ؘŸ1¡&ÔhÏÍ_áž[\k×g¹È øÈJÿ…à Ox8÷gkÍ×!’¹m^»[ï´Ü,ô¿Š?>IÉó–|”ËFÒ˜(7½gŸ8èÌ–/‡²ßC½@ŽÉeÚûÝsµxÜ)‡^O9A´ËlWÐå’q»rl9v›ªç>¿û‰Q÷V{“ô~}3Ìp¥ƒµA†"8ØËËŸäÏ;-°&23ó ¬¯)†Gǹ SKl½ŽTú¯±Z#@6е_rž¤Ú"W™^µÁpцlP¥Ìrs wíVöÏŵT‰'<¯BeHÚ’ŠîÁj 1B<¢úX0añÁ+”X¶ê=BÆ{AgC&£sgqIMt‚å4ô B›†ú¿©–”V¦O¯b§ÈÓ¦/߈ä¥k¹Wº{cY 4›Ü„SE”S ¤yáG`urñfoˉ6Åþ"Ãì‘©·Âïv­‘3Q0¢ÐÞ v1S‡ñ$£pzˆ¬òŸ\6Jšµ„á` .<Ô÷û ëAÕ\ãÄ8íÞ(xÇ<{ýØrÛ¹ )Ë Ÿïâ]èÆYäV¶_T’ZŽsMqœ¼¡$?fˆgˆŠÝÜœ Š%”7$?"|ÝíÑ>çöÞÞíÎÓ´”-1mþàÈ—¹ý}‡^¾ió‡Jâ¡hÊZêâÃOt5“eêat‚¬{{’±ßÜæ»È fýÑçR˜ytëì¼;›þ1„Ìg<´#{6ÌþH‹¨¢Æ¹}DÄÁVõ!_JÍÅ‹dŒ‡vïàñWs׊ Ðô͵1LHÀMËæÞtw»ïÊÔüeKC·§I”m–7—Ê&ÇÕbBÐÎéFõeß?œbÕ?CÛ‹äØn*v‰­1$‰ÿ³è{VÇžc=Ö´àŸïCb¦*4gd!wTvØ|sÓ•Í«–ybØ’ ¿žÆÀøDSB˜1°º‘›°×ë¡>®ŠæÄZ™*ÎÉþÙH>“ì ßÈ|©û`B/†ì?¡ w÷Ÿ÷³“HTÿA+lxj·œ–ÁøŸÄ3›Ú™žÀ:}Ë5Єûê:Ƽæç6Ë]2E}ð2"§Lˆ_uâOÁ(ίæÏãüw‹JÃ='·”y’WŽcδ fÃN²S´Ø-zÈßÎMógÀÔ3jkœˆZYX„üþ\È©u°ê ƒ¥‚ÖŽD€K¦A¹÷<Þ•âƒFT>(%Ywdœ­Å2Z#¶þÄ iæ2Ø´§qª“Ù&—RI*úâjb[¥a ±Ïõxf4ȹ“7ªvŠþAÀ\Â\x5þkÌ:zplšügE;="èUèŸ=ž€ÅUeõææ\qÕ„6ÉÀ”Õ㵞5öD <ç ~޲ãÈÕ{f•ë)D vQ׬TdÌýœ¬´´;f´.v§~oØz߀ÓâXÍ* ÿó ÷bR§QóQÖðÀ ê:¬;¶?äk+/0Ò›Ò}öüv?ô±Ñ\üðÏ‘é8ut¦—£#0#N,V€É*­Ò,/Qss{ÎCãÇГt‚K!H)¡,˜òm=Ëógnÿœ¸¬ë%Ñ? Ö⼎`­°uøíœñžµ¡eQ“CMæÚ>˜hœ|igí¤ž8FïMQÚxÛ%‹–èªÝ•xXaAÕ2Æo #˜*„~¥U2øw·î´ îD·¼A˜Ï)~}~¤M<Â&¿)s:„üÙO%‰ŒçO‡ˆøÔ×o º=Ð+sÐØ­Ÿ”1°­+gnJñ]ƒ=xy¹æÇï?‚°Z²#†S»1òQ(¹8t`ûhSŠ }—haWH1gÇE÷Eณy•íb)jÖ±©]Çyn/¡ñ0¸,ZP˜Õ<Äî:æÉÅwôüºnª¶¶q&ݵ«øÙ.£ˆ×ýª´Ë9BU³í­õæc\…–ÆfÖí“êr$n$VgØd¸Y~×°Æñê?¼ø9ý†×PyŠxµ®H‡ZÏG‡}Ýâ5#"®ƒ5Y°¡RguxýZ¥Å™‰÷0 1ØÎ.×JéB @^àÁ½ŒHJ}êõå,iYî›æzLç‚7ÁŠW<õ‡å {U‹ãÙñ Ô&?óAŸÿÆb½aÖ_«.&ê %Ì!4D1¨ãYÛ6Äã¦TD‰•ßíŸX²«C5ŸH‡, æº`¥c¾ YVbºšàÁ v›¼‡}LžW6¤¤l`™§uÝd=ðFicJÎX’C&ìÓ‘žypâwhâ¦qüWUMD@A5î¦fYÃój Ͷ+Ÿh‰¯ÖãêE,a1ôÌGX“-Ï›½&×Vs½qwÕÒ+ˆ°<‚Â÷@‡M¯‰žÍ§‰ÓŸBjÔ{C:d[ý¹†“j‘Ca0rr7XúìÉÓ©{ñO~¬Gâª?ÆígPR¾¬k~ôQ($½&â 9¤‰²'#?#êUBÜb®€ ¨ä­̵fGq6û«æÍ…\à¼NŠå/ʪXÂ˰í7Ržâ½9~kïcE¶/"ö~ e|qÎm}°ý=".xˆ…@€vé<×}^Ax§zoéÚ2“ ¹˜—“^mñ1:o‘øB‡õ—îB¿ Q]‰ôÛkjb_\Ì÷À’£_9M‡uêÃýX­„)ÛxɱMë ®¦dEÆ¡*šL»Mxƒ!Ö\2á©ekÌ´ï®fë—Ë¥f‹›ëîs({Æ Ú[ÿmZM+²ŠzkdRõ¡Õêc]Wß"ïåÆÇ¯lÿ˜ñ8c¦vÝò ÒžÄö»HüÛ×€ˆ¼ƒâm=3œOäBãKÙµoCû€ä©R¡æ–a»QŸé{5\"ÿ(· h­¡=„©–Ô`Ÿ¼4ªêÆn™ú¦]9ò\:³#K%EºE>çg÷üTÛö)sÌG d‘½ùoàÌâ9ÞôÄ`«âËä+þÓã78±GåsyÉÓX áG¨ßLÝðì¼ ½)Þo~¨=›©/þ¢~H‹ã?Ò÷þþàû‘ý^›*ƒŒêV'…íßVehþd§Ôª#u¾@¬ã0¨À/œ½Ä ÷D€ˆ‡Ö3‰YHŸ†âÐî7÷aFŸZcMŠç—°'â{&MŒ• ¶VwÛÖ§¬@OÁ€ñfK.Cˆ×Ðé™Oµk6v®A‰3BëÑ`—ª öÕgO& &´©;1†YŒ˜Ö%xoŸ|²3Oq!%&©1ÆÈ`jr:žw–œt&9½ßÖØïëÅ`|'=l½ø¥º˜!÷½Ó$È.}ý”pÀW$Êý$9,ôÿ°Ê(ÒpÔŒ÷Ýó^4GüÝõw™Ò¢¢^K-\°eØ‹„Þë&kA¨®‘>#Œ j:PËÒAFÖ2iN<ëá˜ÛY%×® ucX[Õ{©.~ —êÆffÂT§0§ ÍÛw&×3¿ùÁ ×–!TjÒ:TáZí¹&qŠ4ºiÅWgÃLKõ gwj—(зæ Ðo}ÕÎáLx‹Ö6 •¸Æ4ÍJ#Aúª„ðí}´µd6yGÁ‰CÚ&;Ǹæ³ëR6nSx9û±)Ž 1šoX8it%~Ðã¦Z±âÎ}Çð] !~Gœ—ãæ`èþï«jwC'`'Põ,®–“4ç郎)Ø¢n­¨æœžpID>íu_îî<r ð7Q(“¬½¤XÛ›ÞÕÓ:¥á‹ôSB/³J¼ç·O„ºZ$¹L*e1Å!´˜“‡¢ ùK7Ôâ¦úŽ‘÷·Ò¸–PÁBŒl€Û1?Êž$(ˆfÃØÙ€JÅåñ™6ËICZ\骣c½ÜöH•ÚÙCÓØsž7½ðí"UáÎØüU*æUÀsõRôר6†có4‰‚Öäî°÷ØŒ@)³_ Ã$µP™/3;6°‚²&Nf<Õ*ŸQÕˆI)/^'1ÓÏ\¸ÖyNÀÝëÚ9] ì{TÕç„ïP TœNMeºíäðÌ¡ÆhÈX½¢ß·ûÔºŒ‚ñkYÙ—µ”„úmÄåƒ7&Àí† =ÎrÉòYÀŠ/ë¦ è¬%+•}( °¦ÙÌz}o•”FÌ3‚Á­W0ôî¯sM'^$n°Õˆo»4•+5—™FäU»‚û˜.q&òG­l¬{ä¦ò†JõÀsˆT¡Ÿ”†ùŽ|=ä*·=¾Î-pjW‰Û–#'ô9„À¹LÈ•"J'×h‘T‡¿ôCé¹X‹®n¶«( ŠÝ/rf ®ÈÚ ƒ\q«Ú­oðô2µË¶ v«Ü³6Ó²F_Q‚íS“Ç£×K#«93ÿÌÊìŽ É g±C‰VL?±äQßô^æ§ñ/†êë2‡ëX`òÍíHÀ/øÇ £rÍ“Ó úS°XjF-~ky£ tÇ`(Ël¯Ò¶Ú?#Ü”(C"Ðqí$WLß„sêÆ– Ù’RÒ9QJô]ó$äžsöjû&ü xj{^ ù/Ä þ™I<Ó¿Ø^Q ÿ·þ¼•ÿçÄ:øh`7aÑyšg•ÄÀûŸÑ&‹dá@1ÓfU’A"âw2îL[ÈçûUòv† 5øløA|E+'¸¹Âc.štà"KIýã-È¿wU×q4o¨`%æc=ªéøBZaßô©šÝ þÈîÈìú3 æ˜æŠ°×;T·IvâûŸS9vûOÍ»y•’ÐË“0»V€!ºtE"Ëô“Ó-7‰Ñèðn'˜‰L(þ²Èqd[…=˸@¸p³D4UûÎe‹¼ŸüŠKhD£.ôÞcËY”gSÃÒ íÑh­Ú¯òZú¿C|(.Îÿ û¦jßr¿^냑ç½a©Ï¿q)¹›kØ×qdèVo´VªÌÝà~[p¯'†  a¤rÑd¥à&y¾`›øˆRºp oÝ•53-Øð4î3imô~ßÑ&dì6^|–^MFøW»øQUæø–âé„PJF÷{±uðí:ÈÆ V¸LÐÂ?@ŸJââ¸ÊP®Wl— XåeÊíóßcKáÂð_<Ͷ¬pxr ´`fÌw]"!TG¯×!EœÊ› Jã©›·è.l5Ø @Ÿu‹p‘£vóILs¦A£KsÙ)H=ƒœ”ÈÀ¯­•iÃí¥ Åü*·K=ºÓ˜ãˆKàá{ižþõÍr.d˜S¡ž¦ª@•Lìé™í¬FÂ6ò½Pt}ðÅ+JËT¦_30Ìç †e("2<5>É‚ÅGª`ºé2©‰Ð³ ›’#nFØ÷ǽË·[NZ³£sn$:\%7Üý•D}Z,UÍÓfS3&êa•á!¡¾ºÙ_,,;å(VGùÐjf‘q&²¥üЪZ]$JfmÓLYKcü¢óùe ð¶¯\î8WÉó²¿cPj–t·(E:zÇ‘1Ç‘ÒÞ®^k¼‚C¡ñp¶0Û0Z×Ûb0<+*”v Þf†7k 2zŽ{Áêëú–[™îÅP¯¨¹]´/0ܪ˜Ÿ‘M°žnná ’YVv ΉæÞ«Ä •:b8˜©€«VŸiø6uM0Uågdœdõ³È£– R¾ §ÿËÆ´õà*G5ÿ°h&ØaG„5láYyÈL1Š@ªoªˆ®âãÜ}ZªµÔ, ‰RÁý7És«&spˆ‹ÙÙ¦ƒ£7 –Ø 8) ÛSSJŸ2b‚›3Mœ.õÍÔtðøóbÈ;ÄdªAÝ–ð¤E3"£%ÇÄõŒï¯ÅF%AZ~2™Ê`éb Bñâ ÛÆ™à’ôBd^S$°fÞF¥ÉœÏA¢H}}T†ÿÑZ"Y7»ƒÂNƒ½QŽÒε=<­ÔY$ŠzøÓ‚`[ÉLbmm@Ú<1¬†úæ1éx“TË3yŒ3¼w özàQ]j…ÞfW—ÍïöÄþÒM³qÀ"71bMD_/f°ëÓ·íK±¼z’:|g9­¬ D{:ÓÐ?Uê€Z2­j-ïÿ<9*¯—é=QqÄøÍã&×`m–ŽUEÞƒw}s‘Ù ó,–O"Ï$vfdÕâvGbFÚú#¡‚]«Ÿ2=9ZËxsÔ Sþ~DöÏõÿL‡ÿùx œïýý×ÿ{’ïÿ§îå¾àYYª÷]Ú cép+­ïH9 .5¤Ã*ZWRFúß@¤°4§çÈ¡üˆÑmLéêÉ39ÅP1$”»×ñ#ÈJÓ=ÃåÒ?—ïÊú§e¦´•ÊP— yÏXjžã8­Áÿ‘Di¸2¨ŒÔÁÅænõ‡Ãu[ë;—¥+ö²~¦(‹C,#:½|÷Û«€¨ÍO¥“·š$óGyãæe…Næó»ÐøU¹^ßÊ…Ë­¦!§Iî›tí}öŸ;Q©ð²`Ž`®©ÖÅòÖ7À´XÙ! ‡ø{z“ &¤FâZø™óˆzžÈšÚ«ç&¡°èM!ó¸žÝ³ÂùryÖã·Ï‹¼#ûaºôC¹cš3ÚñÙñ¡P3$æ•KW/ö$õü÷̢¨ë,2äÀ©F¼*ìMWmì!ÁóNU¡·&Í|¶c µ—›¿ðšË­lq3{héf¹ùmÅ8ð•à p:CÛꢌ­UÅå­Dl]QJne$rÿ5Åb8ކŸGª Üs‹†â%xÉ΂Mñ%‹v½LZ?ë|Þjßñ¬>âØ®P›á^$5Êâ®l&x¡*ÆýDKI¼š­/ý³X"Éûá´w÷ÌKaô:¬‡¸(×e VÒºgnÁãZìkhðˆ’z²(ÏÃ# i±þ0èâè«ûœœGX²ö"’êú 1¸ÙÜÇÜÙ"W×?]0™0²iæÓp'­Êg¾VQªwЫ„U™G†=© Æ×®ÅÁëòyÞ B¼óǘ Åë[jrÂ`³†ÔÍè”S.«ÿ«‡NGZ3W‰Ž8}²µfŒ½@¾ªZ'͇>>kI¹¶æìîØÕ$Áý´\j ŸUª% 8Õç ìv?>¦ø…ámÛ'&Pl÷OSÔÊluÈT© ÁºDYí±úô–äô“8^çé'k©{ïÏO(]¹(õqäLv–¬x¢ò>r˜¨NmHJë+¤ÑÇ>CgS0p®`-ºîȺЃò­ '†ôÝ[&(¯Ó”È“n5j˜âdŒ`«Y“ DÎÝ"ï¬kæRÄ1³· Bt{S‰qK•ÄGï«“›6ªšI—²Ì,'w;RÉtë'¨](¾ãÀª2Z蹾İ yÄ®á‡wÞpÙÒìVë|–]Ç”¶–*>‘7OÕ}ŒHN” ×Dx$¹ú–ž¬Ì99ž×õ h0w‹ZðÕܨM9ÑíRÝ™šwÒþ¹5œÆRyßÇR¶5ûˆQ³>¿žšf†5ã‹)a@IÈ¿z¸zª-93ÑjÒkXóa¥²oœ÷~Ÿ†¿ël"Ü–Ø_|!·f.YXÖô㋳Û;§g(íÄÇõz¨Û|“Ò[6n¨©ÖÞÿ+ëý¹@Zš½ÞôõQÕ…KÐþµÄÑÿþ_%ù…^~ú9åtû;þGsœ_cÁMÐÑÝPüR¿Ódb‚m@DѸ}HLMóÍÏí6ÔTÂ5ôG#4 ¾™R‰ _uÁ©u³t ¯\hØ:¬dó(A[Ô#Âr¯ó°VÒ[Ë1 Ç“ã2—ÕÎ¥ˆ1ަïlLdlø(9_ûäJt"¬žIž*A¬÷[ìž-ëûN”~:ñ"_Á‹2O•©«²¯ówå÷3Ýûî¹é÷§ÚtøR‹=ØìÞÕCú3Œ/;φåd±æøwϰDæÚžA‡7Ò6b:Cã 6Øímâ–¯[£çlõbsÑg¿ç¶¯c8RíÕö˜KÐ(Êmxɶqq‘Ý£HQ,~× Ù;©ãÐ! ‹ .^fà0bàQæBþÕFr¶ { ¯Œ®ê@,ïÊÅ%bFéêÎû¾Åæ]£«m=tÊú3¸Y™»çÀÅÝqSå!‚£%0JLïcS8¼Àžé4äÕROvÐpä˜%µ)bõFѼ¸¸"Pš­W€öËÎ>ƒ8Kk¿PbH+´Ð)^FEÍjšJil&nü%.Eþ­Fe`¡T$Ô¹R¸õ‚Ùöœhî…M ÂÏÐÕ)üÉû‡êsr.<è.S×Y;yÕø2“¬DqPiK£›+ ûr>LîvÑ»ÞBvÓÐsVv;7D¿~«t!sÀG»ÿ;A즹Tå’2â§»š^‡‘¢~.Çï.GTÓæ³K)¡åýšmùÎoÒ•é*3òC˽¶ ](mÁU`GÀ–œs QªúIxëxšû‹~–«‘¡ç'EÅS Âà•´{Ø’äÒ×7èD8Øtù¸U9b†GÄñ“aL…‚']lt%sÛÑ—×Uáq@¢Ä4Cë'O&`þZ®eZ„ÜxIàìß8gÚóšF¥48™¿ŒÌ²Š;›Â³½`”¶Û·»$|Ó£§&³[Ãö“ìÈœ±-·á#؉[!Üt³ÞB¿­-%<^î~åŽÔpŽS}ƒ®<^Ù¬˜9"$§è‚á_§‡±ØW˜£ÎFåÕ^ HåØ¿Œü>óU”ç«ìø)3@¼¤2µ’5PUbþ• †¾i1QÆuì¾BRÁj} (ô·ûè ‹‡\ë’€+—þS‡Ï§V4aò‰J[M¬Œ=¤(:Ìòárï•K°ìœcªCË 8Ô¾ &Ù£·F=e;/ŠZ’Ö™Ù¥0È…A0&l®ÿ9³“óß4”A.ªåÒv}¬aœÓ"ï ½ è¹É)š#¦óàŒTKì–øsù|šiÐŽi<úò”AB~j”*éMÊ•//ñ_y# ŒCß…¹6–(Š{©ìÙÿ Õ‰äîHá×ß:NMÿwþ©·ïs] uOéKe|fÈøs0q¶œúß”võ7s”šµóL_=0Î2èF _ΡàeñmÃ?™©ª¡;k‰ù¢TɹwT"4IJdÅ÷µá°Ð› óJäc-IÔ¼A°s™üŒ_&ùT‚jCeôçâs”˜®ge¯UsÚu)±H·ùKŒà!„Œ¡eõá Äô•ÜõX~Ò—Ÿ•‹6Ü«Ä~$¸Wf]n*”ëï=ð,eŽwë_ô^?¤Ô¼ „B•ÙÜÜE¤4w˜úÞ’Eoªwµß˺ÖT\¤EÞOù}HB¨…½ø%”_™ÚeÀÐ#(XÞ1l”@n¥(Åš<#Ëá®×\ï\`oÚU8 Øhü\#¥IF!³¢eMÌäȆpEèMeX#)O õ-|hêCZéG¹´¨Zz)™"kìR,/ÌÉl˜µ'%«i·bv´Û¢ð%|è„zš< ˆ«øpbÛ²)‘¾kÅ[—µ”~Ñ`%îuG«ÖÉl_f¢â»ØaˆdàÂSפ^ Ñ@Z*f¾qªõìLÞ=2œ¤˜nØGDeÀßTó6ýgëð?Qy¾§ÓÚ¡{ž öÄ/c“çÑf6ÔhŸ'±NâÏù†¯©9ÜžR›Ïq›7EŒ:*¾?hÓ¶‹ÏEíh`e0Ê¿ˆ© ÙlRaJ’#7C£rSW£¾«é>õh^ò%´´­7޵xìøAŒ÷ÄÄw›>^&ưL'%PÛ,@ó…ò2Θä;ââ÷>\ÐFè㡉ÏL@L+¤GýuSñ&lC†ct1ÒT‚' û´žéüx òã^QZ öŒV¤Èý=£<ëhæ ÂnÃaü;.¶Ì<ÑäÇ£9ðUÛ[ýÉZ&«ó2‘9³×¡tû€=M_}KIYÑoµtì:ÔŽp9,y°U[*<{Ì=:ˆÏ5uyR{§+ß–¤vþÏ1rYò.l?ËEÒ¡gÖ©ÒÃ÷ KÜ@€ßå‚£…Øõ¤ùlÁp¯ï„IJ ×;L¯îÛ®Qo°Æñë,}'$‘ ?Žã¥=›d~¬*ç‹ sbããzÝ#ýîÁ*¥äö˜ë•ÜÄ–‚‹»QjÌÈ'w†Q¾æQÍ oL–8È`_”ŠÉøðH¬¢òùÍüEîq¬à¹qklÊÜ?a +çÏRu€ïzïœ>al„Õå˜ü¯{¨ï4‚îÅØe點®¬§^“$Eóòùûvø{lèP´fÖ÷Ç´J“im€ 6Åk§ ÍøDž+ÕaWœ·±¾Ñ²‡¢Ë'‰M`½cµMÍ3‹×OrC2„e±\8Q÷}’Áèvú¹ˆƒN41ƈ0iªŠI°*¨ÁlÀ®–Õ°<“kÒ¥ÏO¬7qÐЮc7Äëv28 JY/]3ÝZy!lqŒ¿7!%Ì¢8Ñ~¾dD‘ÛM‘”¦1ƒ[}j>InïEcƒ¦P_t^Jfmç±ÀÌ&:ÄñN3³^H'#3ŸòÌÙÓõ¼w[sé¬Ï¯ß7óa²lÍûgQüŒ˜™&ŽBœõ5'.É`@fk{[cE¥NcîòEQ8‰<æP"?•¨»öpþ/”Ü­ù¶·‡[¯è#AdWZïÏõƒÑW©š½è¦š'äu—,±ã¥9R'-P¶kÓ{®žçmÇFXJ‹Œû>…ÌGf›?“®‡ö½‹­†XÁ´pDÕMƒó WúN’–mVª@Å`ÚèS˜Íšu‰ZÉjÂSjXæG+’icW}Ö=h1g†`?) »O€!YNÅ¡ÐBF) ¨*ù“æ+#aVãúGwÊTvÊa›î\Û>毎9°‡¢=Tc¼ÞúÀP†ãæc¸ñx)¢ñ“_‰!])¹Û=úk`È(³”üY^Ä­† Ýø'Šš¡Lù® ʹÕa­F×Ðw#/ µÙÝÊ\)¿ZÍôõ>H‡KJÙðýh}™"»ŽbE>Ù {ñ~´ZÑ2hŒ›zþ_ƒúES^RÞ‡wÕÝ%…Ï=‹gpªŽ©§1°‹%]tÜL•biiË{äçò’ý…áÔ'š~÷t2XšFŒ­w¬²»© &5õ&;ÅÅÈ¥ þЫ}'ñ!ä±@ ¸e³Ñ[Ó…É0ÚMÉç5ëJQßøSlÀvtÑdëµåщ~}ÏõÒHôBFd ù|B0‘´AV’Ö ’Îe˜ QKfɨ¨Ö-@éŒ)'½íoí89†~®ÖÕJ1ïÝц¸äˆ‘,Šäêumð¶´`úáT!<ó6œUÞßük‘`˜»æÅ1·}õù •œ"! )Þ’Hp…ݳ›Ó–O}¦‡Í—hõ˜µ³çÍ¢{Ÿ.¹ëøÞß$À׳òÅþ?Žßè£+_Íúw-Ó:[õÿŒáÑ–ØRùE²Èó¥ÊѲ±u‘¬©W’q]7†‰jן_i‡ÅÓ°r¹\ÉÕ½*ñ4ÕÚíÖø~|ÔÄÒ2ÒÁ‹¯ZÞY«˜ÉýF¡0p¨ÀØ[Ÿ`[‹ÿ9²èª¡’ø²¤zWŒÿú´Âéyï ÂJåÐ%†@ÎÝ_¼ƒÔÙ¸ ëDM:ÙÌà• 4ªøÿ1Ñ H4ûæi 'Yý¡k+•÷â“JÒ—Þ©¾ A>þùxú@‘vØ®hîSÇžö¼•\Fbâ‹(·#·$ªæ9&ô›XÔ~qör8½„Rî‘tÊ¥VkVö3÷1ê5‚F†oŸ¨°ã:6ªr ‚ϱṁäÉ)êDÙQ·Zà;'\âI ^=‹0êÏ+ÁÉ|éBaÆ]½iŽ?tŒKJ)€­Ç,ßüæ/ŽÏœ*‹²ñ_‘7Išà ¼4±Þá˜Sïœè«\¼+ã´UÚcðÏIÌÄgó$T VG¨ë>"À6Ї{¢¶Ã–b•èby)ä7ÑÉÅÂþØl]A×n¯"›]¨†‚ÙZv5Éîi¨h±Ž0C´¸b.[™Wš•¯œ©æôðpÚ3ÁŸeç·~·^ P[ë~iª'0ÞDЉc?öÅ¿~VÝ4û¶?õmª%ô°EömíëÒüÐgrÈRËãÐ…RèžkZΟ _¤eëR_Ââ··àá—@ÿô$ÝX§MBzzM0Æšu¶÷ok«ã‹ÆQ“"ˆÙqŠif‚V§Ú3%1sŠÚÿÝCE!™ï·p[8Ô}à9pFRvè%j¡n˜‚ä‚›l£Â+L¯Äï€3Bõgq-KTW1¿µÊf•-CÈ[š¨û汇Ý·Ök÷¬¸8éT9kï],àµ&JªZŸ•뎵AñGÇ1Dêörû¶‰ªÂÅMK÷´z¨³âI‰Œ¿Ë3~ :hL §ýÎ2VX ŸwˆéÅx¼S~4pymNŠ6s:]æoÏ>_UP}SòÀÅë)'êöªì¿7yu3Ètئú Ù|»$ éÞÑ»¹ ¡ 7p8Kû¢Êm\·KäÅ9烲Éç ¨VaÛ [àç†~må,“ðÓ°)ÛRšÃç ê4Ÿ6ƒwHbþ…ÚßÄ ~¦M°ù ÖrF™€q;Hˆ™0naF1}î2¹ŸâUˆ$Že¯†>ðóŒ MÝó¹~šT·øl¡ü^^Ÿïÿ}Ví7ºRÂU„ Ÿ E+ꈳÛN 2Òæ?z0=><ØÆ[Ï­ç0MÖ^ÿ½®v€P™a®eä.}]V ¦™lxvVsºjšBá\»¡Q4&k»B´‰ÆùªuyØ”EᡎÑS‹lhÊ‹ª¶šå(J07u {ðŠÑþª¼>ºb¤+y/¶Mf_¯u ­©ÎÃÆöþ°¼¢Øw-r®Ìß 'úu6ðB2=y×éÿ¸Àî/‰†l^›cz–SMkå¶H¬3d§—ÒòÆ=®Ãç*ÌÕlióÿàþ °µm&Û€>¿2›Ñ$:}NÄÍæŸå<¬…¥|R?,Ì1p_{~N0Îù³Á…ÖÌÓa²›LmûΉ¯W맸ûÆ 8ÍBÅé<ÑÍÚ6LÍf>Mõb&ó̹c~Á¡Î òqyÞµÛ"úÊm2úºG5C¦àÒ^üÝÖŸßø5sghw›lgý-w®>¬iæªl„ª§}LYóô3iÔm56P­œ5‰¹$gx»¬?Kòä2ã1ä’űk¥Îqè>³÷yñNÁ·î†®†èôÂÀÕl@–5ñˆ†­%[;P¹ ¬˜Ø™—qŸ.k¸¯‡…tçç°ÍQ"y=z„ÝÉÕÏI`½tDÂýæ-.¤1Mõ ¯,ÆöæÀ®¯ˆÏõ¾WzôhCœkÂWøw®œˆÈ{Q#At ã†i5'ƒ§ŠذZt¥{Ìvwùl‡/kà•Œv)¥aml+'; ˆàc-ŸÑª´nk±¨Ò¾³¯â©þ(´ÃhSŘTˆ"…æè0Å­ÈÇ!ä«Á“]O„eùD› ðyóÕX¸‚l½•ì¶AUØËލ[ÁR‚é¾øT ï÷kYo¡åÅ¿•ZØ}÷åÿؾ¦ÿg¥}ÀUÍ·9xT0¢•ëÏ¡ö^Û‘á=dª»Êæ *†FÝÐ!Z,Z 4ìµÍž„þ=Д÷k·ô¹šÒ¶óm+™u0 »P¼B>H¬G’åX•9¼ ÅðýÎ$(y·!ŽÛe³ €'òQðÛ ~Ù0¸¿Ü…32M›…GçªqBéóù ´˜½hùÇGŒôöÓøˆ&#ú!-æÕûͲZ{tO&çØVÍ,ùÃØËdìný½Û ²WTÙ ¦7eïa_ _„{ää– iŽÍ:Š$ÝjS`.APÇcDa‰ÒÈËÜãs”úÑ@™$¢y7‡¥<…—ˆp®7—ÎÐÀ•Ÿ¬µK®0fs²Ç“: šèa†¸YòéC Z–a½š¯¡.ÇûôŸFÛϼ¥Ç”ÿÑv-`4JÝÔMAu0wÃqc¿.慎Û:L<öÆÐìC½ÄÄë"k§8,6èä`Ɇ"-l2«@TVÚš†uÞòa®Éñ¾µ/Ç_vl÷D«§VGl%ÿZWâ Ÿ( cúsº> “\+.‹\øê ¶A qg‚šgŒÉÍ-”5]eIpÚD§¨VHÎߦлȦ‘)=ý­Ûƒ,„Ž¡ ÷^=_%·Ü±Ø‹Í†vwo¾°Hã8>\Áȇ‡íÁp«€ø¾ŽºÒ+n,ð¯oÍ[•5_]Œþi—ÑDŠ¢ÜÂÊMsã”· Æ^y±ÐG¥²ìo-S–¿óTXnã§ÿ'‘Ù¬ýÔóâyìèô`ƒEÑ[[ íÝ4ÍÙv&ä`©z?ºQÈÉH†€ët>žç£Â8rcHYdSX+‚› a=FdŠ.»SÊ÷xam&†î@p Ö>1ÞÝ~/¦ÆyЦ}5ÄìDf\žgd:2™%v澑9ô22)OØAô÷yß°Ø&MÖò×â7:à6ã"F`ßlîìzÈÝ=n”8¬Ì-xRåiÑʲb¡çaüÒ ‘™÷š|Cü,%oÓ>´0º:›Ûþ°^sN' ²•vجޛŽÈ2àìÐÕáÌžùo//‡ølT¶+¶Ñ†zÈZg÷’¦m¥‚M“‘_*ÑA¸â†TÆM¬†×%$ê<'í*0ÐÏ] ¬Äxx=þ<ò]–áaôGÀ*Êï@’лյŠ<,Qs]ísÂ&žìŸÇ|qo}5y"™ú1ÙËç0WrÏ­§M÷D€ ¹ÉΚhÈMÿ½c|¢šƒšdo3ôöŒá½L†0éï[˜=¨hÒîz¡xtÓîziœ‘‡§:4gŠd.‹x¡;‹¾ cYÔ,MLw¥ÿéS5Ð.Ôe¨ÑøªN·{ôAÈ–7Ý7¹è€Ý>ò Á<Ì´lRs31Œ‘ÇY®äq&Àqí&Êœëâ ݬìX‹×׊ý6!¤‰lÇþÌÉ2æâáæÙ¼n¨çiTÚa ‹Ôå¾…×¾/‘1»°ÕãÝçŽ8©ÚäÁÁ|üÉîÌÏ„À8´ í_÷‘U;•U öoÖêõKçÊ`¿ªÓA®i2w°“oœÒ™ m´\ûðˆêßw«‚ÁQ»0–¸°¯¸±™›}¦È“ý¸X´-4—zº’/u;í¨ðÀr¾#G²¹M'Fÿ œˆ,X‹±'ƒ$ï<¶ó°¶_<•¤TâŠhYCs>šÏÊ'$ÿ&5ÿýyµÌŽiõÜ,ó°iªnø—"c]C:œyêð¤ÿ¡ùÝÂê¾dÀ{8Àꩦæ£Ãè~5kU-þïˆ×|Xâò$t©õËIXu,—ø1•,Þå J¦–†%ý¸«»ðËs•Ò×µyoIÞ|CÄ{¢Ñçm˜[ƒâ/Ë[öЀÚI®7yó»i^pË}þZ¶âa·ÛSmߊºÉŠ<òºÌX'<7›jPÌó›¨3jñ€ÛÝ ÅôGv…ß‹ÿ•'ž6òþï_^C,w >³lDÛ7M"êLDì[eáuÞœ6­ÿ 9ߥ2 z6UõÖÞH, ˜éÛ5ßÕ=4› × Õ5pDÐåa«¶–ü½¨m½ÀÀÇ…œ[ƒ]“¥zH¦öCZ±þžwç¯ì`]Ï…F´Í.É]yÜ‘@|?E¼·X¶R€$¥ +'ðTuG–½Ý.~/×÷{¿×ýUSW6߆] ìºL+d ÃÕ°D#õ•~¼zR|Á¯•XGXÅ"¢ xsã;ÝtƒZöø¦Ér{ç_ ÎnÏ×ý÷ÿˆçÌÀƒ !f‚-±ý¦ÞŒ‘*¥¸Åëûƒßú$XÅ,^ÁÆéˆ‹msÓkñŠä?HXŠY¼‚ÓÛæ¦×âɰ³x§#.¶ÍM¯Å+’ÿ a)fñ 6NG\l››^‹W$ÿAÂRÌâlœŽ¸Ø67½¯Hþƒ„¥˜Å+Ø8q±mnz-^‘ü K1‹W°q:âbÛÜôZ¼"ù–b`Ôvξbrotli-6.0.0/testdata/empty000064400000000000000000000000001046102023000140020ustar 00000000000000brotli-6.0.0/testdata/empty.compressed000064400000000000000000000000011046102023000161460ustar 00000000000000brotli-6.0.0/testdata/empty.compressed.00000064400000000000000000000000011046102023000163640ustar 00000000000000brotli-6.0.0/testdata/empty.compressed.01000064400000000000000000000000021046102023000163660ustar 00000000000000brotli-6.0.0/testdata/empty.compressed.02000064400000000000000000000000021046102023000163670ustar 00000000000000¡brotli-6.0.0/testdata/empty.compressed.03000064400000000000000000000000021046102023000163700ustar 00000000000000±brotli-6.0.0/testdata/empty.compressed.04000064400000000000000000000000021046102023000163710ustar 00000000000000Ábrotli-6.0.0/testdata/empty.compressed.05000064400000000000000000000000021046102023000163720ustar 00000000000000Ñbrotli-6.0.0/testdata/empty.compressed.06000064400000000000000000000000021046102023000163730ustar 00000000000000ábrotli-6.0.0/testdata/empty.compressed.07000064400000000000000000000000021046102023000163740ustar 00000000000000ñbrotli-6.0.0/testdata/empty.compressed.08000064400000000000000000000000011046102023000163740ustar 000000000000003brotli-6.0.0/testdata/empty.compressed.09000064400000000000000000000000011046102023000163750ustar 000000000000005brotli-6.0.0/testdata/empty.compressed.10000064400000000000000000000000011046102023000163650ustar 000000000000007brotli-6.0.0/testdata/empty.compressed.11000064400000000000000000000000011046102023000163660ustar 000000000000009brotli-6.0.0/testdata/empty.compressed.12000064400000000000000000000000011046102023000163670ustar 00000000000000;brotli-6.0.0/testdata/empty.compressed.13000064400000000000000000000000011046102023000163700ustar 00000000000000=brotli-6.0.0/testdata/empty.compressed.14000064400000000000000000000000011046102023000163710ustar 00000000000000?brotli-6.0.0/testdata/empty.compressed.15000064400000000000000000000000011046102023000163720ustar 00000000000000brotli-6.0.0/testdata/empty.compressed.16000064400000000000000000000000041046102023000163760ustar 00000000000000Xbrotli-6.0.0/testdata/empty.compressed.17000064400000000000000000002000021046102023000163770ustar 00000000000000brotli-6.0.0/testdata/empty.compressed.18000064400000000000000000006000021046102023000164040ustar 00000000000000 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXbrotli-6.0.0/testdata/ends_with_truncated_dictionary000064400000000000000000000000261046102023000211360ustar 00000000000000often referred to as brotli-6.0.0/testdata/monkey000064400000000000000000000015131046102023000141600ustar 00000000000000znxcvnmz,xvnm.,zxcnv.,xcn.z,vn.zvn.zxcvn.,zxcn.vn.v,znm.,vnzx.,vnzxc.vn.z,vnz.,nv.z,nvmzxc,nvzxcvcnm.,vczxvnzxcnvmxc.zmcnvzm.,nvmc,nzxmc,vn.mnnmzxc,vnxcnmv,znvzxcnmv,.xcnvm,zxcnzxv.zx,qweryweurqioweupropqwutioweupqrioweutiopweuriopweuriopqwurioputiopqwuriowuqerioupqweropuweropqwurweuqriopuropqwuriopuqwriopuqweopruioqweurqweuriouqweopruioupqiytioqtyiowtyqptypryoqweutioioqtweqruowqeytiowquiourowetyoqwupiotweuqiorweuqroipituqwiorqwtioweuriouytuioerytuioweryuitoweytuiweyuityeruirtyuqriqweuropqweiruioqweurioqwuerioqwyuituierwotueryuiotweyrtuiwertyioweryrueioqptyioruyiopqwtjkasdfhlafhlasdhfjklashjkfhasjklfhklasjdfhklasdhfjkalsdhfklasdhjkflahsjdkfhklasfhjkasdfhasfjkasdhfklsdhalghhaf;hdklasfhjklashjklfasdhfasdjklfhsdjklafsd;hkldadfjjklasdhfjasddfjklfhakjklasdjfkl;asdjfasfljasdfhjklasdfhjkaghjkashf;djfklasdjfkljasdklfjklasdjfkljasdfkljaklfjbrotli-6.0.0/testdata/quickfox000064400000000000000000000000531046102023000145050ustar 00000000000000The quick brown fox jumps over the lazy dogbrotli-6.0.0/testdata/quickfox_repeated000064400000000000000000005300001046102023000163560ustar 00000000000000The quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogbrotli-6.0.0/testdata/random_org_10k.bin000064400000000000000000000234201046102023000162300ustar 00000000000000òB¢î U£¯/zòµÇ¯ÏÒc°4a¨2-\²n\쀼¹¦¥¼ËþÛúNºèKµp–Wœ¢àR꿃Sϲ*ÄF{Іsª9keÑýÓ¾€>Cˆ)Ú¢ŸÃ>eYít _àšOå’~ÌPv#j–\S&§õ³>ÖKÚ:+(4³f™:àP._Ü´ÇBt®ÔÎíH//n}¤%ŸÇ –„Q›¬O ä%’9¼›úAØ1uÁ–ˆT«)†’ÜÄ7E’;\3@• ËÖÖt±zx%b¦ë¡Xw*1KäuÉá9 " o€ùðöÚZ¦[ÎØˆãŒ ½æU;~S†r)M°Ÿ8:¢¢S.ªÿ%7vË0À ßï©D@ùœ±Vâ?œ9g(ʾð´WÂÊâ+«&¿);†ór¹_ÊA$•º/W! •–ñÐ: ÇáèÑ,Ü ÑQ€šÄÕ¶? äöù›/ÕåéõÔµmQ{! Š9¼n‡œÊÁ¾Ó¹êª ýàkås\Oša¸ƒÉUA…Š §TèKA¢ÁQÉ—‘/¹kk°»‰÷¶•µŽž|ˆ.SºTnYb8¼Š—†÷L»Ô}é`Y³õÚèZ*5\„Âw40Y„tmäM?ÖO[$¼¦¥¤Mjêv?*>άšíÈcLþ¢5¢ –e˯¸“îšï{½7rc£Yš%-yûÂ&OI¹aßÓv ÎµraRz‹Šjtt\§ÌhÕ&aÚŒ\Ó§w¤£Ÿ+ [ÐL¿µ¶Œôa=…l9-¶ºË¸æu»#󙈅RëmrY6ûË3þ§ÍAmsK»ƒ¾¹„slKîðf_ÀøÒæ5y+c™E««ígP:‡‚lxYëÓéXÓãP³•Ë´¢E—Jú 5Thò½#XÀ³>‡êÙ²³q®=.^Ó2~\Ÿ<^£3œ¥× Ñ•NØ8¼dyÝÀŠæÆ_<ÆE˜ý2«¤„¨5þAV耮ÍfˇŸÖ':q²÷<ˆ°» ¡:Qo,·iŠž£Àöwèfg¢œá¤eÀiOi96#\2Ò–Î=d¶´Û 2-ÙSXãL Ÿ¡õŠ—¬AåBw5EËÑ©CLÎì2†Èâæý6¹ž=C{Ò×°õëƒ;¤jl‡±'g¦‘å78žÃ ¤%Æ}× 3ƒÕwöºœ*Mb¸½M`ø÷©dÇàamÛTуS[Ñöè¸Çg{/þ¢_œc‹]×ßî¨úpFò–Ík‘î){{Û×.H`vtÐ_ç-AÛçE"©ß¬Æžbg‘5‚_€á·àh=cž‡Ìç4=¯uAçæY¥¸—1¿sÃ4n²)³–Wp˜º;®ro[¿)~*Øß\ïM€£?éÌZ–sDBÕÛYv~,zÏØ§Í´%C½ÅS¸ /ªmõG⟖ˆJh±b—Dšk_ÎÞD°Ï–Í¢r"I’¥ø¿ÄoZ}ãÏ„Ý+Ø\Ô_$’ÿ9vÖ^Âv>\˜íq)z{KHn«-µ˜LhÑ ¼$àˆ_xÓoÌ¾ð¡æ¤8Cú,’'Ý Ë-n¨ï_­öa·I0[«çe‡c¦æÃÐr3¯“¸žÙuIð5ôo”,"K‚œu{ªÌúÓ·¡q¿Øw1HASÈÿ;»-ÆIü¹bÔ˜} %ìà;zêÞñÀvJŸgp¬þû‹Ñ :Ö<çV¾Ö9#ÓÇú±1‰Š„3é•å½”9ù‹¹yŽ:ãdÝ('ê¸4w Ó|“pc¾•¥³hiMhõ–ÅÄ”i ¬ç†9±sÔˆ´æ\8$ˆø”ºþÊb…PÖ6h"¿h¸zlNlÒm.èrMy,½»b£›2`:ñ´× 4g² Ju†¢ÒuHWòôµ,À4úCÚÏ—6;§Ì#Y^g-W1î‘%x„ ܬ¬çdûaÑì°dÈé+MpŽf¥‘áÐ÷O룦8ó~m¿DæV¢Å͸ž5Ñæq'ýÁ‰æB¢‰_2Øq.Æ.×,ìëðÕ‚Oø s™eâ’ÏH^GéHU!FL³p/2”m0ÁΗ6žh<•4Òö€ó„–UhòV¶LˆÃ㈡Üf“2°óþbråêÙ`(66èÙ×óY,"cbSuK'^ k Ý™à%"qÌddˆ1œ0¥°]b‘hÌÂ,¼—Ì&ÛC_ŠíQM×bé{z)tí£D¡}O ˜èß÷ïTšDrê-M]ŸPöWRjêl”ò ¸E#áRª¬P“‡îyJa ÍLu¢çp¯'Þg‹Kyèåke10÷…§£ðí,Yºl@í|ÜcŒÇ,OÖx>~ØO­w*ï,bÛR!ÖÛÍ^|É‚>Õh1Þ \©ÿçºàæð$4a7™šÍPÜ Ê€Öêù‰åðªªe%0Vš uõ¤ß&x„i îª申ž×bÑ'Š53›…8n3¹Ø Ü|² wt:¯HO  L÷Ì#}-]`*†1ÃËü¾\ü§¶‰U¹ˆL#†ÞKR°nÆä«zš÷&XÙR!i+Û¸ ¢×ÑBí’Iîß{À?ßqžx²D•Õx/bdw æ.~…ZG¬RßnT"Épuo…a=ÿQ錪G€§æ TRô:¯©6Î*\·¨­¸Døn Z ÆqA/Ôi&Èå¢EmRó_¦`%’ô 'Å(]:ª8Æ5ñìkúmDZäIçÏF;5×v4 ¢±‘O«­òø\vÇPw•d{Ø 9:¡¾¿ã?ÒÛÜL»ÚZ®¢ãXæ$qO áï¯ðÑéœ5"¥»LÙé-glÏ/sQë©.þV‰©p4ŸºaG8·Ò¶Ž)`¼ðæDÉ•´~‹¾5 8€JäHµ¶­nøž«:Ð5Þ×üÎ-ê4Š9ÇÖ§LüAF§&vY 0/uAßš¨V‡ñ½íëÜÔ÷Ãõ+™íxB¤ `Ïɦ¦¤[x¼ß¸¼5îø¶'øz•ukëL@HñÂèW›¯qþ±L*ø¯U䎙ðw x`§Ü! Õù8¨e¼B\þvz³¼9И-}c(-GíUÅ„aå¹çxíÉP/B‘qð ›te%ÀXMrv“>ˆ2îáG£¥¼÷“ Cz_L~¼Ÿ®ÑkKÕ['¸"3S¥# À|UÑ#Õ÷”Æ™¼éÜ,¹D¯°¹[´å´â¤>„^Ê™‹o¡®–©ÉzþÐÔ -ž.üO:ý   à½üÜK»±ß¿dšÓ¤ð «kw‚èåû°:Ï\¢¤åçzÛ{Μw þ/ç¶EHÍ¡ã\ÿ–1çxv`ÙÐ2$óxÁ_Ëÿéô3Ûªfã{ Æ–Dc„”q³x†{€™ îÔ*÷æh}UùZü[Q·˜ÐÛzÜê°<9¶Šfê­ßÉáÈ>0áÝL‰¥b2z¬fATLˆ„cŽÂãBšþÀ}*­ÎþÎ’Ž”1ÎÝÉs ŸHz¨€^;¢"p!¤ŸÚÀ]%û¿ÂÙ9 ÛCD®O½œÍÁI}Æõ[…V‡gó•™ÐÎ/ùméslæ·Õ,£·Å‘JKoj3Yœ¸‡èm¯ï¤æ²3¢÷“½`EâhÏHÉ’ù3ÍZz]©a®ÊãC~k-Ú-ª\M•*þ³&MG©]›3bT½¯O ±_*%ëQMYZ./fàÙñf.nƒ€œµu¥¾¤eù¬‚§Å:oh2ÅÇ.~¯Ï{Ò!"voÙydkÌlžó›ºh„MvŒd]ЍÄhǹèÈÞ»4T—¥C6nÚþY6½° ‰íoÔªdq1ãN1˜Œ(škòJÄÕ5H ?òNׯå’ÆÊMÖètK:\*Ë}hÁ2!!Ì«u‰/ØÃkø•ÿ›©®]15Aò¬ògÅÿ^EƒÀŒ«e´§YC¬šhº{ÚpûŠ™6ŽùÐøýS!aóȾ٩ˆXü鼨NÍ +»ð õ‡Ñš§;JÚlnÏéY—Å? ¯­?F[¦‰|¼‰¼ž¾s¢gþŒ›¿Âj½°&<+BX¨ŸÚÎ%]Fßxüáž“Iat ÉHŒ¹ã1ñ˜p‚6î–}æ‡B¯ %‘ªû…Kž’R4œ±@*X€¶¿•q|¼¾¢ð Z O½jM0,í8ÏpÕ¢VN:çšKj¹ïAÊÝ<‘ÖR&.t͉.…ÜûÆØÎõÖÁ‰ t&M˜±<°½ÞSŸßÈ)< Pr/W_éÓÕŠS"ûKe?ÉG:Ô$Ûâw.½¡€ºï¡~ )¾ä{mÅ|$­œxÿÉ‘HÙvŽóRq¿ ÙÒ¡êsgA—]ÌE[²¯ÓRY6pñtOHúU˜Ñ Òþ6.Ó¹Ðã¾)Ây!”C®•Ù`2”@óDQ°Œñ_ДNí`t¹òÔ6L wpâ‡Ìtù'ôÑîȳö"D²qÝSK'éÊ¢-¸L2œX©ðì¢R” ;SËØgkœ#èôUæjû½?1ÏývèŠ;@ ´VP :­(¡ëùÐã“5Æ–lxQΚRãÞ5ñãÏ+@¤>”Gë准"?Bs£hSBÆÝÐâT»Io1¼®· G¸"¯È˜Q÷{_Ǿú¸„óŸPË bÛïE×jO1ókh–]², )q’ÅZ·øm3b¹Uýc÷?ŽRöbˆ9fpy Lábg™Zï$€éu¹‹ËÄÀ:cñ—_–í[½ß÷;d]÷f@0Áý˜­†°czÖªHåäÛ‘÷´ÿãÝoÔ ÏR AÊP/çþ÷cÜe@üôêô ×»šqó×ôkw;=4‚.?Â:Ú c#ÇM2»÷X¡ôSy­á>î3ü;dq…F]ç²-[¬ñ¯:¨gsuÐA Ñ$ëžÕ­ÒríïRz£xtå; —¥Åõ†ð¾äÀègxaSrp ÂM¬~+Òà[ô¡Ã {iWÑì@å‡;Þ–O „×4j\ûÉîŸ×e’0nm ·{a<0€ÕàÙmò„È—Èj‚‡pŒ”7Ï,àý×}Ì.霾e]ÂÖC l*Â*Y±ÝÏDseq´‹²âGC2zæŸØzГdl‡‰\–tÄ£ÎlD`|¾ÇpNš'íÃâx3›¦&~HЬÕt#}4Ó¡ŽG{"ÎöQ}S{`ŠNŒTÊ ‹ ©Ç¦aš•³ÃP†@‚ã=í> 8¸hz» XØOåŒÏ½™f )×ÉžJªÁ–˜ßé©3Ô£ÝâèlPIøŒz‚ÑиrK"³ï3J£•’~Â(IªéïYEŽÎÉpV±Ü5Vbš ¾{’˜‘%8ÑåOXý :’ÖÁl¸‚Îú¯-DWhE§°[ÐQšÜ‚vâ¾Þ;Ûw‰ìÒØSÖ-\_ýMIAD0Ä8MBêÆØ»,;¿ÇÜ@B¾¡&ÓïÀlö«P Ë(ÓI¯Ka5t龔힛Î,ÛÝS ÂzÃs©Ü–aËA1*ç—ÿs§ˆ#óo+/IƒÄ¹—$3µ?Ómâ“ ò&Ô;ãêHX»¶CŸ¶ë`Ší¨LŠ'3&jz!¹¢q$÷Œwh Û/’üå Zi7ú%@mLxýßϤrOUòáß“P¢XSí©™ FRlåDYQ›Ÿ3Ÿ‡øŒù9Ä8’FœN$ûå OÑÈØ›ÍîUX4ÙÍ y‡/ÿLÅ /V¼N‰³¼Ð¤¢¬Ÿ¦¯áÃßuµÖ%í|B\EÈ%½´:‘˜‘ј)`®’q¯ ÏŸx±ÚmBÙàG¿¬Æ¯ÎJ#víW,¯€)L¡â¸pè§ü_Ÿ€$ϳWSÛ›ÓläšÌNNáìh8¨ì Âç”_w!ÖüÛ[¥8ŽÕVwrÇã×+Å  ¡`áîT<¾Y~Ãbh´Ðþ>Ô= ‚vÚS¬ƒ='+#Œ<5y¯•|›vµH‹ò6šalÁ€ìºTät~¤¿ÈÒ>•/üA¶Gc»Ît–˜ß7[Nv™¥{¤Î0A¦7õ÷d¬œ>ÿL† ÓwNV4t8EnúU"6@€äÒ¸u ½Ç|húåù¾c.þB›B÷2ë ‹, ½·†§ô'ÀfÛÛ"&£‡§]rÿÿW•Xª^:Öº˜Kû¾?ɲ]¯R_býÚ&šr«^Nún¶ìôx¨˜x™Ùôrp¡ÊàÁé\kþ`Gá½»‹}hžS‡©ð‰eïŽz¸HOýO¼ý-rÃSpp§‘ô„œ× aç?RƒÂ•‹…ÇóÉÞgŸ–5{=áPû›äéSö0ùþþ­w4äŠx‹SBµN® c©¢çegg·¶Êw®+v¶Æp·™«ã¥ûËwÍTálæfÊíX¯z4‰tK´kËQ·HÅã´¥;‘÷ŠšC¼ç}Tùb¬èOp(¯ù’!û\-§ÕK¢Mô ÷*‰Uý£ä„eoFñõß ßÈ¡=Í:.f´,^ãhwWΨ;pÛØÃþÏñë®Ì¶Ç6¬ÐY*Ÿ‘þ[úÖ {³ˆbUî¯S&=]¸ÌUOµØù•Íçïí±RóКil;̆W‘vW1Æ®ÿ¹¢zG¬-޳«{R8»~þEš°ŽUKGÚq'[Ëéœç3sà‰ÍO9SITa䔬»úá6£¥2XýS» ¬Á þ’ë8»vÜ)¼ƒ“—–<>'‚Ð/ÓJ]øšê y¼‘ÇÖ~° ˜:M<„¤÷Ñp¯ÏAœ]Nñ€)=Ã"™;»Dúw13£AËç ElßÔ< ܧÒ~|Úf9 2j¤Ñðî¸FPœ€à4Ôý9oJo¼Õ‰OxÍ"©ó4dø „Htጌÿ­$Â,2äQ‡ë[n¸Æ;\_FjåžOǽü$ šS*†ÅcŽ…hå4o½ úù|¨ß‡ªCZÉUÖÐn ô³¶0Zmiò#‹Ú‹M L~áõÁho{Škà<Ì‘E¬ý*FÔäbù’·y[ÿÆÍâKø©º021ÒáNmSö¯55D°jfœ! sàüÚ&«<GL ^“ÈnYÍù=BgSg†®¸T܇Åó—ÎBMs@óLǘÒU0A'áÖœ·^H0ÄïÔðU¥òÔVÁg––>b0;#óþf‚#@T ‹K¾úôE=~ñVÚõ»!(ÊX´Åè-`õ¨^÷šóE JÒ{+t(½]C<±’ðÏH#`x,¡Ö°¥obwøBaì:î‰À[ü“YAÙúUæÓó-höcÓÆÍ­YÇ— ßyΰZ÷e=öYà.&A2C„4Ïø7]Øûz;Ó]ä“cVë ¸ö¢qÍNZ'áä“`šeÕ2JòÛQϤÆ ûbÚ[Ëæqîa¾M*(3IÝaÔ¤m”g¼µÿ[b-mþ•Ÿ+Rï=c-}ùÞàb+Ɇ”æžDÜJ‚f¾÷€ToÖøN…UŽßù÷/PIøÏ 6äž%;—K‚·ÊÉʨÁ-îhu^ƒŽcƒÙyáp6‡MÄ™¿¾Áw’Ày**ÚŠ—ñ=‘H¿…ìZ oYM¾Ø™ºKç¨ú_ˆÓÊŠqð]•6c³¥ZGÞr‰Ü—O¹³Q¶ãÏÌjè /¦A.kÝ Âú)+ËK»D”4\šFã¹àÔ8¬Þ2Ïà_/å =îV§0ìTÊÄÇÀN11C3ž©×ìxèÇÇ` ÐìÃ!® ÌÍ(èU„&û¡P—ÆÌÖ çéÛ‘q #¼²ý*÷j¬v—ißvû èg õv§Èç7:Ö.a£ðíÆR]ÒÅ6?õJ'é%~)|µ+Hcû_è«ù#èq•Íao;¾ÇÛ>(¯šŠ0"|¨Ü•*‹åuЧbÁ&X—û´ÿY|ué€uD<…=ÑŸ·Í«·2•T¡æS¬{ƒ.f' T^-6¾înÒ–[#éñ¡ÏÖ•2R² G>ÚÌ—´Ù»˜ÎxØNÖèÞÛ8¬F¦{"¸5ÑNNuežË²A¹S‘ü0@ iT2¬W_ê‘à!þ‡’¿d>­€‚+0 ä7=6 Òá ôEþ˨ K"ñ1öhì'­TŒÎÃUï|<ßù îQ¦FµÄóHpÕ©‰Ò¤'²†ëKÅKÉågÆÃ”ýL•÷lƒ\]T…À+9õÓÎ:Ý ‹swéUžS¦=#[B1þ p–ù0ꣃքðvûÖ]­^4†À¹k?‡÷Á$¯/Þ/¾;r©»U^˜±‘ÝÝ”X}ä$CÁ~.¹A.Η—ó;¯ï·Jþ›Aóûm‡+Ï x‡¢mF”«&ɈëÎá½÷¼Œ]ÛŒâ/¼hعþêŽAùë-†úùµNÀ æQ[5®°»æ)üMz,9šùcwØc;ïó€<§µæ – ?.hœ$@Bòÿ‹’wÇH°|35w²ù˜üÆ…ä>Ì8¹b8Û®T`i÷ä}Êc\XeÝ葦xöÍUBtÙiLm6eꦸ­†ÿª"°_:Ð*™-!jH†^’VíS}8<Lõ½Ò |«Ñ)cb6|ÍÂEнc G„ä—i6<ÏOÕ³àZóTóö;U£"4¦ w:CQÑôb»÷–ÇÎÛ^mcYõ¬ÌÛ¶bt éöEÆ;êæ÷_:CI”û¶ oø'§l~npS§w‘¥'ë¥Ö¥A‚Rèà|¶Š‚í¯ÉùsÆ/…éŽQ2HÆ}Üÿ~d5ð•Û2ûY2g²kþíÖ²3:WÑí„óE‘3ëîX³‰ÄYûžhç*X’¹IyEp‡eûX—;{¡¬úˆå®•2?vÝMD!‰kÖ‚’Âšç½ v¤é{~¹BŒò!× Y²‚˜¯ÇeAã}ÔØTè ¯Ó$°>MÇ’ßÃÝç9šm-ÿ‹:ŠaŠÇí£M 7A ©F±(mQñ{g–”Î_8À‘±ÖƒÐÄiÐC ¡¤Ù46Hš¬˜âÅÚ它9ZDi1>1þj1(™:0öÇœ)¦ù¤Ðz*ؽGîb¦ÛDž= «YºaZ„ßÍÏ‹Á-±‰Fš˜…–Ç´~ŒUckèmãió€“MA–.vk6 Žï%ë”6ʺŒG,°­Nd»¤¶¢ Û Ü(;¹È=yt=ªˆïš0)Î\´(é;§‡½l¨Ù‚*w[‹<ñÈòÕöÙÿQ~ã"76h}†Ü£È†€@R2:ÌšÍÙá×£U=Ú|A¡‡xÏo3Ë^k:»ãÙv”-ãH°Ó&1ãöàÇŸ¾*_¾n°!8t ¯ÖV<øsÞ6ÝPäöêDNËUòY¾wŸGAhùt†Ës³Å§R¦{B“éM•/_£c×o°¦uX˜¶QN+¯?ãô#¡ ÿ{ö§6“_ÉAê@…÷síH6Cð2!Oí:²!Ëqf”²Ëúm.2§a ö™ «ÙÀ=‘oS£&evƒêPTL9 ÜæÙtoFô8Áá2Ézdq¨rߤ V—Ìpª‰ÜäWML“h$ÇÑÆEJÐâ‹ÿ”§Ò ½%#ª`žkA/Ŷm¥†Qø®ÞlòöÙjöèpŠÌ¹» ÝÛ;iÛ“.ùºí2Ar~“¢æªG"Þä›\½æ#Ç룈Ñýêä4á³{±fK†±Sé39UPZ  ùù7~ÚG‡òÒ>[ô¦YjBÐÖj T…Ø_Ö\ ãwÑ• À˜{Z{©Š‡’æ‚1IÅŸ*­¥à΃eðý¾Ü Bá¥Ù®’V_áÜÚ‡ÐÚqyµqÃ3$Jï3LúÒ \VÛ]Îѱ9š5%ÏÃv¨·Öq/@ç¸i-˜|ý72®áœ‹ZnÈ&ŠQUxÚmfì ·K’é˜^9”ØjsÎÁ-Í.¬§½h g<}„]° ÑÒ÷¢à Ú½ïʃܖÍÅžCxô§¶»íàá²6%¬ÄIëIJ[ Büf*æ•‚ó`¬W—׎9XðòçØñ± »ƒ»!>â%À¾p~ø‘³ýiX<´¼†ˆáµ«#äFoα£s n 7¼ÚÍGWlÄш$Úrä#*ž[`ò¢®$«±Sâ ®{·âöà/ƒÛ cä["?MAÝAÿÙU­Ø•6dn·Âùcä®0ÿŸÛd”9¨QƒËÇ%¥Asê~Ï/ÅôûßËêx$ ±EXí€Q]‘UúØý˜5¹.&E‹#%;œ˜"•„­ìT)Vë®b¨‘ÞEà`=ù°qZú䃞9ö!Ñ;õ…ºsZþøú™?MTk#÷ªWÑ™ÎâYº…pm)¬ˆ[Gþ¬[lO¾€hA§%µè¨dý_”>?¯vÑ U•ÝÉå4Oº9Q._ØD²ê‚šŸ\ÜÆ»ä6³Æl`y 29-§ˆÖ0‘÷w¶}õد¹‡‹éÌÂÉ:¾ Ð:HA7‰Ã‰hŸ«÷«‚}3«0Ó¹r#gÙÖ;èJTuùþ)xâ / seHȦê¦äœ$<²f·4’ÙiL–ñ в* ÞÊ?·X ì Gãß&šbrotli-6.0.0/testdata/random_then_unicode000064400000000000000000010244321046102023000166700ustar 00000000000000ˆ›îÍueÜz¸  iŒ±Ïé2ÀšÙð¢­m ¯±,ö<,HÇRͨjì13ü(²9§ó*ñWVÊ$H­îÉÞ8t·íÏ /3Jâ¶aµZ?Yª(ŠGØ~B£zø NÌ&|B]3:q=„uÙæZU˜ôÏOà~ª»> Ù®¾+ØÐ°TÕº/r5ì‹ÆOéwH¦ §ètl¬…Èc\‡q¬‡xt»žFk_†Mõ5ña‡×¯!ŒJ€ø…«­v¿‰,&Ň#6xúò4_5 XðtªÌ!•)Ô¶IgÖ¥5!+=­æ ÉéæµÇ;©žÀU¹]m¶àÕFê¶¹nÿ{òàÞ££úÓ~tGvœ ”¼d;jo˜ c äËŒ"ØÒ¼ãg’7Ó*õ~|˜+XÄh…Q* OÄ£v"[Ëò½lØî; mÛe$ú)¹Ú*0ßlŽ|µ ‰¡Œ;ËAú p|ƒK–¥Î0ÒÉÖ¹qHÿ«á•ø"±¸§±r8dÍ;Æ`ä›Tîèè £ÑðÇûÅg¡åë;çqÈ©Kõ)ƲÍо¢ §/&òª#ßP¹(;ƒˆãqi¸šEÏ!§Â¶ß«Ô žT³„nš¡2íÆ¥}QªjÌ¥šgXÐ}‘MÚ)Úp Ú?¬×uù&Ó qÌ¥'J±u[2ñ¢˜–,n××8Ý^„|û¼FBÄ…”äÛ}6:ÇÇáhœ8S²³jÀ6ûFT¶,ñ…Cò”ù:ÚØ4±F€ÃIÈôo£÷—»áä©-¿¶<¦âxÈ:\Šø¡§)Þ9 žæ:˜ ÛVuïu¦wüÌ+fþ³J~µŒ¾f´ÿƒ;“ dî› }óoW(26RÙ<î×¹ÄÝoÑ©ÿ(‹QŽ\­YXê4®£mÆHånÀ'ãÀw–ÆÉ »eZ_óûfV²ì.ð€ð-8ÞÁ§"v$r×9qÄHdYìÿ#%?Çáyäé݇kìxØé&ÜHÏi«¢am¾YN¼"³Âšrt‚Sµøž«ák@ ïmµ³¹Šl½) ÍaÊúÏW¢óA¿%ñ˜god¦ 7Ï8D˜Å¯7u8üÄrAÓk?ÊBà8 Þ¸Å´H—ʤAu½š%út;‹INRJ)P+ ~MÂ+©ÀsŒiã¶pë5 0õF4½9õøü^ÌŸ&Ù•.co·3îï6㣵gãéá&ß+³®däþc¹£O¤ ŽvJ©öéoSTî_€(óóAãjpJà³§jƒ œSnɬ[ew’g`-Råj{”·1›Wæà椳ŽÐq’ñ•ëÀöÆ\ÚqM>º]¨í°/Cdh¦«œ58£‰a¾hÔj}Úù íëM± Êá{•tÆsmPÚð¿ïX¥ZgLNÙ¡ï:×¾::‹*K –P€ªCMÑðÉ£ëÓ±ò ›µ’±YƒàŒ³ Ù…0K¡ ö×ÙûsœŸ.¾Î½}z'*‚ÊuÑ&R¼âRü×ÇN'âb‚w R‹cÅFÐö{*¶F|¦€(âÏL¶µ1ÑJ=¿ ½ 0ïA.ŽùÞ¯ç**¢tçW’LyäpÅ7öJIŒ¥½øœ'>Áˆ»~­Ÿ‰¯Ùäýñƒ«œ ŒÖG£©ÀzÜò¿Â¿ÿ DzìP—+±öÛ¹ØÁSy›µÕJ–á%ñê®H`Q½¡›çx¿ý¿‹…íe˜Ÿw©îñÔõ¨úí(PÅ ^îL:hgò£äâk¢˜Ð‘‚)7¦šp4¥@iË-½WÜéS¸Û?Àøžt0ËÙimqi8ÊÅE*ìvœ~˜œJ÷¦Ûè=òêStî\ÃRŒÄWYð^³qä ŸçÙÌŸœ"ñ%{кo{ÚBUv%.ךoÊcpñR/ÁÜ„!ºt|Ù)‘Ù’zº']IOahT-x^Ç6ÏfXq†¾›¬ŒùJ>¢@ð·TÎBRm¶¡Å¼OIÖWÙ5·Ö¹\·Øà"…ªÚêéÜ”:j®²/Õ0'pŠp0rþ÷óC‚àmcóö§|7æ7ëþ×ÀÜóŒ”_‘¬Ä&2ûçD’ÊCl xH ¿3¿£IÒî÷=£b E`œÔ§d‹àŸžÄb5¢û8Žc* Jìƒ#²¡È4üŽ-µ¹9t§Š2çœÇâƒâ¿òÎAK›|4üÁ/ µ¡Ä)×I‚ñ@ŸW_<›ú!  ™ízŽÊ Ø[qÉÓÔç‚TZÅUõ¸’ÅŸ«¾ÂiþUÓ Ë?Ù×'ÿ³9U¦ÕU†d³™xÍ ø Q-/—ˆ˜YRN†ßûï;’¡êX`.woÕ´¿cnÔ…Ÿ:}N5ÛÏçÕSº‚ V1VŒ²&ýæÃçÌÖ©Ï1áwÄT.¡RðB&Ã.ŠC‡æ©bï5 åê_—‹ºXª$f+›õ¿®æ²ÊÄùíèF•vÊþ¶ Y˜€{1~m3ñ²àùÂͯúÆ-‡Ñ[ˆ#Mi~®E¯;?9 œÔäs­q|c8{Û÷N?ðnMÞñW-êìz ¸µxRYÊÇÕÿ©0t#^„G»c‰MiÙ‰MŸ ´¿Q¬G6„í*æ;6£T€Ês]Þ´-‰”oæîCâò2ÓçW­öì1ŠÎpä÷•kqÑ]x%Œ"ó!—%åÍßË~çtÞh·ÅŠ’&Ñ£ƒgjÜòÁÍÍ{-ùí?ò€àú]Üu ·!/õñ+M4!ªl‹ÀÐ|p!!­&ßSÑ×ûšð¡ø•_‚ - 6vL2Ê«ëŠ4'ó‹¥Fî"ÁâGeŸòáET½Zf®‹ô"ñ#-ÞÚM/ fÛ:Æ6xj<ŸÛ{ðD˜­×=Ù¸¬hŠ'¢MY|BxE¼,cã{ÒÚH-5–ÈÍš‡[áÐ7í]#0þQ¸œ£–Ý‘g¸ª´î2õ˜¨¼’ EpîQ £uQ›iÉPçz­x²„鿚?Òµuƒ@:޾nQê…küyhvà”ý€~{³±æàct:ªú æÚý•‘#“W˪ҒŠq'ææÐ=ß§·%U/ælTQ-Øçë»ó²¶%¢Ì9ܱÏMMعpY\ÿ¿WmÑGßa|J ʄïG×6)éG[ÀKëê!Ììt”•Ž)ùãNDỸ9wõ2>ˆ|Y­œÝ¾ƒ¬Ë‰qÝ&¤W­Ð0Àý[v”VEò,ÃYQ8¯{ÈÍjF¼à‰uø íÚÕò ¤VÕÆŒÊï]$ý㬆ɩa«`¸w20Ü—W5©‰X» ð ðgÍê´Ô>_F5×ì«Ç÷vÞf ›aÓÛ`‡qÄ3ô‡i:7ª0Fÿï`@dµ/ˆB-Ê'÷R:óüW©v&û#‰Ü¶=¢w$fªWpo˹%Ê—öt–Èú‹t½ r=|Æ‹ÒCß31lsö®3¶F¢c¿ľx¬”¼ºš4Üg.÷£s”ï„Ï¢1ä4ãóÏËŽ§Ø&Ü×ÛsbîÇ-yYQHãí&5îüm£*$Î öHÕ8°Rçd¿ä=H{ÆRÊ`Ûß«DÞ[w²øÅ³ùç¨`?rÊ{°ÝmØÚ–úÛœy5ªgÛ!œôb×Èî½ 0þTÖ¹±Ú޳­‘öÛ.~bòG¿î‹cw<¦¢9ɉ»¦L3gˆ£óLF!½üB¬tÉÜ„›‡DúQ“Áj?Øh¨<ñôŠEÇɹßiàSåïθڹgün îÒЃòˆÊ¡Ê¬T+_sI Ó¥úNâ]Óä¤ð(;Þl­ã²Iã÷&q†p7æ@3>Z–¹qHvãEÍjp)öŠå¯àr`­EóñŽ”†üf¯ø&”Ý´ôò´Îü„¾_ d±5Õø,sìì |­oJÐì$9JÖ$aMüBpo”ד£$Û:ƒªùò«˜k™PkÏc3–âïÅ‘‹Fl9UÌQ†Ý.ÆCì¶6¢7·¤q Ó'1#SçïàÚV'-] lº:†‹ÀïÙœúÂîÀnYXß\ñrÙ)¤³A·;÷ÔažuP!šî¥åxitO˜2(&;S ˆ“^g4òW\cUéà8ÆôÔ@þ(As +Æš¢ÍO8š%¡)1Øøp™é¯$b(œ(Òš[j£Úm>w½“pí¾´ø@‡Fδ3É@þÌ6X·©¡¸¡Š`ڧö™ãõ´h°ÕÜØo1ù„ôæ«ÿÙ +9Jêó6QÁ—vnŒã1”î[Mš7]Ni)PdåbÊd±ÿµžI+ˆÞ%þ+š@ˆ¼1ºº¶! É'}¦}örW¸DÚe 9ðÕL„Y`ËA‘¸•M:»2mp*´Hà<+òRÌÆè¦‹.Ö3œä—qz‡"7Vò”lÓ¾JB¡w5„äßSå1Š]¾AYµ6 ‡Ö#÷ã.츧9£ºŽ¼ncQ¤­Â-ɦ‰²‘_æDÒUcšÀ=kÖä/9!~þA~ë&i¯ëW=3ñ?¨ÃÁ“ÅŒ¨ëKu¬d°wÞLG ûÀ­¡¥]q©¬Å Û}ô’oCLùYVKËE>áÃŒ fö˜Ý‚ßä w¦ ÇaˆÙ_¬‡M`S"uÏÊYÐÈ#ð·ÈÖ}àä ®­ñ”½ñ¦H‹lÎýk<–b"wƒd²)Jòâïûófk¿c*ö7öÊ®&ð{}eØiMÝÄk–Yî‚aBe?Œj!ÅE&’ëP°ÀÈØÍˆö¥æ'zˆló`(¨…: ÿ[§ Â×u=Ž¢uC–&Eà ‡øÂ%©&cöö=,{b™Ñ•SX~xœ“«>‹éè'1ù_5D9‹œIëß—«PÄŽD”´6ÁO×_*¤ÛÚFðD¡çÏé8Bo„*0NDtþ"¼!÷²ð˜ðÕç ä«'†1Ù²¸h)Û™ÏìJXc!…¡Ãz®æ.ê™Æ` ËßhM_)Ì5_–ˆ«–îâW| D®å §Â´µH¦ÝKýãܳGSÊNµ¯Nv± !¾G¼ˆ j>Ø}i ³'ŠZÔŽ³Ûyìqôá&%äŽ@*ð‚ûK 5PnɃrBijÔ“Š¾™þÍâóõ3ÔŒB›1à·hŠ_ œšëVßù)+¨u‡©(@Qž‹ÈSE!™‚›ušÑÓ-½:¦ähs£˜ö˜ã'é¬Å“"BBð>·û>Æ`[,ÍÐéκè›-›»pæ­â¨1¥ñk§k½?ßVóvU¨Ê­(!aÈL[Ý™G!cwv†U1\#Ÿœ’¦F²‹IåÏåí–ÖÜ ÷÷ÛöæÍí+ö‹ùjY3 ²è21hô_[й?\—B‘üuZŸÕ"˜:·®ãkÛÒ6Ö–5êöDÛ?ë#Rçxžä§v½á"WdúñÆÃqÏídÁ¥£&Ðÿ×ðWØVÁü'yý~°§ ^Ù”‰a‘7ÿ B6SÒ²³sCOX<‰û’P¨1h·>n6º²E(þd/úæ¬(qâgÔêM-V6Ï–7¸˜¬„åewva  (ÁíB?j)]Ý/Tãpr‚JŒú^CgB¥ƒ¢ý2WwX-B™áóS˜MT•fÀ&†Ý”Ç2&à üŠPƒÕÁ“´M†¨Úy^ÁΓö.zº‚ýï…Åf¦TåãyŽûÔñ_Þ(³ù®¼ùÔ>r‡B¹=a$ƒ¿Ý LÏU²ÈÕÓMÞ×¥j¸÷[Œ"ïd˜õ¦ÌñÕsBºZM¦2Ø0?ŽÓ FÇÞâM¹íôÑÿÔÓ/þ(o™š )ªº u"´6¹Ð97~Ñ´BQ¿k¾)&ÒÆ”„ÈÖÄ×û‹ÙßÍ}ß­¸mSîãa 9É¥õ>Ç~ÚÕì)(<òéԩ_E8pÁ˜˜Ív‰Îµ¶9ÜÌ0çõáAöPr¾¸6© <:l;8ˆp–û¼WõiÓŽõ Ì`Јÿ©&àó?Í(ïLx„ƒh²ª[[Q‹é±|¯ œ„I~9ŠNrÔ’NâW?hÿZ%!3 xDAÄ—0>÷€è²§ø[) ìÇÙþÁéfl0¥gb°ŸÒµ&÷Âù.Ïú“8ÀY IÚ»ËWsM¥ `©_~çKtFâÁF´Cç;Bô<×ÔL$T±'1—p N-cÀküp:5§þ÷_IËöÂd€ì¦t&C‡æf±=í^#¶@¦{žˆõ.êwyDÂäÚ—º2+õ¶Á/JeÏÙ¶ãi©úçô™°‚ª/«ªçDѶ+Ðóió¨¨uÃŽhóTÌ4g½Þ•ro#g¡™YÖ¡Osl˜¢¤~¨„ˆ×âJÅb§ù¤”å IJ‹&Ð_`—Ç(öêŠç¿×šÌÚ_iŽ7–Ü-‘µ4´åx¡G7?ÒâX—œ¶ð»èmqÔŸ¦I‹ÒŸbáV;YzÁØLfwhŽy1ˆø¸(ø“#LÉkßGbÆJÞ÷,G&Q»ëÍ¿¢E„Šìäàï;vòµ35ÖÃRXKÞž "&;‚¹Yq¤ Sj3¡p.(èKzxd¶‹àD§·”Pèú½#)«boöõj.vž.ñµdw}Ó•Ð¥%{Šñ‹„¹¾§Y{>K:Ô¼ÞiÌ7¶ÅX:æmËâ£}”çË^8ŒëÄp„N+ÈÿFt÷uéIôoC9îÿú¯ Íy0à½ÁŒ¨Æ„?wÀ³ ¾×ãr¶ñè)×PŒX›/{ Êy<Ž: ¾nÅ›‡3©°Ü—fî Ä—>cuÐÀfPäH‘¼[²-iÐ,}«Ûe˦…†—3öË?¾¤CŸ1A—Ša7«a¬\96áêÏ”P‡Ç•ðšØ4Ž þÌ>Šq‰+¹|e/Ôâ¾ÚÙû¾L¾Ä2‹^̰ôEŸôÙo’¨È‹½p‡µª¸S÷ÜHöC´|+g4È퀗ó×HŠ¥’/F-‹Ã_4ÈÅìTï(:AÃ\AÑp›5î\þàé¿£èAÕ® êz­Þ´1äò .@Tj5Üì//Â$kqd,˜–U耧u•îF¦Ðr5ü}üô<ÒZ{–vg¿ …‚°"áu:mZ÷ú›V¤‚;9—º!­»;½LÅýÙ^Þí2(¶0&ÁÓ³½©ž¹ fÕ4lø~Lï™Æ·`qò`±ðç6ÐÎ<8qˆ+:I©Þ¬™ýÔ„ÇÉžÃþ«+ñ@hŽ AbIl!pY÷åØU‘O˜¢ Š×Tcšýª­¼oßÃNî}$±B-Œ«GÍ#ò€š¿ôte""¡¢e"ns¥óŸ7`|áC,Ùú;¬i®¼Ý~&± ò¥ûVÆ IúGû·»ÿÑì°%Î"{½ùÒrÿS¶LY#ÀV—!Ñä4èIùc|­™Ê<ìœéŸQ}– Jjžs¡9Ãúá÷Áâòk…üa6FUÐL²O®ï@KºÓ1ü6ƒp؆Ýv˜/Mrž/h5q ŸÛoVâuÝõyq¸>ü:(óé ˜»u~oÿˆ­ òôÞLOâw vÓfœäb`—l…Q»Â]T©«Þ…æÝÏHç.(_ž çÅÚMà –ûs†,*„ Ì å¡ ‚,7¹ÏžGÆɈì¤CãHLG¢?¾èm¹.µ8à÷ú΂‘kP̦b92d個^.»÷q.FGáÏø;Â7o[£!v½e6\Ò<ÿšßlÆ©¬ì#óÖ5OÀP! u„Îõ­9¤”vÒTÐí‹®Œl¨.mš;IJ LXÑ­Îú–U6µ6Öª˜À!ކ˜{'rˆ˜,ë@'R~Éç4dœÇ H™\ìÑ e¹Í²Ò”A (Zþ57Œç|HÿòYD˜¡Áò`ÌǤ¾{QíS¯%VÇ*c±d¼ø óÃT~búG÷³•1’<¬Âø›fLAøWTY  Ôj ¦)Þ¼Ý+åÑ‹[£ã€1Û—e—ÑÑݨc¥a¹¶gìRI¬˜›„‘YÜ™jBaZÔIÌqÑ­oí@ZŠÿ5&y¸q°Ý ýQXNÖžyOýühXý¦ì˜Pë‹ØZyjM¢£ì‹"Ƨ0š€éœ)‹ÑÛ ¾zþdIˆ"òê±éUž„3…?’JñÅö£`£æÐhv¤}ÆEÎÚYlLÞRÞëN+9]ŠO»v½£z%[»Nß®ä·/•›­ºúvIÑß­1 VÂ#8yõ0›9ÄLAèï„•…OŒ­Ë®!´N(—TQ¦þ@rûà1Ón+fj#ȨÅèÇffÈ­$z=ÂDø¢üx9y  )«Q¡ø}ù]ðSúFñ“G ™Ù“ª;ÉèÝ®ypeá‰Ð !–¬Ìò€›óNÑ­bË!jâó(éKY¨·qÈ“Nlϧw\ÖlÇxꌱòÂ+‡º: î¥9“ÕÞáôž-!+•÷)ñã8‹jõ­2Üa«pgwäRLH2¶ú‘  }C×ÖÍv¡:åNÅY-Dpu¬.;q_.Aeœ³ÞJÜ7Á¾Ê[ôÛÚH“í7 žÛVp¿\`$y>f)BÕÈBkŬ®L€Í…êîgÃl¶­®Edê­¤%}ÒWXöy £vx­jfhišb­¨ÜGðnbòÅ0¬ŒÐõk'Yχ»ÍO¥‘XH@(ú¡´™Ys!²Ì<†{ Þvéäó¸wŸ‘È}Oß¾Mé{о½'Zâ “fc]”´6•J1ë²ÝBOÊËB¨Š Åz…©•uÐϩ߆&R¾-™4ÝU-Àާrk²*ª¸¦Ê÷kx™»[Òïï©Ó×5¯Oöø¥ÙÅ$¾ž‚³"«DͲÉ>Q‰Ñ})J¿~®ÑÞ·$ õÞêšp¯Ê©† Š˜§þðEV>¤ÊŸñx[!k¶L·Ypø ÷e³Å3v¾æiÖçùïd}$Õõ}ëQ4JFd-¥6=n##Ø] /Û<ô%•GoÔWŽJå7½ªíâϤ ÀÇüÉèÚ›·j9£zÑRígtw“zëõ$Íw,ïö›dP8 nÛ‡u™gÉu¯0¹­¯Ä/ïF‚è$IÙX#zÇ €‡"ŒZ¥iFpÓNk²Ü©,?–¹¤¤eO3ãùl˜“¸ÓÏç²ä#ÏgÓ]'TNMEª•NYØÖ»SÅR@Ë0GÐhf­æÀFS{˜Äek`l¨6y×9»õÔ‚8Ák3Pì<æ ,žCñò(å‡ì«ZQàY׬|šûX^ÓR&é‡ÿ.¾–‹ï"½ ¿ý"Ut)0aU×û+äaמmVÏÌ"ìpˆ©@L 3w–Øm„Ëð¨ÁòÞ½â|„)ª šƒ=“lÃókTy‚'±üYù.,”x u\‚\u¼{]“…,”_?IZU8ÐÒZÖžÿˆÄpÉØ’í*pEÊã&,¯›­\ZÛŽaQ?ˆ$©½>KMF2¿N£ ºû) ­ˆeÔöKü¾] G“ßO± çyµ(#n^Xà·;Ô™øŸt’LòÔØÄßßFLªž©q!^@ ?PüH’<…“Zí„—Ly® ð ŸXN:×Ó‹_½ë(a¬¾Ë÷H#Œp3vï²ä›EpEÿw㱞ÆÁ¾ÑO\„sâð+aaÔïuÒ—kTñâ‡v…ž«öä©u°«ñ…Þë5Yƒ¿þâ#щô£ÙÀ”Ä9¿¹›z/ߤá:Gƒ'÷?¶ýc?×k4Öž¡³¿õÓjÎnú¾Œ°Dè…a›Ó´JAœ :÷F6x”¿E6XË_‡%ŸçñôÝëPŽ-L‰+µæüðº7ªµê–ˆ –¨Á=‹› -¹¶©Íç;‰·.Éú(½­Lùw¦³bNjlw¹eÆ×23ó $Œ²x%WÝ$S®aï5ÄSsàäPå“’?€Á©‰£´ GhÃâeÅuøò±‰y…Øw‘ùÆÎNø°ë xƒ™htPÀ#Æ5*‚Ð7öð´\ânÛJoòo½>äc¾§&êThe Project Gutenberg EBook of Tou Peng Hsien Hua, by Aina Jushi å¼è¨€ å¾é„‰å…ˆè¼©è©©äººå¾èŠæ½­æœ‰ã€Šè±†æ£šåŸã€‹ä¸€å†Šï¼Œå…¶æ‰€è© å¤é¢¨ã€å¾‹çµ•諸篇,俱宇宙å¤ä»Šå¥‡æƒ…å¿« 事,久矣膾炙人å£ï¼Œæƒœä¹Žäººé世é ã€æ¹®æ²’無傳,至今高人韻士æ¯åˆ°ç§‹é¢¨è±†ç†Ÿä¹‹éš›ï¼Œèª¦ 其一二è¯å¥ï¼Œä»¤äººç¥žå¾€ã€‚ 餘ä¸å—œä½œè©©ï¼Œä¹ƒæª¢éºäº‹å¯å ªè§£é ¤è€…,å¶åˆ—數則,以補豆棚之æ„ï¼›ä»ä»¥èŠæ½­è©©ä¸€é¦–å¼ä¹‹ ,詩曰:閑著西邊一è‰å ‚,熱天無地å¯ä¹˜æ¶¼ã€‚ æ± å¡˜å…­æœˆç”±ä¾†æ·ºï¼Œæž—æœ¨ä¸‰å¹´æœªå¾—é•·ã€‚æ ½å¾—è±†è‹—å ªä½œè”­ï¼Œå‹æ–¼äº­æ¦­å生香。晚風約有溪 å—åŸï¼ŒåЇå°èŸ¬è²è©±å¤•陽。 第一則 介之推ç«å°å¦’婦 江å—åœ°åœŸçªªä¸‹ï¼Œé›–å±¬å‘æº«ï¼Œä¸€äº¤å››æœˆä¾¿å€¼é»ƒéœ‰ç¯€æ°£ï¼Œäº”月六月就是三ä¼ç‚Žå¤©ï¼Œé…·æ—¥ç•¶ 空;無論行é“ä¹‹äººæ±—æµæµ¹èƒŒï¼Œé ­é¡ç„¦æž¯ï¼Œå³åœ¨å®¶ä½çš„也å¼å¾—氣喘,無處存著。上等除 äº†å¯Œå®¤å¤§å®¶ï¼Œæ¶¼äº­æ°´é–£ï¼Œæ–æ‰‡ä¹˜æ¶¼ï¼Œå®‰é–‘自在;次等便是山僧野åŸï¼Œæ•£ç™¼æŠ«è¥Ÿï¼Œé€é™ 於長鬆蔭樹之下,方å¯éŽå¾—;那些中等å°å®¶ç„¡è¨ˆå¸ƒæ“ºï¼Œåªå¾—二月中旬覓得幾株羊眼豆 ,種在屋å‰å±‹å¾Œé–‘空地邊,或拿幾株木頭ã€å¹¾æ ¹ç«¹ç«¿æ­å€‹æ£šå­ï¼Œæ“些è‰ç´¢ï¼Œå‘¨åœçµå½© 的相似。 ä¸åŠæœˆé–“,那豆藤在地上長將起來,彎彎曲曲ä¾å‚竹木隨著棚å­ç‰½çºæ»¿äº†ï¼Œå»æ¯”造的 涼亭å逿°£æ¶¼å¿«ã€‚é‚£äº›äººå®¶æˆ–è€æˆ–å°‘ã€æˆ–男或女,或拿根凳å­ï¼Œæˆ–掇張椅å­ï¼Œæˆ–é‹ªæ¢ æ¶¼è“†ï¼Œéš¨é«˜é€ä½Žå在下é¢ï¼Œæ–著扇å­ï¼Œä¹˜è‘—風涼。鄉è€å€‘有說æœå ±çš„,有說新èžçš„, 有說故事的。除了這些,男人便說人家內眷,æŸè€å¨˜è³¢ï¼ŒæŸå¤§å¨˜å¦’,大分說賢的少, 說妒的多;那女人便說人家丈夫,æŸå®˜äººå¥½ï¼ŒæŸæ¼¢å­ä¸å¥½ï¼Œå¤§åˆ†æ„›ä¸ˆå¤«çš„少,妒丈夫 的多。å¯è¦‹ã€Žå¦’ã€ä¹‹ä¸€å­—,男男女女日日在å£è£¡æèµ·ã€å¿ƒè£¡è½‰å‹•。如今我也ä¸èªªåˆ¥çš„ ,就把『妒ã€å­—說個暢炔,倒也ä¸è² é€™å€‹æ­è±†æ£šçš„æ„æ€ã€‚你們且安心è½è‘—。 當日有幾個少年朋å‹åŒè‘—å¹¾å€‹è€æˆçš„人也ååœ¨è±†æ£šä¹‹ä¸‹ï¼Œå³æ‰‹æ‹¿è‘—一把扇å­ï¼Œå·¦æ‰‹æ‹¿ è‘—ä¸çŸ¥ç”šéº¼é–‘書,看到鬧熱所在,有一首五言四å¥çš„詩,忽然把扇於在凳上一æ‹ï¼Œå« 將起來,便é“:『說得太éŽï¼èªªå¾—太éŽï¼ã€é‚£è€æˆäººä¾¿ç«‹èµ·èº«å­é“ï¼šã€Žå»æ˜¯ç‚ºä½•?那 少年便把書éžèˆ‡ä»–,一手指é“:『他如何說「é’竹蛇兒å£ï¼Œé»ƒèœ‚尾上é‡ã€‚兩般猶未毒 ,最毒婦人心ã€ï¼Ÿåšå¾…的人想是å—了婦人閑氣,故æ„說得這樣利害。難é“婦人的心比 é€™äºŒç¨®æƒ¡ç‰©é‚„æ¯’äº›ä¸æˆï¼Ÿã€é‚£è€æˆäººä¾¿æŽ¥å£èªªé“:『你們後生å°å¤¥å­ä¸æ›¾ç¶“å—ï¼Œä¸æ›¾ 出門看見幾處,åˆä¸æ›¾é€¢äººèªªè‘—幾個,如何肯信?å³åœ¨ä¸‹ä»Šå¹´å·²åŠäº”旬年紀,寧å¯åš å€‹é°¥å¤«ï¼Œä¸æ•¢å¨¶å€‹å©†å­ã€‚實實在江湖上看見許多,人頭上說將來åˆè½å¾—許多,一處有 一處的利害,一人有一人的狠毒,我也說ä¸å¾—許多。曾有一個好事的人,把å¤çš„妒婦 心腸並近日間見的妒婦實跡備悉纂æˆä¸€å†Šã€Šå¦’鑒》,刻了書本,四處æµå‚³ã€‚åˆæ„ä¸éŽ è¦é€™äº›ç”·å­çœ‹åœ¨çœ¼è£¡ï¼Œä¹Ÿå¥½é˜²å‚™ä¸€ç•ªï¼›åˆè¦å¥³äººçœ‹åœ¨è‚šè£¡ï¼Œä¹Ÿå¥½æ‡²å‰µä¸€ç•ªã€‚男男女女 å¥½éŽæ—¥å­ã€‚é€™å€‹åŠŸå¾·å»æ¯”å”僧往西天å–來的è–經還增ååˆ†å¥½è™•ã€‚é‚£æ›‰å¾—å©¦äººä¸€ç¶“çœ‹éŽ ï¼Œåé“「妒ã€ä¹‹ä¸€å­—å¾žå¤æµå‚³ï¼Œæ‡‰è©²æœ‰çš„ã€‚ç«ŸæŠŠé‚£ã€Šå¦’é‘’ã€‹ä¸Šäº‹è·¡çœ‹å¾—å¹³å¹³å¸¸å¸¸ï¼Œå„ äººå¦è¦æœå°‹å‡ºä¸€ç•ªæ„見,åšå¾—新新奇奇,åˆè¦é‚£äººåœ¨æ­£æœ¬ã€Šå¦’é‘’ã€‹ä¹‹å¾Œåˆ»ä¸€æœ¬ã€Œè£œéº ã€ã€äºŒé›†ã€ä¸‰é›†ï¼Œä¹ƒåœ¨å©¦é“ä¸­ç¨±å€‹è¡¨è¡¨è±ªå‚‘ï¼Œçº”æš¢å¿«ä»–çš„æ„æ€å“©ï¼ã€åˆæœ‰ä¸€å€‹è€æˆäºº 接å£é“ï¼šã€Žé€™ã€Šå¦’é‘’ã€‹ä¸Šæœ‰çš„å»æ˜¯ç¾åœ¨çµå±€çš„事,何足為奇?還有妒到åƒå¹´è¬è¼‰åšäº† é¬¼ã€æˆäº†ç¥žçº”是希罕的事。那少年è½è¦‹å…©å€‹è€æˆäººèªªå¾—觔觔節節,就拱著手說é“:『 è«‹æ•™ï¼è«‹æ•™ï¼ã€é‚£è€æˆäººèªªé“:『這段書長著哩,你們須烹幾大壺極好的鬆蘿祘片〠上細的é¾äº•èŠ½èŒ¶ï¼Œå†æ·»ä¸Šå¹¾å¤§ç›¤ç²¾ç·»ç´°æ–™çš„點心,纔與你們說哩ï¼ã€é‚£å°‘年們é“:『 ä¸é›£ä¸é›£ï¼Œéƒ½æ˜¯æœ‰çš„。åªè¦èªªå¾—真實,ä¸è¦é¨™äº†é»žå¿ƒã€èŒ¶åƒï¼Œéš¨å£èªªäº›è¬Šè©±å“„弄我們 ã€‚æˆ‘å€‘é›–æ˜¯å¹´å¹¼ä¸æ›¾è®€æ›¸ï¼Œä¹Ÿè¦è³ªè­‰ä»–人方肯信哩ï¼ã€é‚£è€æˆäººä¸æ…Œä¸å¿™ï¼Œå°±æŠŠæ‰‡å­ 折æ”了放在凳角頭,立起身來,說é“:『æŸå¹´æŸæœˆï¼Œæˆ‘åŒå¹¾å€‹å¤¥è¨ˆè²©äº†è—¥æå‰å¾€å±±æ± 發賣。騎著驢å­ï¼Œéš¨äº†è»Šé¦±ï¼Œä¸€ç¨‹èµ°åˆ°æ¿Ÿå—åºœç« é‚±ç¸£è‡¨æ¿ŸéŽ®ä¹‹å—æ•¸é‡Œé–“,é‡è‘—一æ¢å¤§ 河。åªè¦‹å…©é‚Šèˆ¹éš»ã€ç‰²å£ï¼Œä½ ä¾†æˆ‘往,你往我來,稠稠密密,都也ä¸åœ¨å¿ƒä¸Šã€‚見有許 多婦人,或有éŽåŽ»çš„ï¼Œæˆ–æœ‰éŽä¾†çš„。那丑頭怪腦的,隨他往來,得個平常;凡有一二 分姿色的,到彼處å»ä¸æ•¢ä¾¿å°±éŽåŽ»ï¼Œä¸€åˆ°é‚£é‚Šï¼Œéƒ½æŠŠå…©é¬¢è“¬è“¬é¬†é¬†æ‰¯å°‡ä¸‹ä¾†ï¼Œå°‡å¹¾æ ¹ äº‚è‰æ’åœ¨é«»ä¸Šï¼ŒåˆæŠŠç ´èˆŠè¡£æœæ›åœ¨èº«ä¸Šï¼Œæ‰“扮得å分ä¸åƒæ¨£äº†ï¼Œæ–¹æ•¢èµ°åˆ°æ²³é‚ŠéŽæ¸¡ã€‚ è‡¨ä¸Šèˆ¹æ™‚ï¼Œé‚„å°‡åœ°ä¸Šçš„æµ®åœŸç°æ³¥æ“¦æŠ¹å¹¾æŠŠï¼Œçº”æ”¾å¿ƒèµ°ä¸Šèˆ¹ï¼Œå¾—å€‹å¹³å¹³å®‰å®‰æ¸¡éŽæ²³åŽ»ã€‚ 若是略象模樣婦人ä¸è‚¯æ¯€å®¹æ˜“æœï¼Œæ¸¡åˆ°å¤§æ²³ä¸­é–“,風波陡作,æ²èµ·é‚£é†ƒè…Œè‡¢è‡¢çš„æµªé ­ 直進船內,把貨物潑濕,衣æœç©¢æ±¡ï¼Œæˆ–有時把那婦人隨風æ²å…¥æ°´å…§ï¼Œé€£äººå½±ä¹Ÿä¸è¦‹äº† 。你é“甚麼妖魔鬼怪在彼作如此的兇險惡孽?我ä¿ä¿åœ¨é‚£å·¦è¿‘飯店輕輕訪å•。那裡人 都è¦éŽæ¸¡ï¼Œæ‡¼æ€•ä»–çš„ï¼Œä¸æ•¢æ˜Žç™½é¡¯æ˜“èªªå‡ºä»–çš„ä¾†é ­ã€‚åªæœ‰ä¸€å€‹è€äººå®¶åœ¨é‚£è£¡è™•蒙館的 ,說é“:這個神é“å…¶ä¾†ä¹…çŸ£ã€‚åœ¨å”æ™‚有個人åšä¸€ç¯‡ã€Šè¿°ç•°è¨˜ã€‹ï¼Œèªªé“:此河åå«å¦’婦 津,乃是晉時æœä»£æ³°å§‹å¹´è™Ÿä¸­ï¼Œä¸€äººå§“劉å伯玉,有妻段æ°å明光,其性妒忌;伯玉 å¶ç„¶é£²äº†å¹¾æ¯é¤“酒,ä¸çŸ¥ä¸è¦ºåœ¨æ®µæ°é¢å‰èª¦äº†æ›¹å­å»ºçš„《洛神賦》幾å¥é“:『其形也 翩若驚鴻,婉若游é¾ã€‚榮曜秋èŠï¼Œè¯èŒ‚春鬆。彷彿兮若輕雲之蔽月;飄é—兮若æµé¢¨ä¹‹ 迴雪。é è€Œæœ›ä¹‹ï¼ŒçšŽè‹¥å¤ªé™½ä¹‹æ˜‡æœéœžï¼›è¿«è€Œå¯Ÿä¹‹ï¼Œç¼è‹¥èŠ™è•–ä¹‹å‡ºæ·¥æ³¢ã€‚ç© çº–å¾—ä¸­ï¼Œä¿® 短åˆåº¦ã€‚肩若削æˆï¼Œè…°å¦‚約素。延頸秀項,皜質呈露。芳澤無加,鉛è¯å¼—御。雲髻峨 峨,修眉è¯å¨Ÿï¼Œä¸¹è„£å¤–朗,皜齒內鮮,明眸善çžï¼Œé¨è¼”承權。瑰姿艷逸,儀éœé«”閑。 柔情綽態,媚於語言。 å¥‡æœæ› ä¸–,骨象應圖。披羅衣之璀粲兮,ç¥ç‘¤ç¢§ä¹‹è¯çšã€‚戴金翠之首飾,綴明ç ä»¥è€€ 軀。è¸é éŠä¹‹æ–‡å±¥ï¼Œæ›³éœ§ç¶ƒä¹‹è¼•裾。微幽蘭之芳藹兮,步蜘躕於山隅。 讀至此,ä¸è¦ºæŠŠæ¡ˆä¸Šä¸€æ‹ï¼Œå¤±å£èªªé“:『我生平若娶得這樣個標緻婦人,由你潑天的 功å富貴è¦ä»–什麼ï¼å¾ä¸€ç”Ÿå¿ƒæ»¿æ„足矣ï¼ã€æ­¤ä¹ƒæ˜¯é†‰å¾Œç„¡å¿ƒèªªé€™å…©å¥æ”¾è‚†çš„閑話,那 知段æ°è½äº†å¿ƒä¸­ç«èµ·ï¼Œå°±ç™¼è©±é“:『å›ä½•看得水神的é¢ç›®æ¨™ç·»å°±å二分尊é‡ï¼Œç•¶é¢æŠŠ 我奚è½ï¼Ÿè‹¥èªªæ°´ç¥žçš„好處,我死何æ„ä¸ç‚ºæ°´ç¥žï¼ã€ 䏿›¾èªªå®Œï¼Œä¸€æºœç…™ç«Ÿèµ°å‡ºé–€åŽ»ã€‚é‚£ä¼¯çŽ‰é‚£çŸ¥å°±è£¡ã€‚ä¸æ–™æ®µæ°èµ°åˆ°æ²³æ¿±ï¼Œåšå€‹é·‚å­ç¿»èº« ä¹‹å‹¢ï¼Œæœ›è‘—æ·±è™•å¾žç©ºä¸€è·³ï¼Œå°±å¾žæ°´é¢æ²ˆä¸‹åŽ»äº†ã€‚ä¼¯çŽ‰æ…Œå¾—é­‚ä¸é™„體,放è²å¤§å“­ã€‚急急 喚人打撈,那有蹤影?整整哭了七日,喉乾嗓咽,一交跌倒朦朧暈去。åªè¦‹æ®µæ°å¾žæ°´ é¢ä¸Šèµ°è¿‘å‰ä¾†èªªé“:『å›å®¶æ‰€å–œæ°´ç¥žï¼Œå¾ä»Šå¾—ç‚ºç¥žçŸ£ï¼ å›é ˆéŽæ­¤ï¼Œå¾å°‡é‚€å­ç‚ºå•è€ç„‰ï¼ã€è¨€æœªç•¢ï¼Œæ®µæ°å³å°‡æ‰‹æŠŠä¼¯çŽ‰è¡£è¢‚ä¸€æ‰¯ï¼Œä¼¼æ¬²åŒå…¥æ°´ ç‹€ï¼Œä¼¯çŽ‰é©šå¾—é­‚é£›å¤©å¤–ï¼ŒçŒ›åŠ›ä¸€è¿¸ï¼Œå¿½ç„¶ç”¦é†’ï¼Œä¹ƒæ˜¯å—æŸ¯ä¸€å¤¢ã€‚伯玉勉強ç¨è‡ªå›žå®¶ã€‚ 詎料段æ°é™°é­‚䏿•£ï¼Œæ—¥æ—¥åœ¨æ´¥å£å¿½ç„¶ä½œè²ï¼Œå¿½æ™‚ç¾å½¢ï¼Œåªè¦ä¼ºå€™ä¸ˆå¤«éŽæ´¥ï¼Œå¸Œé‚å‰ç´„ ã€‚ä¸æ–™ä¼¯çŽ‰å¿ƒé¤’ï¼Œçµ‚èº«ä¸æ¸¡æ­¤æ´¥ã€‚æ•…å¾Œä¾†å‡¡æœ‰ç¾Žè‰²å©¦äººæ¸¡æ­¤æ´¥è€…ï¼Œçš†æ”¹å¦æ˜“貌,然後 得濟。ä¸ç„¶å°±è¦èˆˆé¢¨ä½œæµªï¼Œè¡Œåˆ°æ²³æ°´ä¸­é–“便é­ä¸æ¸¬ä¹‹è™žäº†ã€‚ã€é‚£äº›å¾Œç”Ÿé“ï¼šã€Žé€™æ®µæ° å¥½æ²’åˆ†æ›‰ï¼Œåªè©²å¦’著自己丈夫,如何連別的女人也妒了?ã€åˆæœ‰å€‹è€è€…é“:『這個學 究說的乃是åšäº†é¬¼é‚„妒的事,é©çº”說æˆäº†ç¥žé‚„妒的事,å»åœ¨é‚£è£¡ï¼Ÿã€å…§ä¸­ä¸€å€‹è€è€…é“ ï¼šã€Žå¾…æˆ‘ä¾†èªªå€‹æ˜Žç™½ï¼é‚£å¦’å©¦æ´¥å¤©ä¸‹å»æœ‰å…©è™•,這山æ±çš„看來也還平常,如今說的纔 是利害哩ï¼ã€ 那後生輩è½è¦‹æ­¤èªªï¼Œä¸€å€‹å€‹éƒ½ç«™å°‡èµ·ä¾†ï¼Œç¥žæƒ…錯愕,å•é“:『這個å»åœ¨ä½•處?ã€è€è€… 便é“:『在山æ±å°é–€å±±è¥¿æ™‰åœ°å¤ªåŽŸåºœç¶¿ç¸£åœ°æ–¹ã€‚è¡Œåˆ°å½¼è™•æœªåŠå里,路上人娓娓說長 說短,都是這津頭的舊事,我å»ä¸ä¿¡ã€‚看看行到津å£ï¼Œä¹Ÿæœ‰è¨±å¤šéŽå¾€å©¦äººå¦æ‘扮丑, 亦如山æ±çš„光景,也ä¸ç‚ºç•°ã€‚直到那大樹林下,露出一個åŠå¤§çš„廟宇,我跳下牲å£ï¼Œ 把éŸç¹©ã€éž­å­éžèˆ‡é©¢å¤«ï¼ŒæŠŠè¡£è¢–扯將下來,整頓了一番,ä¾è‘—照牆背後轉到甬é“上去 。抬頭一看,也就把我唬了一驚:åªè¦‹å…©å€‹èž­é ­ç›´æ²–霄漢,四åœé·¹çˆªé«˜æŽ¥é›²ç…™ï¼›å…«å¯¶ 妿ˆé´›é´¦ç“¦è„Šè€€å¾—眼花,渾金鑄就饕餮門環閃人心怕。左邊立的朱髭赤發ã€ç«è¼ªç«é¦¬ ,人都猜é“ç¥èžéƒ¨ä¸‹ç¥žå…µï¼›å³é‚Šç«™çš„é’é¢ç ç‰™ã€çš‚蓋玄旗,我å»èªåšç˜Ÿç–«å¸ä¸­ç‰™å°‡ã€‚ 中間å著一個碧眼高顴ã€ç´«è‰²å‚´å…œé¢å­”ã€å¼µè‘—簸箕大的紅嘴,乃是個åŠè€å©¦äººï¼Œæ‰‹æŒ 焦木短æ£ï¼Œæƒ¡ç‹ ç‹ æ©«è¸žåœ¨ä¸Šï¼›æ—邊立著一個短å°èº«æã€å‚´åƒ‚苦楚形狀的男人,æœè‘—å·¦ å´ç¥žå»šè§’è£¡ï¼Œå»æ˜¯ç‚ºä½•?正待è¦å•ï¼Œé‚£é©¢å¤«æ–æ‰‹é“:「莫è¦é–‹è¨€ï¼Œèµ°ç½·èµ°ç½·ï¼ã€åªå¾— 上驢行路。走了五六里,悄å•å†ä¸‰ï¼Œé©¢å¤«æ–¹èªªï¼šã€Œé€™å€‹å¨˜å¨˜å«åšçŸ³å°¤å¥¶å¥¶ï¼Œæ—é‚Šæ¼¢å­ å«åšä»‹ä¹‹æŽ¨ï¼Œç›´æ˜¯ç§¦æ¼¢ä»¥å‰åˆ—國分爭時節晉國人æ°ã€‚åªå› æ™‰ç»å…¬å¯µæ„›äº†ä¸€å€‹é©ªå§¬ï¼Œå®³ 了太å­ç”³ç”Ÿï¼Œåˆè¦å®³æ¬¡å­é‡è€³ã€‚é‡è€³ç„¡å¥ˆï¼Œåªå¾—奔逃外國求生。介之推乃是上大夫介 立之å­ï¼Œå¹´ç´€ç”«åŠäºŒå,纔娶一妻,也是上大夫石åä¹‹å¥³ï¼Œåæ›°çŸ³å°¤ã€‚兩個原生得風 æµæ¨™ç·»ï¼ŒéŽå¾—似水如魚,真個æ‰å­ä½³äººå¤©ç”Ÿä¸€å°ã€è“‹ä¸–無雙的了。å»ç‚ºé‡è€³çŒç„¶é­è®Š ,立刻起程;之推是æ±å®®ä¾è¡›ä¹‹è‡£ï¼Œç¾©ä¸å®¹ç·©ï¼Œæ‰€ä»¥å¥®ä¸é¡§èº«ï¼Œä¸€è½¡é ­éš¨ä»–èµ°äº†ï¼Œä¸ æ›¾å›žå®¶èªªå¾—æ˜Žç™½ã€‚å°±æ˜¯è·¯ä¸­è¦å¤®å€‹ç†Ÿäººå¯„信回時,那é‡è€³æ˜¯æ™‰åœ‹å…¬å­ï¼Œéš¨è¡Œæœ‰äº”人: 一個是é­é®¤ï¼Œä¸€å€‹æ˜¯ç‹åƒï¼Œä¸€å€‹æ˜¯é¡›é ¡ï¼Œä¸€å€‹æ˜¯è¶™è¡°ï¼Œé€™å€‹å°±æ˜¯ä¹‹æŽ¨äº†ã€‚急切裡一時 é€ƒèµ°ï¼Œææ€•æ¼äº†æ¶ˆæ¯é©ªå§¬çŸ¥é“,唆è³ç»å…¬ç™»æ™‚興兵發馬,隨後追趕,ä¸ç•¶ç©©ä¾¿ï¼›éƒ½æ˜¯ 改頭æ›é¢ï¼Œè¥¤è¥¤è¤¸è¤¸ï¼Œå¤œä½æ›‰è¡Œï¼Œç”šæ˜¯è‹¦æ¥šã€‚çŸ³æ°åœ¨å®¶é‚£æ›‰å¾—這段情節?åªèªªï¼šã€Žæ­£ åœ¨æ©æ„›ä¹‹é–“,如何這冤家嚯地拋閃?想是有了外é‡ï¼Œé “然把我丟棄ï¼ã€å«å¤©æ¶åœ°ï¼Œå¿¿ æ¨ä¸€å›žï¼Œç—›å“­ä¸€å›žï¼Œå’’詛一回,癡想一回,æ¨ä¸å¾—從åŠç©ºä¸­å°‡ä¹‹æŽ¨ä¸€æŠŠé ­æªåœ¨è·Ÿå‰ï¼Œ ç”Ÿç”Ÿçš„å’¬åš¼ä¸‹è‚šï¼Œæ–¹å¾—å¿«å¿ƒé‚æ„ã€‚ä¸æ–™ä¸€æ—¥ä¸€æ—¥ï¼Œä¸€å¹´ä¸€å¹´ï¼Œèƒ¸ä¸­æ¼¸æ¼¸é•·èµ·ä¸€å¡Šåˆ€ç  ä¸é–‹ã€æ–§æ‰“ä¸ç¢Žã€å …å‡å¦‚石一般,å«åšå¦’å¡Šã€‚ä¿—èªžèªªï¼Œå¥³å‚æœ‰çŸ³ï¼ŒçŸ³ç•”ç„¡çš®ï¼Œç—…å…¥è† è‚“ï¼Œå†éŠ·ç†”ä¸å¾—的了。那知之推乃是個忠誠苦節之臣,隨了é‡è€³å››é å…«æ–¹ï¼Œè‰±é›£éšªé˜» ,無ä¸å˜—é。一日逃到深山,七日ä¸å¾—ç«é£Ÿï¼Œé‡è€³ä¸€ç—…å¹¾å±ã€‚ éš¨è¡Œè€…é›–æœ‰äº”äººï¼Œç¨æœ‰ä¹‹æŽ¨å°‡è‚¡ä¸Šè‚‰å‰²å°‡ä¸‹ä¾†ï¼Œç…Žæ¹¯é€²èˆ‡é‡è€³é£Ÿä¹‹ï¼Œæ•‘得性命。ä¸è¦º èèè‹’è‹’éŽäº†ä¸€åä¹å¹´ï¼Œé‡è€³æ–¹å¾—歸國,立為文公,興起霸來。後來那四個從é¾ä¹‹è‡£ 都補了大官å—了厚祿,ç¨ä¹‹æŽ¨ä¸€äººç•¶æ—¥èº«é›–éš¨è‘—æ–‡å…¬å‘¨è¡Œï¼Œé‚£ä¾æˆ€å¦»å­çš„心腸端然如 舊。一返故國便到家中訪å•原妻石æ°ä¸‹è½ï¼Œåé¤˜å¹´å‰æ—©å·²æ¬åœ¨é‚£ç¶¿ç«¹å±±ä¸­åŽ»äº†ï¼Œä¹‹æŽ¨ å³å¾€å±±ä¸­æŽ¢è¨ªæ¶ˆæ¯ã€‚çŸ³æ°æ–¹åœ¨å®¶æŠŠæ³¥å¡‘一個丈夫,æœå¤•打罵得,ä¸å·²ï¼Œå¿½ç„¶ç›¸è¦‹ï¼Œå…© 個é¡è‰²ä¿±è’¼ï¼Œå»ä¸èªå¾—,細說因由,方纔å»èªï¼Œå¿½ä¾¿éœ‡å¤©å‹•地å‡å“­èµ·ä¾†ã€‚ä¹‹æŽ¨æŠŠå‰æƒ… 說了一番,那石æ°ä¾¿ç½µé“:『負心賊ï¼é–ƒæˆ‘多年,故把å‡è¨€æªå¡žã€‚ã€åªæ˜¯ä¸ä¿¡ã€‚å°‘ä¸ å¾—å©¦äººå®¶çš„èˆŠè¦ï¼Œæ‰‹æ’¾å£å’¬ã€é ­æ’žè…³è¸¢äº†ä¸€å›žã€‚å¼„å¾—ä¹‹æŽ¨å¥½åƒæ•—陣傷亡,垂頭喪氣, ä¸€è¨€ä¹Ÿä¸æ•¢ç™¼ï¼ŒåªæŒ‡æœ›å¾…ä»–æ°£éŽï¼Œæº«å­˜å¹¾æ™‚,ä¾èˆŠè¦å‡ºå±±åšå®˜å—è·åŽ»çš„ã€‚é‚£çŸ¥çŸ³æ°å¿ƒ 毒得緊,原在家中整治得一æ¢ç´…錦ä¹è‚¡å¥—索在衣箱內,å–將出來,把之推扣頸縛ä½ï¼Œ 頃刻ä¸é›¢ï¼Œä¸€æ¯«å±•å‹•ä¸å¾—。 說é“:『我也ä¸é¡˜é‡‘ç´«å¯Œè²´ï¼Œæµæµªå¤©æ¶¯ï¼Œåªé¡˜åœ¨å®¶å…©å…©ç›¸å°ï¼Œé½é¹½è‹¦å®ˆï¼Œé‚„è¦è£œå®Œæˆ‘ åä¹å¹´çš„風æµè¶£èˆˆï¼Œç”±é‚£ä¸€ç­å‘½é‹å¤§çš„åšå®˜ç½·äº†ã€‚ã€ä¹‹æŽ¨æ—¢è¢«æ‹˜ä¿‚,上ä¸èƒ½å…·ç–å¥èž æœå»·ï¼Œä¸‹ä¸èƒ½å¯«æ›¸é‚€äººå‹¸è§£ï¼Œåœ¨æ™‰æ–‡å…¬ä¹Ÿä¸çŸ¥ä¹‹æŽ¨åœ¨æ–¼ä½•處。倒是åŒé›£äº”äººä¸­ä¸€äººä¸ è¦‹ä¹‹æŽ¨å‡ºå±±ï¼Œæœå»·åˆä¸å•他下è½ï¼Œç§å¿ƒå分想慕,ä¸è‚¯ç”˜å¿ƒï¼Œé€ ä¸‹ä¸€é¦–å››è¨€é„™ä¿šä¹‹å¥ ï¼Œè²¼æ–¼å®®é–€ï¼Œæš—æš—æ‰“å‹•æ–‡å…¬æ„æ€ã€‚詩曰:『有é¾çŸ¯çŸ¯ï¼Œé “失其所。五蛇從之,周æµå¤© 下。 é¾é£¢ä¹é£Ÿï¼Œä¸€è›‡å‰²è‚¡ã€‚é¾è¿”於淵,安其壤土。四蛇入穴,皆有處所。一蛇無穴,號於 中野。ã€ä¸€æ™‚間宮門傳誦,å¥èžæ–‡å…¬ã€‚ 文公惶愧ä¸å·²ï¼Œé‚å–šé­é®¤é訪之推下è½ã€‚之推身已被係,安得出來?é­é®¤æ˜¯å€‹æ­¦å¤«ï¼Œ 那裡è€ç…©çµ‚æ—¥å„è™•æœæ±‚,æ³ä¸”綿竹之山七百里開闊,實難蹤跡。å»ç®—計é“:『我四下 裡放起ç«ä¾†ï¼Œç‡’得急了,怕他ä¸å¥”將出來ï¼ã€æ­¤æ™‚ä¹ƒæ˜¯åˆæ˜¥å¤©æ°£ï¼Œå±±ä¸Šè‰æœ¨å°šæ˜¯ä¹¾æž¯ 的,順著風勢教人舉ç«ï¼Œä¸€éœŽæ™‚漫天漫地å·å°‡èµ·ä¾†ã€‚那知之推看見四下ç«èµ·ï¼Œå¿ƒçŸ¥é­ 鮤訪求蹤跡,爭奈åšäº†å€‹è—¤çºèžƒèŸ¹ã€è‰ç¸›åœ˜é­šï¼Œä¸€æ™‚出頭ä¸å¾—。å³ä½¿é‡è‘—é­é®¤ï¼Œç£¨æ»… 得䏿ˆå† è£³ä¸­äººé«”é¢ï¼Œä¸€æ™‚å¿¿æ¨åœ¨å¿ƒï¼Œä¸å¦‚速死為快ï¼å› è€Œä¹˜è‘—石æ°ç¡ç†Ÿï¼Œä¹Ÿå°±æ”¾ä¸€ 把無情ç«ä¾†ã€‚é‚£ç«å»ä¹Ÿåˆ©å®³ï¼Œèµ·åˆä¸éŽå¾®ç…™è£Šè£Šï¼Œæ”ªè‘—石罅巒光,在山間ä½ä¹…çš„é‚„ä¸ è¦ºå¾—ã€‚æœªå¹¾ï¼Œç«å‹¢é€ä¸Šæ¨¹æžï¼Œæƒ¹è‘—鬆油æŸç¯€ï¼Œå› é¢¨ç…½ç«ï¼Œç«ç†¾é¢¨ç‹‚,從空舒å·ï¼Œå°±åœ° 亂滾將來。一霎時,百é“金蛇昂頭擺尾,åƒç¾¤èµ¤é¦¬ç¸±é¬£é•·å˜¶ã€‚å››å£å»‚å—¶å—¶å­å­ä¹‹è²å‹ 似元宵爆竹,åŠå¤©è£¡é¨°é¨°é–ƒé–ƒä¹‹ç‡„䏿¸›ä¸‰æœˆå’¸é™½ã€‚逃出來的ç‹ç‹¸ï¼Œè·³ä¸å‹•的麂鹿,都 æˆè‚‰çˆ›çš®ç„¦ï¼›å«ä¸éŸ¿çš„鴉鷹,飛ä¸å‹•的鸞鶴,盡是毛摧羽çˆã€‚此時石æ°ä¸Šå¤©ç„¡è·¯ï¼Œå…¥ 地無門,奔å‰ä¸èƒ½ï¼Œé€€å¾Œä¸å¾—,漸漸四下緊逼將來,就把之推一把抱定說é“:『此後 å†ä¸å¦’了ï¼ã€å»ä¹Ÿæ‚”之晚矣。那知石æ°è¦‹ç«å‹¢é€¼è¿‘,絕ä¸è‘—忙,åªé¡˜èˆ‡ä¹‹æŽ¨ç›¸æŠ±ç›¸åŽ ï¼Œæ¯«ç„¡é€€æ‚”ï¼Œæ•…æ­¤ç«å‹¢é›–狂,介å­å¤«å¦»åˆ°åº•安然ä¸å‹•。略ä¸å¤šæ™‚,之推與石æ°ä¿±æˆç° 燼。後來é­é®¤æœå±±ï¼Œçœ‹è¦‹å…©å€‹ç‡’æ­»å±éª¸ï¼Œæ–¹æ›‰å¾—ä¹‹æŽ¨å¤«å©¦å·²è‡ªç›¡äº†ã€‚æ­£è¦æ”¶å–骸骨, ä¸­é–“å°šæœ‰ä¸€å †é¤˜ç«æœªç†„。é­é®¤ä»”細上å‰çœ‹æ™‚,å»åˆä¸é’ä¸ç´…,ä¸ç´«ä¸ç¶ ï¼Œä¸€åœ˜é¬¼ç«ç›¸ 似,真也奇異。忙教左å³å°‡é‚£ç‡’ä¸éŽçš„æ¨¹æžæ’¥é–‹çœ‹æ™‚,乃是斗大一塊éµåµçŸ³æ»¾ä¾†æ»¾åŽ» 。那ç«å…‰äº¦æ¼¸æ¼¸å¾®äº†ï¼ŒçŸ³å­ä¸­é–“å»åˆæ”¾å‡ºä¸€é“黑氣,上沖霄漢,風å¹ä¸æ–·ã€‚é­é®¤åŒä¸€ 伙人見得æèˆ¬ä½œæ€ªï¼Œå³å¿™å¯«äº†ä¸€é“本章,把此一塊寶è²é€²ä¸Šæ–‡å…¬ï¼Œå¤§ç•¥èªªä¹‹æŽ¨é«˜éš±ä¹‹ 士,ä¸é¡˜å…¬ä¾¯ï¼Œè‡ªç”˜ç„šæ­»ã€‚ç´€è¼‰ä»–ç„šç‡’ä¹‹æ™‚ï¼Œæ­£æ˜¯æ¸…æ˜Žç¯€å‰ä¸€æ—¥ã€‚æ–‡å…¬å¿ƒä¸­æƒ»ç„¶ï¼Œå³ ä¾¿é£å®˜è¨­ç¥­ä¸€å£‡ï¼Œæœ›ç©ºé™å¥ ï¼Œåˆå‘½ä¸‹åœ‹ä¸­ï¼Œäººå®¶é–€é¦–ä¿±è¦æ’柳為記,ä¸è¨±èˆ‰ç«ï¼Œåªè¨± åƒäº›éš”夜冷食。至今傳下一個ç¦ç…™å¯’食的故事。 那塊寶è²ä¹Ÿåªé“甚麼活佛ã€ç¥žä»™ä¿®ç…‰æˆçš„金剛èˆåˆ©å­ä¸€æ¨£ï¼Œå¿™æ•™å¾Œå®®å¨˜å¨˜ã€å¦ƒå¬ªå¥½å¥½ æ”¶è—ã€‚é‚£çŸ¥é€™ç‰©å»æ˜¯ç¦èƒŽï¼Œè‡ªå¾žé€²å®®ä¹‹å¾Œï¼Œäººäººä¸ç¦ï¼Œå€‹å€‹åƒå·®ã€‚後來文公çœå¾—此物 在內作祟,無法解禳。 直到週天王è€åº«ä¸­ï¼Œè«‹å‡ºåŽå¦ƒå‚³ä¸‹ä¾†ç™¾éŠé™é­”破妒金剛寶錘,當中一下將來,打得粉 èŠ±é›¶ç¢Žï¼Œæ¼«å¤©å¡žåœ°åŒ–ä½œè¬æ–›å¾®å¡µï¼Œè‡³ä»Šæ•£åœ¨æ°‘間,這黑氣常時發ç¾ã€‚此是外傳,ä¸åœ¨ 話下。且說那石æ°è‡ªç¶“大ç«é€¼è¿‘之際,抱著耿耿英éˆï¼Œå¾žé‚£çƒˆç‡„之中一把扭定了介之 推,走闖到上å¸é§•å‰ï¼Œå¤§è²è¨´èªªå…¶å¾žå‰å¿ƒäº‹ã€‚上å¸å¿ƒè£¡ä¹Ÿæ›‰å¾—妒婦罪孽éžè¼•,但守著 丈夫一åä¹å¹´ï¼Œå¿ƒé ­ç©æ¨ä¸€æ™‚也便泯滅ä¸å¾—。é©å€¼æœ‰ä¸€ç­æ•£èб仙女åˆåœ¨æ®¿å‰ï¼Œæ‡¼æ†ä»– 兩個夫婦都有ä¸å¾—å·²ä¸€ç‰‡è¡€èª ï¼Œåœ¨ç”Ÿä¸æ›¾å—得文公所å°ç¶¿ä¸Šä¹‹ç”°ï¼Œæ­»å¾Œä¹Ÿæ•™ä»–å¤«å¦»å— äº†ç¶¿åœ°è¡€é£Ÿã€‚ä½†æ˜¯å¦’å¿ƒåˆ°åº•ä¸åŒ–ï¼Œå‡¡æœ‰éŽæ°´çš„婦人,都ä¸å®¹ä»–畫眉æ½ç²‰ã€å¤§è¢–長衫, ä¿±è¦æ”¹æ›è£æŸã€‚那男人到廟裡看的,也ä¸è¨±èªªçŸ³å°¤å¥¶å¥¶é¢ç›®è®Šå¾—醜惡ã€ç”Ÿå‰éŽå¤±ã€‚ 但有奉承奶奶幾å¥ã€æ•¸è½ä¹‹æŽ¨å¹¾å¥çš„,路上俱得平安順利。 近日有個鄉間婦人,故æ„妿‰®å¦–妖嬈嬈渡水而éŽï¼Œå»ä¸è¦‹ç”šéº¼é¡¯æ‡‰ã€‚ 此是石奶奶å¶ç„¶èµ´æœƒä»–出,ä¸åŠå ¤é˜²ï¼ŒéŒ¯å¤±çš„äº‹ã€‚é‚£çŸ¥é€™å©¦äººæ„æ°£æšæšï¼Œèµ°åˆ°å»Ÿè£¡è³£ 嘴弄脣,說é“:『石奶奶如今也ä¸éˆäº†ï¼Œæˆ‘如此打扮,端的平安éŽäº†æ¸¡ä¾†ã€‚ã€èªªæœªç•¢ å£ï¼Œé‚£ç­æ‰‹ä¸‹çš„幫妒將帥ç«é€Ÿå ±çŸ¥ï¼Œä¸€éœŽæ™‚狂風大作,把那婦人平空å¹å…¥æ°´è£¡æ·¹æ­»äº† 。查得當日立廟時節,之推夫婦原是衣冠齊楚併肩å的,為因這事平空把之推塑åƒå¿½ ç„¶æ”¹å‘æœè‘—å·¦å´å了。地方ä¸å®‰ï¼Œæ”¹å¡‘正了,ä¸ä¹…å°±åã€‚å¦‚ä»Šåœ°æ–¹ä¸Šäººç†æœƒå¥¶å¥¶æ„æ€ ï¼Œæ•…æ„塑了這個模樣。此段說話,å»ä¸æ˜¯æˆäº†ç¥žé‚„è¦å¦’的故事麼? è‡³ä»Šé‚£ä¸€é„‰å¥³äººæ°£æ€§æ¥µæ˜¯ç²—æš´ï¼Œç”·äººå€‹å€‹å®ˆæ³•ï¼Œä¸æ•¢æ”¾è‚†ä¸€äº›ã€‚ 凡到津å£ï¼Œåªè¦‹é™°é¢¨æ…˜æ…˜ï¼Œæ¨éœ§æ¼«æ¼«ï¼Œéƒ½æ˜¯çŸ³å¥¶å¥¶ç‹ æ¯’英éˆéšœè”½å®šçš„ã€‚å”æ™‚有人到那 裡é€è¡ŒåŸè©©ï¼Œæœ‰ã€Žç„¡å°‡æ•…人酒,ä¸åŠçŸ³å°¤é¢¨ã€ä¹‹å¥ï¼Œä¹Ÿå°±æ˜¯å€‹è­‰äº†ã€‚那幾個後生è½äº† åš·é“:『大奇ï¼å¤§å¥‡ï¼æ–¹çº”那首「é’竹蛇兒ã€çš„è©©å¯è¦‹èªªå¾—ä¸å·®,ä¸å·®ã€‚ã€åˆæœ‰ä¸€å€‹ 說é“:『今日æ­å€‹è±†æ£šï¼Œåˆ°æ˜¯æˆ‘們一個講學書院,天色將晚,å„å„回家,è€ä¸ˆæ˜Žæ—¥å€˜ å†è‚¯è³œæ•™ï¼Œåƒè¬æ—©è‡¨ã€‚晚生們當備壺酒相候,ä¸ä¼¼ä»Šæ—¥è‰è‰ä¸€èŒ¶å·²ä¹Ÿã€‚〠總評《太平廣記》云:『婦人屬金,男å­å±¬æœ¨ï¼Œé‡‘剋木,故男å—制於女也。ã€ç„¶å‰‡å¥³ 妒男懼,乃先天稟來,ä¸åœ¨åŒ–誨æ¢ä¾‹çŸ£ã€‚ 雖然,å­å³ä»¥ç”Ÿå‰‹æŽ¨ä¹‹ï¼Œæœ¨ç”Ÿç«ï¼Œç«èƒ½å‰‹é‡‘;金生水,水åˆç”Ÿæœ¨ã€‚å‰‡ç›¸å‰‹ç›¸æ¿Ÿï¼Œåˆæ˜¯ ç”·å¯åˆ¶å¥³å¦™äº‹ã€‚故天下分å—其氣,所以『妒ã€ã€ã€Žæ‡¼ã€å¾—åŠï¼Œè€Œç†å‹¢å¸¸å¹³ã€‚艾衲é“人 《閑話》第一則就把『妒ã€å­—é—¡ç™¼ï¼Œé ˆçŸ¥ä¸æ˜¯å·¦è¢’婦人,為他增燄也。妒å¯å津,美 å©¦æ˜“è²Œï¼›é¬±çµæˆå¡Šï¼Œå¾Œå®®åƒå·®ã€‚此一種å¯é„™å¯æƒ¡æ™¯è±¡ï¼Œç¸·ç¸·è¨€ä¹‹ï¼Œäººäººåˆ‡é½’傷心,猶 之經å²ä¸­ã€Žå…§å›å­ï¼Œå¤–å°äººã€ã€‚ æ£æ‘©å°äººè™•,ååˆ†è¼æ¯’æ°£æ¦‚ï¼›æ£æ‘©å›å­è™•,å分狼狽情形。究竟正氣常存,奇衷終餒 ,是良å²å…ˆè³¢ä¹‹ä¸€ç•ªå¤§è£œæ•‘也。知此則《閑話》第一åŠå¦’婦,所謂詩首《關罘,書稱 『矨é™ã€å¯ä¹Ÿã€‚ 第二則 范少伯水葬西施 范少伯水葬西施俗語云:『酒逢知己åƒé¾å°‘ï¼Œè©±ä¸æŠ•æ©ŸåŠå¥å¤šã€‚ã€å¯è¦‹é£²é…’也è¦çŸ¥å·± 。若é‡è‘—ä¸çŸ¥å·±çš„ï¼Œå°±æ˜¯åŠæ¯ä¹Ÿé£²ä¸ä¸‹åŽ»ï¼›èªªè©±ä¹Ÿæ€•ä¸æŠ•æ©Ÿï¼Œè‹¥é‡è‘—æŠ•æ©Ÿï¼Œéš¨ä½ èªªåƒ èªªè¬ï¼Œéƒ½æ˜¯è€³èº²é †è½ã€å¿ƒä¸Šå–œæ­¡ï¼Œé‚„åªæé‚£å€‹äººä¸‰è¨€å…©èªžèªªå®Œå°±æŽƒèˆˆäº†ã€‚ å¤§å‡¡æœ‰æ„æ€çš„高人,彼此相é‡ï¼Œèªªç†è«‡çŽ„ï¼Œä¸€å•一答,娓娓ä¸å€¦ï¼›å‡ä½¿å°è‘—æ²’æ„æ€çš„ ,就如滿頭澆栗,一å¥ä¹Ÿä¸å…¥è€³ã€‚å€’æ˜¯é‚£å››æ–¹æ€ªäº‹ã€æ—¥ç”¨å¸¸æƒ…,後生å°å­èžæ‰€æœªèžï¼Œ 最是投機的了。 昨日新æ­çš„豆棚雖有些根苗æžè‘‰é•·å°‡èµ·ä¾†ï¼Œé‚£è±†è—¤é‚„未延得滿,棚上尚有許多空處, 日色曬將下來,就如說故事的,說到è¦ç·Šä¸­é–“尚未說完,剩了許多空隙,終ä¸çˆ½å¿«ã€‚ 如今ä¸è¦æŠŠè©±èªªå¾—煩了。å†èªªé‚£äº›å¾Œç”Ÿï¼Œè‡ªæ˜¨æ—¥è½å¾—許多妒話在肚裡,到家燈下紛紛 çš„åˆå‘家人父å­é‡èªªä¸€éã€‚æœ‰çš„é“æ˜¯èªªè©•話造出來的,未肯真信,也有信é“å¤ä¾†æœ‰é€™ 樣狠妒的婦人,也有åŠä¿¡åŠç–‘的,尚è¦è™•處å•人,å„自窮究。弄得幾個後生心窩潭裡 ã€å¤¢å¯ä¹‹ä¸­ï¼Œé¡›é¡›å€’倒,åªç­‰å¤©äº®å°±è¦å¾€è±†æ£šä¸‹è½èªªå¤è©±ã€‚ 那日色正中,人頭上還未走動。直待日色蹉西,有在市上åšç”Ÿæ„回來的,有在田地上 åšå·¥é–‘空的,漸漸走到豆棚下,å„佔一個空處å下。ä¸å¤šæ™‚,è€è€…也笑嘻嘻的走來, 說é“:『眾ä½å“¥å“¥å»æ—©åœ¨æ­¤ï¼Œæƒ³æ˜¯æ˜¨æ—¥ç´„下,今æœåˆè¦èªªç”šéº¼å¤è©±äº†ã€‚〠後生俱欣欣然é“:『è€ä¼¯ä¼¯ï¼æ˜¨æ—¥åŽŸè¨±ä¸‹çš„ï¼Œæˆ‘å€‘ä»Šæ—¥å‚™äº†é…’é¤šï¼Œè¦è½ä½ èªªå¥½äº›è©±å“© 。但今日ä¸è¦èªªé‚£å¦’婦,弄得我們後生輩é¢ä¸Šæ²’甚光è¼ï¼Œå»è¦èªªå€‹å¥³äººæ‰è‰²å…¼å…¨ï¼Œåˆ 有德性,好好收æˆçµæžœçš„,也讓我們男人燥一燥皮胃。ã€é‚£è€è€…把頭å´äº†ä¸€å´ï¼Œèªªé“ :『天地間也沒有這å全的事,紅é¡è–„命,自å¤çš†ç„¶ã€‚或者有色的未必有æ‰ï¼Œæœ‰æ‰çš„ æœªå¿…有色,有色有æ‰çš„æœªå¿…有德,å³ä½¿æœ‰æ‰ã€æœ‰è‰²ã€æœ‰å¾·çš„ï¼Œå¾Œä¾†ä¹Ÿæœªå¿…å°±æœ‰å¥½çš„çµ å±€ã€‚ä¸‰çš‡ä»¥å‰é ä¸å¯è€ƒï¼Œåªå°±ä¸‰ä»£å¤ã€å•†ã€å‘¨è€Œè¨€ï¼Œç•¶åœ¨èˆˆæ™‚,看來雖有幾個賢è–之 後,那纔ã€è²Œã€å¾·ã€è‰²ä¹Ÿä¸èžæœ‰å…¨å‚™ä¹‹ç¨±ã€‚åŠè‡³äº¡åœ‹ä¹‹æ™‚,æ¯ä»£å‡ºäº†å€‹å¦–物,倒是纔 色兼備的。ã€çœ¾å¾Œç”Ÿèªªï¼šã€Žé‚£èˆˆå¤ç¦¹çŽ‹çš„æ˜¯é‚£ä¸€å€‹ï¼Ÿã€è€è€…é“:『待我慢慢想來。記 得禹王之父,åå«ä¼¯é¯€ï¼Œå¨¶äº†æœ‰èŽ˜æ°çš„女,åå«ä¿®å·±ã€‚çœ‹è¦‹å¤©ä¸Šæµæ˜Ÿè²«æ˜´ï¼Œæ„Ÿå­•而生 了禹王於é“之石ç´é„‰ã€‚那時洪水滔天,禹王娶了塗山æ°åšè¦ªï¼Œæ–¹å¾—四日,因其父親治 æ°´ç„¡åŠŸï¼Œå ¯å¸æŠŠä»–æ®ºåœ¨ç¾½å±±ã€‚è™žèˆœä¿å¥ç¦¹çŽ‹çº”èƒ½å ªä»¥æ²»æ°´ï¼Œå³ä¾¿å‡ºé–€ã€‚在外éŽäº†ä¸€å 三年,自家門首走éŽä¸‰æ¬¡ï¼Œä¸¦ä¸é“是家裡邊,進去看看妻å­ã€‚ 那塗山æ°ä¹Ÿæ›‰å¾—丈夫之性孤å¤ä¹–怪,也並ä¸å‡ºé–€å¤–來看看丈夫。 ä¸å¹¾å¹´é–“,洪水平定,堯å¸è³œç¦¹çŽ‹çŽ„åœ­ï¼Œå‘Šæˆå…¶åŠŸã€‚å¾Œä¾†è™žèˆœæŠŠå¤©ä¸‹äº¦è®“èˆ‡ä»–ï¼Œå¡—å±± æ°åšäº†çš‡åŽï¼Œè±ˆä¸æ˜¯å€‹æœ‰æ‰æœ‰å¾·çš„ï¼Ÿä½†ç•¶æ—¥ä¹Ÿä¸æ›¾æœ‰äººèªªä»–怎的標緻,此正是賢è–之 å›åœ¨å¾·ä¸åœ¨è²Œä¹Ÿã€‚ 後來傳了åå…­ã€ä¸ƒä»£ï¼Œå‚³åˆ°å±¥ç™¸ï¼Œæ˜¯ç‚ºå¸æ¡€ã€‚平生好勇,力敵è¬äººï¼Œå…©æ‰‹èƒ½ä¼¸éµé‰¤ï¼› 貪è™è’淫,傷害百姓。曾去ä¼é‚£è«¸ä¾¯ã€‚有施æ°è¦‹æ¡€çŽ‹ç„¡é“ï¼Œç„¡è¨ˆå¯æ–½ï¼Œæ­¢æœ‰ä¸€å¥³ï¼Œå為妹喜,生得å分美貌,多æ‰å¤šæŠ€ï¼Œå ª 以進ç»ã€‚那桀王果然一見魂迷,無事ä¸å¾žï¼Œç„¡è¨€ä¸è½ã€‚把百姓之財盡數æœç´¢æ”來,如 水用去;將那ç饈百味堆將起來,肉山相似。造下許多美酒,傾在池中,å¯é€šèˆ¹éš»å¾€ 來;兩邊的酒糟疊起æˆå ¤ï¼Œäººåˆ°ä¸Šé¢å¯æœ›å里。凡éŠè¦½è‡³æ­¤ï¼Œä¸Šé‚Šæ‰“一è²é¼“,下邊人 低頭å©åˆ°æ± ä¸­é£²é…’,就åƒç‰›åƒæ°´çš„相似,å«åšç‰›é£²ï¼Œä¸ä¸‹æœ‰ä¸‰åƒé¤˜äººï¼Œå¦¹å–œæ–¹ä»¥ç‚ºæ¨‚ ã€‚å¦‚æ­¤æ·«ç¸±ï¼Œè¬æ°‘å—Ÿæ€¨ï¼Œè™§æ®ºæˆæ¹¯çš‡å¸å‡ºä¾†ï¼ŒæŠŠå¦¹å–œæ®ºäº†ï¼Œæ¡€çŽ‹æ”¾æ–¼å—å·¢ã€‚å¦‚ä»Šæ±Ÿå— å»¬å·žåºœå·¢ç¸£åœ°æ–¹ï¼Œå°±æ˜¯é‚£ç„¡é“之å›çµæžœè™•了。此是第一個女中妖物也。 『å¤çŽ‹çš„å¤©ä¸‹å‚³åˆ°å•†æ™‚ï¼Œå•†æœä»£ä»£ä¹Ÿæœ‰è³¢è–ä¹‹å¾Œï¼Œåªæ˜¯å¹³å¹³å¸¸å¸¸ï¼Œä¹Ÿç„¡æ‰å¾·ä¹‹é¡¯ã€‚ç›´ 傳到二å八代,生一個紂王出來。 ä»–å¤©æ€§è°æ˜Žï¼Œä½œäº‹æ•æ·ï¼ŒåŠ›æ°£å‹‡çŒ›å¯ä»¥æŠµå°çŒ›ç¸ã€‚èªªä¾†çš„è©±éƒ½æ˜¯æ„æƒ³ä¸åˆ°çš„,如有人 欲諫止他,就先曉得把言語æªå¡žåœ¨å…ˆï¼Œäººå»é–‹å£ä¸å¾—。自己åšäº†ä¸å¥½çš„äº‹ï¼Œä»–å»æœ‰ç„¡ 數巧言æªå¡žéŽäº†ã€‚ 終日興工動作,åšé‚£è¼¿é¦¬å®®å®¤ä¹‹é¡žï¼Œä»¶ä»¶çª®å·¥æ¥µå·§ã€‚就愛上一個諸侯有蘇æ°ä¹‹å¥³ï¼Œå 喚妲己。寵幸異常,惟其所好,無ä¸ä¾å¾žã€‚ç•¶åˆå¤æ¡€ç„¡é“åšä¸‹çš„酒池肉林也就摹仿他 åšå°‡èµ·ä¾†ã€‚åˆå«å®®ä¸­ç”·å¥³èµ¤é«”而行淫污之事,隨地而åšï¼Œä¹Ÿä¸æ€•觸犯天å¸ã€‚宮中開了 ä¹å¸‚ï¼Œé•·å¤œé…£æ­Œï¼Œæ²ˆæ¹Žä¸æ•£ï¼Œæœæ”¿ä¸ç†ï¼Œå››æ–¹æ€¨æœ›ã€‚妲已看見人民æ¨ä»–,å¨ä»¤ä¸è¡Œï¼Œ 乃é‡ç‚ºåˆ‘闢,以ç«ç‡’紅熨鬥å«äººæ‹¿è‘—,手就爛了;更立一銅柱,炭ç«é€¼ç´…,å«äººæŠ±æŸ± ,立刻焦枯,å為炮烙之刑。還有許多慘刻刑罰,å»é›£ç›¡èªªã€‚那紂王åªè¦å¦²å·±å–œæ­¡ï¼Œ 那裡顧得後來?武王興兵ä¼ç´‚,紂王自焚而死。 å‡ä½¿å¦²å·±æœ‰é€™å€‹ç¾Žè‰²ï¼Œæ²’有這種惡纔,也ä¸åˆ°å¾—é€™åœ°æ–¹ï¼Œæ­¤åˆæ˜¯ä¸€å€‹æœ‰è‰²æœ‰æ‰çš„妖物 證見了。那時武王之父文王是個è–人,就有一個æ¯è¦ªåŽå¦ƒæœ€æ˜¯è³¢å¾·ã€‚其纔åˆèƒ½å…§åŠ©ï¼Œ 並無妒心。文王姬妾甚多,生了百å­ï¼Œæžœç„¶åƒå¤é›£å¾—的。當日就有《關罘ã€ã€ŠéºŸè¶¾ã€‹ 之詩,誦他懿德。尚有人è­åˆºé“:「此詩乃是周公所作,若是周婆決無此言。ã€é€™ä¸ 是è­åˆºåŽå¦ƒï¼Œåªç‚ºå¤©ä¸‹å¦’婦多了故作此語,越顯得åŽå¦ƒä¹‹è³¢ä¸å¯åŠäº†ã€‚到後來周幽王 時,åˆç”Ÿå‡ºä¸€å€‹å¦–ç‰©ï¼Œå»æ¯”å¤å•†çš„æ›´ä¸ç›¸åŒï¼Œå¹¾ä¹ŽæŠŠå‘¨å®¶å…«ç™¾å¹´çš„社稷一時斷é€äº†ã€‚ 這個妖物å«åšè¤’姒。雖則是幽王之後,其來頭å»åœ¨äº”六百年å‰å¤æ™‚就有種了。ã€çœ¾å¾Œ 生é“ï¼šã€Žé€™å€‹å¦–ç‰©æžœæ˜¯å¥‡æ€ªï¼Œæ€Žéº¼å¤æ™‚就種這個ç¦èƒŽåœ¨é‚£è£¡å‘¢ï¼Ÿã€è€è€…é“:『å¤å¾·è¡° 了,褒姒之祖與å¤åŒå§“,那時變作二é¾é™æ–¼çŽ‹åº­ï¼Œä¹ƒä½œäººè¨€ï¼Œã€Œæˆ‘ä¹ƒè¤’åœ‹ä¹‹å›ä¹Ÿã€‚〠å¤çŽ‹æ€’è€Œæ®ºä¹‹ï¼Œé‚£é¾å£è£¡å出些津沫來,就ä¸è¦‹äº†ã€‚臣å­è¦‹æ˜¯é¾å出的,å»ç‚ºå¥‡ç•°ï¼Œ 就盛在水桶之內,å°éŒ®åœ¨å¯¶è—庫中。直到周厲王時,到庫中打開桶來看時,那津沫就 地亂滾,直入宮中,撞到幼女身å‚,就ä¸è¦‹äº†ã€‚此女纔得å二三歲,有了娠孕。是時 民間有個謠言é“:『壓弧箕æœï¼Œå¯¦äº¡å‘¨åœ‹ã€‚ã€å¾Œä¾†é„‰é–“ä¸€å€‹ç”·å­æ‰‹æ‹¿å±±æ¡‘之弓,一個 婦人手拿è‰çµä¹‹è¡£ï¼Œä¸Šè¡—來賣,市人見他應著é‡è¬ ï¼Œå°±è¦å ±å®˜ï¼ŒäºŒäººæ…Œå¿™é€ƒç«„。é©ç„¶ 撞著有孕的童女,生下一個女兒,棄於é“å‚。那å°å¤«å©¦æ†æ†«ä»–,收養在懷,逃入褒國 ã€‚å¾Œå€¼è¤’å›æœ‰ç½ªä¿‚æ–¼ç„中,é‚將此女ç»ä¸Šã€‚周王見他美貌,收在後官。舉止端莊,並 ä¸é–‹å£ä¸€ç¬‘。若論平常ä¸è‚¯ç¬‘çš„å©¦äººï¼Œæ­¤æ˜¯æœ€å°Šé‡æœ‰å¾·çš„了。那知這個ä¸ç¬‘ï¼Œå»æ˜¯ç›¸ 關甚大,得他一笑,正是傾國傾城之笑,故此一時ä¸èƒ½é½ç„¶å•Ÿé½’ã€‚å‘¨å¹½çŽ‹åƒæ–¹ç™¾è¨ˆå¼• 誘著他,褒姒全然ä¸å‹•。那時周王國中有令,凡有外寇之警,舉起烽臺上號ç«ç‚ºä¿¡ï¼Œ éƒ½ä¾†æ•‘æ‡‰ã€‚å¹½çŽ‹ç„¡ç«¯å»æ”¾ä¸€æŠŠç©ºç«ï¼Œå„路諸侯來時,å»ç„¡å¯‡è­¦ã€‚ 褒姒見哄動諸侯撲了一空,ä¸è¦ºå•žç„¶ä¸€ç¬‘。後來犬戎入犯,兵臨城下,幽王著急,燒 盡了烽臺上ç«ï¼Œé‚£è«¸ä¾¯åªç•¶æˆ²è€ï¼Œéƒ½ä¸ä¾†äº†ã€‚幽王é‚被犬戎所殺。å»ä¸åˆæ˜¯ä¸€å€‹äº¡åœ‹ 的妖物麼?如此看來,纔全德備的婦人委實ä¸å¤§è¦‹æœ‰ã€‚ã€çœ¾å°‘年接å£é“:『亡國之妖 顛倒æœç¶±ï¼Œçª®å¥¢æ¥µæ¬²ï¼Œè‡³ä»Šäººèªªå°‡ä¾†ï¼Œå€‹å€‹ç—›æ¨ï¼Œäººäººéƒ½æ˜¯æ›‰å¾—çš„ã€‚æ˜¨æ—¥å‰æ‘ä¸­åšæˆ² ,我看了一本《浣紗記》,åšå‡ºè¥¿æ–½ä½å±…薴蘿山下,范大夫å‰è¨ªå¾Œè¨ªï¼Œå…§ä¸­å”±å‡ºä¸€å¥ ,說「江æ±ç™¾å§“,全是賴å¿å¿ã€ã€‚å¯è¦‹è¶Šåœ‹å¾©å¾—興霸,那些文官武將全然無用,那西 施倒是第一個功臣。後來看到åŒèŒƒå¤§å¤«å…©å€‹æ³›æ¹–而去,人都說他俱æˆäº†ç¥žä»™ã€‚é€™å€‹å» ä¸æ˜¯çº”色俱備ã€åˆæˆåŠŸæ¥­ã€åˆæœ‰å¥½å¥½çµæžœçš„麼?ã€è€è€…é“ï¼šã€Žæˆ²æ–‡é›–å‰‡å¦‚æ­¤èªªï¼Œäººå» å¦æœ‰ä¸€å€‹æ„æ€ã€‚看見多少功æˆåé‚的人é‡è‘—猜忌之王,ä¸è‚¯è¦‹æ©Ÿè€ŒåŽ»ï¼Œå¦‚æ–‡ç¨®å¤§å¤«ï¼Œ ç•¢ç«Ÿç‚ºå‹¾è¸æ‰€æ®ºã€‚æ•…æ­¤å‡èªªä»–æˆä»™ï¼Œä¸éŽè¦æ‰“動天地間富貴功å的人,處在盛滿之地 ,åšå€‹æ€¥æµå‹‡é€€çš„æ¨£å­ï¼Œé‚£æœ‰çœŸæ­£æˆä»™çš„é“ç†ï¼Ÿæˆ‘在一本野å²ä¸Šçœ‹è¦‹çš„å»åˆä¸åŒã€‚ 說這西å­ä½å±…若耶溪畔,本是一個æ‘莊女å­ã€‚那范大夫看見富貴家女人打扮,調脂弄 粉,高髻宮å¦ï¼Œå§”實平時看得厭了。一日山行,忽然é‡è‘—æ·¡é›…æ–°å¦æ³¢ä¿å¥³å­ï¼Œå°±é“標 緻之極。其實也åªå¹³å¸¸ã€‚åˆè¦‹ä»–å°é–€æ·±å··è¨±å¤šä¸‘é ­æ€ªè…¦çš„æ±æ–½åœèšå·¦å³ï¼Œç¨æœ‰ä»–å¹´ç´€ ä¸å¤§ä¸å°ï¼Œèˆ‰æ­¢é–‘é›…ï¼Œåˆæ›‰å¾—å¹¾å¥åœ¨è¡Œèªªè©±ï¼Œæ€Žéº¼èŒƒå¤§å¤«ä¸å°±å‹•心?那曾見未室人的 閨女就曉得與人施禮ã€èˆ‡äººèªªè©±ï¼Ÿ èªªå¾—æŠ•æ©Ÿï¼Œå°±åˆ†ä¸€ç¸·æ‰€æµ£ä¹‹ç´—è´ˆä½œè¡¨è¨˜ï¼Ÿåˆæ›‰å¾—甚麼惹害相æ€ç­‰èªžï¼Ÿä¸€åˆ¥ä¸‰å¹´ï¼Œåœ¨åˆ¥ 人也丟在腦後多時了,那知人也ä¸åŽ»å¨¶ä»–ï¼Œä»–ä¹Ÿä¸æ›¾å«äººï¼Œå¿ƒè£¡é‚害了一個癡心痛玻 åŠè‡³ç›¸é€¢ï¼Œè©±åˆ°é‚£åœ‹å‹¢å‚¾é ¹ï¼Œé ä»–åšäº‹ï¼Œä»–也就呆呆的跟他走了。å¯è¦‹å¹³æ—¥ä»–在山裡 ä½è‘—ï¼ŒåŽŸæ²’ç”šéº¼çˆ¶æ¯æ‹˜ç®¡å¾—他,è¦èˆ‡æ²’識熟的男å­èªªè©±å°±èªªå¹¾å¥ï¼Œè¦éš¨æ²’下è½çš„ç”·å­ èµ°è·¯ä¹Ÿå°±èµ°äº†ã€‚ 一路行來,混混帳帳,到了越國。學了些å¹å½ˆæ¬²èˆžï¼Œé¦¬æ‰çš„伎倆,é€å…¥å³é‚¦ã€‚å³çŽ‹æ˜¯ 個蘇州空頭,åªè¦è‚‰è‚‰éº»éº»å¥‰æ‰¿å¹¾å¥ï¼Œé‚£å·¦å³è¨±å¤šå¹«é–‘篾片,ä¸ä¸Šä¸‰åˆ†çš„就說å分, ä¸ä¸Šäº”六分就說åƒå¤ç½•見的了。æ³ä¸”伯嚊嚭暗裡得了許多賄賂,他說好的,誰敢ä¸åŠ  æ„幫襯?å³çŽ‹æ²’ä¸»æ„的,眾人贊得æ˜äº†ï¼Œè‡ªç„¶ä¸€è¦‹ç•™å¿ƒï¼Œå¦‚å¾—ç寶。å¤èªžäº‘:「士為 知己者死,女為悅己者容。ã€é‚£å³çŽ‹æ—¢å¾…ä½ å¦‚æ­¤æ©æƒ…,åªè©²å¾žä¸­èª¿åœé‚£è¶ŠçŽ‹æ­¸åœ‹ï¼Œå…© ä¸ç›¸çŠ¯ã€‚ 䏀颿‰¶æŒå³çŽ‹èˆˆäº›éœ¸æ¥­ï¼Œå‰ä¸è² è¶Šï¼Œå¾Œä¸è² å³ï¼Œé€™ä¾¿çœŸæ˜¯åƒè¼‰å¥‡å‚‘女å­ã€‚何苦先許身 於范蠡,後åˆç•¶åšéµé…’é€èˆ‡å³çŽ‹ã€‚å¼„å¾—å³çŽ‹ä¸ç†æœæ”¿ï¼Œä»Šæ—¥éŠçµï¼Œæ˜Žæ—¥å½©è“®ï¼Œè²»äº†ç™¾ 姓貲財,造臺鑿池,æ±å¾è¥¿è¨Žï¼Œè¬æ°‘皆怨。兵入內地,覷便抽身,把那個共枕åŒè¡¾è¿½ æ­¡è²·ç¬‘çš„çŸ¥å·±æ‹‹åœ¨æ±æ´‹å¤§æµ·ã€‚你铿­¤å¿ƒå¦‚何éŽå¾—?希圖回到越國,è¶è‘—åŠè€ä¸°å§¿ï¼Œé‚„ è¦é€žå‡ºè¨±å¤šåŠŸå‹žï¼Œè¨±å¤šå¬Œæ„›ï¼Œæ›´è¦é§•出越國夫人之上,å—用ä¸äº†ã€‚那知范大夫一腔心 事也是僥倖æˆåŠŸã€‚è¬ä¸€å¤«å·®æ˜¯å€‹ç²¾ç´°çš„人,ä¸è½ä¼¯åš­é‚ªè¨€ï¼Œä¿¡è‘—ä¼å“¡çš„好語,也ä¸è¦‹ 得這個敗壞。åˆè¬ä¸€æš—裡圖謀,那勾è¸ä¸€æœå‘½çŸ­ï¼Œå年生èšï¼Œå年教訓,雖有些工夫 也ä¸åˆ°å¾—這樣圓æˆã€‚æ³ä¸”陰謀詭秘,有許多ä¸å¯å‘Šäººçš„è©±é ­ï¼›ä¸‹è³¤å‘æ±¡ï¼Œæœ‰è¨±å¤šä»¤äºº ä¸å¿è¦‹çš„光景。到那å³åœ‹æ®˜ç ´ä¹‹æ—¥ï¼ŒèŒƒå¤§å¤«å¹´ç´€ä¹Ÿæœ‰é™äº†ï¼Œææ€•西å­å›žåœ‹åˆæŠŠèˆŠæ—¥å¥— å­ï¼Œæ–·é€è¶Šåœ‹ï¼Œåˆææ€•越王復興霸業猛然想起平日勾當,有些ä¸å…‰ä¸æ˜Žï¼Œè¢«äººç¬‘話。 æ³ä¸”èŒƒè ¡å‡ºèº«ï¼Œåˆæ˜¯æ¥šä¹‹ä¸‰æˆ¶äººæ°ï¼Œå³ä»Šå³æ±Ÿç¸£åœ°æ–¹ï¼ŒåŽŸè‡ªå§‘è˜‡å±¬ç¸£ã€‚ä»¥å³ä¹‹ç™¾å§“為 越之臣å­ï¼Œä»£è¬€å³åœ‹ï¼Œåœ¨è¶Šå‰‡å¿ ï¼Œåœ¨å³å‰‡é€†ã€‚越王雖在æµé›¢é¡›æ²›ä¹‹ä¸­ï¼Œé‚£è‡£å­çš„æœ¬æœª ã€å›è‡£çš„分際,å»å¾žä¾†æ˜¯æ˜Žç™½åœ¨å¿ƒè£¡çš„。到了歸國時節,霸業復興,兵多糧足,別的 俱ä¸åœ¨å¿ƒä¸Šã€‚ 單單隻有這幾個謀國之臣懷著鬼胎,倘或猜忌之主,無心中有些觸犯,一æœè¿½ç©¶ï¼Œæœª å…害了自己的身家。故此陡然發個念頭,尋了一個船隻,åªèªªé£„然物外,æ‰èˆŸäº”æ¹–éŠ çŽ©åŽ»äº†ã€‚é‚£äº”æ¹–ä¹Ÿåªæœ‰ä¸ƒå…«ç™¾é‡Œé–‹é—Šï¼Œé›£é“人蹤跡ä¸åˆ°çš„?後來人都說越王長頸çƒå–™ ,å¯èˆ‡å…±æ‚£é›£ï¼Œä¸å¯èˆ‡å…±å®‰æ¨‚。那知范大夫å¥å¥èªªè‘—自家本相,平日åšå®˜çš„æ™‚節,處 處è—下些金銀寶è²ï¼Œåˆ°å¾Œä¾†å‡å隱姓,å«åšé™¶æœ±å…¬ï¼Œã€Œé™¶æœ±ã€è€…,「逃ã€å…¶ã€Œèª…ã€ä¹Ÿ 。ä¸å¹¾å¹´é–“,æˆäº†è¨±å¤šå®¶è²²ï¼Œéƒ½æ˜¯ç•¶å¹´é€™äº›ç©è“„。難é“他有甚麼指石為金手段麼?那 è¨±æ˜§å¿ƒè…¸ï¼Œåªæœ‰è¥¿å­çŸ¥é“ã€‚è¥¿å­æœªå…å¦å¦–åšå‹¢ï¼Œé€žå³åœ‹å¨˜å¨˜èˆŠæ™‚氣質,籠絡著他。那 范大夫心腸å»åˆèˆ‡å‘æ—¥ä¸åŒäº†ï¼šèˆ‡å…¶æ—¥å¾Œæ´©éœ²ï¼Œè¢«è¶ŠçŽ‹è¿½å°‹èµ·ä¾†ï¼Œä¸è‹¥ä¾èˆŠæ”¾å‡ºé‚£è¬€ 國的手段,åªèªªè«‹è¥¿å­èµ·è§€æœˆè‰²ã€‚è¥¿å­æ™šå¦çº”罷,正待出來舉æ¯å•月,憑弔åƒç§‹ï¼›ä¸ æ–™èŒƒå¤§å¤«æœ‰å¿ƒç®—è¨ˆï¼Œè¦·è‘—å†·è™•ï¼Œå‡ºå…¶ä¸æ„,當胸一推,撲的一è²ï¼Œç›´å¾€æ°´æ™¶å®®è£¡åŽ»äº† 。正是:「åªä»ŠæƒŸæœ‰è¥¿æ±Ÿæœˆï¼Œæ›¾ç…§å³çŽ‹å®®è£¡äººã€‚ã€ã€é‚£å¾Œç”Ÿé“:『è€ä¼¯èªªä¾†å·®çŸ£ï¼é‚£ 范大夫湖心中åšçš„事,有誰作證?你å»èªªä»–如此?ã€è€è€…é“ï¼šã€Žæˆ‘ä¹Ÿä¸æ˜¯è­‰è¦‹ï¼Œæˆ‘也 ä¸è‚¯èª£ä»–。å»è¦‹ã€Šé‡Žè‰‡æ–°èžã€‹æœ‰ã€ŠèŒƒå°‘ä¼¯æ°´è‘¬è¥¿æ–½å‚³ã€‹ï¼Œã€ŠæœæŸ˜æž—é›†ã€‹ä¸­æœ‰ã€Šæ´žåº­å› ä»£è¥¿å­ä¸Šå†¤æ›¸ã€‹ä¸€æ®µï¼Œä¿±æ˜¯è­‰è¦‹ã€‚至今å³åœ°æœ‰è¥¿æ–½ç£ã€è¥¿æ–½æµœã€è¥¿æ–½é¦™æ±—æ± ã€è¥¿æ–½éŒ¦ å¸†æ¶‡ã€æ³›æœˆé™‚,水中有西å­è‡‚ã€è¥¿æ–½èˆŒã€è¥¿æ–½ä¹³ï¼Œéƒ½åœ¨æ°´è£¡ï¼Œå»ä¸åˆæ˜¯ä»–的證見麼? ä»–è‹¥ä¸è‘¬åœ¨æ°´è£¡ï¼Œç•¶æ™‚范大夫何必改å鴟夷å­ï¼Ÿé´Ÿè€…,梟也。夷者,害也。西施一å 夷光。害了西施,故å鴟夷。戰國時孟å­ä¹Ÿèªªè¥¿å­è’™ä¸æ½”,人皆掩鼻而éŽã€‚就是葬在 æ°´è£¡ï¼Œé‚£ä¸æ½”之åé‚„æ´—ä¸å¹¹æ·¨å“©ï¼ã€æœ‰ä¸€äººé“:『兄言之謬矣ï¼å¾žå¤ä¾†è´Šç¾Žè¥¿æ–½çš„, 直把個天地間至妙絕佳的抗州一個西湖比他。蘇æ±å¡é¡Œä¸€é¦–è©©é“ï¼šã€Œæ°´å…‰ç€²ç©æ™´æ–¹å¥½ ,山色空濛雨亦奇。欲把西湖比西å­ï¼Œæ·¡å¦æ¿ƒæŠ¹ç¸½ç›¸å®œã€‚ã€å¦‚æ­¤èªªä¾†ï¼Œé›£é“æ±å¡ä¸å¦‚ ä½ çš„è¦‹è­˜ä¸æˆï¼Ÿã€è€è€…é“:『這å¡è€çœ‹å¾—西湖景致好了,沒得贊賞,å¶ç„¶æŠŠå€‹å¤ä¾†ç¾Ž è‰²çš„å©¦äººæ¯”æ–¹ï¼Œå…¶å¯¦ä¸æ˜¯è´Šè³žè¥¿å­ã€‚å…¶ä¸­é‚„æœ‰ä¸€å€‹æ„æ€ï¼Œè‡³ä»Šé‚„沒一個人åƒé€é€™æ®µé“ ç†ï¼šå¤©ä¸‹çš„æ¹–陂è‰è•©ï¼Œç‚ºå„²è“„é‚£è¬å±±ä¹‹æ°´ï¼Œè™•處年年,å»ç”Ÿé•·è¨±å¤šé£Ÿç‰©æ±è¥¿ï¼Œæˆ–é­šè¦ ã€è±èŠ¡ã€è‰æŸ´ã€è—¥æä¹‹é¡žï¼Œå°±è¿‘的貧窮百姓é ä»–衣食著活。唯有西湖,就在æ­å·žéƒ¡åŸŽ 之外,山明水秀,兩峰三竺高æ’雲端;裡外六橋,掩映桃柳;庵觀寺院åŠç¹žå±±éœå®¤ï¼Œ 廿œ‰åƒé¤˜ï¼›é…’摟臺榭,比鄰相接;畫船蕭鼓,æ™å¤œç„¡ä¼‘。無論外路來的客商ã€ä»•宦, 到此處定è¦ç ´è²»äº›èŠ±é…’ä¹‹è³‡ã€‚ 那本地ä¸å‹™æœ¬æ¥­çš„æ¸¸èŠ±æµªå­ï¼Œä¸çŸ¥åœ¨å…§å«–賭蕩費多多少少。一個æ­å·žåœ°æ–¹è¦‹å¾—如花似 éŒ¦ï¼Œå®¶å®¶éƒ½æ˜¯ç©ºè™›ã€‚ç©¶å…¶åŽŸä¾†ï¼Œéƒ½æ˜¯è¥¿æ¹–é€¼è¿‘éƒ¡åŸŽï¼Œæ¯æ—¥äººå®¶å­å¼Ÿå¤§å¤§å°å°èµ°åˆ°æ¹–上 ,無ä¸ç ´è²»å¹¾è²«éŒ¢éˆ”。å‰äººå°‡è¥¿æ¹–比西å­è€…,正說著西湖無益於æ­åŸŽï¼Œå»èˆ‡è¥¿æ–½å…·é‚£ 傾國傾城之貌有害å³åœ‹æ„æ€ä¸€æ¨£ã€‚如今人å»é‡äº†æ±å¡çš„纔åï¼Œæ„›çœ‹äº†è¥¿æ¹–æ™¯è‡´ï¼Œä¸æ›¾ åƒæ‚Ÿåˆ°é€™å€‹æ‰€åœ¨æ•…è€³ã€‚åªæœ‰ä¸€å€‹æŽ¨å®˜èƒ¡ä¾†æœæ¹–心寺柱上題一å°è¯ï¼Œå»é“ç ´æ­¤æ„云:四 季笙歌,尚有窮民悲夜月;六橋花柳,渾無隙地種桑麻。 其餘題詠甚多,都是外處往來éŠå®¢æš«æ™‚æµå¯“,無éžå½¢å®¹è¥¿æ¹–佳妙之處,還è¦å«Œæ†Žé‚£èƒ¡ 推官é“學氣哩。還有個å°å°æ•…事說與你們è½äº†ã€‚è¿‘æ—¥å³ä¸­æœ‰å€‹å£«å¤«ï¼Œå®¦æ¸¸ç¶“éŽè¶Šåœ°ï¼Œ 特特買舟é¸é¨Žï¼Œç›´åˆ°è–´è˜¿å±±é‚Šã€‚看見山明水秀,游觀ä¸ç›¡ï¼Œä¾¿å“¼å“¼çš„åšèµ·è©©ä¾†ï¼Œè´Šå¾— 西å­ä¸çŸ¥åˆ°ç”šéº¼å¤©ä»™åœ°ä½ï¼Œé‚„è¦å°‹å€‹åª’人é¸è˜å¥³å­ï¼Œä¾ç¨€æ²¾äº›è¥¿å­é¢¨å‘³å›žåŽ»ã€‚æ­£åœ¨è¨ª å•,那知走出一個鄉è€ä¾†ï¼Œèªªå¾—極妙:「你é“è¥¿å­æ˜¯å€‹åœ‹è‰²å¤©é¦™ï¼Œç•¶åˆä¹ƒæ˜¯æ•地一個 è€å¤§å«ä¸å‡ºé–€çš„æ»¯è²¨ï¼Œå¶ç„¶æˆäº†è™›å。若果然絕色奇姿,怎麼肯é€åˆ°ä½ ä¸‹è·¯å—用ï¼ã€ 那士夫一個沒趣,å³åˆ»èµ·èº«åŽ»äº†ã€‚ã€çœ¾å¾Œç”Ÿæ‹æ‰‹ç¬‘é“:『這è€è€ï¼Œå€’有志氣佔高地步 ,也çœå¾—蘇州人è­ç¬‘ä¸äº†ã€‚〠正待走動,欲將蔬酒排下,åƒå€‹ç›¡èˆˆã€‚抬頭忽見天上çƒé›²è¥¿å¢œï¼Œä¼¼æœ‰ã€Žå±±é›¨æ¬²ä¾†ã€ä¹‹ ç‹€ï¼Œä¿±å„æ¶åœ°æ‹±æ‰‹ï¼Œç¨±è¬è€Œæ•£ã€‚ 總評人知å°èªªæ˜‰æ–¼å”人,ä¸çŸ¥å…¶æ–¼æ¼†åœ’莊å­ã€é¾é–€å²é·ä¹Ÿã€‚ 《莊å­ã€‹ä¸€æ›¸å¯“言åä¹ï¼Œå¤§è‡³éµ¾éµ¬ï¼Œå°åŠé¶¯é³©ã€é·¦é·¯ä¹‹å±¬ï¼Œæ•£æœ¨é³´é›ï¼Œå¯å–»é¤Šç”Ÿï¼›è§£ 牛賙輪,無éžå¦™ç¾©ã€‚甚至詼諧賢è–,談笑å¸çŽ‹ï¼Œæ­¤æ¼†åœ’å°èªªä¹Ÿã€‚å²é·åˆ‘è…著書,其中 《本紀》ã€ã€Šä¸–家》ã€ã€Šè¡¨ã€‹ã€ã€Šæ›¸ã€‹ã€ã€Šåˆ—傳》,固多正言å®è«–,燦若日星,大如 江海,而內亦有é‡ç‰©æ‚²å–œã€èª¿ç¬‘å‘»åŸï¼Œä¸ç¨æ»‘稽一傳也。如《å°ç¦ªã€‹ï¼Œå¦‚《平準》, 如《酷å》ã€ã€Šæ¸¸ä¿ ã€‹ç­‰ç¯‡ï¼Œæˆ–為諷è­ï¼Œæˆ–為嘲謔,令人è‚脾ã€çœ‰é °ä¹‹é–“別有相入相 化而ä¸è¦ºã€‚蓋其心先以正å²è®€ä¹‹ï¼Œè€Œä¸æ•¢ä»¥å°èªªåŠ ç„‰ä¹Ÿã€‚å³ç«‡ç”°ä¹‹ç›¸è»‹ï¼Œä½•異傳奇? 而《å¥è¸ä¸–家》後,附一段陶朱;莊生入楚喪å­ä¹‹äº‹ï¼Œæ˜Žæ˜Žå°èªªè€³ã€‚æ•…æ›°å°èªªä¸æ˜‰æ–¼ å”人也。艾衲é“人《閑話》二則日『水葬西施ã€ï¼Œæ­¤çœŸçœŸå”çªè¥¿æ–½çŸ£ï¼ç„¶çީ其åºä¸‰ä»£ 事,皆讀å²è€…所習曉,å»è’¼èŒ«èŠ±ç°‡ï¼Œè±¡æ–°èžè€Œä¸åƒèˆŠæœ¬ã€‚至於西施正傳,乃ä¸å¾‘接著 褒姒,å從他人說浣紗贊美西施,無心襯人,覼覼縷縷,將一åƒå¤ç¾Žå§èªªå¾—å¦‚é„‰é‡Œæ‘ å©¦ï¼Œçµ•ä¸–è¬€å£«ï¼Œèªªå¾—å¦‚ç©å¹´æ•™å”†ã€‚三層翻é§ï¼Œä¿±åˆ¥èµ·æ³¢ç´‹ï¼Œä¸ä¼¼ä»–則一å£èªªç«Ÿã€‚解『 鴟夷ã€ã€è§£ã€Žå¤·å…‰ã€ã€æ³¨è¥¿æ¹–è©©ã€è«‡é¸å¥³äº‹ï¼Œçš†çµ•æ–°çµ•å¥‡ï¼Œæ¥µéˆæ¥µè­¦ï¼Œé–‹äººæ™ºè•Šï¼Œç™¼ 人慧光。雖漆園ã€é¾é–€ï¼Œä½•以如此ï¼å”人ä¸å¾—而比之。 第三則 æœå¥‰éƒŽæ®é‡‘倡霸 æœå¥‰éƒŽæ®é‡‘倡霸自那日風雨忽來,å‡é™°ä¸æ•£ï¼Œè½è½åœåœï¼Œç´„有å來日纔見é’天爽朗。 那個種豆的人家走到棚下一看,å»è¦‹è±†è—¤é©Ÿé•·ï¼Œæžè‘‰è“¬é¬†ï¼Œç´°ç´°å°‡è‹—頭一一ç†ç›´ï¼Œéƒ½ 順著繩å­ï¼Œè½ä»–å‘上而去,葉下有許多蚊蟲,也一一æœå‰”乾淨。那些鄰èˆäººå®¶éƒ½åœ¨é–€ 外張張望望,嚷é“:『天色纔晴就有人在豆棚下等說å¤è©±å“©ï¼Œæˆ‘們就去。ã€ä¸å¤šæ™‚å°± 有許多å下,å»ä¸è¦‹é‚£èªªæ•…事的è€è€…。眾人é“:『此è€èƒ¸ä¸­å»ä¹Ÿæœ‰é™ï¼Œæƒ³æ˜¯æ²’得說了 ,è¶è‘—天陰下雨,今日未必來也。ã€å…§ä¸­ä¸€äººé“:『我昨日在一èˆè¦ªè™•è½å¾—一個故事 ,倒也好è½ï¼Œåªæ€•今日說了,你們明日åˆè¦æˆ‘èªªã€‚æˆ‘æ²’å¾—èªªäº†ï¼Œä½ å€‘å°±è¦æŠŠä»Šæ—¥èªªé‚£ è€è€…的說著我也。〠眾人é“:『也ä¸å¿…拘,åªè¦è‚šè£¡æœ‰çš„便說,如當日æ±å¡å­¸å£«ç„¡äº‹åœ¨å®¶ï¼Œé€¢äººä¾¿è¦å•些 æ–°èžï¼Œèªªäº›é¬¼è©±ï¼Œæ˜ŽçŸ¥æ˜¯äººèªªçš„謊話,他也當著謊話è½ã€‚ä¸éŽé¤Šå¾—自家心境éˆè®Šï¼Œå…¶ 實ä¸åœ¨äººçš„說話也。ã€é‚£äººé‚接å£é“:『我正說的就是蘇æ±å¡ã€‚他生在宋æœä»å®—時, åšäº†é¾åœ–閣學士,自å°è°æ˜ŽéŽäººï¼Œå‡¡è§€å¤ä»Šæ›¸å²ï¼Œä¸€ç›®çž­ç„¶ã€‚看見時事紛更,權奸當 é“ï¼ï¼å¦‚王安石「é’è‹—ã€ç­‰äº‹ï¼Œä¹Ÿä¸å˜—è¦æŠŠè©±è­åˆºä»–或åšè©©æ‰“å‹•ä»–ã€‚è°æ˜Žå°–酸處固自 佔了先頭,那身家性命å»å¹²ä¿‚在ä¹åˆ†ä¹é‡ä¹‹ä¸Šã€‚倒ä¸å¦‚嘿嘿癡癡ã€éš¨è¡Œé€éšŠä¾è‘—仕路 上畫個葫蘆,倒得個一路功å,å‰ç¨‹é å¤§ï¼Œé †æºœåˆ°åº•。å¯è¦‹è˜‡æ±å¡åªç‚ºé€™å£ä¸è¬¹æ…Žï¼Œ å—了許多波å’。一日在家çé “ç„¡èŠä¹‹æ¥µï¼Œå»å‘å£ä¸Šé¡Œä¸‹ä¸€é¦–詩來,說é“ï¼šã€Œäººå®¶ç”Ÿå­ è¦è°æ˜Žï¼Œæˆ‘è¢«è°æ˜Žèª¤ä¸€ç”Ÿã€‚但願å¾å…’愚且魯,無ç½ç„¡é›£åˆ°å…¬å¿ã€‚ã€å°±æ˜¯é€™å››å¥è©©ä¹Ÿæ˜¯ è­å˜²ç•¶é“å…¬å¿çš„è©±ï¼Œå»æ˜¯è€è˜‡çš„舊病,ä¸åœ¨è©±ä¸‹ã€‚å¾Œä¾†åˆæœ‰å€‹è€å…ˆç”Ÿæ–¼ä»•途上ä¸è‚¯é€š èžï¼Œå±¢é­ç½·æ–¥ï¼Œçœ‹è¦‹é‚£è°æ˜Žä¼¶ä¿çš„åšäº†å¤§å®˜ï¼Œä½”了便宜,也å‘å£ä¸Šå­¸é‚£æ±å¡é¡Œä¸‹å››å¥ é“:「åªå› è³‡ç¨Ÿæ¬ è°æ˜Žï¼Œå»è¢«è¡£å† èª¤æ­¤ç”Ÿã€‚但願我兒伶且ä¿ï¼Œé‘½å¤©é©€åœ°åˆ°å…¬å¿ã€‚ã€æ­¤ 一首詩似與å¡å…¬ç¿»æ¡ˆï¼Œç„¶è€Œè­èªšç•¶é“亦與å¡è€ç›¸åŒï¼Œåªå¥½ç•¶å€‹æˆ²è¨€ã€‚難é“人家生的兒 å­è°æ˜Žä¼¶ä¿å°±æ˜¯å¥½çš„䏿ˆï¼Ÿä¹Ÿæœ‰ç”Ÿä¾†ä¸è°ä¸ç«£ä¸ä¼¶ä¸ä¿ï¼Œèµ·åˆçœ‹ä¾†æ˜¯å€‹æ³¥åœ˜è‚‰å¡Šï¼Œå¾Œ 來交了時é‹ï¼Œä¸€æœç™¼ä½œèµ·ä¾†ï¼Œåšäº†æŽ€å¤©æ­åœ°äº‹æ¥­ã€æ‹œå°‡å°ä¾¯çš„。譬如三國時有個孔文 èˆ‰ï¼Œå¹´æ–¹åæ­²ï¼Œéš¨è‘—父親到洛陽任所。那時有個å¸éš¸æ ¡å°‰æŽå…ƒç¦®ï¼Œæ¥µæœ‰å頭,大官府 è¦åŽ»è¦‹ä»–ï¼Œç„¡è«–æœ¬å®˜å°Šé‡ï¼Œé‚£é–€å也å分è£è…”作勢,一時難得通報。 å½¼æ™‚æ–‡èˆ‰ä¹ƒåæ­²å°å…’,大模大樣æŒäº†é€šå®¶ç¨±å‘¼çš„å帖,來到æŽåºœé–€ä¸Šï¼Œèªªé“:「我是 æŽåºœé€šå®¶ã€‚ã€é–€å看見å°å°è°ä¿Šå­©å…’,å³èˆ‡é€šå ±ã€‚後來æŽå…¬æŽ¥è¦‹ï¼Œå•é“:「足下與我 那裡通家?ã€é‚£å­”æ–‡èˆ‰ä¸æ…Œä¸å¿™ï¼Œå¾žå®¹å°é“:「昔先人仲尼與尊公伯陽有師å‹ç›¸è³‡ä¹‹ 誼,在下與è€å…ˆç”Ÿå°±æ˜¯å¥•世通家也。ã€è¨±å¤šè³“客在座è½äº†ï¼Œå„å„稱奇。彼時座中有個 陳建,最後方來,æŽå…ƒç¦®å°‡æ­¤è¨€èªªèˆ‡é™³å»ºï¼Œé™³å»ºä¾¿é“ï¼šã€Œå°æ™‚é›–å‰‡è°æ˜Žï¼Œç„¡ä¸äº†äº†ï¼Œ å¤§ä¾†æœªå¿…æžœä½³ã€‚ã€æ–‡èˆ‰æ‡‰è²èªªé“:「看來è€ä¸ˆå°æ™‚å®šæ˜¯è°æ˜Žï¼Œç„¡ä¸äº†äº†çš„äº†ã€‚ã€æ»¿åº§ 之人俱å„笑將起來,稱é“ï¼šã€Œå¦‚æ­¤è°æ˜Žï¼Œç•°æ—¥ä¸çŸ¥è‡³ä½•地ä½ï¼ã€é‚£çŸ¥é€™å¼µåˆ©å˜´äººäººå¿Œ 刻,後因父親朋黨之ç¦ï¼Œç•¢ç«Ÿå‰ªè‰é™¤æ ¹äº†ã€‚ å¯è¦‹å°æ™‚è°æ˜Žå¤ªéœ²ï¼Œä¹ƒæ˜¯ç¬¬ä¸€ä¸å¦™çš„事。ã€å¦‚今å†èªªä¸€å€‹å°æ™‚懵懵懂懂,後來åšå‡ºæ¥µ 大的功業,å°äº†æ¥µå¤§çš„爵ä½ï¼Œçº”æ˜¯å¥‡å“©ï¼ æ­¤äººå‡ºåœ¨éš‹æœ«å”åˆï¼Œæ­£ç•¶å››æµ·é¼Žæ²¸ä¹‹éš›ï¼Œå§“汪åè¯ã€‚åˆæ™‚ç„¡åï¼Œåªæœ‰å°å­—興哥。祖居 新安郡ï¼ï¼å¦‚今å«åšå¾½å·žåºœï¼ï¼ç¸¾æºªç¸£æ¨‚義鄉居ç¥å½¼è™•å¯Œå®¶ç”šå¤šï¼Œå…ˆæœæœ‰å¹¾å€‹è²¡ä¸»ï¼Œ 助餉åè¬ï¼Œæœå»·å°ä»–為æœå¥‰éƒŽï¼Œæ•…此相敬,俱稱æœå¥‰ã€‚ å»èªªæ±ªè¯æœªç”Ÿæ™‚節,父親汪彥是個世代è€å¯¦ç™¾å§“,å五六歲跟了夥計學習江湖販賣生 æ„ã€‚å¾½å·žé¢¨ä¿—ï¼ŒåŽŸä¸–æ¨¸å¯¦ï¼Œå¾€å¾€ä¾†ä¾†åªæ˜¯å¸ƒè¡£è‰å±¥ï¼Œå¾’æ­¥è‚©æŒ‘ï¼ŒçœŸå€‹æ˜¯ä¸€æ–‡ä¸æ¨ï¼Œä¸€ æ–‡ä¸ç”¨ã€‚åšåˆ°åé¤˜å¹´ï¼Œåˆ»è‹¦è‰±è¾›ï¼Œä¹Ÿå°±ç©æ”¢äº†æ•¸åƒå…©æœ¬éŒ¢ã€‚到了五旬å‰å¾Œï¼ŒæŠŠå®¶è²²æ‰“ 總盤算,ä¸è¦ºæœ‰äº†äºŒå餘è¬ï¼Œå¤§å°å¤¥è¨ˆå°±æœ‰ç™¾å餘人。 算帳完了,始åˆå–œå–œæ­¡æ­¡ï¼Œèˆ‰æ¯æŠŠç›žï¼Œé£²è‡³åŠé…£ï¼Œå¿½ç„¶æ·šä¸‹ã€‚ 眾夥計å•其原故,那汪彥é“:「我也ä¸ç‚ºè‘—別的,åªå› å‘日無å­ï¼Œå¾žå—海普陀洛迦山 求得一å­ï¼Œå«åèˆˆå“¥ã€‚çœ‹ä¾†é¢æ–¹è€³å¤§ï¼Œä¹Ÿæˆå€‹äººå½¢ï¼Œå…¶å¦‚呆呆癡癡,到了å五歲,格 格喇喇指天劃地,一å¥èªªè©±ä¹Ÿä¸æ˜Žç™½ï¼Œå»ä¼¼å•žå­ä¸€èˆ¬ã€‚é‡è‘—飲食,ä¸è«–多少,好åƒè‚š 內有熱çˆç†±ç¶ï¼Œç„¡æœ‰ä¸ç´ï¼Œè±ˆä¸æ˜¯å€‹ç„¦å“¡å¤–的令郎ã€èƒ¡æ°¸å…’的丈夫?雖掙了潑天傢俬 ,也是一盤瞎帳。ã€èªªç•¢ä¾¿æ·’悽慘慘ã€å—šå—šå’½å’½å“­å°‡èµ·ä¾†ã€‚夥計中有那當心的上å‰å‹¸ 慰寬心,有勸到æšå·žã€è˜‡å·žå†å¨¶ä¸€å¦¾ï¼Œå¦ç”Ÿå¹¾å€‹å¥½çš„;有拿酒復來相勸,猜拳行令的 ,都也ä¸åœ¨è©±ä¸‹ã€‚è‡¨äº†ä¾†æœ‰å€‹è€æˆçš„夥計,走近å‰ä¾†ï¼Œèªªé“ï¼šã€Œè€æœå¥‰ï¼Œä¸æ¶ˆè‘—忙, 明年å°ä¸»å六歲了。徽州俗例,人到å六歲就è¦å‡ºé–€å­¸åšç”Ÿæ„。我看å°ä¸»é›–則ä¸å¤§è¨€ èªžï¼Œå¿ƒä¸­ä¹Ÿé‚„æœ‰éˆæ©Ÿï¼Œé¢è²Œä¸Šä¹Ÿæœ‰äº›ç¦æ°£ï¼Œä¸è‹¥æ’¥å‡ºå¤šå°‘本錢,待我幫他出門學學乖 ,待他歷練幾年就ä¸é›£äº†ã€‚ã€ä¸€é¢å°±èˆ‡èˆˆå“¥èªªçŸ¥ï¼Œèˆˆå“¥ä¹Ÿå°±æŠŠé ­é»žäº†å¹¾é»žã€‚眾夥計盡 é“ï¼šã€Œå°æœå¥‰å¿ƒè£¡æ˜¯æ˜Žç™½çš„,ä¸é›£ï¼ä¸é›£ï¼ã€ä¿±å„散訖。ã€åˆ°äº†æ¬¡å¹´æ­£æœˆåˆä¸€æ—¥ï¼Œçœ¾ å¤¥è¨ˆæœƒåŒæ‹œå¹´åƒé…’ï¼Œä¸­é–“è€æˆçš„å¤¥è¨ˆä¹Ÿå°±èªªèµ·å°æœå¥‰ç”Ÿæ„的事。 汪彥é“ï¼šã€Œä»–å¹´å°æ€§ç™¡ï¼Œä¸”把三åƒå…©åˆ°ä¸‹è·¯é–‹å€‹å°å…¸ï¼Œæ•™ä»–å在那裡看看罷了。ã€ç´„ 定二月起身。 è¨€ä¹‹æœªå·²ï¼Œé‚£èˆˆå“¥æ–¯æ–¯æ–‡æ–‡ç«‹èµ·èº«ä¾†ï¼Œå»æ˜Žæ˜Žç™½ç™½èªªé“:「我åŒå¤§å‚¢ä¿¬ï¼Œå”¯æˆ‘一個承 載,怎麼止把三åƒå…©èˆ‡æˆ‘,就è¦å«æ‰¾å‡ºé–€ï¼Ÿå»æ˜¯ä¸å¤ ï¼ã€çœ¾ç›¡é§­ç•°ã€‚é€£é‚£è€æœå¥‰è½äº† 也ä¸è¦ºå¿«æ´»èµ·ä¾†ï¼ŒæŽ¥å£é€£è²èªªé“:「果然奇了,也說的話公然ä¸å·®ï¼æƒ³æ˜¯ç¦è‡³å¿ƒéˆäº† ã€‚ã€æ»¿å ‚人俱å„稱羨,åªå¾…二月åˆé ­æ•´å‚™è¡ŒæŽï¼Œæ‹œåˆ¥çˆ¶æ¯èµ·èº«ã€‚汪彥å åœå¾—往平江下 路去好。那平江是個貨物馬頭,市井熱鬧,人煙湊集,開典鋪的甚多,那三åƒå…©é‚£è£¡ 得夠? 興哥開å£èªªï¼šã€Œé ˆå¾—è¬é‡‘方行,ä¸ç„¶æˆ‘ä¾èˆŠé–‰è‘—å£ï¼Œå在家裡。ã€é‚£è€æœå¥‰ä¹Ÿé“:〠他說得有ç†ã€‚ã€å°±æ¹Šè¶³äº†ä¸€è¬å…©ã€‚未å…照例備了些醃èœä¹¾ã€è±¬æ²¹ç½ã€ç‚’豆瓶å­ï¼Œæ­¡æ­¡ 喜喜出了門。那è€å¤¥è¨ˆå·²é å…ˆè¨—äººæŠŠé‹ªé¢æˆ¿å±‹ã€æ‹›ç‰Œã€æž¶å­ã€å®¶å¤¥ä»€ç‰©ä¿±å·²åœç•¶ï¼Œæ€ 了黃é“剿—¥é–‹å¼µï¼ŒæŽ›å¾—䏀颿‹›ç‰Œã€‚就有一個人拿著å個盒å­é€²ä¾†ï¼Œèªªé“:「賀喜ï¼è³€ å–œï¼é¡˜å°æœå¥‰é–‹å…¸é‹ªï¼Œå°±è¶äº†åå°ç›’利錢,權且當銀åå…©åšå€‹é‡‡é ­ã€‚ã€å°æœå¥‰è½è¦‹èªª 得快活,他é“:「我也ä¸è¦ä½ çš„ç›’å­ï¼Œé€ä½ äºŒå兩,酬你這個好æ„。ã€é‚£å¤¥è¨ˆé“:「 å°æœå¥‰ä¸å¯è½ä»–ï¼é€™æ˜¯å¾žä¾†å¸‚äº•å…‰æ£æ‰“抽è±ã€è¨Žé‡‡é ­ï¼Œéƒ½æ˜¯å¥—å­ï¼Œä¸å¯èˆ‡ä»–ï¼ã€å°æœ 奉é“:「第一次也讓我一個順利。ã€å¤¥è¨ˆå°±é–‰å£äº†ã€‚ä¸å¤šæ™‚,åˆè¦‹ä¸€ä¼™è¡£å† æ¿Ÿæ¥šï¼Œæ§ 著表禮走將進來,看å帖上整齊數來四åä½ï¼Œé“是上下排鄰,èžå¾—æœå¥‰é–‹ç•¶ï¼Œå„人備 äº†ä¸€å…©åˆ†è³‡å¤–ï¼Œåˆæ·»å‡ºäº”分,備了花紅糕酒,都來賀喜。 那夥計們少ä¸å¾—請出興哥來åšä¸»äººï¼Œçœ¾é„°èˆä¿±å„å”±å–稱賀,分賓å了,奉茶而別。興 哥回轉身,欣欣喜色,å°çœ¾å¤¥è¨ˆé“:「怪ä¸å¾—è€æœå¥‰åœå¾—此地開典好,就是這鄰èˆé«˜ 情å»é›£å¾—的。ã€ä¸€é¢å°±æŠŠé‚£å°çš„åˆ†è³‡æ‰¯é–‹å…©å€‹ï¼Œçœ¾å¤¥è¨ˆä¸Šå‰æŠŠæ‰‹æŒ‰ä½é“:「這是套禮 ,收ä¸å¾—çš„ã€‚éŽæ—¥å‚™æˆ²è¨­å¸­è«‹ä»–後就返璧了。ã€èˆˆå“¥é“:「方纔二å兩出門,今就有 å››å兩進門,就是å°åˆåˆ©éŒ¢ä½³å…†ï¼Œå¦‚何方纔當盒å­çš„ä¸è¦è³žä»–ï¼ã€èªªç•¢ï¼Œä»èˆŠæŠŠçœ¾åˆ† 䏀巿‹¿äº†é€²åŽ»ã€‚æ€¥å¾—çœ¾å¤¥è¨ˆæ²’äº›å¸ƒæ“ºï¼Œåªæ˜¯å«è‹¦ã€‚少刻,喚一個å°éƒŽé€²åŽ»ï¼Œèˆˆå“¥æ‰“é–‹ 銀庫,æ€å‡ºå兩一錠的銀å­ï¼Œé½Šé½Šæ•´æ•´å°ä½œå››åå°ï¼Œä¸€é¢æ›äº†è¡£æœï¼Œå‚™äº†å帖,走出 鋪中,說:「我如今è¦ç­”拜了。ã€çœ¾é“:「四åå°éŠ€ç‚ºä½•ï¼Ÿã€èˆˆå“¥é“:「陌生所在, 難得他們盛æ„,備禮答他。ã€çœ¾å¤¥è¨ˆé“ï¼šã€Œåªæ¶ˆè²»äºŒå兩一席戲足夠了,如何è¦é€™è¨± 多?ã€èˆˆå“¥é“ï¼šã€Œä½ å€‘åªæ›‰å¾—å°å®¶å­å±€é¢ï¼Œæ—¢åœ¨ä»–地方開鋪賺錢,就è¦çµè­˜åœ°é„°ï¼Œæ—¥ 後有些事情也得便宜。自å¤é“,他敬我一尺,我敬他一丈。這å兩頭也åªç…§æ­·ä¾†è¦ä¾‹ ,亦未見得從厚。ã€è¨€ç•¢å¾‘出門去,å„家一一é€äº†ã€‚那些鄰èˆå€‹å€‹å–œæ­¡ï¼Œäººäººå¿«æ´»ï¼Œ 稱é“ï¼šã€Œå°æœå¥‰æ˜¯å€‹å¤§æ–¹ã€‚ã€é‚£äº›å¤¥è¨ˆé½Šé½Šå˜†æ°£è·Œè…³ï¼Œåªå¥½ä»˜ä¹‹ç„¡å¯å¥ˆä½•。興哥拜完 客,回到鋪中å著,忽見一人牽著匹馬進門é“:「在下是個馬販å­ï¼Œè²©äº†äºŒå匹馬來 ,馬價都是百金一匹的。é‡è‘—行情é²éˆï¼Œçœ¾é¦¬å—·å—·ï¼Œåªå¾—將一匹來寶鋪,當五åå…©è²· 料。賣出ä¾èˆŠåŠ åˆ©å¥‰è´–ã€‚ã€èˆˆå“¥å¿ƒä¸­æ„›è‘—駿馬,一眼看了就笑起來,那夥計é“:「開 å£è²¨å¾žä¾†ä¸ç•¶ï¼Œå‡ºåŽ»ï¼å‡ºåŽ»ï¼ã€èˆˆå“¥é“ï¼šã€Œçœæœƒåœ°é¢é¦¬ä¹Ÿæ˜¯è¦ç”¨çš„,若ä¸ç•¶èˆ‡ä»–,那 å››åä¹åŒ¹éƒ½é¤“死了,豈ä¸å¯æ†ï¼ã€èªªç•¢å°±é€²è£¡é‚ŠåŽ»ã€‚é‚£å¤¥è¨ˆè¶Šç™¼å›žä»–ï¼Œé‚£é¦¬è²©èœ˜èº•åŠ æ™Œï¼Œåªè¦å€™å°æœå¥‰å‡ºä¾†è¨Žå€‹ä¸‹è½ã€‚那知ä¸å¤šæ™‚,興哥æ§å‡ºå…ƒå¯¶å…©éŒ ï¼Œå°±æ‹›é¦¬è²©é€²ä¸­é–€ éžèˆ‡ä»–。馬販說:「當一錠夠了。ã€èˆˆå“¥èªªï¼šã€Œä½ è¾›è‹¦ä¾†æ­¤ï¼Œé ˆè¦è¶éŒ¢æ–¹å¥½ã€‚如何百 金的價止當五å兩?å»ä¸æŠ˜äº†æœ¬éº¼ã€‚快去ï¼å¿«åŽ»ï¼ã€é‚£é¦¬è²©å€’åœ°å››æ‹œï¼Œç¨±è¬æ©ä¸»è€ŒåŽ» 。眾夥計尚自ä¸çŸ¥ï¼Œèˆˆå“¥åˆåˆ°é‹ªå…§å定。åˆè¦‹ä¸€å€‹çª®äººæ‰‹æ‹¿éµé‹ä¸€éš»ï¼Œå¤¥è¨ˆä¸Šå¸³ç•¶åŽ» 三錢。纔出門去,興哥把頭一å´ï¼Œæƒ³é“:「這個窮人家裡ä¸éŽä¸€éš»é‹å­ï¼Œå°‡ä¾†ç•¶äº†ï¼Œ è€å©†åœ¨å®¶å¦‚何煮飯?三錢銀值得æéº¼ï¼Ÿã€ä¾¿èµ°å‡ºé‹ªä¾†ï¼Œæäº†é‹å­å‡ºé–€å°±ä¸Šäº†é¦¬ï¼Œä¸€æºœ 煙追去。畢竟尋著那個窮人還了他去。 鋪中眾人沸沸的說起方纔當馬之事,åˆåƒäº†ä¸€é©šï¼Œåªç­‰èˆˆå“¥å›žï¼Œå¤§ç™½æ—¥è£¡å°±æŠŠç•¶é–€é—œ ä¸Šï¼ŒæŽ¥è‘—èˆˆå“¥åˆ°å»³ä¸Šã€‚çœ¾å¤¥è¨ˆä¸€é½Šä¾æ¬¡å下,è€å¤¥è¨ˆé“:「å°ä¸»äººï¼Œä½ å¾žå¹¼æœªç¶“出門 ,你的身命干係都在我們身上,就是一è¬å…©æœ¬éŒ¢ä¹Ÿæ˜¯åœ¨è€æœå¥‰é¢å‰åŒ…定加三利æ¯ä¾†çš„ 。纔得一二日,如此顛顛倒倒,本錢倒失去了一大塊,將來怎麼算帳?ã€èˆˆå“¥é“:「 ä¸é›£ï¼Œä¸é›£ã€‚若說加三利æ¯ï¼Œä½ å€‘眾人就æäº†ä¸‰åƒå…©åŽ»ï¼Œé¤˜ä¸‹æœ¬éŒ¢è½æˆ‘發æ®ç½·äº†ã€‚ä½  們眾夥計舊è¦ä¿±å·²æ›‰å¾—,ä¸éŽä»¥èˆŠæŠµæ–°ï¼Œç§»é ä½œè¿‘,在日用使費上扣刻些須,當官幫 貼中開些虛帳,出入等頭銀水外éŽå…‹ä¸€åˆ†ï¼ŒæŽ›å¤±ç¥¨ã€ç•™æœˆåˆ†ã€å‡ºç•¶åŒ…ã€è¨Žäº›é…’錢,就 是你們伎倆,這都ä¸åœ¨æˆ‘心上。你們è¦åŽ»å°±åŽ»ï¼Œé›£é“æˆ‘è¿·å¤±äº†è·¯é ­ä¸æˆï¼Ÿã€çœ¾äººè¢«ä»– 數è½ï¼Œé “å£ç„¡è¨€ã€‚é‚£è€è€…諒來ä¸å¯æŒ½å›žï¼ŒåŒçœ¾äººå‚™ç´°å¯«äº†ç¨Ÿå¸–,第二日就回徽州報信 去了。興哥看見è€è€…去了,心中ä¸è¦ºåˆé¬†äº†ä¸€é¬†ã€‚ä¸ä¹…傳èžå‡ºåŽ»ï¼Œé‚£äº›é„°èˆä¹Ÿéƒ½è£äº† 套å­ï¼Œæˆ–有說官å¸é€£ç´¯ã€æ€¥æ€¥åŽ»æ•‘çˆ¶æ¯çš„,或有說錢糧拖欠ã€å³åˆ»åŽ»æ¯”å¯æ•‘家屬的, 或有說父æ¯ç–¾ç—…臨å±ã€è¦åŽ»èª¿æ²»çµæžœçš„,或有說修蓋廟宇ã€ç Œé€ æ©‹æ¨‘,一時工錢è¦ç·Š 的。興哥一一都ä¸è¦ç•¶é ­ï¼Œæ‚‰å¦‚來願,應手給散去了。ä¸ä¸€æœˆé–“,那一è¬å…©é‡‘錢俱化 作莊周è´è¶ã€‚æ­£è¦å°‹åŒé„‰è¦ªæˆšå¯«å€‹æœƒç¨ŸæŽ¥ä¾†æ‡‰æ‰‹ï¼Œé‚£è€æœå¥‰é¢¨å¿«çš„到來,進門å‰å¾Œä¸€ 看,å«å±ˆé€£è²ï¼Œæªè‘—èˆˆå“¥å°±æ‰“ã€‚èˆˆå“¥åªæ˜¯å˜»å˜»ç¬‘é“ï¼šã€Œäººè‹¥ä¸æŠŠéŒ¢è²¡æ•£åŽ»ï¼Œè€æœå¥‰åœ¨ å®¶åªæ¶ˆåŠé–“è‰å±‹ï¼Œå¹¾ä»¶å¸ƒè¡£ï¼Œæ•¸æ“”粗米,一ç½è±¬æ²¹ï¼Œå°±å¤ ä¸€ç”Ÿå—用,何必艱難險阻, 一一æ¬åˆ°åœŸçª–中è—著,有何享用?ã€è€æœå¥‰è½äº†åˆæ°£åˆæƒ±ï¼Œæ™šå¹´æ­¢å¾—æ­¤å­ï¼Œä¹Ÿç„¡å¯å¥ˆ ä½•ã€‚æ¬¡æ—¥å³æ”¶æ‹¾è¡ŒæŽï¼Œé€€é‚„房屋,一伙回家去了。就把興哥關閉一室,ä¸è¨±åœ¨å¤–應酬 。ã€ä¸è¦ºéŽäº†å››äº”個月,ä¸çŸ¥é‚£è£¡å°‹å¾—五åƒé’蚨,把家中åšç”Ÿæ„的夥計都é€ä¸€ç™¾æ–‡ï¼Œ æŒ‰æœˆè¦æ”¶äºŒç™¾æ–‡ã€‚眾人在他門下也就胡亂é€äº›èˆ‡ä»–,ä¸åŠå¹´ä¹Ÿå°±ç©èµ·ä¸‰è¬ä¸Šä¸‹ã€‚è€æœ 奉知é“,說「此å­å¦‚今曉得生放利錢,比當åˆå¤§ä¸ç›¸åŒã€‚ã€èˆˆå“¥åªåšä¸çŸ¥ï¼Œçµ‚æ—¥åœ¨ç§ ä¸‹ç›¤æ”¾éŒ¢å‚µã€‚è€æœå¥‰ä¸€æ—¥é“:「你既知ç©è²¡ç•¶ç©çš„,何ä¸å†æ‹¿ä¸€è¬å‡ºé–€åŽ»ï¼Ÿã€èˆˆå“¥é“ :「å‰ç•ªä¸€è¬èƒ¡äº‚散去,如今å»è¦å¤šäº›ï¼Œåˆ»è‹¦ç¿»è½‰é‚£ä¸€è¬æœ¬ä¾†çº”好。ã€è€æœå¥‰é“:「 說得有ç†ã€‚ã€å•é“:「ä¾èˆŠé–‹ç•¶ç½·ï¼Ÿã€èˆˆå“¥é“:「典鋪如今開的多了,ä¸åŽ»åšä»–。須 得五è¬ä¹‹æ•¸ï¼Œæˆ–進京販賣金ç ï¼Œæˆ–江西澆造瓷器,或買ç¦å»ºæµ·æ¿ï¼Œæˆ–置淮æšé¹½å¼•,相 機而行,隨我活變。å†ä¸åƒå‰ç•ªå åœåˆ°å¹³æ±Ÿåºœåšçš„æ•…事也ï¼ã€è€æœå¥‰è½äº†ï¼Œçˆ½å¿«å°±å…Œ 下五è¬å…©ï¼Œé¸ä¸‹å…«å€‹å®¶äººï¼Œä»”ç´°åŒ…åŒ…è£¹è£¹ï¼Œå…±æœ‰ä¸‰åæ“”行æŽã€‚興哥ä¾èˆŠé¨Žè‘—那馬,瀟 瀟ç‘ç‘起身,åŒç®¡å®¶åœ¨è·¯ä¸Šå•†é‡å¾—明州曬白鯗生æ„絕好,徑往明州進發。 訪得浮橋外下塘街有幾家大財主經紀,å¯ä»¥å®‰èº«ï¼Œå°±åœ¨ä»–å®¶ä½ä¸‹ï¼Œå®‰é “行æŽã€‚那知這 曬鯗生æ„ä¸‰æœˆä¸­æ–¹å¾—é€šè¡Œï¼Œèˆˆå“¥å»æ—©åˆ°åŠæœˆã€‚下處甚是寂寞,帶了幾個家人且到洛迦 å±±éŠçŽ©æ•¸æ—¥ã€‚ä¸€è€…é€²é¦™ï¼Œå†è€…觀海,亦是暢事。那山上清淨é“場並無俗客。次日單身 步月而行,ä¸è¦ºä¿¡æ­¥ä¸€ç›´åˆ°é‚£é‡£é¼‡ç£¯ä¸Šï¼Œå°è‘—汪洋大海盤è†è€Œå。月色正中,海氣逼 得衣袂生涼。正待回步,忽見磯邊樹林影裡走出一人來,興哥也é“ï¼šã€Œå¥‡æ€ªï¼Œå¥‡æ€ªï¼ ã€ä¾èˆŠå下。 那人將到é¢å‰ï¼Œèˆˆå“¥çœ‹è¦‹ï¼Œå”¬äº†ä¸€è·³ã€‚看那人時,生得好生怪異:åªè¦‹å…©éš»çªçœ¼ï¼Œä¸€ 部è½è…®ã€‚兩鬢蓬鬆,宛似é¾é¦—下界;雙眉倒豎,猶如羅漢西來。雄糾糾難æŸçºçš„æ°£å²¸ ,分明戲海神é¾ï¼›æ„悠悠沒投奔的精神,逼肖失林餓虎。 興哥上å‰å°‡æ¬²è¿Žä»–,他å»é«˜è¶³é—Šæ­¥ï¼Œå…¨ä¸ç›¸ç…§ï¼Œç«Ÿé åœ¨ä¸€å¡Šå‡Œç©ºå¥‡å³­çŸ³å´–å˜´ä¸Šï¼Œå¤§å« ä¸€è²é“:「è€å¤©ï¼Œé›£é“我è€åŠ‰å°±ç½·äº†ä¸æˆï¼Ÿå®‰å¾—五è¬é‡‘ï¼Œæˆæˆ‘一天大事也ï¼ã€èˆˆå“¥è½ 見說得奇異,上å‰å•é“:「å›å®¶æ–¼æ­¤åœ°è¦é€™äº”è¬å…©ä½•用?ã€é‚£æ¼¢æŠŠçœ¼ä¸€æ©«é“:「乳臭 å°å­ï¼Œé‚£çŸ¥æˆ‘事ï¼ã€èˆˆå“¥é“:「我éžä¹³è‡­ï¼Œè¶³ä¸‹äº¦ä¸å…為田èˆç¿ã€‚看得五è¬é‡‘æé›£å¾— 也。ã€é‚£æ¼¢ä¸€èžæ­¤è¨€ï¼Œä¾¿å›žèº«ä¸‹æ‹œé“:「我誠å°äººï¼Œä¸è­˜å›å®¶ä½•以應我。倘能周旋, 明年此月此日,ä»ç´æ–¼æ­¤åœ°ã€‚é‚„å›åè¬ï¼Œä¸é£Ÿè¨€ä¹Ÿã€‚ã€èˆˆå“¥é“:「去此ä¸é ï¼Œæˆ‘當為 å›è¬€ä¹‹ã€‚ã€å³ç›¸æ‹‰ä¸‹èˆ¹ï¼Œéš¨å¾žç´„有å五六人,一徑回到下處。請出主人,喚å°éƒŽå€‘æ¬ å‡ºè¡ŒæŽï¼Œå°‡äº”è¬å…©ä¸€ä¸€äº¤ä»˜é‚£æ¼¢æ”¶åŽ»ã€‚é‚£æ¼¢é“:「足下此馬無甚用處,一井付我馳去 ,異日ä»ä»¥æ­¤é¦¬é‚„å›ã€‚ã€èˆˆå“¥é€£å¿™è§£è½¡é€ä»–。兩人拱手而別,並無他言。 主人與å°éƒŽåœ¨å´çœ‹äº†ï¼Œå¿ƒç›®ä¿±å‘†ï¼Œä¸çŸ¥ç”šéº¼ä¾†æ­·ã€‚ 主人åªé“是洋裡æ•魚客人或是沿海衛所經紀,也都åªåœ¨é‚£æ›¬é¯—的生æ„上作想。å•é“: 「此å›ä½•姓何å?ä½å±…何處?ã€èˆˆå“¥é“:「我也ä¸çŸ¥ã€‚ã€å³ä¾¿å«å°éƒŽå€‘æ”¶æ‹¾å›žåŽ»ã€‚å° éƒŽé“:「官人此來為何?ã€èˆˆå“¥é“:「此番生æ„å°æœ¬åˆ©éŒ¢ï¼Œç”šæ˜¯çœåŠ›çˆ½å¿«ã€‚ã€å°éƒŽä¹Ÿ åªå¾—隨å£å«ç³Šè¬åˆ¥ä¸»äººï¼Œä¾è‘—路回去。總來ä¸åŠå…©æœˆï¼Œå·²åˆ°å®¶è£¡ã€‚è€æœå¥‰å•é“:「甚 麼生æ„回身得快?ã€ä¸”見行æŽè¼•鬆,åƒäº†ä¸€é©šã€‚興哥é“:「å°å¹´å°æœˆå°æœ¬åˆ©éŒ¢ï¼Œä¹Ÿæ˜¯ 順利的了。ã€è€æœå¥‰ä»”ç´°å•其下è½ï¼Œä¸¦ç„¡ä¸€å­—回答。å•åŠå°éƒŽï¼Œé‚£å°éƒŽæ‹¿æŒ‡é ­æŒ‡è‘—é“ ï¼šã€ŒåªåŽ»å•他,我們一毫ä¸çŸ¥ã€‚ã€é‚£è€æœå¥‰æ€¥å¾—心èºï¼Œèˆˆå“¥ä¸”è‡ªæ„æ°£æšæ¥Šï¼ŒæŒ‡è‘—å‰é‚Š è©²é€ å¤§å»³ï¼ŒæŒ‡è‘—å¾Œé‚Šè©²é€ å¤§åœ’ï¼Œä¸ç™¡ä¸é¡›ï¼Œèªªä¾†çš„éƒ½æ˜¯è¿‚é—Šä¹‹è«–ã€‚è€æœå¥‰æªç™¼äº‚打, 興哥嘻嘻é“:「ä¸è¦é›£ç‚ºäº†åè¬è²«çš„財主,且自è€ç…©åˆ°äº†æ˜Žå¹´æ­¤æ™‚ï¼Œè‹¥ç„¡æœ¬åˆ©åˆ°å®¶å† åµå†é¬§ä¹Ÿæœªé²å“©ã€‚ã€è€æœå¥‰åªç´¢å¿æ°£åžè²ï¼Œä¸”自排é£éŽåŽ»ã€‚ã€ä¸è¦ºå€å¿½å·²åˆ°æ¬¡å¹´äºŒæœˆ åˆé‚Šï¼Œè€æœå¥‰ä¾¿è¦å‚¬ä»–起身,興哥é“ï¼šã€Œä¸æ¶ˆæ—©åŽ»ï¼Œåªè¦æ­¤æœˆã€æ­¤æ—¥ã€æ­¤å¤œåˆ°é‚£æ­¤åœ° ä¾¿äº†ã€‚ã€æžœç„¶ä¿Ÿåˆ°é‚Šéš›ï¼Œèˆˆå“¥æŸè£å‰å¾€ã€‚先一日已到彼處,暫借僧房歇下。到那晚上 ,ä¾èˆŠå–®èº«å在釣鼇磯上。黃æ˜å·²éŽï¼ŒäºŒæ›´æ‚„然,將åŠä¸‰æ›´ï¼Œé‚£æ¨¹å½±è£¡æžœè¦‹ä¸€äººå¤§è¸ 步走上磯來,å«é“:「æ€å…„何在?ã€èˆˆå“¥å‘å‰ç›¸è¦‹ï¼ŒæŠŠè‡‚é“:「真信人也ï¼åŽ»å¹´æ‰€äº‹ 如何?ã€é‚£æ¼¢é“:「多承æ©å…„慷慨施助,將這五è¬éŠ€å­å³åœ¨æ²¿æµ·åœ°æ–¹åˆ†é ­ç³´å¾—糧食, 接濟六郡義師,方無脫巾之變。幸å¨å¤©åº‡ï¼Œè‡ªåŽ»å¹´å››æœˆèµ·å…µï¼Œæ‰€åˆ°ä¹‹è™•ï¼ŒçŒ¶å¦‚ç ´ç«¹ã€‚ ä»Šç¸½è¨ˆä¹‹ï¼Œé–©ç²µä»¥åŠæµ™è¥¿å·²å¾—三å郡縣,那海中倭夷島寇歸併百å餘處,令海中所稱 æµ·æ±å¤©å­åЉç®å³å¼Ÿä¹Ÿã€‚去年潛身上普陀窺探,亦因營中缺ä¹ç³§é£Ÿï¼Œæ¬²å‘洛迦僧房借些 ä½ˆæ–½ï¼Œä¸æ–™å¤§å¤§å¢æž—ä¹Ÿå°±è’æ¶¼é€™å€‹æ¨¡æ¨£ã€‚æ•¢å•æ©å…„高姓大å?ã€èˆˆå“¥é“:「山野鄙人 ,毫無施展,留此姓å為何?ã€åЉç®é“:「一言相許,五è¬éŠœæ©ï¼Œå±ä»¥ç¥ä¹‹ï¼ŒçŒ¶é›£ç‚º 報。何姓å之見å也?ã€èˆˆå“¥é‚將姓åã€ä½å±…一一é“ç ´ã€‚ä¸æ–™å¾žæ—扈從的人早已èžå ± ,一é¢å°‡åè¬é‡‘錢差人é€è‡³å¾½å·žæ±ªå®…去矣。興哥一些ä¸çŸ¥ï¼Œé€™æ˜¯å¾Œè©±æœªé¡Œã€‚ä¸”èªªåŠ‰ç® é‚€äº†èˆˆå“¥ï¼Œæ¬äº†è¡ŒæŽï¼Œåˆ°å¾—æ²³å£ï¼Œè‰¤èˆŸç›¸å¾…。ä¸ä¸€æ™‚é–“ï¼Œåˆ°äº†å¤§æ¸¯ï¼Œå»æœ‰æ•¸å彩é·é±— æ¬¡è€Œé›†ï¼Œæ——å¹Ÿå¤®å¤®ï¼Œå°±æœ‰è¨±å¤šæŠ«ç”²è·æˆˆçš„,整齊環列。 åŠ‰ç®æ‰¶äº†èˆˆå“¥éŽèˆ¹ï¼Œä¾¿ä»¤ç™¼æ“‚鳴金,掛帆ç†å¹Ÿï¼Œå‡ºæ´‹è€ŒåŽ»ã€‚æœªåŠäº”更,大洋中數è¬è‰¨ 艟巨艦,桅燈炮ç«éœ‡åœ°é©šå¤©ï¼Œåˆ°äº†å¤§èˆ¹å³å–šå‡ºè¨±å¤šå®®å¦å§¬å¬ªï¼ŒåŒä¼è‰™æ¿ä¹‹ä¸Šï¼Œé½Šç¨±æ© ä¸»ï¼Œä¸æ¸›å±±å‘¼ã€‚ 興哥也ä¸è‡ªè¦ºï¼Œå¦‚在雲夢之際。一é¢é–‹ç­µè¨­å¸­ï¼Œæ¥µç›¡æ°´é™¸ç饈;一é¢åˆ—ä¼æŽ’ç‡Ÿï¼Œæ›²ç›¡ å¨åš´é™£å‹¢ã€‚異方音樂,隊隊爭先;海外奇ç,時時å¥ç»ã€‚興哥整整ä½äº†åé¤˜æ—¥ï¼Œå³æ¬² 辭歸。那劉ç®è‹¦è‹¦ç›¸ç•™ï¼Œæƒ…難被袂,心知興哥ä¸èƒ½å†ä½ï¼Œä¸€é‚Šå‚™äº†èˆ¹éš»ï¼Œé€ç¨‹ç›¸é€ï¼› 一邊æ§å‡ºè“‹ä¸–奇寶,舉以相贈。興哥眼也ä¸çœ‹ï¼Œä¸€æ¦‚固辭。劉ç®é“:「此éžé…¬å ±æ©å…„ 之物,èŠä¼¸è¬ä¸€ä¹‹æ•¬ã€‚今既ä¸å—,弟有錦囊三個,異日è¦ç·Šä¹‹éš›é–‹çœ‹ä¾¿å¾—ã€‚æ­¤æ™‚æœªå¯ é æ´©å…¶æ©Ÿä¹Ÿã€‚ã€èˆˆå“¥å†æ‹œï¼Œå—之而別。一路歸家,也ä¸çŸ¥åЉç®å°‡éŒ¢åè¬æ—©å·²é€åˆ°å®¶ä¸‹ ,ä¸é¡Œè€æœå¥‰å–œå¾—ä¸äº†ã€‚ã€ä¸”說興哥ä¾èˆŠç€Ÿç€Ÿæ•£æ•£è€Œå›žã€‚è€æœå¥‰èžå¾—興哥回來,舉家 迎接。一門勢利都來é“喜。興哥心已知之,絕ä¸éœ²ä¸€æ¯«æ–¼é¡è‰²ã€‚ 那些ç©å¹´å¤¥è¨ˆä¿±ä¾†å‚™å¸­æŽ¥é¢¨ï¼Œèˆˆå“¥ä¹Ÿä¸€å®¶ä¸é ˜ï¼Œæ¯äººå»é€é’èš¨äº”è¬æ–‡ï¼Œä»¥å„Ÿæ—¥ä¾†ç›¸èˆ‡ 之æ„。å»åœ¨å¾Œåœ’造起百尺高臺,åšé‚£è§€æ˜Ÿæœ›æ°£çš„勾當。耳邊廂è½å¾—é“路傳èžï¼Œèªªæµ·æ± 天å­ä½”了æŸå·žæŸç¸£ï¼Œæ¼¸æ¼¸é€¼è¿‘徽州,人頭上è’è’亂亂,俱作逃竄之計。興哥é“:「此 時事勢已急。ã€é–‹ä¸€éŒ¦å›Šçœ‹æ™‚ï¼Œå¦‚æ­¤å¦‚æ­¤ã€‚å½¼æ™‚éš‹æœæ—¢æ»…,å”主登基。興哥å³ä¾¿å…·äº† 一é“ç« ç–æŠ•åœ¨ç¯€åº¦ä½¿æŽå†•衙門,求其代為申å¥ã€‚自èªåœ˜ç·´ç¾©å…µä¸‰åƒï¼Œä¸è²»æœå»·ä¸€æ–‡ä¸€ 粒,ä¿éšœä¸€æ–¹ï¼Œç›´å¾…å¹³å®šä¹‹å¾Œæ–¹å—æœå»·å°è³žã€‚æŽç¯€åº¦æ­£åœ¨æ±‚賢枯渴之際,得此一ç–, å³ä¾¿è½‰å¥ï¼Œå¥‰äº†å”皇新旨,暫授å—路總管之è·ï¼Œè½å…¶ä¾¿å®œè¡Œäº‹ã€‚興哥整師振旅,å³ä½¿ 起行,é§å¸«æº«ã€ç¦ä¹‹é–“。那些倭夷島寇ä¸å¥‰æ­£æœ”,è½å¾—義師åˆé›†ï¼Œå³ä¾¿æ•´å…µç§£é¦¬ï¼Œä¸€ æ“å‰ä¾†ï¼ŒæŠŠé‚£èˆˆå“¥å…¨ç‡Ÿå¯†å¯†å±¤å±¤åœå¾—鵿¡¶ç›¸ä¼¼ã€‚æ­£åœ¨å±æ€¥ï¼Œå†æ‹†ä¸€å€‹éŒ¦å›Šçœ‹æ™‚,他便 營中立起å丈高竿一é¢é»ƒæ——,上書「海æ±å三路水陸全師都總管汪ã€ã€‚外邊這些島夷 看見旗號,許多頭領å³ä¾¿æŠŠæ——從左一招,兵分四路,左å³å‰å¾Œå±¯æ‰Žä½äº†ã€‚ä¸å¤šæ™‚è¥¿å— è§’ä¸Šä¸€éšŠå…µé¦¬ç´„æœ‰ç™¾å餘人,牽著白馬一匹,飛星相似,直奔å‰ä¾†ã€‚一人å£ç¨±ã€Œå¥‰æµ· æ±å¤©å­å‘½ä»¤ï¼Œç‰¹é€ç™½é¦¬å¥‰é‚„æ©ä¸»æ±ªè€çˆºçš„ã€ã€‚營中接應報去,å³ä»¤å…ˆé‹’出來接了來書 ,驗看明白,果是當åˆä¹‹é¦¬ã€‚此馬渾身雪白,背上å‰å¾Œå»æœ‰é»‘斑二å四點,喚åè‘¡è„ é›ªï¼Œä¹ƒæ˜¯ä¸€åŒ¹é¾é¦¬ã€‚å§‹åˆç•¶åœ¨é‹ªä¸­ï¼Œèˆˆå“¥åŽŸæ˜¯æ„›ä¸Šä»–çš„ï¼Œå»å«ä¸å‡ºä»–çš„å色。自從劉 ç®å€ŸåŽ»ï¼Œä¸€åˆ°æµ·æ¿±å¦‚é­šå¾—æ°´ï¼ŒåŠ‰ç®é¨Žäº†ä»–,到處æˆåŠŸã€‚æµ·æ±ä¸€å¸¶åœ°æ–¹éƒ½èªå¾—一æ¢ç™½é¾ ç¾ä¸–,ä¸ä½†äººäººç•懼,就是è¬é¦¬è¦‹äº†äº¦å€‹å€‹æ”¢è¹„å§”é¼ ï¼Œç„¡ä¸æ‡¾æœä»–的。 興哥騎了此馬,那沿海地方都èªåšåЉè€çˆºé ˜å…µåˆ°ä¾†ï¼Œè™•處擺åœè¿ŽæŽ¥ï¼Œä¿±æ‡‰æ…‡æ‡ƒï¼Œä¸ç…© ä¸€çŸ¢ï¼Œä¿±å·²è²¼ç„¶æ­¸é †ã€‚å§‹åˆæ­¢å¾—義兵三åƒï¼Œä¸åŠä¸€è¼‰å·²å°±æ‹›å¾ æœ‰äº”è¬ä¹‹çœ¾ã€‚ä¿±æ˜¯åŠ‰ç® æœ‰ä»¤åœ¨å…ˆï¼Œè¦è®“æ¼³å—å鎮報他åšå€‹çµ•ä¸–å¥‡åŠŸã€‚ä¸æ–™ç¬¬ä¸‰å¹´é–“,天時亢旱,師次建å—, 米價騰湧,至六兩一擔。人民洶洶,è»å£«å—·å—·ï¼Œæœæš®å°‡æœ‰ä¸æ¸¬ä¹‹è®Šã€‚興哥心急,åˆå°‡ 一個錦囊拆看,å»ä¹Ÿæ­£ç‚ºæ­¤è‘—。 å³å‚³ä»¤æ²¿æµ·çƒ½è‡ºä¿±å°‡ç™½å¸¶è™Ÿæ——掛起。海上哨探å°å’䏿—¥å ±çŸ¥åЉç®ï¼Œå³ä¾¿å‚³ä»¤é€Ÿå‚™ç³§ç±³ 五百è¬çŸ³ï¼Œæ²¿æµ·å‰ä¾†æŽ¥æ¿Ÿã€‚è»æ°‘æ­¡è²æŒ¯åœ°ï¼Œä¸€è·¯å¤ªå¹³ã€‚兵馬已抵漳å—大鎮,建牙開府 ,大布雄å¨ã€‚ç¯€åº¦è—©éŽ®å±¢å±¢å¥æœ‰å¥‡åŠŸï¼Œä¸æ™‚頒有欽賞,官爵加å°è‡³å³åœ‹å…¬ï¼Œè¢žè¡£çމ叶 ,賜尚方åŠï¼Œä¾¿å®œè¡Œäº‹ï¼Œä¸å•»å¤©å­è¡Œç‚ºã€‚正在熱鬧之際,一日劉ç®é€£å®—åƒè™Ÿï¼Œç›´é€²å— æµ·å°æ´‹ï¼Œè¦èˆ‡å³åœ‹å…¬ç›¸æœƒã€‚å³åœ‹å…¬é–‹ç‡Ÿåˆ—隊,å€åŠ æ•´è‚…å¨åš´ï¼Œä¸€å¦‚剿—¥åЉç®ç›¸è¦‹æ•…事 。酒至三巡,劉ç®å³å•:「æ©å…„è‡ªå‰æ­²å‡ºå±±ï¼Œèžå¾—尚未娶有尊嫂。若ä¸ç›¸æ£„,èˆå¦¹å¹´ å·²åŠç¬„,情願é€ä¾†ï¼Œä»¥å‚™ç®•帚。ã€å³åœ‹å…¬è¦‹èªªï¼Œéœè¬ä¸æ•¢ã€‚åŠ‰ç®æ±ºæ„å†ä¸‰ï¼Œå³åœ‹å…¬é“ :「婚姻大事,在家入告父æ¯ï¼Œèº«åœ¨æµ·å¤–ç•¶å¥æ˜Žæœå»·æ–¹æ•¢æ‡‰å…ã€‚ä½†å¼Ÿåˆæœ‰ä¸€èªªï¼Œæ—¢èˆ‡ å¾å…„çµç‚ºå§»è¦ªï¼Œæ–¹ä»Šè–天孿­£ä½ä¹‹åˆï¼Œå››æµ·èžé¢¨å‘化。å¾å…„與其寄身海外,孰若歸奉 王朔?在內ä¸å¤±ç´”è‡£ä¹‹ç¯€ï¼Œåœ¨å¤–ä¸æè–„æµ·ä¹‹å¨ã€‚ æœå»·ä¸ç–‘,海邦安枕,此亦立身æšå之大節也。ã€åЉç®é€£è²å…è«¾ã€‚å³æ—¥é½Šé›†å…©é‚Šç‡Ÿå…§ 頭目,設備太牢大禮,歃血盟心,一é¢è³«ä¿®é™è¡¨ï¼Œä¸€é¢ä¿å¥æŠ•èª ã€‚æ­¤æ™‚æ­£æ˜¯å¤§å”æ­¦å¾· 四年,天å­å¾¡è¦½å¥ç« ï¼Œé¾é¡å¤§å–œï¼Œç‰¹æ—¨å·®å…§ç¿°å®˜ä¸€å“¡æ²¿æµ·å®£æšå¾·åŒ–,大頒欽賞,進爵 å°ç‚ºè¶ŠçŽ‹ï¼Œè³œåæ±ªè¯ï¼Œå‘½æ¬½å¤©ç›£æ“‡æ—¥å®Œå§»ã€‚劉æ°å°ç‚ºå®‰æµ·éƒ¡å›ï¼Œé‡‘書éµåˆ¸ä¸–襲王爵, 追å°äº”世。劉ç®è³œçˆµç‚ºå¹³æµ·çŽ‹ï¼Œæ°¸éŽ®æµ·æ±ã€‚汪劉兩家世世婚姻ä¸çµ•,直終å”代,克盡 臣節,以為åƒç§‹ç¾Žè«‡ã€‚ã€çœ¾äººé“ï¼šã€Žä»Šæ—¥é€™ä½æœ‹å‹èªªé€™æ•…事,更比尋常好è½ã€‚䏿„豆 棚之下å»åˆæ·»äº†ä¸€ä½è«‡ä»Šèªªå¤ã€æœ‰æ„æ€çš„人也。〠那人é“ï¼šã€Žåœ¨ä¸‹å¹¼å¹´ä¸æ›¾è®€æ›¸ï¼Œä¹Ÿæ˜¯é“è½é€”說。é å¹´æ•…事,其間æœä»£ã€å®˜éŠœã€åœ°å〠稱呼,ä¸éŽéš¨å£æªè‘—,åªè¦ä¸€æ™‚大家耳朵裡轟轟的好è½ï¼Œè‹¥æ¯”那尋了幾個難字ã€ä¸€ä¸€ 盤é§é„‰é¤¨å…ˆç”Ÿï¼Œæ˜Žæ—¥ä¾¿ä¸æ•¢ä¾†å¥‰æ•™äº†ã€‚ã€çœ¾äººé“:『太謙,太謙ï¼å°Šå…„壿¯”懸河,言 åŒå‹’石,胸中必多異èžç•°è¦‹ï¼Œæ­£è¦æ‹±è½ã€‚ã€å„å„稱è¬è€ŒåŽ»ã€‚ 總評讀此一則者,ä¸å¯å°‡æ„šé­¯ã€ä¼¶ä¿éŒ¯æœƒæ„了,就把汪興哥看作兩截人。其所以呆癡 啞巴,è¬é‡‘散盡,正其所以ä¿äº”å·žã€å°è¶Šåœ‹æ ¹åŸºä½œç”¨ä¹Ÿã€‚天下奇æå¤§ä¿ ï¼Œèƒ¸å¾¹è¬æœ‰ï¼Œ 心中具ä¸å¯çªºæ¸¬ä¹‹æ€ï¼Œè§€äººå‡ºå°‹å¸¸ç™¾å€ä¹‹çœ¼ã€‚ä¸€è¨€ä¸€å‹•ï¼Œè‰²è‰²ä¸æ¬²çŒ¶äººï¼Œæ³å€å€å®ˆéŒ¢ 之虜ã€è³£èœä¹‹å‚­ï¼ŒéŒ™éŠ–è¨Žå¥½ï¼Œå°¤å…¶æ‰€é„™è–„è€Œèª¹ç¬‘ä¹‹ä¹Ÿä¹…çŸ£ã€‚å¦‚éš‹æœ«å…µäº‚ï¼Œä¸–äº‹å¯çŸ¥ï¼Œ ä¸èƒ½ç‚ºå”太宗,則為錢武肅。 è‹¥è™¯é«¯æµ·å¤–ï¼Œåˆæ˜¯ä¸€è‘—妙棋,彼固ä¸å±‘為北é¢äº‹äººä¹‹è¼©è€…也。 處此亂世,倘ä¸å…‹è—身,露出奇æå¤§ä¿ ï¼ŒéžæƒŸç„¡å¯è¦‹é•·ï¼ŒæŠ‘且招ç¦ã€‚å³äº”代歙人汪臺 符,åšå­¸èƒ½æ–‡ç« ã€‚ å¾çŸ¥èª¥å‡ºéŽ®å»ºæ¥­ï¼Œè‡ºç¬¦ä¸Šæ›¸é™³åˆ©ç—…ï¼ŒçŸ¥èª¥å¥‡ä¹‹ï¼Œå®‹é½Šä¸˜å«‰å…¶çº”ï¼Œé£äººèª˜è‡ºç¬¦ç—›é£²ï¼ŒæŽ¨ 石城蚵皮磯下而死。此ä¸èƒ½å‘†ç™¡å•žå·´ä¹‹é©—ä¹Ÿã€‚ç¯‡ä¸­æ‘¹å¯«èˆˆå“¥èˆ‰å‹•ï¼Œæ¥µè±ªèˆˆã€æ¥µå¿«å¿ƒä¹‹ 事,俱庸俗人所為懮æ„嘆æ¯ç„‰è€…。孰知汪å›ç­‰ç®—然,掀天æ­åœ°ï¼Œå·²å¦‚龜åœè€Œç‡­ç…§ä¹‹çŸ£ 。錦囊一段波瀾,固是著書人寬展機法耳。此則該演一部傳奇,以開世人盲眼,當拭 目俟之。 第四則 藩伯å­ç ´ç”¢èˆˆå®¶ 『陶淵明詩云:「種豆å—山下,è‰ç››è±†è‹—希晨興ç†è’穢,帶月è·é‹¤æ­¸ã€‚ã€ä¸è«–甚麼豆 å­ï¼Œä½†è¦ç¨®ä»–,須先開墾一塊熟地,好好將種å­ä¸‹åœ¨è£¡é‚Šã€‚他得了地氣,自然發生茂 盛。望他æˆç†Ÿï¼Œä¹Ÿé ˆæ—¥æ—¥æ¸…晨起來,把他根邊野è‰èŠŸé™¤æ·¨ç›¡ï¼Œåœ¨åœ°ä¸‹ä¸ä½”他的肥力, 天上ä¸é®ä»–的雨露,那豆自然有收æˆçµæžœã€‚譬如人生在è¥è¤“中,è¦å€‹æ­£æ°£çš„çˆ¶æ¯æ•™è¨“ ,沒有什麼忤逆ä¸å­çš„æ¨£å­åƒé›œä»–ï¼›ç¨é•·æ™‚,åˆè¦å€‹æ­£æ°£çš„弟兄扶æŒï¼Œä¹Ÿæ²’有什麼奸 盜è©å½çš„引誘他,自然日漸åªå¾€é‚£æ­£è·¯ä¸ŠåšåŽ»ã€‚å°æ™‚如此,大來必能æˆå®¶ç«‹æ¥­ï¼Œé¡¯è¦ª æšå,一代如此,後來å­å­«å¿…然悠久蕃盛,沒有起倒番覆,世世代代就稱為ç©å–„之家 äº†ã€‚å†æ²’æœ‰å°æ™‚放闢邪侈,後來有收æˆçµæžœçš„,也沒有祖宗行勢作惡,å­å­«å¾—é•·é å— 用的。 å¤èªžäº‘:「種瓜得瓜,種豆得豆。ã€åˆ†æ˜Žè¦‹å¤©åœ°é–“陰陽造化俱有本根,ç©å¾—一分陰鯫 纔得一分享用,人若ä¸èªªæ˜Žç™½ï¼Œé‚£å€‹æ›‰å¾—這個é“ç†ï¼Ÿä»Šæ—¥å¤§å®¶é–‘èšåœ¨è±†æ£šä¹‹ä¸‹ï¼Œä¹Ÿå°± ä¸å¯æŠŠç¨®è±†çš„事等閑看éŽã€‚ã€å…§ä¸­ä¸€äººä¸Šå‰æ‹±æ‰‹é“ï¼šã€Žæ˜¨è€…å°Šå…„èªªä¾†çš„å¤§æœ‰æ„æ€ï¼Œä»Š åˆèªªèµ·ï¼Œé€™èˆ¬è«–頭也就ä¸åŒäº†ï¼Œè«‹ç«Ÿå…¶èªªã€‚ã€é€™ä½æœ‹å‹ååˆè¬™è®“一回,說é“:『今日 在下ä¸èªªå¤çš„,倒說一回ç¾åœ¨çš„,說éŽäº†ä¹Ÿå¥½ç­‰åˆ—ä½å°±è¿‘訪å•,始知å°å¼Ÿä¹‹è¨€ä¸ä¼¼é‚£ 蘇æ±å¡ã€Œå§‘妄言之ã€å§‘妄è½ä¹‹ã€ä¸€é¡žè©±ä¹Ÿã€‚且將幾å¥åå…¬ç¾æˆæ ¼è¨€èªªåœ¨å‰é‚Šç•¶å€‹è©±æŸ„ ,眾ä½è½ä¾†ä¹Ÿæœ‰å€‹é ­ç·’。你é“那格言是何人的?乃是宋æœä¸€ä½å®°ç›¸å§“å¸é¦¬ï¼Œåå…‰ï¼Œå° ç‚ºæº«åœ‹å…¬ï¼Œäººä¿±ç¨±ä»–åšå¸é¦¬æº«å…¬ã€‚曾有幾å¥åž‚訓說é“:「ç©é‡‘以éºå­å­«ï¼Œå­å­«æœªå¿…能 å®ˆï¼›ç©æ›¸ä»¥éºå­å­«ï¼Œå­å­«æœªå¿…能讀;ä¸å¦‚ç©é™°å¾·æ–¼å†¥å†¥ä¹‹ä¸­ï¼Œä»¥ç‚ºå­å­«é•·ä¹…之計。〠他這幾å¥ä¸æ˜¯ç­‰é–‘說得出的,俱是閱歷人情,é€å¾¹ä¸–æ•…ï¼Œéš¨ä½ è°æ˜Žä¼¶ä¿çš„人,逃ä¸å‡º 他這幾å¥è¨€èªžã€‚譬如一個王孫公å­ï¼Œä»–家的金銀æ“éŽåŒ—斗。後來å­å­«ä¸çŸ¥ç¥–父創業艱 難,åªé“家家都是有的,ä¸ç•¶éŒ¢è²¡ï¼Œç•¶è²»å›ºè²»ï¼Œä¸ç•¶è²»ä¹Ÿè²»ï¼Œç¹©é‹¸æœ¨æ–·ï¼Œæ°´æ»´çŸ³å·ï¼Œ åªè‡ªæ—¥æ¼¸æ¶ˆç£¨ï¼Œä¸ä¹…散失,如何守得他定?「å­å­«æœªå¿…èƒ½å®ˆã€æ­£è¬‚此也。åˆé“:錢財 易於耗散,囤在那裡惹人看想。功å富貴都是書香一脈發出來的,ä¸å¦‚ç©ä¸‹äº›åƒå¤å¥‡ 書,å­å­«çœ‹äº†ï¼Œä¸€æœç™¼è·¡ï¼Œä¾èˆŠèµ·å®¶ï¼›å€’䏿¯”é‚£ç©é‡‘çš„ï¼Œåˆæ‚ ä¹…穩實些?那知富貴之 家享用太éŽï¼Œç”Ÿçš„å­å­«é•·çŸ­ä¸é½Šï¼Œè°æ˜Žçš„領會得來,ä¾èˆŠå¾—那書的å—用;那愚蠢的生 來與書相忤,ä¸è¦èªªä¸åŽ»è®€ä»–ï¼Œçœ‹è¦‹åœ¨é¢å‰å°±å¦‚眼中之釘,急急拔去纔好。 或者一大部幾å套的,先零è½äº†å¹¾å¥—ï¼›å¹¾åæœ¬çš„,先æå£žäº†å¹¾æœ¬ã€‚或者內庫纂修,或 者手抄秘錄,人所ä¸ç¶“見的,也當尋常《兔園冊》ã€é›œå­—本兒一樣,值åå…©çš„ä¸ä¸ŠäºŒ ä¸‰ï¼Œå€¼äºŒä¸‰å…©çš„ä¸æ¶ˆä¸‰äº”錢,也就耗散去了。 åˆæˆ–被幫閑蔑片故æ„雜亂拆開,說é“:「這書是ä¸å…¨çš„,åªå¥½åšç´™ç­‹ç¨±æŽ‰äº†ã€‚ã€ä»–倒 æš—æš—åšå¹¾é­æ”¶åŽ»ï¼Œå»å¦è¼¯æˆå…¨éƒ¨ï¼Œè³£äº†ç­‰æ®µéŠ€å­ã€‚çœ‹å°‡èµ·ä¾†ä¸æƒŸä¸èƒ½è®€ï¼Œå°±æ˜¯è®€å­—åŠ é‚Šäº†ï¼Œè³£ä¹Ÿæœªå¿…èƒ½è³£äº†ã€‚ 故此溫公åªè¦å‹¸äººç©äº›é™°å¾·ï¼Œåœ¨æ–¼äººæ‰€ä¸çŸ¥ä¸è¦ºä¹‹è™•,那天地鬼神按著算å­ï¼Œå£“著定 盤星,分分é‡é‡ï¼Œå…¨ç„¶ä¸çˆ½ï¼Œæˆ–於人身,或於å­å­«ï¼Œä¸€ä»£äº«ç”¨ä¸ç›¡çš„å†åŠä¸€ä»£ï¼Œå代 享用ä¸ç›¡çš„å†åŠç”Ÿç”Ÿä¸–ä¸–ï¼Œä¸æ–·é ­çš„。åªè¦çœ‹é‚£ç©çš„陰鯫厚薄何如,å†ä¸éŒ¯äº†ä¸€äººã€ 誤了一人。此事å‘人如何說得明白?連自己也全然ä¸çŸ¥ï¼Œæˆ–一代就有報應的,或有å é¤˜ä»£æ–¹æœ‰æ•ˆé©—çš„ã€‚ç¸½ä¹‹å†¥å†¥ä¸­è‡ªæˆæ‚ é ï¼Œä¸æ˜¯é‚£é›»å…‰æ± å½±ï¼ŒéœŽæ™‚便éŽçš„äº‹ä¹Ÿã€‚è©±äº¦ä¸ è¦èªªå¾—長了,在下去年往北生æ„,行至山æ±é’州府臨æœç¸£åœ°æ–¹ï¼Œä¿¡è‘—牲å£èµ°åˆ°å€‹æ‘è½ åŽ»è™•ã€‚åªè¦‹çŒæœ¨å¢é™°ä¹‹ä¸­ï¼Œå³»å®‡å¦‚雲,å·ç‰†ä¼¼é›ªï¼Œé£›ç”ç•«æ£Ÿï¼Œå³­é–£å±æ¨“,連著碧沼清 æ± ï¼Œé›•æ¬„æ›²æª»ï¼Œä»¤äººæ‡‰æŽ¥ä¸æš‡ã€‚那周åœè†è…´åƒé ƒï¼Œç‰²ç•œæˆç¾¤ï¼Œä¹Ÿéƒ½æ²’有數目。 此時在下也因日色正中,炎暑酷烈,就在近處一個施茶庵內憩æ¯ç‰‡æ™‚。å•著一個憎人 :「此是何宅?ã€é‚£åƒ§äººç¬‘了一笑,兩頭看見沒人,答é“ï¼šã€Œæ­¤æ˜¯æ•æª€è¶Šé–»ç™¡ä¹‹å®…。 這些光景都是癡å­è‡ªæŽ™ä¾†çš„ã€‚ã€æˆ‘é“:「既癡怎能到這地ä½ï¼Ÿã€åƒ§äººé“:「這話長哩 。居士è¦çŸ¥ï¼Œè«‹é€²è£¡é‚Šå下,åƒäº›ç´ é½‹ï¼Œå¾žå®¹èªªä¾†ï¼Œå€’也是一段佳活。ã€åœ¨ä¸‹éš¨è‘—é•· è€é€²äº†é½‹å ‚,é‡è¤‡å•訊,敘å一回。奉茶將罷,僧人指著佛å‰ç–頭,é“:「此ç–就是 檀越大諱,姓閻å顯,今年五å三歲了。他父親åå…‰é¬¥ï¼Œæ˜¯è¬æ›†åˆå¹´é€²å£«ï¼Œå°‘年科第 ,åˆç‚ºå´‘山知縣,行å–åç§‘çµ¦äº‹ã€‚è³‡æ€§æ•æ·ï¼Œæœªç¶“è¡Œå–æ™‚節,åšå®˜å€’也公é“。自到了 å科,入於朋黨,挺身出頭,連上了兩三個利害本章。皇å¸åªå°‡æœ¬ç« ç•™ä¸­ä¸ç™¼ã€‚那在 外官兒人人懼怕,ä¸è«–在æœåœ¨å®¶ï¼Œå¤©ä¸‹çš„貪酷官員é€ä»–書帕,一日ä¸çŸ¥å¤šå°‘。到後來 年例轉了浙江方伯,放手一åšï¼Œæ‰£å…‹éŒ¢ç³§ï¼Œä¸€å¹´åˆä¸çŸ¥å¤šå°‘。æœä¸­ä¹Ÿæœ‰çœ‹ä¸éŽçš„ï¼Œåƒ äº†ä¸€æœ¬ã€‚ä»–å°±ç€Ÿç€Ÿç‘ç‘å›žä¾†æž—ä¸‹ã€‚åˆæ™‚ç„¡å­ï¼Œä¹Ÿé‚„有鬆動所在。自從得了癡å­ï¼Œåªé“ æŽ™çš„å®¶ç•¶ä»˜è¨—æœ‰äººï¼Œé‚£åˆ»è–„å°–é…¸ä¸€æ—¥ä¸€æ—¥è¶Šç™¼ç·Šäº†ã€‚æ¯æ—¥ç³¾é›†è¨±å¤šæ¸¸æ‰‹å¥½é–‘ä¹‹å¾’ï¼Œé€ å®¶æ‰“ç®—ã€‚æ—©æ—©çš„èµ·èº«åˆ°é‚£ç”°é ­åœ°è…¦ï¼ŒæŸ¥ç†ç‰›ç¾Šé¦¬åŒ¹ã€åœ°åœŸå·¥ç¨‹ã€‚拿了一把å°å‚˜ï¼Œç«‹æ–¼ è¦è·¯æ‰€åœ¨ï¼Œè¦‹æœ‰é„‰é–“è²¡ä¸»ã€æ”¾è•©å…’郎,慌忙堆è½ç¬‘容,溫存å•候,邀人莊上åƒé “å°é£¯ ,就è¦é€äº›éŠ€å­ç”Ÿæ”¾åˆ©æ¯ï¼Œæˆ–連疆接界的田地就è¦é€åƒ¹èˆ‡ä»–。莊客一é¢é¨™ä»–寫了賣契 ,一文ä¸èˆ‡ï¼Œæ—¥å¾Œé‡è‘—,早早é¿é€²åŽ»äº†ã€‚ä¸äº”六年,地土房產添其åå€ã€‚å…¬å­åˆ°å¾—å æ­²ï¼Œé‚£æ–¹ä¼¯å…¬ä¸€æœä»™é€åŽ»äº†ã€‚ç•™çš„å®¶ç•¶éƒ½æ˜¯ç®¡å®¶å¹³åˆ†çš„å¹³åˆ†ã€å…‹è½çš„竟克è½äº†ã€‚平素 那些親眷都是被他斲削的,在æ—冷眼相覷,並無一人來管著他。夫人請了一ä½å…ˆç”Ÿæ•™ 他讀書,指望他進學,也好ä¿å®ˆå®¶ç•¶ã€‚那知文ç†ä¸é€šï¼Œé€£é‚£ç¸£è€ƒä¹Ÿä¸èƒ½å–一åã€‚å…¬å­ ä¸€èˆ¬ä¹Ÿæ›‰å¾—æ¦®è¾±æ‰€é—œï¼Œæ‹¿äº†å¹¾å…©éŠ€å­å¤®äººé€è€ƒï¼Œé‚£è¦ªçœ·æœ‹å‹æ­£æ¬²å“„他,那有一人幫襯 ?ä¸è¦ºå·²åˆ°å七八歲,自己也覺有些忿悶。〠一日改æ›è¡£è£³ï¼Œç›´åˆ°äº”å…­å里之外,仔細探è½è‡ªçš„家世如何如何。å»è¦‹ä¸‰å››äººå在樹 下,一人嚷é“:『閻布政這樣è²å‹¢ï¼Œå¦‚今å»ä¹Ÿå ±æ‡‰äº†ï¼ã€å…¬å­è½èžæ­¤è¨€ï¼Œä¹Ÿå°±æŒ¨èº«å 在æ—邊,å¾å¾å•é“:『閻鄉宦ä½åœ¨é‚£è£¡ï¼Ÿã€é‚£äººé“:『ä½åœ¨åŸŽè£¡ã€‚ã€å…¬å­é“:『他家 åšå®˜çš„雖死,å»ä¹Ÿç„¡ç”šå ±æ‡‰åŽ»è™•ã€‚ã€é‚£äººé“:『你年å°ä¸çŸ¥ã€‚〠把當åˆåžä½”çš„è²å‹¢ã€é¨™å“„的局é¢ã€ç›¤ç®—的計較,æ¯äººèªªäº†è¨±å¤šã€‚ 臨後一人說到傷心之處,æ¨ä¸åœ¨åœ°ä¸‹æŒ–é‚£åšå®˜çš„起來,象ä¼å­èƒ¥æŠŠé‚£æ¥šå¹³çŽ‹éž­å±ä¸‰ç™¾ 纔快心滿æ„哩。那公å­é©šå¾—心瞪目呆,往家急走。嘆氣é“:『我父親如此為人,我輩 將來無å™é¡žçŸ£ï¼ã€ 一é¢å–šäº†å¹¾å€‹ç®¡å®¶ï¼Œä¸€é¢å–šäº†è¨±å¤šèŽŠé ­ï¼Œå°‡é‚£åœ°åœŸå­—è™Ÿäººæˆ¶ä¸€ä¸€é–‹å‡ºï¼Œç…§åæª¢äº†æ–‡å¥‘ ,喚了一個蒼頭,自家騎匹蹇驢,挨家訪å•,將文契一一交還,那人感è¬ä¸èŠä¸åŠå¹´ ,還人地土也就å分中去了五分。那些年é ç„¡äººçš„ä¾èˆŠç•™ä¸‹ã€‚無心讀書,日é€å°±æœ‰è¨± 多幫閑篾片看得公å­å¥½è‘—那一件,就著æ„逢迎個ä¸äº†ã€‚ 一年之間,門下食客就有百餘人。跟隨莊戶拿鷹é€çŠ¬ã€æ‰“彈踢çƒã€èˆžæ§ä½¿æ£’的,ä¸ä¸‹ 二三百。一日天雨,在家無事,喚一評話先兒到來,å©äº†ä¸€é¦–,手中擎著一尾鮫魚上 ç»ï¼Œå…¬å­å–šå»šå¸æ”¶åŽ»ä¸åœ¨è©±ä¸‹ã€‚å½¼æ™‚äº”æœˆå¤©æ°£ï¼Œæ±æµ·é®«é­šå»æ˜¯æ™‚物,æ¯ä¸€å°¾å€¼éŒ¢åƒæ–‡ 。那先兒虔心覓得,指望打一個大大抽è±ã€‚å»è¦‹å…¬å­å…¨ä¸ä»‹æ„,心中å分委決ä¸ä¸‹ï¼Œ 說得幾å¥ï¼Œä¾¿é“:『公å­ï¼Œå°äººæ‰€å¥‰ä¹‹é­šå»æ˜¯è‡´å¿ƒè¦“來,此時è¶é®®é¤ç”¨æ–¹å¥½ã€‚ã€å…¬å­ åˆä¸ç†è«–,先兒åˆå‹‰å¼·èªªäº†å¹¾å¥ï¼ŒåˆæŠŠé‚£é­šæèµ·ã€‚å…¬å­å³ä¾¿å°éŠ€äº”å…©è³žè³œå…ˆå…’ï¼Œåˆè‘— 人æ§è‘—一個大盒,å«é‚£å…ˆå…’ä¸”åŽ»ã€‚å‡ºé–€çœ‹æ™‚ï¼Œå»æœ‰å餘尾鮫魚在內,纔見他家動用, 䏿˜¯å°äººæ„見度é‡å¾—的了。 è€å¤«äººåŠå¨˜å­çœ‹è¦‹å…¬å­æµªè²»ä¸ç¶“,å†ä¸‰å‹¸åŒ–,公å­é“:『家中所費值得æçš„ï¼æ¸…明時 節å—莊該我起社,你們上下內外人等乘著車å­éš¨è‘—驢馬來看鄉會,纔見我費得有致哩 ï¼ã€è‡³æ—¥ï¼Œå¤«äººå¨˜å­æžœåˆ°èŽŠä¸Šã€‚å…¬å­æ—©å·²å–šäººæ­èµ·å座高臺,é¸äº†äºŒåç­æˆ²å­ï¼Œåˆä½œ åç­åœ¨é‚£è‡ºä¸Šã€‚有愛è½å—腔的,有愛è½åŒ—腔的,有愛看文戲的,有愛看武戲的,隨人 èšé›†ç´„有è¬äººã€‚åŠæœ¬ä¹‹é–“æäººè…¹æžµæ•£åŽ»ï¼Œå»æŠ¬å‡ºé’蚨三五åç­ï¼Œå–šäººæœ›ç©ºç‘去。那些 鄉人æˆåœ˜çµå¡Šå°±åœ°æ¶æ‹¾ï¼Œæœ‰è·Œå€’的,有壓著的,有喧嚷的,有和哄的,拾來的錢都就 é‚£ç«é£Ÿæ“”上åƒå€‹é¥œé£½ï¼Œè¬‚之買春。那戲å­å‡ºåŠ›ï¼Œåšåˆ°å¾—æ„æ‰€åœ¨ï¼Œå°±å°‡ç¶¾éŒ¦æ‰‹å¸•ã€è˜‡æ­ æ‰‡å­æ“²å°‡ä¸ŠåŽ»ï¼Œä»¥ä½œçºé ­ä¹‹å½©ã€‚他在中間四é¢è‡ºä¸Šï¼Œé ­æˆ´é€é™å·¾ï¼Œèº«æŠ«é¶´æ°…,左å³é’ è¡£æ§èŒ—ã€åŸ·æ‹‚,ä¸ä½å£ç¬‘嘻嘻,總è¦è²·æ˜¥å ´ä¸Šç¹³è¬äººå€‹å€‹å¾—äº›æ­¡å¿ƒè€ŒåŽ»ã€‚ä¸æ›‰å¾—他心 事,å»èªªé–»å¸ƒæ”¿è©²æœ‰é€™å€‹æ•£å­ã€‚那知公å­ä¹‹å¿ƒï¼Œåªå› ç•¶æ—¥ç¨®äº†è¨±å¤šæ¯’孽,åªç•¶å‘æ€«å‰ æ‹¿äº›æžœå“蔬èœï¼Œå°å°æ‡ºæ‚”而已。夫人娘å­è¦‹æ­¤å…‰æ™¯ï¼Œå„å„å¿ƒä¸­å¿¿å¿¿ï¼Œè¶æ—©å°‡äº›ç´°è»Ÿä¹‹ 物è—之別室,以作後日章本。一日早上,正喚家人抱了氈包,æŒäº†å帖,上了油å£é¦™ 車,出門拜客,å»è¦‹å¤§é–€èƒŒå¾Œé®é®æŽ©æŽ©ï¼Œæ¬²å‰ä¸å‰ï¼Œæ¬²æ­¢ä¸æ­¢ï¼Œå…¬å­é“:『那大門外 是甚麼人?ã€è‘—人去看,åªè¦‹ä¸€å€‹ç§€å£«ï¼Œé ­æˆ´æŠ˜è§’歪巾,身穿æ•衣,足踹è‰å±¥ï¼Œèœè‰² 鳩形,上下氣力兩ä¸ç›¸æŽ¥ï¼Œä¸€æ¯å¥„奄,似將委填æºå£‘之狀。 å…¬å­é€£å¿™ä¸‹è½Žï¼Œè‘—人扶將éŽä¾†ï¼Œä¸€æ‰‹æ”™æ‰¶ï¼Œç›´åˆ°å¤§å»³ä¹‹ä¸Šã€‚從容施禮,分賓而å。公 å­å°±å•é“:『先生尊姓大號?有何賜教?〠那人å¾å¾é“ã€Žä¸æ‰å§“劉,今年二å三歲,府城益都縣庠生也。ã€è¢–中慢慢摸出一帖來,寫著『眷晚弟劉蕃頓首:拜ã€ï¼Œå…¬å­æŽ¥è‘—é“:『怎麼敢當晚字 ï¼ã€åŠ‰è•ƒé“:『今因科考失利,染了一疾,é‚çˆ¾ä¼¶ä»ƒï¼Œæ­¢æœ‰è€æ¯åœ¨å®¶ï¼Œé¤¤ç²¥ä¸çµ¦ã€‚今 日纔好舉步åŒåŒè€Œä¾†ã€‚ èžå…ˆç”Ÿæ„氣豪è¯ï¼Œé¡˜æŠ•門下åšå€‹æ›¸è¨˜ã€‚ä¹Ÿä¸æ•¢æœ‰æ‰€å¥¢æœ›ï¼Œåªé¡˜éš¨å¾žçœ¾é£Ÿå®¢ä¹‹å¾Œï¼Œæ´¾äº› å°å°åŸ·äº‹ï¼Œæœ›å¾—è€æ¯ä¸‰é¤å‘¨å…¨ï¼Œæ„願足矣ï¼ã€å…¬å­é“:『åšé–€ä¸‹ä¹‹å®¢çš†èœå‚­å± ç‹—之輩 ,何å¯ä»¥è¾±æ˜Žå…¬ï¼ä»Šæ—¢æ‰¶æ™è€Œä¾†ï¼Œä¸”在è’é½‹æ…ˆæ¯æ•¸æ—¥ï¼Œè€ä¼¯æ¯è™•,弟更設處便了。〠一é¢å–šå°å»æ‰“掃書房,請劉相公ä½ä¸‹ï¼Œå³å‚™ä¸Šç­‰ä¾›çµ¦ï¼Œå°å¿ƒä¼ºå€™ã€‚ 此時也是劉蕃時é‹åˆ°ä¾†ï¼Œäº¦æ˜¯å…¬å­å…·çœ¼èƒ½æ–¼é¢¨å¡µä¸­è­˜å¾—豪傑,å³å–šå®¶ä¸‹è€åƒ•:『å¯å‚™ 五百金,以三百為劉æ¯å£½ï¼Œä»¥äºŒç™¾ç‚ºåŠ‰è•ƒè¦“ä¸€ä½³é…。ã€ä¸å…©æœˆé–“,劉蕃ä¿é¤Šå¾—白白胖 胖。 忽一日,å—莊上人來報é“:『昨夜三更時分有三五å人,明ç«åŸ·ä»—,打入莊門,將莊 上當下客人布疋約有百å餘筒æ†è¼‰è€ŒåŽ»ã€‚èŽŠä¸æŒæ¢°è¿½è¶•上å‰ï¼Œçœ¾ç›œä¸Ÿæ£„一åŠã€‚有一個 生得極長極大,膂力éŽäººï¼Œåªå› å¤©é»‘路迷,陷在å¤äº•之內,眾人å”力擒拿在此,åªå€™ å…¬å­é€å®˜è™•治。ã€ç”¨å‘½èŽŠä¸å„å„請賞,公å­ä¸€ä¸€å–šé€²ï¼Œç´°ç´°å•å€‹æ˜Žç™½ï¼Œå³æ›¸å°ç¥¨ï¼Œä»° 莊頭將奪回布疋照åçµ¦æ•£ï¼Œé‚„å…æœ¬ä¸ç§Ÿç³§äº”石,散訖直到黃æ˜ä¹‹éš›ã€‚然後帶那所ç²ä¹‹ 盜éŽä¾†ï¼Œå°‡ç‡ˆç…§çœ‹ã€‚å…¬å­å¿™é“:『快快將他鬆了。å–ä»¶è¡£æœéŽä¾†æ•™ä»–穿上;å–些酒食 ,請他到後軒å定。ã€é‚£æ¼¢å†ä¸‰è² æ…šï¼Œé€£ç¨±ï¼šã€Žä¸æ•¢ï¼ã€å…¬å­é“:『如此好漢到我地 方,我竟ä¸èƒ½å‘¨æ—‹ï¼Œè‡´ä½¿æ±è¼©ä¹¾æ­¤ä¸è‰¯ä¹‹äº‹ï¼Œçš†æˆ‘罪也ï¼çœ‹æ±ä¸€è²Œå ‚堂,富貴åªåœ¨æ—¦ 晚,何ä¸å¥ˆç…©è‡³æ­¤ã€‚ã€å¿™å–白金三百兩,一盤托出,é€èˆ‡é‚£æ¼¢ã€‚那漢惶愧ä¼åœ°ï¼Œä¸æ•¢ 仰視。公å­å¿ƒå…§æƒ³é“:『左å³äººå¤šï¼Œææœ‰è­˜èªï¼Œæœªä¾¿æ‰¿å—。ã€é€£å°‡å·¦å³å±é€€ï¼Œå©‰è¨€éœ 語勸化他:『從此åšå€‹å¥½äººï¼ŒèŽ«èˆ‡æ­¤è¼©ç‚ºä¼ã€‚ã€ä¹Ÿä¸åŽ»å•ä»–å§“å,倒寫了懇切一書, 說是至親姓趙å完璧,薦到é¼é™½éµå¶ºç¸½å…µæŽå¦‚鬆標下,åšå€‹è½ç”¨æ¨™å®˜ã€‚ç•¶æ™šå‚™äº†è¡£è£ ï¼Œè¦ä»–收了銀å­ï¼Œä¿æ‚„é€ä»–出門。莊客一個ä¸çŸ¥ï¼Œçœ‹è¦‹æ¬¡æ—¥æ¯«ç„¡å‹•éœï¼Œçº”曉得公å­å·² 經釋放,感嘆公å­ä¸äº†ã€‚å†èªªåŠ‰è•ƒï¼Œè‡ªé‚£æ—¥æ”¶ç•™ä¹‹å¾Œï¼Œå¾—äº†å¦‚è¨±ç›¤è²»ï¼Œå®¶è£¡ä¹Ÿå°±åƒå€‹ 人家。候到八月åˆï¼Œå¤§è€ƒå ´è£¡å…¬ç„¶å–出一å科舉,放榜中了第三åç¶“é­ã€‚回來åŒäº†æ¯ è¦ªï¼Œä¸Šé–€æ­£è¦æ‹œè¬å…¬å­ï¼Œä¸æ–™é‚£æ—¥æ­£å€¼å…¬å­é‹é€€ä¹‹æ™‚ï¼Œå¿½ç„¶è‡¥æˆ¿ä¸­çƒˆç«æ²–天,黑煙蔽 地,把å‰å¾Œå±‹å®…化為ç°ç‡¼ã€‚許多田地莊æ¨åˆè¢«æ´ªæ°´æ³›æ¿«ï¼Œæ²–沒一空。人頭帳自也就隨 è‘—æ°£é‹è¨Žä¸ä¸Šäº†ã€‚æ¯è¦ªã€å¦»å­é“他日常浪費,俱å„自ä¿ï¼Œé‚£è£¡é¡§æˆ€ä¸€äº›ï¼Ÿè¦ªæˆšæœ‹å‹ä¹Ÿ 都é“他退é‹çª®é¬¼ï¼Œå°é¢ä¿±ä¸ç›¸ç…§ã€‚å§‹åˆè³£äº›é©¢é¦¬ç‰›ç¾Šï¼Œæ¬¡å‰‡è³£äº›æ®˜ç¼ºå®¶å¤¥ï¼Œå†æ¬¡å°‡å®¶ 中僮僕待他轉身å–價,一日一日漸漸艱難。始åˆé‚„é“人到窮時,ä¸éŽè¡£æœè¥¤è¤¸ï¼Œé£²é£Ÿ 粗糙,那知襤褸衣æœã€ç²—糙飲食俱ä¸èƒ½å¤ ï¼Œé€£é‚£æ£²èº«ä¹‹æ‰€ä¹Ÿä¸ä¾¿äº†ã€‚å…¬å­ä¸€æœè½é­„, æ“Žè‘—å…©è¡Œç æ·šï¼Œå¾’步走上城來,æ„ä¸­è¦“å…©å€‹èˆŠæ—¥çŸ¥å·±ã€‚é‚£çŸ¥åæŠ•ä¹ç©ºï¼Œå‰é‚Šèµ°åŽ»å¾Œé‚Š 便添許多指æ ï¼Œé“是此人今日åˆå—此報ï¼å…¬å­å…©è€³è½è¦‹ï¼Œä¹Ÿåªå¥½ç½®è‹¥ç½”èžã€‚更苦無處 棲身,有人指é“:『城外å餘里有個土窖,ä¸é¢¨ä¸é›¨ï¼Œä¸Šå¸‚來覓些飲食倒也順便。〠公å­ä¹Ÿåªå¾—ä¾èªªè€Œè¡Œï¼Œå°±åœ¨åœŸçª–內安身ä½ä¸‹ã€‚一般交個å°é‹ï¼Œé‡è‘—å¹³æ—¥ä¸€å€‹ç›¸çŸ¥ï¼Œå¶ ç„¶åœ¨å½¼ç¶“éŽï¼Œçœ‹è¦‹å…¬å­å¦‚此光景,身邊所帶之物傾囊而與,約有百å餘金。公å­å¾—手 ,次日就到舊處,租起一所大房,買些家夥什物,收拾幾個舊人,幫身æœä¾ã€‚那些蔑 片å°äººä¾èˆŠç°‡æ“è€Œä¾†ï¼Œå°‡é‚£è‚¡æ°´å…’ä¸æ•¸æœˆé–“一傾就涸,眾人å€å¿½èµ°æ•£ã€‚ å…¬å­ä¾èˆŠåˆ°åœŸçª–å—用去了ä¸é¡Œã€‚å†èªªåŠ‰è•ƒä¸­äº†èˆ‰äººï¼Œé‚£æ—¥åŒäº†æ¯è¦ªä¸Šé–€æ‹œè¬ï¼Œä¸æ–™é‡ è‘—ç«èµ·æ²’處相會,åªå¾—æ€æ€è€Œå›žã€‚且去收拾行æŽï¼Œé€²äº¬æœƒè©¦ã€‚䏿œŸè¯æ·ä¸­äº†é€²å£«ï¼Œé¸ 了大å府推官。 å°æœˆé ˜äº†å®˜æ†‘,離京ä¸é å°±åˆ°äº†ä»»ã€‚那大å府ç†åˆ‘廳轄著ä¹å€‹çŸ¥ç¸£ï¼Œæœ‰åå«åšå大閻 çŽ‹ï¼Œå¾žä¾†éŒ¢ç³§æ˜“å¾µï¼Œåˆ‘åæ˜“çµã€‚推官ã€çŸ¥ç¸£ï¼Œå€‹å€‹ä¿±è¦è¡Œå–,éžç§‘å³é“,最è°å¯Ÿè»’昂 çš„ã€‚åŠ‰è•ƒæ˜¯å€‹çª®å„’å‡ºèº«ï¼Œæ¥µèƒ½é«”æ¤æ°‘情,除奸剔暴,ä¸ä¸€æœˆé–“,上å¸ä¿±æ¬½æ•¬ã€‚ 一é¢é£äº†è¡™å½¹ï¼ŒæŒäº†äº›é ˆè–„ä¿¸ï¼ŒæŽ¥å–æ¯è¦ªåˆ°ä»»ã€‚ æ¯è¦ªå³æ—¥èµ·ç¨‹ï¼Œå°‡æ¬¡åˆ°é‚£å¤§å府境上,å³å–šè¡™å½¹å°‹ä¸€å…¬é¤¨ä½ä¸‹ï¼Œä¸å…¥å¢ƒå…§ã€‚劉蕃心急 ,ä¸çœæ¯è¦ªå¿ƒä¸­æ˜¯ä½•緣故。疾忙騎了一匹快馬走出境外迎接æ¯è¦ªã€‚é›™è†è·ªä¸‹ï¼Œè«‹å•ä¸ å…¥å¢ƒå…§ï¼Œæ­¤æ™‚ä½•æ„?æ¯è¦ªé–‹è¨€é“:『今日我兒åšäº†æŽ¨å®˜ï¼Œä¸€é–€æ¦®è€€ã€‚æƒ³èµ·å…©å¹´ä¹‹å‰æœª 見æ©äººé–»å…¬å­ä¹‹æ™‚,我與æ±ä¿±ä¸å…為æºä¸­ç˜ çŸ£ï¼æ±æ›¾èžè¿‘日閻公å­å½¢ç‹€å¦ï¼Ÿä»Šåœ¨åœŸçª– 棲身,奄奄將斃,欲求æ±ç•¶æ—¥å‚´åƒ‚è¬è¦‹é–»å…¬å­æ™‚光景,猶未得也。ã€åŠ‰è•ƒè¬ç½ªå†ä¸‰ï¼Œ è«‹æ¯è¦ªå…¥ç½²ï¼Œä¸€é¢è‘—人馳救æ©äººï¼Œå¤«äººæ–¹è‚¯ç™»è»Šã€‚到了衙內,劉蕃å³å‚™ä¿¸éŠ€åŠå„縣借 湊åƒå…©ä¹‹æ•¸ï¼Œå·®äººå‰å¾€è‡¨æœæŽ¥è«‹å…¬å­ã€‚那公å­å±…在土窖,地方人å»ä¹Ÿä¸çŸ¥ã€‚åªæœ‰ä¸€å€‹ è€æˆæœ‹å‹å¹³æ—¥èˆ‡å…¬å­æ¥µç›¸å¥‘的,也因他浪費勸阻ä¸è½ï¼Œåªå¾—ç–了。èžå¾—有人請他,尋 著衙役說é“:『閻公å­ä¸‹è½æˆ‘å»çŸ¥é“。但一頓與他åƒé‡‘,他就迂而闊之起來了。我且 往土窖,é é èªªåˆ°é‚Šéš›ï¼Œçœ‹ä»–伎倆何如ã€é‚£äººåˆ°å½¼ï¼Œæ—©å·²å°‹è‘—,é“:『有一相知æŒç™¾ 金覓æ±ï¼Œå¥‰é…¬å¤™æ˜”æ„誼,我特引來,æ±å°‡ä½•以報我?ã€å…¬å­é“:『此時錙銖å‹å¦‚é‰…è¬ ï¼Œä½¿æžœæœ‰æ­¤ï¼Œæˆ‘ç•¶ä»¥åŠç›¸é…¬ä¹Ÿï¼ã€é‚£äººé“:『æœå­æ˜¥ä¹‹ä¼Žå€†çŒ¶æ˜”,足下真é“å™¨ä¹Ÿï¼æ± 當困厄,我ä¸èƒ½åŠ©æ±ï¼Œè€Œè‚¯å—æ±ä¹‹é…¬é‚£ï¼ã€å› å¼•衙役往見,一é¢ç‚ºå½¼æ²»è£ï¼Œä¸æ•¸æ—¥é–“ ï¼Œæ„æ°£æšæšï¼Œç«Ÿåˆ°å¤§å府刑廳來。劉蕃åŒè‘—æ¯è¦ªå¦»å­å‡ºæ‹œï¼Œå…¬å­äº¦æ‹œï¼Œä¿±å„å¿»å¿»ã€‚ä½ ä¸‹ä¸åŠä¸‰å¹´ï¼ŒåŠ‰è•ƒæ”¿è²èŒ‚著,行å–å部衙門,公å­éš¨äº†é€²äº¬ã€‚彼時都中功令尚寬,凡 åéƒ¨è¡™é–€è«‹æ‰˜åŠæ–¡æ—‹è€…,一年六é¸ï¼Œç„¡ä¸ç”±å…¬å­ç¶“手,囊中所ç©ä¸å•»äº”å…­è¬é‡‘。會見 戶ã€å·¥äºŒéƒ¨ï¼Œé–‹è¨­æ–°ä¾‹ï¼Œç´éЀ䏉åƒï¼Œåšäº†å…§é–£ä¸­æ›¸ã€‚三年考滿,昇了湖廣常德府åŒçŸ¥ 。é©é‡å¼µå±…正閣è€äº‹æ•—ï¼Œå¥‰æ—¨ç±æ²’。上å¸å§”他監守,所得寶玩金銖ä¸è¨ˆå…¶æ•¸ã€‚動了告 病文書,竟歸林下。 å‰å¾Œç”°åœ°æˆ¿ç”¢ä¿±å„平價交易,絕ä¸ç›¸å¼·ã€‚莊ä¸é£Ÿå®¢ä¾èˆŠå¦‚雨如雲,é‡äººæŽ¥ç‰©ç„¡ä¸è±ªçˆ½ 。更有一æ¨ç•°äº‹ï¼šç™½è“®å¯‡èµ·ï¼Œå±±æ±å…­åºœç„¡ä¸é¨·ç„¶ï¼Œå…µé¦¬æ‰€éŽï¼Œéƒ¡ç¸£ä¸€ç©ºã€‚ç¨æœ‰é’州府 é ˜å…µç¸½éŽ®ä¹ƒæ˜¯é¼æ±å¯§é ä¼¯æ¨™ä¸‹å‡ºèº«ï¼Œå§“è¶™åå®Œç’§ï¼Œè‡ªä»–é ˜å…µåˆ°ä¾†ï¼Œå³æ’¥ç²¾å…µä¸€åƒé§é˜² 閻宅左å³ï¼Œä¸€è‰ä¸€æœ¨ç„¡äººæ•¢å‹•。故此å„處州縣æ‘è½è’è’æ¶¼æ¶¼ï¼Œç¨æ­¤ä¸€èŽŠæ°£è‰²å£¯éº—ã€‚è‹¥ 䏿˜¯å…¬å­ç•¶æ—¥é·å–„改éŽï¼Œé‚£çˆ¶è¦ªçš„陰鯫,到此時也æˆä¸€ç‰‡ç°ç‡¼äº†ã€‚å…¬å­ä»Šå¹´äº”å三歲 了,生有四å­ï¼Œä¿±å·²æ¸¸ç™¢ã€‚富貴功å,方興未艾。居土若肯ä½ä¸€æ—¥ï¼Œå°åƒ§å°±åŒå±…士往 拜閻è€çˆºã€‚ 會會也妙,閻è€çˆºä¸¦æ²’一些紗帽氣質的。在下é“ï¼šã€Œè¡Œè·¯ä¹‹äººä¸æ•¢è¼•易è¬è¦‹é¡¯è€…ã€‚è€ å¸«çˆ¶è‚¯èˆ‡åœ¨ä¸‹èªªçŸ¥ï¼Œæµå‚³å¤©ä¸‹ä»¥è³‡è«‡æŸ„,齒頰俱欣ï¼ã€å³ä¾¿å‚™äº†é¦™å„€ä¸‰éŒ¢é…¬å…¶é½‹ä¾›ï¼Œ 作禮而別。 ä½ é“é€™æ®µèªªè©±ï¼Œä¸æ˜¯éŠæˆ²å­¸å¾—來的,也費些須本錢的了。ã€çœ¾äººé“:『我們豆棚之下 說些故事,æèµ·éŠ€å­å°±é™‹ç›¸äº†ã€‚ã€é‚£äººé“:『ä¸ç‚ºè¦éŒ¢èªªçš„,åªè¦çœ¾äººè½äº†è©²æ‘¹ä»¿çš„ 就該摹仿,該懲創的就該懲創,ä¸è¦è™›åº¦æˆ‘這番佳話便是了。ã€çœ¾äººè¬é“:『尊兄說 得是ï¼å°Šå…„說得是ï¼ã€ 總評凡著å°èªªï¼Œæ—¢è¦å…¥äººæƒ…中,åˆè¦å‡ºäººæ„外,如水窮雲起,樹轉峰來。使閱者應接 䏿š‡ï¼Œå»æŽ©å·è€Œæ€ï¼Œä¸çŸ¥å¾Œä¾†ä¸€æ®µè·¯é€•纔妙。如閻癡èžäººèªªä»–父親如此,還人文契〠土田,此人情中所有也,åŠå…¶å¤§æ•—一番,則人æ„中所無也。çµç´åŠ‰è¶™äºŒäººï¼Œæˆ–å¾—å…¶å¹³ 常應æ´ï¼Œæ­¤äººæƒ…中所有也。至於ç«ç‡’一空,安身土窖,乃得中書åŒçŸ¥ï¼Œå®¶ä¸­å…µç‡¹æ™ç„¶ ,此人æ„中所無也。散金ç©é‡‘而身享之;ä¸è®€æ›¸è€ŒåŠŸå勿–¼è®€æ›¸ï¼Œä¸æƒç¥–ã€çˆ¶é™°å¾·è€Œ 自ç©é™°å¾·ï¼›åˆèº«å—用之。較之溫公所訓更進數層矣ï¼ä¹ƒçŸ¥æ¥µåŠ›èƒ½ç™¡ï¼Œå¤§è°æ˜Žæ–¼æ˜¯ä¹Žå‡º 焉;極力善窮,大富貴於是乎顯焉。磨煉豪傑,åªåœ¨ç­†å°–舌鋒之間。艾衲å¯è¬‚陶鑄化 工矣。 第五則 å°ä¹žå…’真心å­ç¾© 人生天地間,å£è£¡èªªä¸€å¥æ´»ï¼Œè€³è£¡è½ä¸€å¥è©±ï¼Œä¹Ÿä¾¿èˆ‡ä¸€ç”Ÿæ°£é‹ä¼‘咎相關。åªè¦èªå¾—ç† çœŸï¼Œèªªå¾—ä¾†ï¼Œè½å¾—進,便ä¸å·®äº†ã€‚ å¤èªžäº‘:『與善人居,如入èŠè˜­ä¹‹å®¤ï¼Œä¹…而ä¸èžå…¶é¦™ï¼Œå‰‡èˆ‡ä¹‹åŒ–矣;與ä¸å–„人居,如 入鮑魚之肆,久而ä¸èžå…¶è‡­ï¼Œäº¦èˆ‡ä¹‹åŒ–矣。ã€è­¬å¦‚人立在府縣衙門å‰ï¼Œè€³é‚Šæ“¾æ“¾æ”˜æ”˜ ,是是éžéžï¼Œè‚šè£¡å°±èµ·äº†ç„¡é™æ‰“算人的念頭。日漸習熟,胸中一字ä¸é€šçš„,也就è¦ä»£ 人寫些呈狀,包攬些事,管把一片善良念頭都變作一個毒蛇窠了。åˆè­¬å¦‚人走到庵堂 廟宇,看見講經說法,念佛修齋,隨你平昔橫行惡煞也就退悔一分,日漸親近,ä¸çŸ¥ ä¸è¦ºé‚£äº›å¼·æ¢éœ¸é“行è—化作清涼世界了。今日我們å在豆棚之下,ä¸è¦çœ‹åšè±†æ£šï¼Œç•¶ æ­¤ç…©å›‚ä¹‹éš›ï¼Œæ‚ æ‚ æšæšæ–著扇å­ï¼Œç„¡æ¦®ç„¡è¾±ï¼Œåªç•¶å在西方極樂淨土,彼此心中一絲 ä¸æŽ›ã€‚å¿½ç„¶ä¸€é™£é¢¨ä¾†ï¼Œé‚£äº›è±†èŠ±é¦™æ°£æ’²äººçœ‰å®‡ï¼Œç›´é€è‚Œéª¨ï¼Œå…¼ä¹‹èªªäº›å¤å¾€ä»Šä¾†ä¸–情閑 話。 莫把『閑ã€å­—看得錯了,唯是『閑ã€çš„æ™‚節,良心發ç¾å‡ºä¾†ï¼Œä¸€è¨€æ‡‡åˆ‡ï¼Œæœ€èƒ½æ„Ÿå‹•。 如今世界ä¸å¹³ï¼Œäººå¿ƒåµæ¸¬ï¼Œé‚£è°æ˜Žä¼¶ä¿çš„人,腹內讀的書å²å€’是機械變è©çš„æœ¬é ˜ï¼Œåš 了大官,到了高ä½ï¼Œé‚£ä¸€ç‰‡å­©æèµ¤å­åˆå¿ƒå…¨ç„¶æ–·æ»…,說來的話都是天地鬼神猜料ä¸è‘— ,åšä¾†çš„事都在倫常圈å­ä¹‹å¤–。倒是那ä¸è®€æ›¸çš„æ‘é„™ä¹‹å¤«ï¼Œå…©è…³è¸è‘—實地,一心é è‘— 蒼天,ä¸èªå¾—周公ã€å­”å­ï¼Œå…¨åœ¨è‡ªå®¶è¡¾å½±å¤¢å¯ä¹‹ä¸­ï¼Œä¸€å¿ƒä¸è‹Ÿï¼Œä¸€äº‹ä¸å·®ï¼Œå€’顯得三 代之直ã€ç§‰å½žä¹‹è‰¯åœ¨æ–¼æ­¤è¼©ã€‚ä»”ç´°ä½¿äººè©•è«–èµ·ä¾†ï¼Œé‚£äº›è¸¢ç©ºå¼„å½±è±ªå‚‘ï¼Œæ¯”ç‚ºç³žè›†é‚„ä¸ åŠä¹Ÿã€‚今日在下斗膽在眾ä½é¢å‰æ”¾è‚†ï¼Œèªªå€‹æ¥µå‘極賤的人,倒åšäº†äººæ‰€é›£åŠçš„事。說 來雖然一時污耳,想將起來到也有味。你é“天下å‘è³¤çš„æ˜¯ç”šéº¼äººï¼Ÿä¹Ÿä¸æ˜¯èœå‚­é…’ä¿ï¼Œ ä¹Ÿä¸æ˜¯å± ç‹—æ¤ŽåŸ‹ï¼Œå»æ˜¯å‘田院裡一金心兒。請å•諸兄,天下的乞兒,難é“祖父生來〠世代襲è·å°±æ˜¯å«åŒ–çš„ä¸æˆï¼Ÿå»ä¹Ÿæœ‰å€‹ä¾†é ­ï¼Œé€™äººå§“å³å定,乃湖廣èŠå·žåºœæ±Ÿé™µç¸£äººã€‚ 他的祖å«åšå³ç«‹ï¼Œè²¢ä»•出身,為人氣質和平,é‡äººæŽ¥ç‰©ï¼Œç„¡ä¸ä»¥ã€Žå®å­—ã€ã€Žè€ã€å­—化 導鄉人。那一鄉之人,俱尊從他的教誨,稱他為和é–先生。 生有五å­ï¼Œå››å­ä¿±å·²å…¥è† ç™¢ï¼Œè€•讀為活。åªå› æ™šå¹´æ¬ äº›ä¸»æ„,房中一個丫頭有些姿色 ï¼Œä¸€æ™‚ç¦æŒä¸å®šï¼Œæ”¶åœ¨èº«é‚Šï¼Œç”Ÿä¸‹ä¸€å­ï¼Œé•·æˆå…­ä¸ƒæ­²ï¼Œå–šåå³è³¢ã€‚ä»–çš„æ„念就與人大 ä¸ç›¸åŒï¼Œå››ä½é•·å…„ä¹Ÿä¿±ä¸æ”¾åœ¨å¿ƒä¸Šã€‚å餘歲,父親去世,那兄弟照股分居,å³è³¢ä¹Ÿå°± 隨了æ¯è¦ªåˆ°è‡ªå·±èŽŠä¸Šä½äº†ã€‚ è«‹ä½å…ˆç”Ÿæ•™ä»–攻習詩書,æ€é‡å¹¹é‚£æ­£ç¶“勾當。到了å七八歲ä¸å¾—入學。忽一日仰天而 嘆,說出一å¥é§­äººèžè½ä¹‹è¨€ï¼Œé“:『人生天地間,上ä¸åšçŽ‰çš‡å¤§å¸ï¼Œä¸‹æƒ…願åšå‘田乞 兒。若åšå€‹ä¸–ä¸Šä¸æ²ˆä¸æ¶ªå¯æœ‰å¯ç„¡ä¹‹äººæœ‰ä½•用處?ä¸å¦‚死歸地府,å¦åŽ»è¨—ç”Ÿï¼Œåˆ°ä¹Ÿå¾— 個爽利ï¼ã€æ­¤äº¦æ˜¯å³è³¢ä¸€æ™‚忿激之談,那知屋簷三尺之上,玉å¸å¶çˆ¾éŠè¡Œå¾žæ­¤ç¶“éŽï¼Œ å·¦å³ç¥žå¸ç«‹åˆ»å¥èžã€‚玉å¸å‚³æ—¨ï¼Œå³å‘½æ³¨ç”Ÿã€æ³¨æ­»åŠç›¤æŸ¥ç¥¿ä½ã€‚åˆ¤å®˜ä¸€é½Šä¿±åˆ°ï¼ŒæŸ¥é‚£å³ è³¢æœ‰ç„¡é™½å£½ç¥¿ç±ã€‚那判官接簿清查,內有一æ¢å¯«è‘—:èŠå·žäººå³è³¢ï¼Œå¿—大ç¦è¼•,忘生怨 讟,應行勾æ”,抵作å‘田。但他生平原無曖昧心腸,委身雖屬å‘微,å“地還他高潔。 此是幽冥之事ä¸é¡Œã€‚ 且說å³è³¢åœ¨å®¶èªªäº†é€™å¥å¦„è©±ï¼Œä¸æ•¸æ—¥é–“,陽壽頓絕。妻å­å‘æœ‰å¦Šå­•åœ¨èº«ï¼Œåˆ°äº†åæœˆæ»¿ 足,生下éºè…¹ä¸€å­ï¼Œä¹³å定兒,後來å³åå³å®šï¼Œé¢è²Œå»ä¹Ÿæ¸…秀。年歲漸長,奈何家業 æ—¥é€å‡‹é›¶ï¼Œåªå› ä»–命裡注定是個乞兒,如何橕架得ä½ï¼Ÿåˆ°äº†äºŒå餘歲,肩ä¸èƒ½æŒ‘,手 ä¸èƒ½æï¼Œåªå¾—奉了æ¯è¦ªå¾€ä»–é„‰å¤–åºœã€‚ä¸æ–™æ¯è¦ªé›™ç›®æ‡¼çž½ï¼Œæ²¿è·¯æ”™æ‰¶ä¹žé£Ÿè€ŒåŽ»ï¼Œå®¶ä¸­å” ä¼¯å¼Ÿå…„æ¯«ä¸æ²¾æŸ“ï¼Œé‚£äº›è¦ªæˆšï¼Œåªæ›‰å¾—ä»–å‚²ç‰©æ°£é«˜ï¼Œä¸æƒ³åˆ°åˆ¥è™•ä¹¾é€™ç”Ÿæ¶¯ã€‚æœæœæš®æš®ï¼Œ 一路討來的,或酒或食,先奉æ¯è¦ªå¤ äº†ï¼Œæ–¹æ•¢è‡ªé£Ÿã€‚忽然çœå¾—本年八月åäº”æ—¥ä¹ƒæ˜¯æ¯ è¦ªå››åæ­²èª•辰,定兒心裡å分懷念,力é‡å»æ˜¯ä¸åŠ ï¼Œæ—¥å¤œæ€ç´¢ï¼Œç«­åŠ›è¨­è™•ç‚ºæ¯è¦ªæ…¶å€‹ 壽誕。其時楚中有個顯宦,官至二å“ï¼Œå¥‰æ—¨äºˆå‘Šï¼Œé¦³é©›é‚„å®¶ã€‚é‚£å¹´å…­æœˆåˆæ—¬ï¼Œæ­£æ˜¯æ­¤ 公五åè¯è¾°ï¼Œå…¶æ¯äº¦ç™»ä¸ƒç§©ï¼Œå»åœ¨ä¹æœˆä¹‹æªã€‚若論富貴è²å‹¢ï¼ŒéŒ¦ä¸Šæ·»èŠ±ï¼ŒåŠå¹´å‰ä¾¿æœ‰ 親親戚戚,水陸雜陳,奇ç畢集,設席開筵,忙亂ä¸äº†ã€‚那顯者é“:『我æ¯å°šæœªç¨±è§´ ,如何先敢å—ç¥ï¼Ÿæ³ä»Šå·²æ­¸æž—ä¸‹ï¼Œå‡¡ç™¾éƒ½è¦æ”¶æ–‚。我且é¿å±…山間僧èˆï¼Œæ–·é…’除葷,拜 經禮懺。雖ä¸é‚€ç¦ï¼Œäº¦è¶³æ”¶çœèº«å¿ƒï¼Œä¸€å¤§å–„事。ã€å¶çˆ¾ç­–æ–æ½›è¡Œï¼Œå¿½èžé¼—鼓之è²ï¼Œå‡º 自林際,顯者驚é“:『是親朋知我在此,張筵備席,率å–音樂,以為我壽也ï¼ã€å¿ƒä¸­ 疑惑。轉éŽå±±å¡ï¼Œåªè¦‹å¹¾æ ªæ‰¶ç–夿œ¨ä¹‹ä¸‹ï¼Œä¸€å€‹çž½ç›®è€å«—åæ–¼å¤§çŸ³ä¹‹ä¸Šï¼Œä¸€å€‹ä¹žå…’牽 著一隻黃犬,一手攜著食籃,隨將籃中破瓢ã€åœŸç¢—åŒè‘—零星委棄之物一一擺在é¢å‰ï¼Œ 然後手中æŒè‘—一é¢é¼—鼓,æ–將起來。 那黃犬亦隨著鼓韻在å‰è·³èˆžä¸å·²ã€‚乞兒跪拜於下,高棒盆甌,å£è£¡ä¸çŸ¥å”±è‘—甚麼歌兒 ï¼Œæ­æ­æ•¬æ•¬é€²å°‡ä¸ŠåŽ»ï¼Œæ›²ç›¡æ­¡å¿ƒã€‚é‚£é¡¯è€…å¾žæ—çœ‹äº†åŠæ—¥ï¼Œå»æ˜¯ä¸è§£ç”šéº¼ç·£æ•…。走å‘å‰ ä¾†å•é“:『此嫗是æ±ä¹‹ä½•人?ã€é‚£å®šå…’上å‰é“:『尊官且請迴é¿ã€‚徿¯ä»Šæ—¥åƒç§‹ä¹‹è¾° ,弗得驚動ï¼ã€é¡¯è€…笑é“:『螬食之æŽï¼Œé¼ è•之瓜,釜底餘羹,瓶中æ¿é…’,é‚è¶³ç‚ºæ¯ å£½ä¹Žï¼Ÿã€å®šå…’é“ï¼šã€Žå®˜äººè¬¬çŸ£ï¼æˆ‘é›–è®€æ›¸ä¸æ·±ï¼Œå¤è–先賢之語亦嘗èžä¹‹ã€‚è–門有個曾 å­ï¼Œé¤Šé‚£çˆ¶è¦ªæ›¾æ™°ï¼Œæ¯æ—¥ä¸‰é¤ï¼Œé…’肉懼備,åƒå¾—醉飽之餘å•é“ï¼šã€Œé‚„æœ‰éº¼ï¼Ÿã€æ›¾å­é€£ 連應è²é“:「有。ã€å°±æ˜¯æ²’時,決答是有的。倘或父親è¦è«‹åˆ¥äººï¼Œä¹Ÿç«‹æ™‚設備。這教 åšé¤Šå¿—之å­ã€‚到那曾元手裡,å»ä¸è§£å¾—é€™å€‹æ„æ€ã€‚供養三é¤ä¹‹å¤–,雖酒肉照常ä¸ç¼ºï¼Œ è‹¥å•說「還有麼ã€ï¼Œé‚£æ›¾å…ƒå°±æ‡‰é“「沒了ã€ï¼Œä¸æ˜¯æ²’了,å»è¦ç•™åœ¨ä¸‹é “ä¾›é¤Šã€‚é€™æ•™åš é¤Šé«”ï¼Œå¦‚ä½•ç¨±å¾—å­å­—?我輩雖用破瓢土碗,與那金鑲牙筋ã€å¯¶åµŒçŽ‰æ¯æœ‰ä½•分別?就擺 些æ¿é†ªæ®˜é¤šï¼Œèˆ‡é‚£æµ·å‘³å±±çåˆæœ‰ä½•儿¨£ï¼Ÿç‰½è‘—é»ƒçŠ¬ï¼Œæ’­è‘—é¼—é¼“ï¼Œå”±è‘—æ­Œå…’ï¼Œèˆžè¹ˆæ–¼å‰ ï¼Œä¾¿æ˜¯è™žå»·ç™¾ç¸çŽ‡èˆžï¼Œè€èŠæˆ²å½©æ–‘衣,我也ä¸è®“éŽä»–ï¼ã€é¡¯è€…è½ç½·ï¼Œé€£è²è´Šé“:『有 ç†ï¼æœ‰ç†ï¼ã€é‚£çž½å«—在上å•é“:『是誰稱贊?快請éŽä¾†å¥‰ä¸€å·¨è§´ï¼ã€å®šå…’éµäº†æ¯å‘½ï¼Œ è«‹éŽé¡¯è€…ã€‚é‚£é¡¯è€…ä¸€æ™‚æ„Ÿå‹•è‡ªå·±å­æ¯ä¹‹å¿ƒï¼Œå°±ä¸æŽ¨è¨—,竟盡歡一飲而èŠé‚å°å®šå…’é“: 『見æ±è‡³èª ç´”å­ï¼Œä½•ä¸éš¨æˆ‘到府中,å—ç”¨äº›å®‰è€½è¡£é£¯ï¼Œåº¦æ±æ¯è¦ªæ®˜å¹´ï¼Œä¹Ÿå…å¾—æœå¤•離 披åŒåŒä¹‹è‹¦ã€‚ã€å®šå…’æ–æ‰‹é“:『ä¸åŽ»ä¸åŽ»ï¼æ¯è¦ªç™¾æ­²ä¹‹å¾Œï¼Œæˆ‘日則沿門æŒç¼½ï¼Œå¤œå‰‡ä¾ 宿è‰å»¬ï¼Œä¸é›¢æœå¤•,宛若生å‰ã€‚若一入富貴之家,官人雖把我格外看待,那宅內豪僮 æ‚婢能ä¸è¼•è³¤å¾æ¯ï¼Ÿä»Šè¦‹å¯Œè²´ç¸‰ç´³ä¹‹å®¶ï¼Œä¸€è†ºæ–°å‘½ï¼Œé›™è¦ªé é›¢ã€‚雖有憶念之心,關河 阻隔,徒望白雲,一番悲嘆。ä¸å¹¸ä¸€æœè¦‹èƒŒï¼Œå³æœ‰åŒåƒšç•¶é“ï¼Œç¶¾éŒ¦å¼”å¥ è¼“ç« ï¼ŒåŠæœå»· 踢有焚黃祭葬,優æ¤é‡å…¸ï¼Œä¹Ÿåªå¥½å¢“頂誇張,墳頭熱鬧。åŠè‡³æ‹œæŽƒä¹‹é¤˜ï¼Œå…’女歸家, 燈å‰ç¬‘語,ç‹ç‹¸å¡šä¸Šï¼Œå‘月哀鳴。那從å¤ä¾†ç¨®æŸå±…廬,èžé›·æ’²å¢“çš„å­å­èƒ½æœ‰å¹¾äººï¼Ÿä¹ 泉之下,一滴難到å£ä¸­ï¼Œç¸±æœ‰é»ƒé‡‘百è¬ï¼Œèƒ½è²·æˆ‘æ¯è¦ªç”Ÿå‰ä¸€ç¬‘哉ï¼ã€èªªå¾—顯者熱鬧胸 中,化作一團冰雪連底å‡çš„相似,垂頭嘆æ¯ï¼Œå°šè¦é–‹è¨€èªªäº›ç”šéº¼ã€‚ 定兒é“ï¼šã€Žå¾æ¯é†‰çŸ£ï¼ã€èƒŒè² çž½å«—ç«Ÿè‡ªåŽ»äº†ã€‚é‚£é¡¯è€…æ€æ€è€Œå›žï¼Œä¸åœ¨è©±ä¸‹ã€‚且說定兒 背了æ¯è¦ªå›žåˆ°èˆŠæ—¥å®‰èº«åŽ»è™•ï¼Œç…§å¸¸ä¹žé£¯ã€‚ éŽäº†å¹´é¤˜ï¼Œé‚£æ¯è¦ªä¹Ÿå°±æ•…äº†ã€‚çœ¾ä¹žå…’ä¿±ä¾†ç›¸å¼”ï¼Œæ­Œè‘—ã€Šè–¤éœ²ã€‹ä¹‹è©žï¼ŒæŽ©åŸ‹åœ¨ä¸€ç©ºé—Šä¸ ç¤™ä¹‹åœ°ã€‚å¢³å‰å·¦å³ä¹Ÿæ¤äº†å¹¾æ ªæ¾æŸï¼Œçµå€‹è‰æ£šï¼Œä¾¿æ–¼è—èº«ã€‚æ—¥è£¡å¦‚å¸¸ï¼Œä¹žé£Ÿä¾›å¥‰ä¸‰é¤ ï¼Œæ•´æ•´ä¸‰å¹´ï¼ŒåŒæ–¼ä¸€æ—¥ã€‚那近處鄉æ‘市上,æ¨åŒ—æ©‹å—,都é“他是個å­å­ï¼Œäººäººèµ·æ•¬ã€‚ æ³ä¸”é‡è‘—æˆç†Ÿä¹‹å¹´ï¼Œä¸€æ–¹ä¸€å¢ƒï¼Œé‚£ä½ˆæ–½ä¾›é¤Šçš„都æ¶è‘—先頭,把定兒åƒå¾—肥肥胖胖,比 é‚£éŠæ–¹åƒ§é‹ªå–®æ‰“åã€äººå®¶è¼ªæµé½‹ä¾›çš„å‹å¦‚å分。定兒心滿æ„足,也沒有別的奢念。 一日é‡è‘—æ¯è¦ªå¿Œè¾°ï¼Œæ¸…早起來備了些香燭,從人家討了些葷素æ±è¥¿ï¼Œä¸€ç›´ä¾†åˆ°å¢³å‰æ“º 下,將香燭點起,ä»ä¼¼ç”Ÿå‰æ¨¡æ¨£ï¼ŒæŠŠé¼—鼓æ–將起來,唱了許多歌兒,åˆå“€å“€æ…˜æ…˜å“­äº† ä¸€å›žï¼ŒæŠŠé‚£ä¾›é¤Šçš„æ®˜é…’ä¹Ÿå°±ä¸€ä¸€é£²åœ¨è‚šè£¡ã€‚çœ¼è§’ä¹œæ–œï¼Œé…’æ„æ¼¸æ¼¸æ¹§ä¸Šï¼Œä¸€äº¤æ”¾å€’,就 在墳上ç¡äº†ä¸€è¦ºã€‚醒來ä¸è¦ºæ—¥è‰²è¹‰è¥¿ï¼Œçœçœ¼ä¸€çœ‹ï¼Œä¿¡æ­¥ä¾¿èµ°ã€‚ä¸ä¸Šè¡Œæœ‰åŠé‡Œä¹‹ç¨‹ï¼Œè¦ éŽä¸€é“æ–·é ­å°æ²³ï¼Œè„«äº†ç ´éž‹ï¼Œè¸è‘—水沙,將近å°å²¸ä¸Šæ¶¯æ‰€åœ¨ï¼Œè…³æŒ‡é ­å¿½ç„¶è§¸è‘—,疼痛 異常,åªé“æ’žäº†çŸ³é ­ã€‚ææ€•åˆæ’žäº†å¾Œä¾†ä¹‹äººï¼Œå¸¶è‘—疼痛彎腰一摸,將欲丟棄é“å‚。原 來䏿˜¯çŸ³é ­ï¼Œæ‹¿èµ·çœ‹æ™‚ï¼Œå»æ˜¯ä¸€å€‹å¤§å¤§é’布包袱。 å³ä¾¿æåˆ°å²¸ä¸Šæ¨¹é™°ä¹‹ä¸‹ï¼Œæ‰“é–‹çœ‹æ™‚ï¼Œå»æ˜¯ç™½å±‘屑ã€äº®å…‰å…‰è¨±å¤šé¬†ç´‹é›ªèŠ±åœ¨å…§ã€‚å®šå…’çœ‹ 了,點點頭é“:『此ä¸çŸ¥ä½•人所失,此時åˆä¸çŸ¥å¦‚何懊æ¨ï¼Œç„¡è™•è¿½å°‹ã€‚åªæ€•那人性命 未知如何了也ï¼ã€ ä»èˆŠåŒ…裹好了,天色將晚,一é¢å°‡éŠ€åŒ…ä¿æ‚„埋在枯樹之下,就在左近廟宇廊下宿了一 夜。早間討些早飯åƒäº†ï¼Œå»ä¹Ÿä¸å¾€åˆ¥è™•去,ä¾èˆŠèµ°åˆ°é‚£æ–·é ­æ²³å£ã€é™°æ¶¼æ‰€åœ¨ï¼Œç™¡ç™¡å° 著那一泓清水,眼也ä¸åˆï¼Œä¸”等甚麼人來。那個所在是個背路,å»ä¹ŸéŽå¾€çš„少。 直待日已中時,åªè¦‹ä¸€äººæŠ«è‘—é ­ï¼Œæ•£é–‹è¥Ÿè¢–ï¼Œå¤±å¼µå¤±æ™ºï¼Œèµ¤è‘—å…©è…³ä¸‹éŽæ²³ä¾†ã€‚å®šå…’é“ ï¼šã€Žæ­¤å¿…æ˜¯ä¹Ÿã€‚ã€ç«‹èµ·èº«èµ°å‘å‰åŽ»ï¼Œå•è‘—é‚£äººä½•å¾€ã€‚é‚£äººçœ‹æ˜¯ä¹žå…’ï¼Œææ€•他化錢財逗 留身å­ï¼Œä¸€è¨€ä¸ç­”,åªå¾€å‰å¥”。定兒é“:『è€å…„如此慌張,莫ä¸å¤±äº†ç”šéº¼æ±è¥¿ï¼Ÿã€é‚£ 人回身å³å•é“ï¼šã€Žä½ èŽ«ä¸æ‹¾å¾—麼?ã€å®šå…’é“:『試說何物。ã€é‚£äººé“:『在下出門三 年,å—了許多艱難辛苦,掙得幾兩銀å­ï¼Œè¿‘來èžå¾—æ¯è¦ªæœ‰ç—…ï¼Œå¿ƒæ€¥è¡Œç¨‹ï¼Œä¸æ–™éºå¤±ä¸­ é€”ã€‚å°Šå…„æ’¿å¾—ï¼Œè‹¥æœ‰é«˜æ‡·ï¼Œæ†æ†«åœ¨ä¸‹ï¼Œæƒ…願將一åŠå¥‰é…¬ï¼ã€å®šå…’é“ï¼šã€Žå¯æœ‰ç”šéº¼åŒ…裹 的麼?ã€é‚£äººé“:『是一個é’布雙層夾包,åƒé‡ç™¾ç·šç´‰æºæˆçš„。ã€å®šå…’é“:『正是, 正是。å¯éš¨æˆ‘來。ã€èµ°åˆ°æž¯æ¨¹ä¹‹ä¸‹ï¼ŒåŽŸå°ä¸å‹•,雙手交還。那人打開,分了一åŠé€èˆ‡ 定兒。定兒é“:『得此一åŠï¼Œä½•ä¸å…¨ä»¥åŒ¿ä¹‹ï¼Ÿã€æ–·ä¸è‚¯å—。那人跪è¬å†ä¸‰ï¼Œä¸è¦ºè·¯ä¸Š 行人èšäº†ä¸€å †ï¼Œå¾žæ—看見推éœä¸å·²ï¼Œå®šå…’執æ„如åˆã€‚眾人說:『é€ä»–二兩,當個酒資 ,難é“ä½ ä¹Ÿä¸æ”¶ï¼Ÿã€ 定兒見眾人說得有ç†ï¼Œå‹‰å¼·æ”¶äº†è—之懷中。個個嘆é“:『乞ä¸ä¸‹è³¤ï¼Œå¦‚此高義,真真 難得ï¼ã€å¾žæ­¤å®šå…’çš„å頭,é è¿‘也就尊é‡è¨±å¤šã€‚åˆä¸€æ—¥ï¼Œèžå¾—北山之下一個僧人募造 白衣觀音寶閣,塑了金相,將è¦é–‹å…‰ï¼Œç„¡æ•¸å–„男信女拜經禮懺。一則隨喜,å†å‰‡è¶•鬧 佛會,也得幾日素飽。行到中途,望著茂林之間,èŠä¸”歇腳。åªèžå¾—竹筱å¢è£¡å¿½æœ‰å‘» åŸä¹‹è²ï¼Œä¸Šå‰ä¸€çœ‹ï¼Œå»è¦‹ä¸€å€‹å¹´ç´€å¹¼å°å©¦äººï¼Œç˜¦éª¨å¦‚柴,形容枯æ§ï¼Œçž¬æ¯åž‚斃。定兒 見了,唬了一驚,想é“:『無人去處,何有此一物?莫éžå±±é­ˆæœ¨å®¢ï¼Œå‡æ‰®å‰ä¾†ï¼Œå“„我 入頭,打算我的性命?ã€åˆé“:『既è¦å“„æˆ‘ï¼Œå¦‚ä½•ä½œæ­¤ç¾¸ä¹‹ç‹€ï¼Ÿä¹Ÿé‚„æ˜¯äººï¼Œæ–·ä¸æ˜¯é¬¼ ,其中必有緣故。ã€å¾©è½‰èº«ä¸Šå‰ç´°çœ‹ï¼Œé‚£å©¦äººå£è£¡ä¹Ÿé‚„說得話出。定兒å•é“:『你是 何人,須è¦ç›´è¨€ç´°èªªï¼Œæˆ‘方救你。ã€é‚£å©¦äººå¾å¾é“:『我是黃州麻城人家一個女å­ï¼Œ 自愧ä¸ç«¯ï¼Œä¹ƒè¢«è² å¿ƒè–„å€–èª˜æˆ‘æ½›é€ƒã€‚ä¸æ–™æ‰€å¸¶è¡£è³‡ç›¤çºæ®†ç›¡ï¼Œä¸­é€”染了一病,旅店中 ä½äº†å¹¾æ™‚,欠下房錢,沒å¯å¸ƒæ“ºã€‚é‚£è² å¿ƒäººæ˜¨å¤œæŠŠæˆ‘èƒŒè² è‡³æ­¤æ‹‹æ£„è’æž—,ä¸çŸ¥åŽ»å‘。 倘得æ©äººæ•‘æ´ï¼Œæ­»ä¸å¿˜æ©ï¼ã€å®šå…’è½äº†é€™äº›èªªè©±ï¼Œä¿¡æ˜¯çœŸçš„,也就扶掖起來,將他馱 在背上,走到近處一座å¤å»Ÿä¹‹ä¸­ï¼Œè¼•輕放下。一é¢å°‹äº›è»Ÿè‰æ”¤æ”¾åœ°ä¸Šï¼Œæ•™ä»–ç¡å¾—穩了 。一é¢å°‹å€‹åŠç ´ç ‚é‹ï¼Œæ‹¾äº›æŸ´æžç«¹æ¢—,煎些湯水å°é£Ÿï¼Œæ—©æ™šæŽ¥æ¿Ÿã€‚é€ç•¢é£²é£Ÿï¼Œé‚£å®šå…’ å³ä¾¿ä½åœ¨é–€å¤–,å¦è‡ªå®¿æ­‡ï¼Œå®›å¦‚賓客相似。ä¸åŠæœˆé–“,那婦人肌肉漸生,略堪步履, 願以身å«ã€‚定兒é“:『娘å­å·®çŸ£ï¼æ±é›–是ä¸ç«¯ä¹‹å©¦ï¼Œæˆ‘自具救人之心。若乘人之å±è€Œ 利之,éžç¾©ä¹Ÿï¼è²¬äººä¹‹å ±è€Œç§ä¹‹ï¼Œéžä»ä¹Ÿï¼é€™æ®µå¿µé ­èˆ‡æˆ‘ç„¶ä¸åˆï¼Œä½ è‡ªæ—©æ™šèª¿è­·èº«é«” ,你的父æ¯å®¶é„‰é›¢æ­¤ä¸é ï¼Œä½•ä¸åŒä½ æ¼¸æ¼¸è¨ªå•,回家便了。ã€ä¸æ•¸æ—¥é–“,就到了麻城 。查å•ä½å±…明白,那父æ¯åªå¾—密密收下,感æœç•°å¸¸ï¼Œè´ˆä»–盤費二兩。定兒固辭,勉強 å†ä¸‰ï¼Œåªå¾—收了è—之懷中,ä¾èˆŠä¹žé£Ÿè€ŒåŽ»ã€‚å¶ç„¶è¡Œåˆ°é»ƒæ¢…市上,看見一è€è€…æ„çœ‰è¹™é¡ ï¼Œæ”œè‘—ä¸€å­ï¼Œç´„有å一二歲,頭上æ’ä¸€è‰æ¨™ï¼Œå£ç¨±è² äº†å¯Œå®¤å®¿é€‹äº”金,願賣此å­ä»¥å„Ÿ å‰å‚µã€‚走來走去,å»ä¹Ÿä¸è¦‹æœ‰äººå–šå‹•。定兒å‡ç›çœ‹äº†åŠæ™Œï¼Œå˜†å£æ°£é“:『富室豪門, 那裡在此些須五兩之負?畢竟鬻å­ä»¥å„Ÿï¼Œä½•å¿å¿ƒä¹Ÿï¼ã€å› å‡ºæ‡·ä¸­ä¹‹é‡‘,謂其人é“:『 å¾å°‡ç‚ºå­å¾€è«‹ã€‚ã€å› åŒè¦‹å¯Œç¿ã€‚閽者入報,富ç¿é“:『喚經手å•å…¶å–足本利,還其原 券是矣。見我何為?ã€é–½è€…é“ï¼šã€Žåˆæœ‰ä¸€ä¹žå…’在外候見。ã€å¯Œè€…é“:『是必拉å–乞兒 ï¼Œå°‡æ¬²å‘æˆ‘作無賴事也。ã€é–½è€…é“:『èžå¾—乞兒æŒéŠ€åœ¨å¤–ï¼Œä»£å…¶å„Ÿé‚„ã€‚ã€å¯Œè€…疑心, 因出廳å‰ã€‚那負債者åŒè‘—定兒立在階下。負債者é“:『員外æ©å‚µï¼Œå­æ¯æ‡‰å„Ÿã€‚但è€ç—… 家貧,實無所抵,還求員外開æ©å¯¬é™å¹¾æ™‚。ã€å¯Œè€…é“:『此話說已久矣ï¼å‰è¨±é¬»å…’償 æˆ‘ï¼Œä»Šè¦‹æˆ‘ä½•å¾—åˆæ˜¯å‰èªªï¼Ÿã€å®šå…’上å‰é“:『員外家如猗頓,富比陶朱,五兩之負直 太倉一粟耳,何必è¦äººè³£å­ä»¥å„Ÿï¼Ÿå¾ä¸å¿è¦‹ï¼Œæˆ‘雖行乞é“ä¸Šï¼Œæ‡·ä¸­ç©æœ‰å››é‡‘,代彼償 之,尚欠一兩,須望寬æ©ã€‚若必ä¸è‚¯è ²é™¤ï¼Œæˆ‘情願在貴地行乞,漸漸填補。ã€å¯Œè€…è½ äº†å¤§æ€’é“ï¼šã€Žåˆ†æ˜Žæ­¤äººå°‡é€™å››å…©éŠ€å­æŒ½ä»–出來將我奚è½ï¼Œæƒ…坦坿¨ï¼ä½ æ˜¯ä¹žå…’,安得 懷中ç©è²¯å››å…©ï¼Ÿæˆ‘剿—¥èžå¾—莊å­å¤œé–“被盜,失去糧銀四兩,此必無疑ï¼é€Ÿå¯«ä¸€å‘ˆé€åŽ» 黃梅縣裡,並那欠債è€å…’指作窩家,追贓正法,刺é…ä»–é„‰ï¼Œæ–¹å¹³å¾æ°£ï¼ã€ 那些左å³å®¶äººè½å®¶ä¸»æŒ‡æ®ï¼Œå³åˆ»å¯«æˆç‹€ç´™ï¼Œå°‡é‚£äºŒå€‹äººä¸€æ¢ç¹©å­ç¸›é›žç›¸ä¼¼ï¼Œç«é€Ÿé€åˆ° 縣裡。彼時縣主乃是新é¸ç”²ç§‘,姓包åé”,è°å¯Ÿç•°å¸¸ï¼Œä¸è‚¯å¾‡æƒ…枉法,èžå的賽閻羅 。 將狀收進,å³åˆ»é™žå ‚ï¼ŒæŠŠé‚£å‰æƒ…一å•ã€‚ä¸€é‚Šå»æ˜¯ä¸€äººæ¬ å‚µè³£å­ï¼Œä¸€äººä»—義代償;一邊 铿˜¯è³Šæƒ…原贓,執ç²åˆ°å®˜ã€‚正在踟躕,åªè¦‹é–€å¤–許多良耆裡è€é­šè²«ç›¸ä¼¼ï¼Œä¸€ç­ç´„有三 å››å人跪å‘門外。 縣主早已看見,俱喚進來。ä¸å¾…縣主開å£ï¼Œé‚£äº›è·ªä¸‹ä¹‹äººå£è£¡å–Šé“:『一個義士,一 個義士ï¼çœ¾ç™¾å§“們俱目擊的,ä¸å¯è¢«é‚£ç‚ºå¯Œä¸ä»çš„陷害了。ã€åŒ…大尹é“ï¼šã€Žæˆ‘ä¹Ÿä¸æ†‘ 你們人多說的就信了,快退下去,待我一一å•來。ã€å…ˆå«é‚£æ¬ å‚µè€å­ï¼Œå°‡è² å‚µè³£å­åŽŸ 由說了一éï¼›åˆå«å®šå…’將仗義代償,說話觸犯了員外情由說了一éã€‚åŒ…å¤§å°¹è©³æƒ…ï¼Œé“ ï¼šã€Žä¹žå…’æŠ„åŒ–ä¹‹éŠ€ä¸éŽç³ ç§•碎米,零星ä¸å¤šï¼Œå¦‚何有這四兩大塊銀å­ï¼Ÿã€æ­£æ¬²å‹•刑, é‚£çœ¾äººä¸Šå‰æŠŠå®šå…’æŠ±ä½ï¼Œå°‡ç•¶åˆé‚„金ã€é‚„婦兩段情節說得真真實實。大尹é“:『也難 憑信。若說還金ã€é‚„婦得來之銀,此地相去ä¸ç”šç›¸é ã€‚ã€å…©è™•行文,ä¸å¹¾æ—¥éƒ½æ‹˜åˆ°æ¡ˆ å‰ã€‚那失金之人與那失婦之人,說得鑿鑿有據。大尹先暗å–四兩銀å­ï¼Œå•那二人,那 二人看看ä¸èªï¼›å¾©å–那四兩銀å­é©—看,那兩人上å‰é€£è²é“ï¼šã€Žæ˜¯ï¼æ˜¯ï¼ã€å°‡ä¸€åŒ…零碎 之銀信手撮開兩處,上等å­ä¸€ç¨±ï¼Œå‰›å‰›å»æ˜¯äºŒå…©ä¹‹æ•¸ï¼Œä¸€æ¯«ä¸å·®ã€‚ 大尹å³å°‡å¯Œè€…å–出頭號大æ¿ï¼Œæ‰“了四å,發在監中,è¦å•å誣之罪。富者å†ä¸‰æ±‚æ†å© å…,大尹姑æ¯ï¼Œæ–¼å¯Œè€…å下罰銀三百兩,旌賞定兒;那婦尚未å«äººï¼Œå³æ–·ç‚ºå¤«å©¦ã€‚ 後來生有三å­ï¼Œä»ç¿’書香一脈,至今稱為巨æ—。列ä½å°Šå…„å¯ä¿¡å¹½å†¥ä¹‹äº‹åŽŸä¸çˆ½çš„ï¼Ÿå‰ é‚Šèªªé‚£åˆ¤å®˜ç°¿ä¸Šï¼Œæ³¨è‘—å³è³¢å下出身雖屬å‘微,å“地還他高潔,今看得來一字ä¸å·®ã€‚ 皆因å³è³¢ç„¡å¿ƒèªªé€™å…©å¥æ”¾è‚†ä¹‹èªžï¼Œé‚£çŸ¥å°±è½äº†é€™å€‹è¼ªè¿´ï¼Œå¯è¦‹èªªè©±è¦è¬¹æ…Žçš„。我們今 日在此說些果報之語,都是有益於身心學å•的。若群居在豆棚之下,ä¸çŸ¥è±†æ£šä¹‹ä¸Šå°± 有天å¸çŽ‰çš‡éŽçš„,è¬ä¸€èªªäº›æ·«é‚ªä¹‹è©±ï¼Œå†¥å†¥ä¹‹ä¸­ï¼Œæˆ‘輩也就折罰ä¸ç›¡ä¹Ÿã€‚ çœ¾äººåˆæŽŒé“:『真是佛è©è–©ä¹‹è¨€ï¼Œä¸éŒ¯ä¸éŒ¯ï¼ã€ä¿±èº¬èº«å”¯å”¯ä½œç¦®è€Œé€€ã€‚ 總評儒者立說ä¸åŒï¼Œè¦æ­¸æ–¼å…¨è‰¯å¿ƒã€æ•¦æœ¬è¡Œè€Œå·²ã€‚是篇天人感應在其中,親ä»åŠç‰©åœ¨ 其中,義利貞淫在其中。雖起先哲先儒,æ“臯比,眾學徒,娓娓談é“å©çŽ„ï¼Œäº¦ä¸å‡ºè‰¯ 心大å­ï¼Œè¾¨æ˜Žäººç¦½ä¹‹é—œè€Œå·²ã€‚ç„¶å‰‡ä½•ä»¥èˆ‰ä¹žäººä¹Ÿï¼Ÿè“‹ç‚ºä¸Šç­‰äººæŒ‡ç¤ºï¼Œå‰‡æ›°èˆœã€æ›°æ–‡ã€ æ›°æ›¾ã€æ›°é–”,åŠèˆ‡ä¸‹ç­‰äººè¨€ï¼Œå‰‡èˆ‰ä¸€å‘賤如乞人者,且行å­ä»—義如此,凡乞人以上俱 å¯è¡Œå­ä»—義矣ï¼äººè€Œä¸è¡Œå­ä»—義,是乞人ä¸å¦‚云耳ï¼å†·æ°´æ¾†èƒŒï¼Œç†±ç«ç‡’å¿ƒï¼Œç…žä»¤äººå” å™“æ„Ÿæ…¨ï¼Œå¯¤å¯æ°¸è¨€ï¼Œå­ç¾©ä¹‹æ€æ²¹ç„¶ç”Ÿã€å‹ƒç„¶èˆˆçŸ£ã€‚予尤喜定兒å°é¡¯è€…åæ•¸è¡Œï¼Œå®›è½‰æ¿€ åˆ‡ï¼Œè¦‹å¾—ä»•å®¦äººæ£„å®¶è€ŒéŒ¦æ­¸ï¼Œé›–é“æ˜¯é¡¯è¦ªæšå,何如è†ä¸‹ä¾ä¾ï¼Œè§´é…’豆肉,為手舞足 è¹ˆä¹‹æ¨‚ä¹Ÿï¼æ³æ™®å¤©ä¸‹äººå­æŠ±çµ‚天之æ¨è€…ä¸å°‘ã€‚è¦½æ­¤ä¸€å‰‡ï¼Œèƒ½ä¸æ‹Šè†ºæµ©å˜†ä¹Ÿå“‰ï¼ 第六則 å¤§å’Œå°šå‡æ„超昇 是日也,天朗氣清,涼風洊至。åªè¦‹æ£šä¸Šè±†èб開éï¼Œä¸­é–“å»æœ‰å¹¾æžï¼Œçµæˆè““蓓蕾蕾相 似許多豆莢。那些孩å­çœ‹è¦‹åš·é“ï¼šã€Žå¥½äº†ï¼Œä¸Šé‚Šçµæˆè±†äº†ã€‚ã€æ£šä¸‹å°±æœ‰äººä¼¸é ­ç¸®é ¸å°‡ è¦å½©ä»–。眾人é“:『新生豆莢是難得的。ã€ä¸»äººé“:『待我彩他下來,先煮熟了。今 日有人說得好故事的,就請他åƒã€‚ã€çœ¾äººé“:『有ç†ï¼Œæœ‰ç†ã€‚ã€æ£šä¸‹è¥¬è‘—一張椅å­ï¼Œ 中間走出一個少年é“:『今日待我ååœ¨æ¤…ä¸Šï¼Œèªªå€‹ä¸–æƒ…ä¸­æœ‰æœ€ä¸æœäººçš„ä¸€æ®µè©±é ­ï¼Œå« åˆ—ä½è½äº†çŒ›ç„¶æƒ³è‘—也è¦ç—›æ¨èµ·ä¾†ã€‚æˆ‘æƒ³å¤©ä¸Šåªæœ‰ä¸€å€‹æ—¥æœˆï¼Œæ±æ˜‡è¥¿å¢œï¼Œæ‰€ä»¥è¬å¤é•·æ˜Ž ï¼›åœ°ä¸Šç”Ÿç‰©åªæœ‰ä¸€å€‹ç¨®å­ã€ä¸€æ¢æœ¬æ ¹ï¼Œæ‰€ä»¥ç”Ÿç”Ÿç„¡èŠè‡³æ–¼äººç”Ÿå¤©åœ°é–“,ååæœ‰è¨±å¤šå 目:å›çŽ‹æ˜¯æ²»å¤©ä¸‹çš„ï¼Œè‡£å­æ˜¯è¼”ä½å›çŽ‹çš„ï¼Œç™¾å§“æ˜¯è€•ç¨®ç”°åœ°ã€é¤Šæ´»è¬æ°‘的,這å«åšç„¡ å›å­èŽ«æ²»é‡Žäººã€ç„¡é‡ŽäººèŽ«é¤Šå›å­ã€‚å› æ­¤å¤è–先賢立個儒教,關係極大。剖判天地陰陽 é“ç†ï¼Œæ­£æ˜Žäººå€«è¬å¤ç¶±å¸¸ï¼Œæ•™åŒ–文明,齊家治國平天下俱虧著他。這是天地正氣一脈 ,ä¸å¯æ€è­°çš„了。 åˆæœ‰ä¸€å€‹é“教,他也ä¸éŽè¬›äº›çބ微之ç†ï¼Œä¿®é¤Šèº«å¿ƒï¼Œå»¶å¹´ç›Šå£½ï¼Œé€™ç¨®é¡žé‚„也ä¸å¤šï¼Œä¸” æ¼«è­°è«–è‘—ä»–ã€‚ç¨æœ‰é‡‹æ•™ï¼Œé€™å€‹æ³•é–€åƒé›œå¾—緊。自漢明å¸åäºŒå¹´ä½›å…¥ä¸­åœ‹ï¼Œé“æ˜¯è¥¿æ–¹ä¾† 了è–人。拈著一個「空ã€å­—立論,也ä¸éŽå‹¸åŒ–世人看得è¬äº‹çš†ç©ºï¼Œå…­æ ¹æ¸…淨,養得心 境玲ç“,毫無罣礙,原沒有甚麼果報輪迥之說。åªå› å¾Œä¾†çš„人無端穿鑿,說出許多地 ç„天堂,就起了騙人章本。ã€åªèªªé€™äº›å’Œå°šï¼Œæˆ‘å§‹åˆä¹Ÿé“都是為生死事大,發願修行 ï¼Œä¹ƒæ˜¯è°æ˜Žä¸Šæ™ºä¹‹äººå‹¾ç•¶ã€‚那知其中ä¸è«–賢愚好歹åŠå¥¸ç›œè©å½ä¹‹äººï¼Œéƒ½å› æ—¥å¸¸é–“走了 盡頭路,天ä¸å®¹ã€åœ°ä¸è¼‰ï¼Œæ²’奈何把這幾根頭剃下,頸上掛著串數ç ï¼Œè‚©ä¸Šè¤¡è‘—件褊 è¡«ï¼Œæ‰‹è£¡æ‹¿å€‹æœ¨é­šï¼Œå°±é“æ˜¯å€‹å’Œå°šï¼Œå¾žå‰éŽæƒ¡ï¼Œäººä¹Ÿå°±æ•他一分。看得這æ¢é ­è·¯å¯¬ç¶½ 有餘,那無賴之徒逃竄入門,ä¸è¦ºä¸€æ—¥ä¸€æ—¥é€æ¼¸å¤šå¾—緊了。沒處生衣食,或者截段竹 頭,鑄å£éŠ…é˜ï¼Œè²·æ ¹éŽ–æ¢ï¼ŒåŸŽå¸‚上ã€é„‰æ‘中,天未曾亮,åšç”Ÿæ„的尚未走動,他便乒 乒乓乓的敲得頭痛,å«å¾—耳è¾ï¼ŒæŒ‡æ±è©±è¥¿ã€‚æˆ–æ˜¯èµ·å»ºæ®¿å®‡ï¼Œä¿®è“‹é˜æ¨“,è£å¡‘é‡‘ç›¸ï¼Œå° è«‹è—經,è¶å£èƒ¡å˜²ï¼Œé¨™éŒ¢é¨™ç±³ã€‚就是這等,守著本分度此一生,也還罷了。那知竟有 窮凶極惡,具那覆地翻天伎倆,åªé“他就是佛祖è©è–©è‡¨å‡¡ï¼Œè‡´èª ä¾›é¤Šï¼Œæœ«å¾Œåšå‡ºäº‹ä¾† ,拖累人身家性命ä¸ä¿ï¼Œä»¥æ­¤é€£é‚£å¥½çš„也ä¸ä¿¡äº†ã€‚此是佛門變種敗類,我也ä¸å¿…說他 。難é“ä¸€æ´¾éƒ½æ˜¯æ­¹äººä¸æˆï¼Ÿå…¶ä¸­ä¹Ÿæœ‰åº¦ä¸–金仙,ç¾èº«ä½›å­ï¼Œç™»å£‡èªªæ³•,救拔沈迷。如 锿‘©è¥¿ä¾†ï¼Œç”Ÿå…¬èªªæ³•,他å»åœ¨å¿ƒæ€§ä¸Šåƒæ‚Ÿé“ç†ï¼Œé»žåŒ–世人,說兒å¥åˆèªžï¼Œç•™å¹¾å¥å言 ,åƒå¤äººæ‰€ä¸åŠï¼Œå§”實足以æœäººï¼Œæ­·ä»£ä»¥ä¾†ï¼Œå¸Œä¸–有的。從來怫祖傳é“的拂å­ï¼Œä¹Ÿä¸ 曾見他輕輕付與那個。如今這些孽畜å»å¦ç¿»å‡ºä¸€å€‹å±€é¢ï¼Œä¸è«–肚裡通也未通,åªè¦ç²— ç²—èªå¾—å¹¾å­—ï¼Œå¢æž—中覓幾本語錄,買幾本註ç–,å在金剛腳下練熟è²å£ï¼Œå°±å‡æ–¯æ–‡çµ 識幾個禪å‹ï¼Œäº’相標榜,拜éŽå¹¾å€‹è¬›å¸«ï¼Œæˆ–è‡ªç«‹å€‹å®—æ´¾ï¼Œé“æ˜¯å¹¾å¹´ä¸ŠæŸè™•å¤§å’Œå°šä»˜éŽ æ‹‚çš„ã€‚ æ‚„æ‚„èµ°åˆ°å¤–å·žä»–ç¸£ï¼Œçªºè¦‹å†·è½æ‰€åœ¨ä¸€å€‹ç ´å£žå¯ºé™¢ï¼Œå°±è¯çµ¡åœ°æ–¹ä¸Šå¹¾å€‹ä½›ç¸½å¸«å©†ï¼Œç¨±èªª æŸè™•來了善知識,看得此寺當興,或埋è—äº›å¤æ™‚碑版,å¶ç„¶æŽ˜å‡ºï¼Œæˆ–è£èª£æœ¬å±±ä¼½è—, 在外顯éˆï¼Œæˆ–ç‘些糖水,å‡åç”˜éœ²ï¼Œé¨™äººä¹‹æ³•ç™¾è¨ˆåƒæ–¹ã€‚ä¸åŠæœˆé–“,那一方一境,愚 夫愚婦,說得轟轟熱熱。略略有些錢糧,é“:『我們備辦表禮,去清一ä½å¤§å’Œå°šä¾†ã€‚ 開期çµåˆ¶ï¼Œé‚£å€‹ä¸å°·ä¸å°¬çš„和尚也就糾åˆè¨±å¤šéš¨å ‚è¡Œè€…ï¼Œå…¬ç„¶è£æ¨¡ä½œæ¨£ï¼Œå°‡åˆ¥å€‹å¢æž— 的作為,一一摹åšã€‚或央人討了巡檢å¸çš„告示,或çµè­˜å†·é„‰å®¦è­·æ³•çš„å頭,抄了許多 åˆèªžï¼Œå­¸äº›å®—門棒å–ï¼›æˆ¿å»Šä¸‹è²¼äº†å¹¾å¼µè¦æ¢ï¼Œé½‹å ‚å‰å¯«å‡ºé•·ç¯‡åƒèªžã€‚那些來來往往, 看看一些也摸頭ä¸è‘—,便é“ï¼šã€Œå¤§å’Œå°šå­¸å•æ·±é ï¼Œä¸€æ™‚領悟ä¸ä¾†ã€‚ã€åˆ†æ˜Žç™½æ—¥è£¡è¢«ä»– çžžéŽï¼Œé€™äº›æ„šäººæ­»ä¹Ÿä¸çŸ¥ã€‚ã€æž—ä¸­é‚„æœ‰ä¸€ä»¶äººæ‰€ä¸æ›‰å¾—的,大凡大和尚到一處開堂, å„處ä½éœå®¤çš„禪和å­ï¼Œæ—¥å¸¸é–“都是打æˆä¸€ç‰‡ï¼Œå…¶ä¸­èб巧å目甚多,如:西堂ã€ç¶­é‚£ã€ é¦–åº§ã€æ‚…çœ¾ã€æ›¸è¨˜ã€éƒ½è¬›ã€å ‚主ã€ä¾è€…ã€ç›£é™¢ï¼ŒçŸ¥å®¢ã€çŸ¥å¯“化主ã€é»žåº§ã€å‰¯å¯ºã€è²¼åº« ã€è¡Œå ‚ã€æ®¿ä¸»ã€å€¼æ­²ã€å€¼ç§‘ã€é¦™ç‡ˆã€ä¸‹é™¢ã€çŸ¥è—ã€çŸ¥éš¨ã€é‹ªå ‚ã€å·¡ç…§ã€ç¸½ç®¡ã€éƒ½ç®¡ã€ 知眾ã€çŸ¥å±±ã€åº«é ­ã€èŠé ­ã€æŸ´é ­ã€ç”°é ­ã€é£¯é ­ã€èŒ¶é ­ã€åœ’é ­ã€ç«é ­ã€æ°´é ­ã€åœŠé ­ã€‚這 些å目科派出來,寫下一張榜文,貼在茶寮å»ä¹Ÿå¥½çœ‹ã€‚到那登壇時節,細å¹ç´°æ‰“,兩 邊排列許多僧眾,æ§è‘—香花燈燭,磕頭禮拜,å¦é»žå¾—ä¸çŸ¥æ€Žæ¨£å°Šé‡ã€‚åŠè‡³é–‹è¬›ï¼Œä¹Ÿä¸ éŽå°‡ç·¨æˆçš„講章念了一é,那個解悟得來?åˆè«‹äº†å¹¾å€‹å»¢æ£„的鄉宦ã€å‡é«˜å°šçš„å­å»‰ã€ å‘Šè€æ‰“罷的朋å‹ï¼Œå¾žæ—護法,出身å­åšå€‹æ‹›é ­ï¼Œæš—地分些分例,鄉愚之人越發尊信得 ç·Šã€‚å¦‚æœ‰é‚£å¤–æ–¹åƒ§çœ¾ï¼Œæœ‰æ„æ€çš„è¦åˆ°å£‡å‰è¾¯é§ä½›æ³•,那些ä¾è€…齊來拿去,打得臭死。 å„處寺院éžäº†çŸ¥å–®ï¼Œèªå®šé¢è²Œï¼Œä¸ä½†èµ°é路頭ä¸è¨±å®‰å–®ï¼Œåœ¨é‚£åœ°æ–¹åŒ–碗飯åƒä¹Ÿä¸å¾—了 。還有一個è¦çŸ©ï¼Œå¤§æ®¿ç·£ç°¿ä¸Šå¯«ä¾†ä½ˆæ–½ï¼ŒåŠåœ¨å¤–抄化錢糧,方歸常ä½ï¼›é‚£é“場上來的 宰官ã€å±…士åŠå©†å©†åª½åª½çš„錢糧,都是大和尚隨來僧眾一併收貯,åªå¾…場期一畢,次日 å³ç…§è‚¡åˆ†äº«ï¼Œèµ°å¾—一個沒影,å„自回去å—ç”¨ã€‚å¸¸ä½æ¬ äº†æœ¨æ–™ã€æ²¹é¹½ã€ç±³å¸³ï¼Œä¸€äº›ä¸ç®¡ ï¼Œè«‹è‡ªæ”¯æ©•ï¼Œå†æ‰“è½å¾—別處開期,åˆåŽ»ç”Ÿã€‚ä½ é“這些和尚å»ä¸æ¯”åˆå¤¥çš„強盜åˆç‹ ä¸‰åˆ† 麼?ã€è€ƒå¾—「大和尚ã€ä¸‰å­—,乃是晉æœçŸ³å‹’的時節,有個佛圖澄,自己稱é“。其實他 是個è–僧,看那石勒皇å¸å°±å¦‚海上鷗鳥一般;神通廣大,能知éŽåŽ»æœªä¾†ï¼Œå„¼ç„¶ä¸€å°Šç‡ƒ ç‡ˆå¤æ€«ï¼Œè‡ªç„¶å‹•人欽敬。請å•這些和尚《è¯åš´ç¶“》尚未念著,ä¸éŽè¨­å±€é¨™äººæ˜¯å…¶æœ¬é¡˜ ï¼Œå¦‚ä½•å°±ä¾¿æ›¿ç¨±ç‚ºå¤§å’Œå°šï¼Ÿæ™‚ä¸Šæœ‰å€‹ç¬‘è©±ï¼Œå»æ˜¯å˜²é‚£å¤§å’Œå°šçš„。說有個相公,乘著一 éš»å°èˆ¹åŽ»è¨ªé‚£å¤§å’Œå°šã€‚é€²æ–¹ä¸ˆèŒ¶è©±ç•¢ï¼Œä½œåˆ¥èµ·èº«ã€‚å¤§å’Œå°šç›´é€å‡ºä¾†ï¼Œåˆ°é‚£æ°´å£ï¼Œç›¸å…¬ ä»ä¸‹å°èˆ¹ï¼Œè¥¿é‚Šæ—¥è‰²æ›¬ä¾†ï¼Œç›¸å…¬è„«ä¸‹è£™å­æŽ›è‘—。大和尚é“:「直看相公之船箬葉大了 ,å°åƒ§æ–¹æ•¢é€²åŽ»ã€‚ã€é‚£ç›¸å…¬å在船裡,也把é®çš„è£™å­æ­é–‹çœ‹é‚£å’Œå°šã€‚船已漸退,那管 å®¶é“:「大和尚立在水å£ï¼Œæœ›åŽ»æ­¢æœ‰ä¸ƒå…«å¯¸é•·äº†ï¼Œè«‹ç›¸å…¬æ”¾ä¸‹è£™å­ç½·ã€‚ã€åªå› å’Œå°šå« 得大了,所以嘲他,這是諢話。〠å»åˆæœ‰ä¸€æ®µé–‘話,乃是真真實實的。這話出在那湖廣德安府應山縣,與那河å—信陽州 交界地方,å«åšæ¨é€™é—œã€‚乃是一座陡峻高山,四é¢è”¥ç± æ¨¹æœ¨ï¼Œé›–是è¦é“,行人éŽå¾€ç¨€ ç–。山岡之上有一å¤å‰Žï¼Œä¹Ÿæ˜¯å”ã€å®‹ä¾†çš„香ç«ï¼ŒèªŒæ›¸ä¸Šå«å普明寺。寺內止有二三å 眾僧人,都是茹葷飲酒的羅剎。ä¸çŸ¥é‚‡ä¾†å五六年之間,å»å化å餘ä½é•·è€ã€‚四邊傳 說,寺內風水原是è–地,所以禪師佛祖屢屢ç¾èº«ï¼Œå„è™•ä½ˆæ–½å€’ä¹Ÿå¹´å¹´æŽ¥æ¹Šã€‚ä¸æœŸä¸€æ—¥ 有個採藥醫人到彼求宿,那僧人抵死ä¸å®¹ï¼Œé†«è€…åªå¾—乘月而行。走了一二å里,å»å¿˜ 了一把鋤頭放在山門外石碑亭中,猛然çœèµ·ï¼Œææ€•有人å–去,åªå¾—跌身轉去,來到碑 亭尋那鋤頭。åªè½å¾—牆內一人å«è‹¦é€£å¤©ï¼Œå£å£å«é“:『è€çˆºå€‘å®¹æˆ‘å†æ´»å¹¾æ—¥ï¼Œç„¶å¾Œä¸Š 座罷ï¼ã€é†«è€…è¦ºå¾—æœ‰äº›å¤æ€ªï¼Œçˆ¬ä¸Šç‰†é ­ï¼ŒæŒ½è‘—樹æžï¼Œä»”細一看,åªè¦‹å ‚å‰ç‡ˆå…‰å°„出, å»è¦‹å¹¾å€‹ç¦¿å­æŠŠä¸€è€åƒ§æ†ç¸›ç«¯æ­£ï¼Œå°‡ä»–扛上一個åè™•ï¼Œçœ‹ä¸æ˜Žç™½ã€‚ é‚£è€åƒ§æ®ºè±¬èˆ¬å¤§å«æ•¸è²å°±ä¸éŸ¿äº†ã€‚醫者挨了一夜,到次日看甚動éœã€‚到了天亮,åªè½ 得佛堂é˜é¼“齊鳴,佛號震天。é“人出來說é“:『了明禪師昨晚å化了。ã€å››é‚Šåˆ†äº†é½‹ 帖,來了許多佛頭,正è¦é–‹å¼µåšå¤§æ³•事。那醫者進去仔細一看,å»è¦‹ä¸€å€‹æ„慘之容, é¢çš®é»ƒå¦‚èœè‘‰ï¼Œä¸€äº›è¡€è‰²æ²’有。醫者乘著空隙,將手從那臀下一摸,åªè¦‹æ»¿æ‰‹é®®è¡€ï¼Œ ç©€é“中å»ç”Ÿä¸€å€‹æ ¹çš„æ¨¡æ¨£ã€‚醫者å³åˆ°ä¿¡é™½å·žè£¡å°‡é€™æ®µæƒ…節一一報知。那知州夜有一夢 ,也見一個è€åƒ§æ¸¾èº«å¸¶è¡€ï¼Œè²è²å«è‹¦ã€‚知州çœå¾—,å³ä¾¿ä¹˜äº†å¿«é¦¬ï¼Œé ˜äº†é„‰å…µï¼Œå°‡å¯ºåœ ç¥é€²åˆ°è£¡é‚Šï¼Œå«ä½æŒå‡ºä¾†ç›¸è¦‹ï¼Œé‚£ä½æŒé“是大和尚,ä¸è‚¯å‡ºä¾†ï¼Œåªæœ‰ä¸€å€‹ç•¶å®¶çš„迎接 。州官å•é“:『昨日åˆå化了一ä½ç¦ªå¸«ï¼Œç‰¹ä¾†é ‚禮。就便與他åˆç¼¸é€ å¡”。ã€é‚£ç•¶å®¶ä¹Ÿ å©ä¸€é¦–è¬äº†ã€‚州官é“:『寺內多少僧人?一一點éŽï¼Œéƒ½è¦æ–½äº›è¥¯éŒ¢ã€‚ã€é‚£å¹¾å€‹å¦‚狼似 虎的,俱出來低著頭兒ã€åž‚下雙手,è½å·žå®˜é»žéŽä¸Šå,æ¯å€‹å’Œå°šä¿±å«é„‰å…µçœ‹å®ˆã€‚ä¸€é¢ å«æ‰‹ä¸‹è«‹èµ·ååŒ–çš„åƒ§äººï¼Œçœ‹é‚£æ‰‹è¶³æ˜¯æ€Žæ¨£çš„ã€‚å…©å€‹é„‰å…µä¸Šå‰æŽ¨ç§»ä¸å‹•,用力一抬,那 ç©€é“中一個二尺長的éµé‡˜ç™»æ™‚ç¿»è½ï¼Œä¸‹é‚Šç¼¸è£¡å»æœ‰ä¸€æ¡¶é®®è¡€ã€‚知州å³å°‡è¨±å¤šå’Œå°šç¶ç¸› äº†ï¼Œå¸¶åˆ°å·žå…§ï¼›å†æŠŠåƒ§æˆ¿å±¤å±¤æ‹†å°‡é€²åŽ»ï¼Œå»è·‘å‡ºåæ•¸å€‹å©¦å¥³ä¾†ï¼Œå¤§è²å–Šå±ˆã€‚知州喚皂 隸一一帶éŽï¼Œå•é“:『你這幾個婦人在內幾時了?ã€å©¦äººé½Šæ‹›é“:『有三五年ä¸ç­‰çš„ ,有本年的,都是這些和尚勾åˆå…‰æ£ï¼Œåœ¨å¤–è©ä½œå®¢å•†æ¨¡æ¨£ï¼Œä¸è«–銀錢,åªèªªå¨¶è¦ªåšå¤« å¦»å›žå®¶éŽæ´»çš„ï¼›é‚£çŸ¥é€æ¼¸é¨™åˆ°å®¶é„‰ï¼Œå¿½ä¸€æ—¥è¨—åæŽ¢è¦ªï¼Œå¸¶äº†ç›´é€åˆ°æ­¤è™•ï¼Œè—æ–¼é‡ç‰†è¤‡ å£ã€æ·±æˆ¿æ›²å®¤ä¹‹ä¸­ï¼Œå¤©æ—¥ä¹Ÿä¸å¾—一見。也有近æ‘人家å餘歲女兒在外閑è€ï¼Œä¹˜äººä¸è¦‹ 抱來è—在其中,待得å二三歲就å—用了。〠州官å•é“:『這許多年怎麼沒有一人往州縣中首告?ã€é‚£å©¦äººé“:『手下使用的é“人 ,俱是平昔殺人åšè³Šä¹‹è¼©ï¼Œç„¡è™•投奔,四下收拾進來。日常間也å„å„自有去路,騙來 錢米平åŠå‡åˆ†ï¼Œé„°è¿‘æ‘ä¸­ä¹Ÿä¿±æ—¥å¸¸æ²¾äº›æ©æƒ ï¼Œæ•…此內內外外沒有人與他作å°ã€‚ å…§ä¸­è‹¥æœ‰ä¸€äººèªªäº›åˆæŒ‡ä¹‹è©±ï¼Œçœ¾äººä¹Ÿå°±ç™»æ™‚çµæžœæ®ºäº†ï¼Œæ‰€ä»¥åˆ°ä»Šï¼Œçœ¾å£ä¸€å¿ƒçµ•無髮覺 。ã€å·žå®˜å•é“:『歷年來如何有這許多人å化?ã€å©¦äººæ‹›é“:『俱是éŽå¾€å–®èº«å®¢äººï¼Œ 把他圈進裡é¢ï¼Œä¸å®¹è„«èº«ï¼Œå…ˆæŠŠè’™æ±—藥與他åƒäº†ï¼Œå¾Œå°‡ç¶²å­é™¤ä¸‹ï¼Œç¶ç¸›äº†ï¼Œæ›¬åœ¨æ—¥ä¸­ ,é¡è§’與é¢ç›®éƒ½é»§é»‘了,然後把他頭齊眉剪下,扮作頭陀模樣;或將身å­ä¸Šä¸‹æ†ç¸›åš è·è¶ºå法,餓了三五日,頭骨俱軟,衣袂之中çŒä¸Šç¡«ç£ºç‡„ç¡ï¼Œæ‰¶åœ¨æŸ´æ¨“é¾•åº§ä¹‹ä¸Šï¼Œå« å–šåœ°æ–¹èˆŠæ—¥åšä½›é ­ä½›ç¸½çš„,謠言開去,四處俱來觀看,攢錢設供,造塔看經,ä¸çŸ¥é¨™ 了多多少少。也照舊è¦åˆ†é ­æ´¾ç”¨ï¼ŒèŠ±è²»ç›¡äº†ï¼Œå°±è¦ä¹¾é€™æ´»ä½›å‹¾ç•¶ã€‚ã€å·žå®˜æ­£åœ¨æŸ¥å•之 際,門å­å ±é“ï¼šã€Žç«¹åœ’å…§åˆæŽ˜å‡ºè¨±å¤šå¥³äººè…³éª¨ï¼ã€å·žå®˜å•é“:『都是女人腳骨,為何 ï¼ã€ä¸€å©¦äººé“ï¼šã€Žç”·äººæ­»äº†ï¼Œæž¯éª¨éƒ½ç„¡ç”¨è™•ã€‚å”¯æœ‰æ–°æ­»å¥³äººï¼Œé€™é›™è…¿éª¨è¡€æ°£ä¸æ•£ï¼Œå°‡ 來鋸解碎了,加上水磨工夫,充作象牙□å­ï¼Œç„¡äººèªå¾—。æ¯å¾—厚利,寺中é“人無處生 éŒ¢éˆ”ï¼Œæ¯æ¯æ‰“è½æ–°æ­»å©¦äººï¼Œç›œå–來乾這勾當。腿骨用去,所以存的都是腳骨。ã€å·žå®˜ 審得其情慘毒,æ¯å€‹å’Œå°šæ‰“äº†äº”åæ¿ï¼Œå¿ƒçª©è£¡åŠ ä¸Šä¸€é‡˜ï¼Œç™»æ™‚å‘½çµ•ã€‚ 備將情節申èžä¸Šå¸ï¼Œä¸€ä¸€å°‡ä¾†ï¼Œé™¤å€‹æ·¨ç›¡ï¼Œä¸¦é‚£æ™®æ˜Žå¯ºä¸€ç«ç„šä¹‹ï¼Œå»æ˜¯é™¤äº†å¤§å®³ã€‚這 也是近日大和尚的故事。更有一段故事也是èžå¾—ä¾†çš„ã€‚èªªæ˜¯å”æœé–‹å…ƒå¹´é–“ï¼Œæ²³å—æ‡·æ…¶ åºœæ²³å…§ç¸£åœ°æ–¹ï¼Œé–‹å…ƒå¯ºæœ‰å€‹åƒ§äººï¼Œæ³•åæ­»ç°ã€‚這å就先奇了,生得相貌奇å¤ï¼Œæ°£å®‡æ˜‚ è—,åšé€šç¶“典,貫串百家;兼識天文地ç†ï¼Œèƒ½çŸ¥éŽåŽ»æœªä¾†ã€ç”Ÿäººå£½æ•¸ï¼›åšå¾—å¹¾å¥è©©ï¼Œ å¯«å¾—å¹¾å®¶å­—ï¼Œç•«å¾—å¹¾ç­†ç•«ï¼Œè³½éŽæµ·å…§åå…¬ï¼ŒæŠ¹æ®ºå››æ–¹æ¸…å®¢ã€‚å››é æ…•å來求見的,須備 了出奇方物供養,é€é€²ç¦ªå ‚,上了號簿,候了三日,纔出方丈見人一次。 許多僧眾簇æ“出來,昇在層臺高座之上。兩æ—ä¾è€…æçˆåŸ·ä½›ï¼Œæ§æ–æŒç“¶ï¼›é¢å‰æ“ºçš„花 尊燭檯,當中çˆå…§ç„šèµ·æ²ˆæª€é™é€Ÿï¼›å…§å¤–é¦™ç…™å¯¶ç¯†ï¼Œçµæˆè¯è“‹ç›¸ä¼¼ï¼Œå¥½ä¸ç†±é¬§ã€‚三è²é›² æ¿ï¼Œçº”許那å•äº‹çš„äººä¾æ¬¡ä¸Šå‰è·ªä¸‹ï¼Œæ–¹å°‡è¦å•的話頭一一說了。他在上é¢çº”把那囫圇 足四é¢å…‰çš„話兒開示了幾å¥ï¼Œå³å«é€€ä¸‹ï¼›å†æ¬²é–‹è¨€ï¼Œå°±æ˜¯æ””頭一棒,打得發æ˜å€’暈, 由你自去猜度。然後åˆè¼ªåˆ°ç¬¬äºŒç­çš„ä¸ŠåŽ»ï¼Œä¹Ÿç…§å‰æ˜¯å€‹æ¨¡æ¨£ï¼Œæˆ–說下幾å¥è©±é ­ï¼Œæˆ–ç•™ 下幾行詩åˆï¼Œä¸€èˆ¬ä¹Ÿæœ‰æ’žè‘—之處。也有病人上å‰ï¼Œå°‡ç—…原說下一番,å•他請方,他胸 ä¸­é›£ç¶“è„ˆè¨£ã€æœ¨è‰è—¥æ€§ï¼ŒåŽŸæ˜¯æ˜Žç™½ï¼Œä¹Ÿä¾¿å¯«äº›èˆ‡äººæœåŽ»ï¼Œå»æœ‰éˆé©—。ä¸å¤šæ™‚,四方之 äººèªªå¾—é•·è€æ´»é¾æ´»ç¾ï¼Œé€£é€™é•·è€ä¹Ÿè‡ªä¸ä¿¡è‡ªèµ·ä¾†ï¼Œå…¬ç„¶é“是活佛祖師出世來了。因此 ,四下錢糧,雲蒸霧集。é‡å»ºå¢æž—,å‰å¾Œå±±é–€æ®¿å®‡ï¼Œå±¤å±¤è“‹é€ ï¼Œå¤©ä¸‹é™¤äº†å››å¤§å山, 也就數這開元寺了。誰料那年僕固懷æ©å了,æœå»·èµ·å…µç™¼é¦¬ï¼Œè¦å¾€å¾å‰¿ã€‚河北地方乃 是è¦åœ°ï¼Œè¨­ç«‹è—©éŽ®ï¼Œé ˜å…µå…ƒå¸¥é»žäº†æŽæŠ±çœŸã€‚æ­¤å…¬è†‚åŠ›éŽäººï¼Œè¬€å¤šæ™ºè¶³ï¼Œé ˜äº†äº”è¬äººé¦¬ å±¯æœ­æ²³åŒ—ï¼Œé —æœ‰ç´€å¾‹ï¼Œä¸æ“¾æ°‘間一è‰ä¸€æœ¨ï¼Œå„å„相安,民間感激ä¸å•»çˆ¶æ¯ã€‚å°‡é‚£å…µä¸ ä¸‰æ—¥ä¸€æ“,五日一練,寸步ä¸é›¢ç‡Ÿä¼ã€‚æŽå…ƒå¸¥èžå¾—é•·è€å¤§å,到纔三日,å³å‚™è¨±å¤šä½ˆ 施,執弟å­ä¹‹ç¦®ï¼Œå‰åŽ»æ‹œä»–ã€‚é•·è€æŽ¥è¦‹ï¼Œçœ‹å¾—å…ƒå¸¥å°Šé‡äº†ä»–ï¼Œä»–åæ‹¿è…”åšå‹¢ï¼Œè¦åšé‚£ 佛圖澄å°é‚£çŸ³å‹’的光景,å分傲慢。æŽå…ƒå¸¥æ—©å·²çªºç ´é€™å€‹å’Œå°šæ˜¯å€‹ä»—著資質åšèµ·ä¾†çš„ ,其實性地上的工夫,全無把æ‰ï¼Œé€™ä¹Ÿä¸åœ¨è©±ä¸‹ã€‚那知這個和尚也是åˆè©²æ•¸èŠé‚£æ²³åŒ— 一帶地方é‡äº†å¤©æ™‚䏿¹Šï¼Œé¡†ç²’無收。æœå»·æœˆç³§ï¼Œå£“欠七八個月,ä¸ä¾†æŽ¥æ¿Ÿï¼Œè»ä¸­æ´¶æ´¶ ï¼Œæš—åœ°è¬ è¨€å°‡æœ‰æ¥šæ­Œå¹æ•£å…«åƒä¹‹æ„。æŽå…ƒå¸¥ç„¡è¨ˆè¨­è™•,åªå¾—去到寺中,稱說大和尚大 有應變之æ‰ï¼ŒåˆæŽŒé ‚禮,跪在é¢å‰ï¼Œè™›å¿ƒä¸‹æ„,請å•å’Œå°šã€‚é‚£é•·è€æ—¥å¸¸é–“ï¼Œå…·é‚£é¨™å° äººçš„ä¼Žå€†å»æ˜¯æœ‰é¤˜ã€‚那兵馬呼å¸å¾…è®Šï¼Œå¯¦å¯¦è¦æ¹Šè™•錢糧,將來支放,å»ä¹Ÿä¸€æ™‚窘定, 沒有甚麼計策答那元帥。其實æŽå…ƒå¸¥èƒ¸ä¸­æˆç®—早已定之,åªè¦å®›å®›èªªå°‡é€²åŽ»ï¼Œå£å£å¥‰ 承大和尚長ã€å¤§å’Œå°šçŸ­ï¼Œå»ä½¿é•·è€å¢®åœ¨è¨ˆä¸­ï¼Œæ¯«ç„¡çŸ¥è¦ºï¼Œçº”有妙處。æŽå…ƒå¸¥æ•…æ„åšé‚£ 攢眉蹙é¡å½¢å®¹ï¼Œåœäº†ä¸€æœƒï¼Œå•é“:『寺中常ä½éŒ¢ç³§ï¼Œä¸çŸ¥ç¾æœ‰å¤šå°‘ç©è²¯ï¼Ÿå¯ä»¥æš«å€Ÿç›® 剿•‘濟一兩月麼?ã€é‚£å’Œå°šçš„心腸與伽è—è©è–©ä¸€æ¨£ï¼Œç”Ÿæˆæ‹¿é€²æ­¡å–œã€æ‹¿å‡ºå»ä¸ä¸­æ„, 說é“:『近來常ä½ä¸å¤ å日支橕,虧得å°åƒ§æœ‰äº›ç¦ç·£ï¼Œåˆ°é‚£ä¸è¶³æ™‚ç¯€ï¼Œå°±æœ‰äººç·Šè‘—é€ ä¾†ï¼Œçº”åº¦å¾—é€™äº›æ—¥å­ã€‚若說有ç©èšå¤šå°‘ï¼Œå»æ˜¯æ²’æœ‰ã€‚ã€æŽå…ƒå¸¥æŽ¥å£é“ï¼šã€Žå¦‚ä»Šæˆ‘ä¹Ÿä¸ è¦å€Ÿå¸¸ä½éŒ¢ç³§ï¼Œæœ‰å€‹ç®—è¨ˆï¼Œåªæ±‚大和尚「ç¦ç·£ã€äºŒå­—,我弟å­å°±æœ‰ç”Ÿè·¯äº†ã€‚ã€é•·è€è½ 說ä¸å€ŸéŒ¢ç³§ï¼Œåªå€Ÿã€Žç¦ç·£ã€ç²¾ç¥žæŠ–擻起åå€ï¼Œå•é“:『如何?如何?〠æŽå…ƒå¸¥é“:『弟å­é ˜è‘—兵馬å—å¾åŒ—討,處處走éŽï¼Œçœ‹ä¾†ç„¡å¦‚此地百姓好善的多。如今 弟å­åˆ°æœ‰ä¸€å€‹ç²—念,欲æ–著大和尚ç¦ç·£ï¼Œæ˜Žæ—¥å¯ºå‰å‡ºå¼µæ¦œæ–‡ï¼Œèªªæ˜¯å¼Ÿå­å¥‰è«‹å¤§å’Œå°šé–‹ 講è¯åš´æ³•寶,並彈孔雀真經,èšé›†äº›å–„男信女,化些錢糧,也å¯å°‡ä¾†ç­”救一時,ã€é•· è€é“:『這個é“場也動ä¸å¾—人頭,就是來也ä¸å¤šï¼Œå¦‚何得夠?〠元帥é“:『弟å­é‚„有計較。ã€é™„耳低言,如此如此。那長è€ç¬‘äº†ä¸€ç¬‘ï¼Œé€£å¿™é»žé¦–ã€‚å³ æ–¼å¯ºå…§å¯¬æ•žæ‰€åœ¨ï¼Œé«˜æ­èµ·ä¸ƒå±¤è“®è‡ºï¼Œé‡é‡ä¿±å·²é®è”½å¥½äº†ã€‚ 外邊化些鬆柴,周åœç–Šèµ·ï¼›è‡ºä¸‹æŽ˜å€‹åœ°é“,å¯å®¹ä¸€äººèµ°å¾—出來。直到了開期第一日, 講經完畢,大和尚開å£èªªé“:『大眾們須è¦é€Ÿé€Ÿç”¨å¿ƒç†æœƒï¼Œæˆ‘在此也ä¸ä¹…了,åªå¾…å›› å乿—¥é“場圓滿,我就è¦è¿´é¦–西方去了。ã€é‚£äº›å–„ä¿¡è½è¦‹å¤§å’Œå°šå°±è¦è¿´é¦–ï¼Œå»æ˜¯ç•°äº‹ 。一時開動,四é å‚³èžï¼Œé‚£äº›ä½ˆæ–½éŒ¢ç³§çš„堆山塞海而來æŽå…ƒå¸¥å¯†å¯†è‘—è½å¹¾å€‹é•·è€ä¸Šäº† 號ç±ï¼Œä¸€ä¸€æ”¶è²¯åœ¨å…§ã€‚看看到那圓滿之期,人也æ™å¤œä¸æ•£ã€‚å››åœé¬†æŸ´è¶Šç™¼æ·»å¾—多了, å››é¢çš„人好åƒä¼¼çœ‹æˆ²çš„,åªç­‰é‚£æ™‚上臺,ä¸çŸ¥å¤§å’Œå°šé¡¯å‡ºæ€Žéº¼æ´»ä½›çš„神é“ã€è–憎的證 果。長è€å¿ƒäº‹ï¼šã€Žæœ‰é‚£è‡ºä¸‹çš„地é“出路,åªèªªå¤–邊放起ç«ä¾†ï¼Œæˆ‘自有影身法兒。出了 地é“,日後隨了元帥,天涯海角å—用ä¸äº†ã€‚ã€é‚£çŸ¥å…ƒå¸¥æ—¥å¸¸é–“一片機心,原是è¦ç®—計 那長è€çš„。到了放ç«çš„æ™‚節,將那地é“é—œé–‰ç·Šäº†ï¼Œé•·è€æ–¹æ‚Ÿå¾—元帥騙他,也說ä¸å¾—, 硬著身軀,ä¸ä¸€æ™‚é “æˆç°ç‡¼ã€‚元帥在下至誠禮拜,就有附會的說é“:『親見大和尚穿 著大紅袈裟,五色祥雲,許多幢é£å¯¶è“‹ï¼ŒæŽ¥å¼•è¥¿æ–¹åŽ»äº†ã€‚ã€æ¬¡æ—¥ï¼Œå…ƒå¸¥åˆåœ¨ç«å †ä¸­æ”¾ äº›ç´°ç™½çŸ³é ­ï¼Œéƒ½é“æ’¿å¾—許多èˆåˆ©å­ã€‚å…ƒå¸¥æ”¶åŽ»ï¼Œå³æ¬²èˆ‡æ­»ç°ç¥–師造塔,這也就應著當 åˆå–法å識了。那方ä¸è«–男女,都有佈施,ä¸ä¸Šä¸€æœˆï¼Œç©äº†ä¸‰å餘è¬ã€‚元帥一一收去 ï¼Œå……ä½œå…µé¤‰ï¼Œä¸¦ç„¡ä¸€äººçŸ¥è¦ºã€‚é€™ä¹Ÿæ˜¯ä¸€å€‹å¤§å’Œå°šè¶…æ˜‡æ•…äº‹ã€‚è‹¥æ˜¯é€™é•·è€æ—¥å¸¸è£¡åªæ˜¯è‹¦ 行焚修,ä¸è£é€™å€‹æ¨¡æ¨£ï¼Œé‚£æŽå…ƒå¸¥ä¹Ÿä¸ä¾†ä¸‹æ­¤åˆ»æ¯’之著。後來說出這段情節,天下之 人齊å£ç¨±å¿«ã€‚『å‡ä½¿å¤§å’Œå°šæžœèƒ½çŸ¥å¾—éŽåŽ»ï¼Œæœªä¾†ï¼Œæ€Žéº¼è¢«äººæš—ç®—åˆ°é€™åœ°ä½ï¼Ÿå¯è¦‹å¤§å’Œ 尚都是å‡éˆ”,人自癡迷,將自己血汗掙的錢財被他騙去。ã€çœ¾äººé“:『如今大和尚挨 肩擦背,委實太多,那能個個登壇ã€äººäººèªªæ³•?近來人也有些厭薄,ä¸å¤§å分的與他 。èšåšä¸€åœ˜ï¼Œç„¡æœ‰é½‹åƒï¼Œåªå¥½ä¸€å€‹é ‚著一個,猶如屋角頭的臭è€é¼ ï¼Œæ‰¯é•·ä¸€ä¸²ï¼Œæ‹¿å€‹ 引磬,托著缽盂,沿街化食,單單學那釋迦乞食èˆè¡›åŸŽä¸­å…‰æ™¯ã€‚這廿˜¯å¤§å’Œå°šåšå‡ºä¾† 的下場頭也ï¼ã€è±†æ£šä¸»äººé“:『ä»å…„此番說話,果然說得痛快。豆已煮熟,請兄一嘗 何如?〠總評舉世佞佛,孰砥狂瀾,有識者未嘗ä¸å¿ƒç—›ä¹‹ã€‚韓文公佛骨一諫,幾罹殺身之ç¦ã€‚ 然事ä¸å¯æ­¢ï¼Œè€Œå…¶è¡¨å‰‡å‚³ï¼Œåƒå¤ä¸‹è®€ä¹‹ï¼Œæ­£æ°£å‡œå‡œã€‚åŠç‚ºäº¬å…†å°¹ï¼Œå…­è»ä¸æ•¢çŠ¯æ³•ã€‚æŒ‡ 之曰,是尚欲燒佛骨者。噫嘻ï¼é—¢ä½›ä¹‹ç¥žäº¦å¨çŸ£ã€‚今世無昌黎其人,所賴當事權者, ç†è«­è€Œæ³•ç¦ä¹‹ï¼ŒçŒ¶ä¸æ‡²ä¿—,乃復為之張其燄,何也? 夫彼以為咄嗟檀施,èŠä»¥æ‡ºæ‚”罪孽而已。豈知上好下甚,勢所必然也。縱ä¸èƒ½å¦‚åŒ—é­ ä¸»æ¯€ä½›ç¥ æ•¸è¬å€ï¼Œåˆä¸èƒ½å¦‚唿­¦å®—驅兆者而盡發,第ç¨ç‚ºæˆ¢æŠ‘,以正氣風之,庶å¯å®‰ 四民ã€éœç•°ç«¯çŸ£ã€‚ æ­¤ç¯‡æ‹ˆå‡ºæŽæŠ±çœŸè™•åˆ†æ­»ç°äº‹ï¼Œç‚ºç•¶æ¬Šå¼•伸觸發之機,雖ä¸å¿…如此狠心辣手,所謂法乎 上,僅得乎中。代佛家之示ç¾å¿¿æ€’,å³å…¶ç¤ºç¾å“€æ†«ä¹Ÿã€‚猶夫梵相ç°ç•°ï¼Œæ­£çˆ¾ä½Žçœ‰åž‚手 矣。讀者且未å¯ä½œæŽ’擊大和尚觀,謂之昌黎《原é“》文也å¯ï¼Œè¬‚之驅鱷魚文亦å¯ã€‚ 第七則 首陽山å”齊變節 æ˜¨æ—¥ï¼Œè‡ªé€™å¾Œç”Ÿæœ‹å‹æŠŠé‚£è¿‘æ—¥å¤§å’Œå°šçš„é™‹ç›¸èªªå¾—ç›¡æƒ…é€å¿«ï¼Œä¸»äººç…®è±†è«‹ä»–ï¼Œç´„æ¬¡æ—¥å† ä¾†èªªäº›æ•…äº‹ï¼Œå¦å‚™é»žå¿ƒå¥‰è«‹ã€‚那後生果然次日早早å在棚下。內中一人é“:『大和尚 近來委實太多,惹人厭惡。但ä»å…„嘴尖舌快,太說得刻毒。我們終日åƒç´ çœ‹ç¶“,邀人 åšæœƒï¼Œå‹¸äººä½ˆæ–½ï¼Œå¦‚今覺得å†å޻開å£ä¹Ÿé›£ï¼Œå³ä½¿èªªå¾—亂墜天花,人也ä¸è‚¯ä¿¡äº†ã€‚今日 ä¸è¦ä½ èªªé€™ä¸–情的話,我å»è€ƒä½ ä¸€è€ƒã€‚昨日主人ç¿ç…®è±†è«‹ä½ ï¼Œä½•ä¸ä»Šæ—¥æŠŠç…®è±†çš„æ•…事 說一個我們è½è½ï¼Œä¹Ÿè¦‹ä½ èƒ¸ä¸­æœ¬é ˜ï¼Œä¸æ˜¯å‰¿è¥²ä¾†çš„世情閑話也。ã€é‚£å¾Œç”Ÿä»°å¤©æƒ³äº†ä¸€ 想,é“:『ä¸é›£ä¸é›£ã€‚å¤è©©æœ‰äº‘ï¼šã€Œç…®è±†ç‡ƒè±†ç®•ï¼Œè±†åœ¨é‡œä¸­æ³£ï¼›æœ¬æ˜¯åŒæ ¹ç”Ÿï¼Œç›¸ç…Žä½• å¤ªæ€¥ã€‚ã€æ­¤æ›¹å­å»ºä¹‹è©©ã€‚å­å»ºä¹ƒä¸‰åœ‹æ™‚é­çŽ‹æ›¹æ“之å­ã€‚å¼Ÿå…„ä¸‰äººï¼Œä¼¯æ›°æ›¹ä¸•ï¼Œå­—å­æ¡“ ï¼Œä»²æ›°æ›¹å½°ï¼Œå­—å­æ–‡ï¼Œå­£æ›°æ›¹æ¤ï¼Œå­—å­å»ºï¼Œä¹ƒæ˜¯å«¡è¦ªåŒèƒžæ‰€ç”Ÿã€‚曹彰早已被曹丕毒藥 鴆害了。å­å»ºé«˜æ‰ï¼Œæ›¹ä¸•心åˆå¿Œåˆ»ï¼Œèªªä»–çš„è©©è©žä¿±æ˜¯å®¿æ§‹ç¾æˆè¨˜èª¦ä¾†çš„。 彼時å¶ç„¶å¸­ä¸Šåƒé‚£è±†å­ï¼Œå°±ä»¥è±†å­ç‚ºé¡Œæ•™ä»–åŸè©©ä¸€é¦–。å­å»ºå‰›å‰›èµ°å¾—七步,就把煮豆 之詩朗朗åŸå‡ºã€‚五言四å¥ï¼ŒäºŒå個字,其中滋味關著那弟兄相殘相妒之æ„,一一寫出 。曹丕見他如此æ·çº”,心益妒忌。其如å­å»ºæ‰å­¸é›–é«˜ï¼Œç¦æ°£ç”šè–„,ä¸å¤šæ™‚也就死了。 天下大統都是曹丕承接。å¯è¦‹çº”與ç¦éƒ½æ˜¯å‰ç”Ÿå®šçš„,ä¸å¿…用那殘å¿å¿Œåˆ»ï¼Œå¾’傷了弟兄 åŒæ°£ä¹‹æƒ…。這是三國時事,å¶å› è±†æ£šä¹‹ä¸‹æ­£åŠç…®è±†ä¹‹æ™‚,就把豆的故事說到弟兄身上 。其實天下的弟兄和ç¦çš„å°‘ã€åƒå•†çš„多。 三國å‰é‚Šæœ‰å€‹å‘¨æœã€‚周文王之å­ã€æ­¦çŽ‹ä¹‹å¼Ÿå‘¨å…¬æ—¦ï¼Œä¹ƒæ˜¯å€‹å¤§è–人。武王去世,他輔 è‘—æˆçދ幼䏻å了天下。周公æ”行相事,真心實æ„為著æˆçŽ‹ï¼Œäººäººéƒ½æ˜¯ä¿¡çš„ã€‚ç¨æœ‰å¼Ÿå…„ 行中有個管å”,他雖是與周公åŒèƒžç”Ÿå°‡ä¸‹ä¾†ï¼Œé‚£è‚šè…¸å»æ˜¯å¤©æ·µç›¸éš”ã€‚å‘¨å…¬é“æ˜¯è‡ªå®¶å¼Ÿ 兄,心腹相托,å«ä»–去監守著殷家å­å­«ã€‚那知管å”乘著監殷之舉,åç³¾åˆè”¡å”ã€éœå” ,æé€ è¨±å¤šæµè¨€ï¼Œèªªå‘¨å…¬äº‹æ¬Šåœ¨æ¡ï¼Œä¸æ—¥ä¹‹é–“將有謀å›ä¹‹å¿ƒï¼Œå»æ–¼å­ºå­æˆçŽ‹æœ‰å¤§ä¸åˆ© 之事。 周公在ä½ï¼Œè½äº†é€™äº›ä¸åˆ©ä¹‹è¨€ï¼Œå¯¢é£Ÿä¸å®‰ã€‚夢å¯ä¹‹é–“,心神ä¸å¯§ï¼Œä¹Ÿå°±ä¸æ•¢å±…æ–¼ç›¸ä½ ã€‚ç•¶åœ¨å•†æœ«ä¹‹ä¸–ï¼Œå››æ–¹æœªæœï¼Œæœå»·äº¬æ±é©å€¼èµ·äº†ä¸€è‚¡äººé¦¬ï¼Œåœ¨å•†èªªæ˜¯ç¾©å…µï¼Œåœ¨å‘¨é“是 頑民,周公也就借個æ±å¾é¡Œç›®ï¼Œé ˜äº†äººé¦¬å鎮æ±äº¬ï¼Œæ­£å¥½é¿é‚£æµè¨€ä¹‹æ„。彼時æµè¨€å›› 布,ä¸çŸ¥èµ·æ–¼ä½•人之å£ï¼Œå‘¨å…¬ä¹Ÿä¸å¿ç–‘心在管å”身上。 後來æˆçŽ‹çœ‹è¦‹ç®¡å”與蔡å”ã€éœå”都幫著商家武庚幹事,纔曉得乃是奸黨æµè¨€ã€‚æ³ä¸”打 開金鄊櫃中,看見父親武王大病之時,周公曾ç´ä¸€å†Šï¼Œé¡˜ä»¥èº«ä»£ï¼Œæ–¹æ›‰å¾—周公心曲。 é’天白日,無一毫瞞昧難明之事。先日周公居æ±ä¹‹æ™‚,大風大雨,走石飛砂,把郊外 大樹盡行å¹å€’,或是連根拔了起來。是日æˆçŽ‹è¿Žè«‹å‘¨å…¬æ­¸åœ‹ï¼Œé‚£è™•è™•å¹å€’之樹,ä»èˆŠ 䏿‰¶è‡ªèµ·ã€‚此見天地鬼神亦為感動。若是當謗言未æ¯ä¹‹æ—¥ï¼Œå‘¨å…¬ä¸€æœèº«æ­»ï¼Œè¬è¼‰åƒç§‹ 也ä¸è‚¯ä¿¡ã€‚ å¯è¦‹ä¸€å€‹è–人,é‡è‘—幾個ä¸å¥½çš„弟兄也就å—ç´¯ä¸æ ¡æ­¤åˆæ˜¯å‘¨æ™‚一個弟兄的故事。 還有一個故事,經å²ä¸Šä¹Ÿä¸æ›¾è¦‹æœ‰è¨˜è¼‰ï¼Œå¶è¦‹ç§¦å§‹çš‡ç„šç‡’未盡辭言野å²ä¸­ã€å»æœ‰ä¸€æ®µ 奇事,å³åœ¨å‘¨æœæœªå®šä¹‹æ™‚ï¼Œå•†æœæ—¢ç›¡ä¹‹æ—¥ï¼Œæœ‰æ˜†ä»²å…©å€‹ï¼Œé›–是åŒèƒžï¼Œå»æœ‰å…©å¿µï¼Œå§‹é›– 相åˆï¼Œçµ‚乃相離。乃兄å«åšä¼¯å¤·ï¼Œä»¤å¼Ÿå«åšå”齊。他是商æœåˆ†å°ä¸€åœ‹ä¹‹å›ï¼Œç¥–為墨胎 æ°ï¼Œçˆ¶ç‚ºå­¤ç«¹å›ã€‚夷ã€é½ŠäºŒäººä¸€æ¯æ‰€ç”Ÿï¼ŒåŽŸæ˜¯æƒ…æŠ•æ„åˆï¼Œå…„å‹å¼Ÿæ•¬çš„,åªå› ä¼¯å¤·ç”Ÿæ€§ 孤僻,ä¸è‚¯é€šæ–¹ï¼Œçˆ¶è¦ªé“ä»–ä¸è¿‘人情,沒有容人之é‡ï¼Œç«‹ä¸å¾—å›ä½ï¼Œæ‰¿ä¸å¾—宗祧。將 死之時,寫有éºå‘½ï¼Œé“å”齊通些世故,諳練民情,è¦ç«‹å”齊為å›ã€‚也是父命如此,那 å”齊é“:「立國立長,天下大義。父親雖有éºå‘½ï¼Œä¹ƒæ˜¯è‡¨çµ‚之亂命。ã€ä¾èˆŠéœé‚£ä¼¯å¤· 。那伯夷åˆé“:「父親éºå‘½å¦‚何改得?ã€ä½ æŽ¨æˆ‘éœä¸å·²ï¼Œç›¸çŽ‡è€Œé€ƒã€‚æŠŠå€‹åœ‹å›ä¹‹ä½çœ‹ 得棄如æ•屣,å»ä»¥è¬å¤ç¶±å¸¸ç‚ºé‡äº†ã€‚ 忽因商紂無é“,武王興兵來ä¼ã€‚太公呂望領了è»é¦¬å‰ä¾†ï¼Œä¸€è·¯äººæ°‘ç„¡ä¸å€’戈歸順,還 拿著簞食壺漿,沿路æ­è¿Žã€‚䏿¶ˆæ§åˆ€ç›¸æ®ºï¼Œæ—©å·²æŠŠå¤©ä¸‹å®šäº†ã€‚伯夷ã€å”齊看見天命〠人心已去,æ€é‡æ¬²è™Ÿå¬èˆŠæ—¥äººæ°‘起個義師,以圖æ¢å¾©ï¼Œå»ä¹Ÿä¸¦ç„¡ä¸€äººéŸ¿æ‡‰ï¼Œé€™å«åšå­¤ 掌難鳴,åªç´¢ä»˜ä¹‹ç„¡å¯å¥ˆä½•。彼時武王興師,文王去世,尚未安葬。夷ã€é½ŠäºŒäººæš—自 商é‡é“:「他是商家臣å­ï¼Œæ—¢è¦ä»—義執言,奪我商家天下把å›éƒ½å¼’了。父死安葬為大 ,他為天下,葬父之事ä¸é¡Œï¼Œæœ€ä¸å­äº†ã€‚把這段大義去責他,如何逃閃得去ï¼ã€æ­£å•† 議間,那周家è»é¦¬æ—©å·²ç–¾å¦‚風雨,大隊æ“塞而來。夷ã€é½Šçœ‹å¾—ä¸å¯é²ç·©ï¼Œç•¶è‘—路頭, 弟兄扣馬而諫é“:「父死ä¸è‘¬ï¼Œçˆ°åŠå¹²æˆˆï¼Œå¯è¬‚å­ä¹Žï¼Ÿä»¥è‡£å¼’å›ï¼Œå¯è¬‚ä»ä¹Žï¼Ÿã€é€™å…© å¥è©±èªªå°‡éŽåŽ»ï¼Œèªªå¾—æ­¦çŽ‹é–‹å£ä¸å¾—。左å³çœ‹è¦‹å›çŽ‹é¡è‰²ä¸å–„,就è¦å°‡åˆ€ç åŽ»ã€‚å‰›å¾—å¤ª 公與武王並馬而馳。武王所行之師,乃是弔民ä¼ç½ªä¹‹å¸«ã€‚å¤ªå…¬æ€¥æŠŠå·¦å³æ­¢ä½ï¼Œå¿ƒè£¡ä¹Ÿ 知是夷ã€é½ŠäºŒäººï¼Œä¸ä¾¿æ˜Žè¨€ï¼Œåªèªªï¼šã€Œæ­¤ç¾©åœŸä¹Ÿï¼Œä¸å¯å‹•æ‰‹ã€‚ã€æ€¥ä½¿äººæ‰¶è€Œå޻之ã€å¤· ã€é½Šåªå…©å¥è©±ï¼Œé›–然無濟於事,那天地則常倫ç†å»ä¸€æ‰‹æ­å‡ºï¼Œè¡¨æ–¼ä¸­å¤©ã€‚那天下人心 ,曉得大義的,也就激得動了。其如紂王罪大惡極,人心盡去,把這兩å¥ä¾èˆŠå¦‚冰炭 ä¸åŒçˆçš„。夷ã€é½Šè¦‹å¾—如此,曉得都城æ‘鎮,處處有周家兵守ä½ï¼Œç„¡å¯è—身。 倘或將這有用之驅無端葬é€ï¼Œä¸è‹¥åŸ‹è¹¤åŒ¿è·¡ï¼Œç•™è‘—此身,或者待時而動也ä¸å¯çŸ¥ã€‚å·¦ æ€å³ç®—,åªå¾—鼓著一å£ç¾©æ°£ï¼Œæ‚„悄出了都門,望著郊外一座大山投奔而去。〠『此山喚å首陽,å³ä»Šè’²å·žåœ°é¢ã€‚山上有七八å里之é™ï¼Œå…¶ä¸­ç›¤æ›²éšªå³»ï¼Œå»æœ‰åƒå±¤ã€‚ å‘¨åœæ› é‡Žï¼Œä½•止一二百里?山上樹木稀ç–ï¼Œä¹Ÿç„¡äººå®¶å±‹å®‡ï¼Œåªæœ‰ç޲ç“孤空巖穴å¯ä»¥è— 身;山頭石罅,有些許薇蕨之苗,清芬葉嫩,å¯ä»¥å……飢;澗底岩阿,有幾é“é£›ç€‘æµæ³‰ ,澄泓寒冽,å¯ä»¥è§£æ¸´ã€‚夷ã€é½ŠäºŒäººåªå¾—輸心貼æ„,ä½åœ¨å±±ä¸­ã€‚å§‹åˆåªå¾—他弟兄二人 ,到也清閑自在。那城中市上的人也è½è¦‹å¤·ã€é½Šæ‰£é¦¬è€Œè««ï¼Œæ•¸èªžèªªå¾—詞嚴義正,也便 激動許多的人,或是商æœåœ¨ç±çš„縉紳ã€å‘Šè€çš„æœ‹å‹ï¼Œæˆ–是åŠå°·ä¸å°¬çš„凿–¯æ–‡ã€å½é“å­¸ ,言清行æ¿ã€‚這一ç­å§‹åˆèº²åœ¨éœåƒ»æ‰€åœ¨ï¼Œè‹Ÿå»¶æ€§å‘½ï¼Œåªæ€•人知;後來èžå¾—æŸäººæŠ•誠〠æŸäººå‡ºå±±ï¼Œä¸èªªå¿ƒä¸­æœ‰äº›æ‡¼æ€•,åˆä¸èªªå¿ƒä¸­æœ‰äº›è‰·ç¾¨ï¼Œå»è¡¨å‡ºè‡ªå·±è¨±å¤šæ¸…高æ„見,許 多溪刻論頭。日å­ä¹…äº†ï¼Œåˆææ€•æ–°æœçš„功令追逼將來,身家ä¸ç•¶ç©©ä¾¿ã€‚一邊打è½å¾—夷 ã€é½Šå…„弟é¿å¾€è¥¿å±±ï¼Œä¹Ÿä¸è¦ºä½ å‚³æˆ‘,我傳你,號å¬é‚£åŒå¿ƒå…±å¿—的走åšä¸€å †ï¼Œæ·˜æ·˜é™£é™£ ,魚貫而入。猶如三春二月燒香的相似,都也走到西山裡é¢ä¾†äº†ã€‚ã€ ã€Žä¸”èªªå±±ä¸­æ¨¹æœ¨é›–ç¨€ï¼Œé‚£è±ºç‹¼è™Žè±¹å¹³æ—¥å»æ˜¯å¤šå¾—緊的。始åˆè¦‹äº›äººå½±ï¼Œéƒ½åœ¨é‚£è‰æ·±æ¨¹ 密之處張牙露爪,åšå‹¢æšå¨ï¼Œæ€é‡å°‹è‘—幾個時衰命苦的開個大葷。後來å»è¦‹è·¯ä¸Šè¡Œäºº 稠稠密密,那些孽畜也就疑心起來,åªé“來æ‰ä»–們的,å»ä¹Ÿä¸è¦‹ç¶²ç¾…æ§æ£’。 正在躊躇未定之間,åªè¦‹èµ°å‡ºä¸€å€‹äºŒä¸‰å°ºé«˜ã€é¾çœ‰çšœé½’ã€ç™½éŠ€é ˆè€æ¼¢ï¼Œç«‹åœ¨å±±å˜´é‚Šå« é“:「那些孽畜éŽä¾†è½æˆ‘å©å’:近日山中來了伯夷ã€å”齊二人,乃是賢人å›å­ï¼Œä¸æ˜¯ 下賤庸æµã€‚åªç‚ºæœå»·æ›äº†æ–°ä¸»ï¼Œä¸è‚¯ç”˜å¿ƒè‡£æœï¼Œå»ç‚ºè‘—åƒå¤ç¾©æ°£ç›¸çŽ‡è€Œä¾†ã€‚ æ±è¼©é ˆæˆ¢æ¯›æ–‚齒,匿跡è—形,ä¸å¯èƒ¡è¡Œå¦„å‹•ï¼ã€é‚£çœ¾ç¸å¿ƒè£¡æç„¶å¤§æ‚Ÿï¼Œçº”曉得如今天 下ä¸å§“商了。因想é“:「我輩雖係畜類,具有性éˆï¼Œäººæ—¢èˆŠæ—¥å±¬ä¹‹å•†å®¶ï¼Œæˆ‘等物類也 是è¸å•†ä¹‹åœŸï¼ŒèŒ¹å•†ä¹‹æ¯›ï¼Œé›£é“這段義氣åªè©²å¤·ã€é½ŠäºŒäººæ€§å¤©ç¨Ÿæˆï¼Œæˆ‘輩這個心境就該 頑冥ä¸éˆçš„麼?ã€åªè¦‹è™Žè±¹æŠŠå°¾ä¸€æ“ºï¼Œé‚£äº›ç¾ç‹—ç‹ç‹¸ä¹‹å±¬ï¼Œä¹Ÿä¿±é¼“著一å£ç¾©æ°£ï¼Œé½Šå¾€ 山上銜尾而進,望著夷ã€é½Šä½è™•躬身曲體,垂頭斂足,懼象守戶之犬;ç¡åœ¨å±±å‡¹çŸ³æ´ž ä¹‹ä¸­ï¼Œå…¨ä¸æƒ³æ’²å…”尋羊ã€è¿½ç超鹿的勾當。後來山下之人,異言異æœã€å¥‡å½¢æ€ªç‹€ï¼Œä¸€ 日兩日越覺多了。怕夷的念頭介然如石,終日徜徉嘯傲,拄æ–而行,彩些薇蕨而食, å£è£¡ä¹Ÿä¸¦ä¸é“個飢字。看見許多人來挨肩擦背,弄得一個首陽本來空洞之山,漸漸擠 æˆå¸‚井。 伯夷也還é“:「天下尚義之人居多,猶是商æœä¸€å€‹å¥½å¤§æ©Ÿæ‹¬ã€‚ã€ä¸æ–™å”齊眼界å‰çœ‹å¾— ä¸è€ç…©ï¼Œè‚šè…¹ä¸­ä¹Ÿæžµå¾—ä¸è€ç…©ï¼Œä¸€æ—¥å¹¡ç„¶å‹•念é“:「此來我好差矣ï¼å®¶å…„伯夷乃是應 襲å›çˆµçš„國主,於åƒå¤å€«ç†ä¸Šå¤§ç¾©çœ‹ä¾†ï¼Œå®ˆè‘—商家的祖功宗訓是應該的。那微å­å¥”逃 ,比乾諫死,箕å­ä½¯ç‹‚,把那好題目的文章都åšåŽ»äº†ã€‚æˆ‘å€‘é›–æ˜¯æ²³å±±å¸¶ç¤ªï¼Œä¼‘æˆšä¸–å° ï¼Œä¸å¥½å˜¿å˜¿èš©èš©ï¼Œéš¨è¡Œé€éšŠï¼Œä½†æˆ‘廿˜¯å­¤ç«¹å›æ¬¡å­ï¼Œåˆæ¯”é•·å…„ä¸åŒï¼ŒåŽŸå¯èº²é–ƒå¾—些。 剿—¥æ’žè‘—大兵到來,ä¸è‡ªæ£é‡ï¼Œå¹«è‘—家兄,觸çªäº†å¹¾å¥ç‹‚言,幾乎性命ä¸å…ï¼Œè™§å¾—è» ä¸­å§œå¤ªå…¬åœ¨å…§ï¼ŒåŽŸèˆ‡å®¶åªæ±æµ·åŒ—海大è€ä¸€è„ˆé€šå®¶ï¼Œç¨±ç‚ºç¾©å£«ï¼Œæ‰¶æ£„é“å‚,纔得ä¿å…¨ï¼Œ ä¸ç„¶é€™æ¢æ€§å‘½ä¹Ÿç•¶å­¤æ³¨ä¸€æ“²åŽ»äº†ã€‚å¦‚ä»Šå¤§å…µå·²éŽï¼Œçœ¼è¦‹å¾—商家局é¢ä¸èƒ½ç“¦å…¨ã€‚剿—¥ç²— 心浮氣,走上山來,åªé“山中惟我二人,也還算個åƒå¤æ•¸ä¸€æ•¸äºŒçš„人å“。誰料近來借 å養傲者既多,而托隱求å¾è€…益復ä¸å°‘ï¼Œæ»¿å±±ç•™å¾—äº›ä¸æ¶ˆè€•種ã€ä¸è¦ç´ç¨…的薇蕨貲糧 ,åˆè¢«é‚£æœƒèµ·æ—©ä½”é ­ç±Œçš„æŽ¡å–æ·¨èŠå¼„得一付é¢çš®è–„薄澆澆,好似曬乾癟的èœè‘‰ï¼Œå¹¾æ¢ 肋骨彎彎曲曲,åˆå¦‚ç ´è½æˆ¶çš„窗櫺。數日å‰ä¹Ÿå¥½æŒºè‘—胸脯,è£è‘—膀å­ï¼Œç›´æ’žæ©«è¡Œã€‚怎 奈何腰胯裡ã€è‚šçš®ä¸­è»Ÿå™¹å™¹ã€ç©ºæ´žæ´žï¼Œå§”實支橕ä¸éŽã€‚猛然想起人生世間,所圖ä¸éŽ ã€Žåã€ã€Žåˆ©ã€äºŒå­—。我大兄有人稱他是è–çš„ã€è³¢çš„ã€æ¸…çš„ã€ä»çš„ã€éš˜çš„ï¼Œé€™ä¹Ÿä¸æž‰äº† 丈夫豪傑。或有人兼著我說,也ä¸éŽæ˜¯é †å£å¸¶å¥‘的。若是我è¶è‘—ä»–çš„é¢çš®ï¼Œéš¨è‘—ä»–çš„ 跟腳,å³ä½¿æˆå¾—å來,也è¦åšå€‹è¶é¬§å¹«é–‘的餓鬼。設或今æœèµ·ç¾©ï¼Œæ˜Žæ—¥èˆˆå¸«ï¼Œè¬ä¸€å¶ 然腳蹋手滑,未å…åšäº†æ‹›ç½æƒ¹ç¦çš„都頭。如此算來,就åƒåœ°ä¸Šæ‹¾è‘—甘蔗楂的,漸漸嚼 來,越覺無味。今日回想,猶喜未é²ã€‚å¤äººäº‘:『與其身後享那空å,ä¸è€ç”Ÿå‰ä¸€æ¯ ç†±é…’ã€‚ã€æ­¤æ™‚大兄主æ„堅如金石,ä¸å¯å‹•æ–,若是我說明別去,他也斷然ä¸è‚¯ã€‚ä¸è‹¥ 今日乘著大兄後山采薇去了,扶著這æ¢ç«¹æ–,攜著èŠç­ï¼Œæ…¢æ…¢çš„æŒ¨åˆ°å±±å‰ï¼Œè§€æœ›è§€æœ› ,若有一些空隙,就好走下山去。ã€ã€ã€Žå½¼æ™‚伯夷早已餓得七八分沈é‡ï¼ŒåŽŸä¸å ¤é˜²è‘— å”齊。å”é½Šå»æ˜¯æ‡·äº†äºŒå¿ƒå¤šæ—¥ï¼Œé‚£ä¸‹å±±çš„æ‰“扮先已è£å‚™åœç•¶ï¼Œå°±æŠŠç«¹æ–ã€èŠç­éš¨åœ°æ¬ 下,身上穿著一件紫花佈é“è¢ï¼Œé ­ä¸Šå¸¶è‘—一頂麻布å­å·¾ï¼Œè…³ä¸‹è¸¹ä¸€é›™å…«è€³éº»éž‹ï¼Œçº”與 山中é¢è²Œå„別,åˆèˆ‡ä¸–ä¿—ä¸åŒã€‚å³ä½¿è·¯ä¸Šæœ‰äººç›¤å•,到底也ä¸å¤±ç§»å­ä½œå¿ çš„è«–é ­ã€‚ä¸ èªªå”齊下山的話,且說那豺狼虎豹,自那日隨了夷ã€é½Šä¸Šå±±ï¼Œç•œç”Ÿçš„心腸到是真真實 å¯¦å®ˆåœ¨é‚£è£¡ï¼Œæ¯«ç„¡ç•°å¿µã€‚å…¶ä¸­åªæœ‰ç‹ç‹¸ä¸€ç¨®ï¼Œå–„åªšå¤šç–‘ï¼Œæƒ³ä¹Ÿè‚šè£¡é¤“å¾—æ…Œäº†ï¼Œå¿½ç„¶çœ æ‚Ÿé“:「難é“商家天下æ›äº†å‘¨æœï¼Œé€™å±±ä¸­æ¿Ÿæ¿Ÿè¹Œè¹Œçš„äººéƒ½æ˜¯å°šè‘—ç¾©æ°£ã€æ¯«ç„¡æ”¹è®Šå¿µé ­ ï¼Ÿåªæ€•其中也有身騎兩頭馬ã€è…³è¸å…©ä¾†èˆ¹çš„,從中行奸弄巧。ã€ä¸€é¢å°±å–šè‘—幾個çå…’ ã€é¹¿å…’ã€çŒ¿å…’ã€å…”兒分頭四下哨探些風è²ï¼Œæ‰“è½äº›éŸ¿å‹•,報與山å›çŸ¥é“。或者æ‰å€‹ç ´ 綻,將些語言挑動,得他一個迴心轉æ„,我輩也就有肚飽之日了。商é‡åœç•¶ï¼Œå³ä¾¿åˆ† 頭仔細踹探。åªè¦‹å‰å±±æ¨¹é™°å †è£¡é®é®æŽ©æŽ©è€Œä¾†ï¼Œé‚£äº›æ‰“哨的早已窺見,閃在一邊。待 他上å‰è¦¿é¢çœ‹æ™‚ï¼Œæ‰“æ‰®é›–æ–°ï¼Œå½¢å®¹ä¸æ”¹ï¼ŒåŽŸä¾†ä¸æ˜¯åˆ¥äººï¼Œå°±æ˜¯å‰æ—¥ç‚ºé¦–ä¸Šå±±çš„ä»¤å¼Ÿå” é½Šå¤§äººã€‚çœ¾ç¸çœ‹è¦‹å»ä¹Ÿåš‡äº†ä¸€è·³ï¼Œä¸Šå‰ä¸€é½ŠæŠ“ä½ï¼Œé‚作人言é“:「å”齊大人,今日打 æ‰®æœ‰äº›å¤æ€ªï¼Œä½ èޫ䏿œ‰ç”šéº¼æ”¹æ˜“的念頭?ã€å”齊é“ï¼šã€Œå…¶å¯¦ä¸æ•¢ç›¸çžžï¼å®ˆåˆ°ä»Šæ—¥ä¹ŸåŸ· ä¸å¾—當時的論頭了。ã€çœ¾ç¸é“:「令兄何在?ã€å”齊é“ï¼šã€Œå®¶å…„æ˜¯ä¹æ­»ä¸æ¸çš„,我在 䏋妿œ‰ä¸€ç•ªä¸»æ„。昨日在山上正è¦å°‹è¦‹ä½ å€‘主人,說明這段é“ç†ï¼Œç´„é½Šäº†ä¸‹å±±ã€‚ä¸æ–™ 在此地相會,就請到這山å¡ç¢ŽçŸ³é ­ä¸Šå¤§å®¶å了,與你們說個爽快。就煩將此段情節轉 é”å±±å›ï¼Œä¸€é½Šéƒ½æœ‰å¥½è™•。ã€çœ¾ç¸è½è¦‹å”é½Šèªªå¾—åœ“æ´»ï¼Œå¿ƒè£¡ä¹Ÿä¾¿é¬†äº†ä¸€é¬†ï¼Œå°±æŠŠè¡£æœæ”¾ 了,é“:「請教,請教。ã€å”齊é“:「我們乃是商æœä¸–冑å­å¼Ÿï¼Œå®¶å…„該襲å›çˆµï¼ŒåŽŸæ˜¯ 與國åŒä¼‘的。如今尚義入山,ä¸é£Ÿå‘¨ç²Ÿï¼Œæ˜¯å®ˆè‘—åƒå¤å›è‡£å¤§ç¾©ï¼Œå»æ‡‰è©²çš„ã€‚æˆ‘ç‚ºæ¬¡å­ ï¼Œå分ä¸åŒï¼Œç•¶ä»¥å®—祠為é‡ã€‚ 剿—¥é›–則隨了人山,也ä¸éŽå¹«è¥¯å®¶å…„é€²å±±çš„æ„æ€ã€‚䏿—¥åŽŸè¦ä¸‹å±±ï¼Œä»–自行他的志,我 è‡ªè¡Œæˆ‘çš„äº‹ã€‚ä¸æ¶ˆèªªï¼Œæˆ‘懊悔在山ä½é€™å¹¾æ™‚。如眾ä½åŠå±±å›ä¹‹è¼©ï¼Œæ—¢ä¸åŒæ–¼äººé¡žï¼Œåˆ ä¸é—œä¿‚綱常,上天é™ç”Ÿæ±è¼©ï¼Œåªè©²æ®˜å¿æ…˜æ¯’,飲血茹毛,原以食人為事。當此鼎é©ä¹‹ 際,世人的å‰å†¤å®¿å­½æ¶ˆå¼­ä¸ä¾†ï¼Œæ­£ç•¶å€Ÿé‡ä½ å€‘爪牙åžå™¬ä¹‹å¨ï¼Œè‚†æ­¤å¼åœ°é©šå¤©ä¹‹å‹¢ï¼Œæ‰€ 謂應é‹è€Œèˆˆï¼Œå¾…時而動者也。 為何也學了時人虛驕氣質,å£ä¼¼è–賢,心åŒç›œè¹ ï¼ŒåŠé†’åŠé†‰ï¼Œå¦‚夢如癡,都也èšåœ¨é€™ 裡,å¿è‘—è…¹æžµï¼Œç”˜æ­¤æ·¡è–„ï¼Œå»æ˜¯éŒ¯åˆ°åº•了。你們速速將我這段議論與山å›å•†é…Œï¼Œä»–自 ç„¶æç„¶å¤§æ‚Ÿã€‚想了我這段好活,è¬ä¸€æ—¥å¾Œä¸–è·¯ä¸Šç›¸é€¢ï¼Œé‚„è¦æ‹œè¬æˆ‘å“©ï¼ã€çœ¾ç¸è½äº†é€™ 一番說話,個個昂頭露齒,抖擻毛皮,攙天撲地,快活個ä¸äº†ã€‚å”齊也就立起身拱手 é“:「你們å»åŽ»å ±èˆ‡å±±å›çŸ¥ä¹Ÿã€‚ã€çœ¾ç¸ä¸€é½Šè·³èµ·ï¼Œç«é€Ÿæ˜Ÿé£›ï¼Œéƒ½ä¸è¦‹äº†ã€‚å”齊伸頭將 å·¦å³å‰å¾Œå‘¨åœä¸€çœ‹ï¼Œé“:「我å”齊真僥倖也ï¼è‹¥ä¸æ˜¯é€™å¼µåˆ©å˜´æ»¿å£èŠ±è¨€ï¼Œå¹¾æ ¹æž¯éª¨å¹¾ 乎斷é€åœ¨é€™ä¸€ç­å£è£¡ï¼Œé‚„è¦æ†Žæ…Šç™Ÿè¨æ°£å“©ã€‚ã€ã€å”齊從此放心樂æ„,踹著山å¡ï¼Œå¾žå®¹ 往山下走了二三å里,到一市鎮人煙湊集之處,åªè¦‹äººå®¶é–€é¦–俱供著香花燈燭,門上 都寫貼「順民ã€äºŒå­—。åˆè¦‹è·¯ä¸Šè¡Œäººæœ‰é¨Žé¨¾é¦¬çš„,有乘å°è½Žçš„,有挑行æŽçš„ï¼Œæ„æ°£æš æšï¼Œå»æ˜¯ç‚ºä½•ï¼Ÿä»”ç´°å¾žæ—æ‰“è½ï¼Œæ–¹çŸ¥éƒ½æ˜¯è¦å¾€è¥¿æ–¹æœè¦‹æ–°å¤©å­çš„。或是寫了幾款æ¢é™³ 去ç»ç­–的,或是敘著先æœèˆŠè·æ±‚起用的,或是將著幾篇歪文求徵è˜çš„,或是營求ä¿èˆ‰ 賢良方正的,紛紛奔走,絡繹ä¸çµ•。å”齊見了這般熱鬧,ä¸è¦ºå¿ƒè£¡åˆå‹•äº†ä¸€å€‹å¿µé ­é“ ï¼šã€Œé€™äº›ç´›ç´›ç´œç´œèµ°å‹•çš„ï¼Œéƒ½æ˜¯æ„æ°£æ˜‚æ˜‚ï¼Œæœ›è‘—æ–°æœæšçœ‰å氣,æ€é‡åšé‚£è‡´å›æ¾¤æ°‘çš„ äº‹æ¥­ï¼Œåªæ€•沒些憑據,沒些根腳,也便åšä¸å‡ºä¾†ã€‚我乃商æœä¸–臣,眼見投誠的官兒都 是我們åè¦ªä¹æˆšï¼Œé›–ç„¶å‰æ—¥åŒå®¶å…„è¡çªäº†å¹¾å¥é–‘話,料那åšçš‡å¸çš„äººæ±ºä¸æŠŠæˆ‘å€‘éŒ™éŠ– 計較。æ³ä¸”å®¶å…„å±…æ–¼åŒ—æµ·ä¹‹æ¿±ï¼Œæ›¾å—æ–‡çŽ‹é¤Šè€ä¹‹å…¸ï¼Œæˆ‘若在æœï¼Œä¹Ÿæ˜¯ä¸€å€‹æ°‘之釿œ›ï¼Œ 比那些沒åç›®å°å®¶å­é¨™å®˜é¨™ç¥¿çš„,大ä¸ç›¸åŒçŸ£ï¼ã€ä¸€é‚Šè¡Œè·¯ï¼Œä¸€é‚Šæ€æƒ³ã€‚ 正在虛空橫擬之際,心下å分暄熱,抬頭一望,å»è¦‹äº”雲深處縹緲皇都。å”齊知é“京 城ä¸é ï¼Œä¹Ÿå°±è¿‘城所在尋個å°å¯“,暫且安身,料ç†å‡ºå±±ä¹‹äº‹ã€‚諸般åœç•¶ï¼Œæ–¹æ•¢è¡Œå‹•。 整整在那歇客店裡想了一夜。 『次日正è¦åˆ°é‚£éƒ½åŸŽå…§å¤–覓著鄉親故舊,生些盤費,走ä¸ä¸Šä¸€äºŒé‡Œè·¯ï¼Œåªè¦‹è¥¿åŒ—角上 一陣黑雲推起,頃刻暗了åŠå¤©ï¼Œé é çš„轟轟烈烈,喧喧é—é—ï¼Œå¦‚é›·ä¼¼é›»ï¼Œéš¨è‘—ç‹‚é¢¨æ² åœ°è€Œä¾†ã€‚ å”é½Šä¹Ÿé“æ˜¯é™£æš´é¢¨ç–¾é›¨é™¡ç„¶ä¾†çš„,正待è¦å¾€æ¨¹æž—深處暫為躲é¿ï¼Œé‚£çŸ¥åˆ°äº†é¢å‰ï¼Œå»æ˜¯ 一隊兵馬。黑旗黑幟ã€é»‘盔黑甲,許多兵將也都是黑è¢ã€é»‘é¢çš„。å”齊見了,先已閃 å¾—ç¥žé­‚é¡›å€’ã€‚ä¸æ–™ç•¶è‘—é¢å‰å¤§å–Šä¸€è²é“:「拿著一個大奸細也ï¼ã€ä¸ç”±åˆ†èªªï¼Œå»æŠŠå” 齊蒼鷹撲兔相似一索æ†äº†ï¼Œæ”¢è‘—許多刀斧手,解到營內。å”é½Šé‚„é“æ˜¯å‘¨å®¶å…µé¦¬ï¼Œå¤§è² å–Šé“ï¼šã€æˆ‘是åˆå‡ºå±±ä¾†æŠ•誠報效的ï¼ã€ä¸Šé‚Šå‚³ä»¤é“:「既是投誠報效的,且把繩索鬆 了ï¼ã€å”齊神魂方定,抬頭一看,åªè¦‹ä¸Šé¢å的都是焦頭爛é¡ã€æœ‰æ‰‹æ²’è…³ã€æœ‰é ¸ç„¡é ­ 的一ç­é™£ä¸Šå‚·äº¡ã€‚中間一人é“:「你出身投誠報效,有何本事?ã€å”é½Šä¹Ÿå°±ç›¸æ©Ÿéš¨å£ èªªé“:「我久ä½å±±ä¸­ï¼Œèƒ½çŸ¥ç™¾è‰è—¥æ€§ï¼Œå‡¡äººç–¾ç—…,立能起死回生。ã€çœ¾å‚·äº¡è½è¦‹é€™è©± ,正在負痛ä¸éŽçš„æ™‚節,俱é“:「你有藥,速速é€ä¸Šä¾†ï¼Œæ›¿æˆ‘輩療治一治,隨你è¦åš 甚麼官都是便的。ã€è¨€ä¹‹æœªå·²ï¼Œå¿½è¦‹å·¦ç­åˆ€æ–§æ‰‹éšŠè£¡èµ°å‡ºä¸€äººï¼Œä¸Šå‰å°‡å”齊頭上戴的 å­å·¾ä¸€æŠŠæ‰¯è½ï¼Œèªªé“:「你既è¦åšå®˜ï¼Œå¦‚ä½•æˆ´æ­¤ä¸æ¨£ä¹‹ç‰©ï¼Ÿå°±æ˜¯åšäº†å®˜å…’ï¼Œäººä¹Ÿè¦æŠŠ ä½ åšåŒ¿å–ªä¸å­ç†è«–ï¼ã€é‚£å³ç­åˆèµ°å‡ºä¸€å€‹äººä¾†ï¼ŒæŠŠå”齊é¢å­”仔細一èªï¼Œå¤§å«é“:「這 是孤竹å›ä¹‹å­ï¼Œä¼¯å¤·ä¹‹å¼Ÿï¼Œå«åšå”齊。近來臉嘴瘦削,å»å°±ä¸èªå¾—了。ã€çœ¾äººä¸Šå‰é½Š è²é“:「是,是。若論商家氣脈,到是與我們åŒå¿ƒåˆå¿—的。但是這樣衣冠打扮,åˆä¸ 見與他令兄åŒè¡Œï¼Œå…¶ä¸­å¿…有緣故。ã€ä¸­é–“åçš„é“:「近來人心奸巧,中è—難測,ä¸å¯ 被他逞著這張利å£å˜´æ¼äº†åŽ»ï¼ã€å©å’眾人帶去,正待仔細盤詰個明白。å”é½Šå¿ƒè£¡çº”çœ å¾—é€™ç­äººå°±æ˜¯æ´›é‚‘頑民了,ä¸è¦ºæ‰‹å¿™è…³äº‚,å£è£¡å°šæ‰“é»žå¹¾å¥æ”¯å¾çš„說話,袖中ä¸è¦ºè„« è½ä¸€å¼µè‡ªå·±å¯«çš„æŠ•誠呈å­ç¨¿å…’。眾人拾起,從頭一念,大家拳頭巴掌雨點相似,打得 頭破腦開。中間的罵é“,「你世å—商家的高爵厚祿,待你å¯è¬‚ä¸è–„,何å蒙著é¢çš®ï¼Œ 敗壞心術,就去出山åšå®˜ï¼å³ä½¿åšäº†å®˜å…’,æœå—å在那邊,é¢çš®ä¸Šä¹Ÿè¦ºæœ‰äº›æ…šæ„§ï¼ æ³ä¸”æ–°æœè¦çŸ©ï¼Œä½ æ‰¯è‘—兩個空拳怎便有官兒到手?如此無行之輩,速速推出市曹,斬 首示眾ï¼ã€çœ¾äººæŠŠå”齊ä¾èˆŠæ†ç¸›ï¼Œæ­£è¦æŽ¨å‡ºå‹•手。且未說畢。〠『åªèªªå‰æ—¥çœ¾ç¸å¾—了å”齊這番說話,報與山å›ï¼Œå±±å›çœé“:「有ç†ï¼Œæœ‰ç†ï¼æˆ‘è¼©è‹¥å¿ é¤“å›°å®ˆå±±ä¸­ï¼Œåˆ°åšäº†é€†å¤©ä¹‹äº‹ï¼ã€ä¸€å€‹å€‹ç£¨ç‰™ç¤ªé½’,一個個奮鬣張å¨ï¼Œéƒ½åœ¨å±±é ­æ’¼å¤© 振地,望著å¡ä¸‹ä¸€éšŠä¸€éšŠè¸¹è¸±è€Œä¾†ã€‚行到山下,é©å€¼æ’žè‘—那些頑民營裡ç¶è‘—å”齊押解 å‰ä¾†ï¼Œå°‡æ¬¡è¡Œåˆ‘之際。那å‰éšŠå“¨æŽ¢çš„ç‹å…”早已報與山å›é“ï¼šã€Œå‰æ—¥å‹¸æˆ‘們出山的å”齊 ,å‰é€”有難。ã€é‚£å±±å›å³å‚³ä»¤çœ¾ç¸ä¸Šå‰æ•‘應,å»è¢«é‚£é ‘民隊裡將弓箭刀æ§ç·Šç·Šå¸ƒå®šã€‚ 眾ç¸é“:「拜上你家頭領ï¼å”齊乃是我輩æ©ä¸»ï¼Œè‹¥è¦å‹•手,須與我們山å›è¬›å€‹æ˜Žç™½ã€‚ ä¸ç„¶æˆ‘們並力而來,你們亦未穩便ï¼ã€ä¸ä¸€æ™‚,那頑民的頭目與那ç¸é¡žçš„å±±å›ï¼Œå…©é‚Š é½Šå‡ºé™£å‰ï¼Œä¿±å„拱手通å•一番。然後山å›é“:「å”齊大人乃我輩指迷æ©ä¸»ï¼Œä»Šæ—¥æ­£è¦ 奉上天功令,度世安民,刈除惡孽,肅清海宇,敷å¥å¤ªå¹³ï¼Œä½ å¦‚何把他行害?ã€é‚£é ‘ æ°‘é“:「天無二日,民無二王。å”齊乃商æœä¸–勛,他既上欺å›çˆ¶ï¼Œä¸‹èƒŒå…„長,是懷二 心之人。我輩仗義興師,ä¸å¹¸å½¼è’¼ä¸ä½‘,致使我輩倫è½ç„¡ä¾ã€‚然而一片忠誠天日å¯è¡¨ ,一腔熱血è¬è¼‰é›£æž¯ã€‚今日幸得狹路相逢,若ä¸å‰¿é™¤å¥¸é»¨ï¼Œä»»ä»–衣紫腰金,天ç†ä½•å­˜ ?王綱何在?ã€å…©é‚Šä¿±å„說得有ç†ï¼Œä¸è‚¯ç›¸è®“。〠『正在舌鋒未解之時,åªè¦‹æ±å—è§’ä¸Šç¥¥é›²å†‰å†‰ï¼Œå¹¾é™£é¦™é¢¨ï¼Œä¸€æ´¾ä»™æ¨‚é½Šé³´ï¼›å‰æœ‰è¨±å¤š ç禽異ç¸è·³èºç¿±ç¿”,後有許多寶蓋幢幡飄é—飛舞;中間天神天將簇æ“è‘—é¾è»Šé³³è¼¦è€Œä¾† ,傳呼é“:「å‰é‚Šçš„畜生餓鬼俱å„退é¿ï¼ã€é‚£é ‘æ°‘ç¸é¡žä¹Ÿå…ˆæ‰“è½å¾—來的神é“乃是玉皇 é§•å‰ç¬¬ä¸€ä½å°Šç¥žï¼Œè™Ÿç‚ºé½Šç‰©ä¸»ï¼Œæ¾„世金仙。專å¸ä¸‹ç•Œåœ‹ç¥šèˆˆè¡°ï¼Œç”Ÿäººç¦ç¥¿ä¿®çŸ­ï¼Œä¸¦æ¸… 算人世一切未完冤債等事。 ç•¶ä»Šåœ‹é‹æ–°èˆŠäº¤æŽ¥ä¹‹æ™‚,那勾索的與填還的正在歸çµä¹‹éš›ã€‚兩邊頑民ç¸é¡žèˆ‡å”齊見了 ,一齊跪下,俱å„訴說一番。齊物主é‚å°‡å…©é‚Šçš„èªªè©±ä»”ç´°è©³å¯©ï¼Œé–‹å£æ–·é“:「眾生們 見得天下有商周新舊之分,在我視之,一興一亡,就是人家生的兒å­ä¸€æ¨£ï¼Œæœ‰ä½•分別 ?譬如春å¤ä¹‹èбè¬äº†ï¼Œä¾¿è©²ç§‹å†¬ä¹‹èŠ±é–‹äº†ï¼Œåªè¦æ‡‰è‘—時令,便是ä¸é€†å¤©æ¢ã€‚若據頑民 æ„è¦‹ï¼Œé–‹å¤©é—¢åœ°å°±æ˜¯å€‹å•†å®¶åˆ°åº•ä¸æˆï¼Œå•†ä¹‹å¾Œä¸è©²æœ‰å‘¨ï¼Œå•†ä¹‹å‰ä¸è©²æœ‰å¤äº†ã€‚ä½ å€‘ä¸ è­˜å¤©æ™‚ï¼Œå¦„ç”Ÿæ„念,æ±ä¹Ÿèµ·ç¾©ï¼Œè¥¿ä¹Ÿèˆˆå¸«ï¼Œå»èˆ‡åœ‹å›ç„¡è£œï¼Œå¾’害生éˆï¼ æ³ä¸”爾輩所作所為,俱是骯髒齷齪之事,åˆä¸æ˜¯é‚£æ›¿å¤©è¡Œé“的真心,終甚麼用ï¼è‹¥å èªªçˆ¾è¼©ä¸æ˜¯æŠŠé‚£åƒå¤å›è‡£ä¹‹ç¾©ä¾¿é “ç„¶æ»…çµ•ï¼Œä¹Ÿä¸æˆå€‹ä¸–ç•Œã€‚è‹¥çˆ¾è¼©é€™å£æ€¨æ°£ä¸è‚¯æ¶ˆé™¤ ,我與爾輩培養,待清時åšå€‹é–‹åœ‹å…ƒå‹›ç½·äº†ã€‚ã€çœ¾é ‘æ°‘é“ï¼šã€Œæˆ‘å€‘äº‹é›–ä¸æˆï¼Œä¹Ÿæ›¿å•† å®¶ç•¥ç•¥åæ°£ã€‚坿¨å”齊背æ©äº‹ä»‡ï¼Œé€™ç­‰ä¸å¿ ä¸å­çš„人,如何容得ï¼ã€é½Šç‰©ä¸»é“ï¼šã€Œé“ éš†å‰‡éš†ï¼Œé“æ±¡å‰‡æ±¡ï¼Œå¾žä¾†æ–°æœçš„臣å­ï¼Œé‚£ä¸€å€‹ä¸æ˜¯å…ˆä»£çš„苗裔?該他出山åŒè‘—物類生 生殺殺,風雨雷霆,俱是應天順人,也ä¸å¤±å€‹æŠ•明棄暗。ã€çœ¾é ‘æ°‘é“:「今天下塗炭 極矣,難é“上天亦好殺耶?ã€é½Šç‰©ä¸»é“:「生殺本是一ç†ï¼Œç”Ÿè™•備有殺機,殺處全有 生機。爾輩當著場å­ï¼Œè‡ªä¸çœå¾—ï¼ã€çœ¾é ‘æ°‘è½äº†é€™ç•ªèªªè©±ï¼Œå€‹å€‹é»žé¦–。忽然虎豹散去 ,那頑民營ä¼éŸ¿äº®ä¸€è²ï¼Œæå¦‚天崩地裂。那一團黑雲ã€é»‘霧俱變作黃雲,é€é™å››æ•£ï¼Œ 滿地å»è¦‹é’è“®è¬æœµï¼Œæ¹§ç¾ç©ºä¸­ã€‚ç«‹èµ·èº«ä¾†ï¼Œå»æ˜¯å”é½Šå—æŸ¯ä¸€å¤¢ã€‚çœå¾—齊物主這派論頭 ï¼Œè‡ªä¿¡æ­¤ç•ªå‡ºå±±å»æ˜¯ä¸å·®ï¼Œå¾…有功å到手,å†å¾€è¥¿å±±æ”¶æ‹¾å®¶å…„枯骨,未為晚也。ã€çœ¾ 人é“:『怪é“å››æ›¸ä¸Šèµ·åˆæŠŠä¼¯å¤·å”齊併稱,後來讀到「逸民ã€é€™ä¸€ç« æ›¸å¾Œï¼Œå°±å–®èªªè‘— ä¸€å€‹ä¼¯å¤·äº†ã€‚å…¶å¯¦æ˜¯æœ‰ä¾†æ­·çš„ï¼Œä¸æ˜¯æ­¤å…„é‘¿ç©ºä¹‹è«‡ã€‚æ•¬æœæ•¬æœï¼ã€ 總評滿å£è©¼è«§ï¼Œæ»¿èƒ¸æ†¤æ¿€ã€‚把世上å‡é«˜å°šèˆ‡ç‹—彘行的,委曲波瀾,層層寫出。其中有 èªªç›¡è™•ï¼Œåˆæœ‰é¤˜åœ°è™•,俱是冷眼奇懷,å¶ç‚ºç™¼æ´©ã€‚è‹¥è…儒見說翻é§å”齊,便以為å”çª è¥¿æ–½çŸ£ã€‚å¿…é ˆé«”è²¼ä»–å¹»ä¸­ä¹‹çœŸï¼ŒçœŸä¸­ä¹‹å¹»ã€‚æ˜Žæ˜Žé¼“å‹µå¿ ç¾©ï¼Œæé†’æµä¿—,如煞看虎豹如 何能言,天神如何出ç¾ï¼Œè±ˆä¸æ˜¯ç™¡äººèªªå¤¢ï¼ 第八則 空é’石蔚å­é–‹ç›² 昔日孔è–äººæœ‰å€‹å¼Ÿå­æ¨Šé²ï¼Œæ›¾å‘夫å­è«‹å­¸ç‚ºåœƒã€‚那為圃之事,乃是鄉下人勾當,如何 樊é²è¦åŽ»å­¸ä»–ï¼Ÿé€™æ˜¯æ¨Šé²è«·å‹¸å¤«å­ä¹‹æ„。看見夫å­å‘¨æµå¤©ä¸‹ï¼Œé“大莫容,ä¸çŸ¥ç©¶ç«Ÿä½• 似,ä¸å¦‚尋個一丘一ç•,種些瓜茄å°èœï¼Œåˆ°ä¹Ÿæœ‰å€‹æ”¶æˆçµæžœã€‚若論地ç•上收æˆï¼Œæœ€å¤š 而有利者,除了瓜蔬之外,就是羊眼豆了。別的èœè”¬éƒ½æ˜¯å°±åœ°ç”Ÿçš„,隨人è¸è¸ä¹Ÿä¸è¨ˆ è¼ƒã€‚æƒŸæœ‰æ­¤ç¨®åœ¨åœ°ä¸‹é•·å°‡å‡ºä¾†ï¼Œçº”å¾—ä¸‰å››å¯¸å°±è¦æ­å€‹é«˜æ£šï¼Œä»»ä»–æ„兒蔓延上去,方肯 çµå¯¦å¾—多;若隨地拋棄,盡力長來,ä¸éŽä¸€äºŒå°ºé•·ä¹Ÿå°±é»ƒæž¯ä¹¾ç™Ÿæ­»äº†ã€‚譬如世上的人 ï¼Œç”Ÿä¾†ä¸æ˜¯ä¸‹å“賤種,從幼就è¦å¥½å¥½æ»‹åŸ¹ä»–,自然超出凡å“ï¼›æˆå°±çš„å±€é¢ä¹Ÿä¸æ·ºé™‹ã€‚ 若處éžå…¶åœ°ï¼Œå°±æ˜¯å¤©ç”Ÿä¾†ç•°æ¨£è³‡è³ªï¼Œå…¶å®¶ä¸å¾—溫飽,父æ¯ä¸ä»¤å®‰é–‘,身體ä¸å¾—康å¥ï¼Œ 如何æˆå°±å¾—來?此åˆå¦æ˜¯è±†æ£šä¸Šä¸€æ¨£æ¯”方了。昨日主人彩了許多豆莢,到市上æ›äº†æžœ å“,打點在棚下請那說書的åƒã€‚那知這些人都是鄉愚氣質,è½è¦‹è«‹åƒæ±è¥¿ï¼Œææ€•è¼ªæµ é‚„å¸­ï¼Œå¤§åŠä¸€å“„走了。止有å餘個人大雅ååœ¨é‚£è£¡ï¼Œæ­£ç¶“èªªéŽæ›¸çš„一個ä¸åœ¨ã€‚ 廿œ‰ä¸€ä½å°‘å¹´åŠæ–¯ä¸æ–‡ï¼Œç•¥ç•¥è±¡äº›æ¨¡æ¨£ï¼Œä¸»äººè«‹éŽä¾†å,他也就便å了。後來眾人上 å‰é“:『今日主人興致甚佳,ä¸è¦è¢«é‚£ç­ä¿—è€æŽƒç›¡äº†ã€‚ã€æŒ‡è‘—這ä½å°‘å¹´é“:『看來今 日別無人了,å»è¦å€Ÿé‡å°Šå…„,任æ„說一回故事點綴點綴ï¼ã€é‚£å°‘å¹´é“:『在下雖是這 å€‹æ¨¡æ¨£ï¼Œäººé“æ˜¯å®¦é–€å­å¼Ÿï¼Œèƒ¸ä¸­ç•¢ç«Ÿæœ‰äº›å­¸å•,其實性å­å¾žå°é¤Šé©•,çœè‘—兩隻亮光光 眼ç›ï¼Œå»æ˜¯ä¸€å€‹çžŽå­—ä¸è­˜ã€‚日常間人淘裡挨著身å­è½äººèªªäº›è©•話,å³ä½¿å­¸å¾—å¹¾å¥ï¼Œåª 好å‘ä¸åœ¨è¡Œçš„é¢å‰èƒ¡è¨€äº‚é“,潦è‰å£“ä¿—è€Œå·²ã€‚ä»Šæ—¥è‹¥è¦æˆ‘上場說那整段的書,è¬è¬ä¸ æ•¢ï¼ã€çœ¾äººé“:『ä¸ç®¡å‰æœå¾Œä»£ã€çœŸçš„å‡çš„,åªè¦èªªå¾—熱鬧好è½ä¾¿äº†ã€‚ã€å°‘å¹´é“:『 æ˜¨æ—¥æˆ¿ä¸‹å«æˆ‘撿個日å­ï¼Œå»æŠŠæ›†æ—¥é¡›å€’拿了,被人笑話。若今日說出些沒頭脫柄的故 事,被å´é‚Šå°–酸朋å‹å—…嗅鼻頭ã€çž»çž»çœ¼ç›åšé¬¼è‡‰ã€æ‰åˆ¥å­—笑個ä¸äº†ï¼Œä¸‹é­é€£é€™å€‹æ¸…æ¶¼ 所在å也å䏿ˆäº†ã€‚列ä½è«’䏿˜¯é‚£æµ®è–„之輩,若畢竟è¦èªªï¼Œæ²’奈何也åªå¾—ç»é†œã€‚且說 éŽï¼Œæˆ‘是è½åˆ¥äººå˜´è£¡èªªä¾†çš„ï¼Œå³æœ‰å·®éŒ¯ï¼Œä½ å€‘åªç½µé‚£äººåš¼è›†äº‚話罷了。ã€çœ¾äººé“:『 åªæ˜¯é€™å€‹è©±æŸ„也就圓活波瀾得緊,自然妙的。ã€å°‘å¹´é“:『我上年到蘇州城裡北寺中 é–“è€ï¼Œè½å¾—和尚打著éƒéˆ¸èªªé“:天地開闢以來,一代一代的皇å¸éƒ½æ˜¯ä¸€å°Šç¾…漢下界主 æŒã€‚å”虞時æ–讓,湯武時å¾èª…;後來列國紛爭,秦漢åžä½µï¼Œæœ‰ä»¥ä»ç¾©å¾—國的,有以奸 é›„å¾—åœ‹çš„ï¼Œå…¶é–“åƒæ…‹è¬ç‹€ï¼Œä¸å¯è¨ˆæ•¸ï¼Œç¸½æ˜¯é‚£å†¥å†¥ä¸­ä¸€ä½ç¾…漢作主。這也是個輪來苦 差,推ä¸åŽ»çš„ã€‚ç•¶åˆä¸çŸ¥é‚£å€‹æœä»£äº¤æŽ¥ä¹‹éš›ï¼Œå¤©ä¸Šæ­£åœ¨é‚£è£¡æ’¿å–一ä½ç¾…漢下界,內中 廿œ‰å…©å€‹ç¾…漢,一尊å«åšé›»å…‰å°Šè€…,一尊å«åšè‡ªåœ¨å°Šè€…,都ä¸çŸ¥å¡µä¸–齷齪,爭著è¦è¡Œ ã€‚å¾€è¦‹ç‡ƒç‡ˆå¤æ€«ï¼Œæ±‚ä»–ä½œä¸»ã€‚å¤æ€«é“:「下界這一é­éƒ½æ˜¯ä¸å¯å…的,åªå·®å€‹å…ˆå¾Œä¾†åŽ» ,我也沒個別法。åªå°‡æˆ‘é¢å‰éµæ¨¹äºŒæ ªï¼Œå„人å–一株去,種在æ±è¥¿å±±ä¸Šã€‚先開花的就 去。ã€å…©å°Šè€…俱å„領命而行。電光尊者心裡急èºï¼Œçœ‹å¾—西方背陰處好培æ¤ï¼Œå³å°‡æ¨¹ç¨® 在西山。隨從的羅剎們é“ï¼šã€Œéµæ¨¹é ˆè¦ç”¨ç«åŽ»é›éŠä»–就有花了。ã€é ƒåˆ»ç§»é‚£è¬ä¸ˆç«å…‰ 中的烈燄,一霎時順風æ²åŽ»ã€‚é‚£èŠ±é “ç„¶è¿¸ç™¼ï¼Œå»æ˜¯ç©ºèŠ±ï¼Œçœ¼å‰ä¸€æ™ƒå°±ä¸è¦‹äº†ã€‚自在尊 è€…å¿ƒæ€§å¾žå®¹ï¼Œçœ‹å¾—æ±æ–¹è¿‘è‘—ç”Ÿæ°£ï¼Œå°‡æ¨¹ç¨®åœ¨æ±æ–¹ï¼Œå¾…他自然長大開花。å»å€™äº†è¨±ä¹…, 纔發出一些èŒèŠ½ï¼Œçœ¼è¦‹å¾—é–‹èŠ±å°šæœ‰å¹¾æ™‚ä¹Ÿã€‚ é‚£å¤ä½›æ—©å·²çœ‹è¦‹ï¼Œé“:「電光,你見識差了,åªåœ–åˆ°æ‰‹å¾—å¿«ï¼Œå»æ˜¯ä¸é•·ä¹…的。既有花 在先,你先去罷,自在且略緩些,也隨後就來了。ã€é›»å…‰å°Šè€…å³ä¸‹å¡µå‡¡ï¼Œé™ç”Ÿè¥¿ç‰›è³€ 洲,姓焦åè–ªï¼Œä»»è‘—ç«æ€§æŠŠä¸€ç‰‡ä¸–界如雷如電焚ç¼å¾—æ±ç„¦è¥¿çƒˆã€‚ç™¾å§“å¦‚åœ¨æ´ªçˆæ²¸æ¹¯ä¹‹ 中,一刻難éŽã€‚也是這個劫é‹è©²ç•¶å¦‚此,ä¸åœ¨è©±ä¸‹ã€‚ã€ ä¸”èªªè‡ªåœ¨å°Šè€…ï¼Œä¸æ…Œä¸å¿™ä¹Ÿéš¨å³ä¸‹äº†é›²ç«¯ï¼Œé™ç”Ÿæ±å‹ç¥žå·žï¼Œå§“蔚åè—ï¼Œç”Ÿä¾†æ€§å­æ¥µå¥½ æ¸…æ·¨ã€‚ä¸€æ—¥æ­£åœ¨å±±ä¸­æ”¾é‚£èª¿ç¥žé¤Šæ°£çš„å·¥å¤«ï¼Œé‚£æ›‰å¾—ç„¦è–ªè¡Œé‚£äº›æ®˜å¿æš´è™ä¹‹æ”¿ï¼Œè™•è™•ç¦ å—ä¸å¾—ï¼Œç©æ€¨æ·±æ€’。 上é”天庭,上å¸éœ‡æ€’,å³å–šå¤©ç¥žå¤©å°‡ç³¾é›†é¢¨ä¼¯é›¨å¸«ã€é›·å…¬é›»æ¯ï¼Œé ˜è‘—ç«è¼ªç«éƒ¨ä¸€åˆ‡ç¥ž 祗,從空è±å–‡ä¸€è²ï¼ŒéœŽæ™‚山崩地烈,拔木飛砂,連天拄也迸作兩截;世界人民物畜, 一åŠéƒ½è¢«éœ‡çƒˆé£„æšï¼ŒåŒ–作纖悉微塵,ä¸çŸ¥åŽ»å‘。那山中蔚è—也被唬得魂ä¸é™„體,看見 世界這場大變,ä¸çŸ¥ç”šéº¼ç·£æ•…,竟往山外奔出命來。忽見天上五花迸裂,就åƒä¸€åº§æ¥µ 大高山傾圮åŠé‚Šï¼Œé€™åŠé‚Šä¹Ÿè±¡å°±å€’下來的光景。雖有å分懼怕,å»ä¹Ÿç„¡è™•投奔,勉強 看著腳下隨高é€ä½Žæ’¿è·¯è€ŒåŽ»ã€‚åªè¦‹åœ°ä¸Šæ–—大一塊圓石,裡外通明,é’ç¿ å¯æ„›ã€‚蔚è—原 是天生智慧的,曉得此石喚å空é’。當åˆå¥³å§»æ°ç…‰çŸ³è£œå¤©ï¼Œä¸çŸ¥è²»äº†å¤šå°‘çˆéŒ˜ç…‰å¾—æˆ çš„ã€‚ä»Šæ—¥å¤©ä¸Šè„«å°‡ä¸‹ä¾†ï¼Œä¹Ÿæ˜¯åƒå¤å¥‡ç·£ã€‚此石中間止有一泓清水,世間一切瞽目,金 é‡è˜¸é»žï¼Œç„¡ä¸å…‰æ˜Žã€‚緊緊抱在懷中,立願點開世人瞎眼,盡還光明,纔為正果。信步 而行,ä¸è¦ºèµ°åˆ°ä¸­å·žåœ°é¢ã€‚漸漸ç¢é–‹é‚£å¡Šé’石,正欲普度人間黑暗地ç„,逢著瞽目之 人,一點就亮。 ä¸å…©æ—¥é–“,四下瞽者俱已傳éï¼Œä¾†äº†è¨±å¤šï¼Œä¿±è¦æ±‚點。åªè¦‹é›²ç«¯è£¡ç¾å‡ºä¸€ä½é‡‘甲神人 ,大è²å‘¼è‘—蔚å­é“:「你å»é•了天心也ï¼ã€è”šå­è·ªä¸‹å°±å•其故。那神人é“:「當今世 時,乃是五百年天é“循環輪著的大劫,就是上八洞神仙也難逃é。這些世上盲å­ï¼Œéƒ½ 是å‰å†¤å®¿å­½ï¼Œæ‡‰è©²å—çš„ï¼Œä½ å¦‚ä½•ä¸€æ¦‚èˆ‡ä»–é»žæ˜Žï¼Ÿå°‡ä¸Šå¤©æŠ˜ç½°ä¹‹æ¢æ˜¯ä¸å¾—行於人世了。 速速è—éŽï¼Œæ—¥å¾Œè‡ªæœ‰ç”¨é ­ã€‚ä¸å¯æ¿«ç”¨äº†ï¼ã€ 言訖,漸漸雲掩æ”來就ä¸è¦‹äº†ã€‚蔚è—大仙çœå¾—上天之æ„ï¼Œå°±æŠŠç©ºé’æ”¶æ‹¾å¥½äº†ï¼Œè¨ªå¾—é™ è¥¿è¯å±±æ˜¯å¤©ä¸‹å境,中有陳摶è€ç¥–,整整ç¡äº†åƒå¹´ï¼Œå¿½ç„¶é†’了,能知世間éŽåŽ»æœªä¾†ä¹‹ 事,指點愚人å‰å‡¶ç¦ç¦å…ˆæ©Ÿï¼Œäººå¾€å©ä¹‹ï¼Œç„¡ä¸éŸ¿æ‡‰ã€‚ä¸è‹¥å°±å¾€è¯å±±å°‹å€‹éœå®¤ï¼Œçšˆä¾è€ 祖,也好就近åšé‚£è¨ªé“修真之事,ä¸åœ¨è©±ä¸‹ã€‚ã€ã€Žä¸”說中州有個先兒,ï¼ï¼é‚£åœ°æ–¹ç¨± 瞎å­ï¼Œå«å先兒。這瞎å­å§“é²å先。有人說é“:「你怎麼å«åšé²å…ˆï¼Ÿã€é‚£çžŽå­é“:「 æˆ‘ä¸æ˜¯å…ˆå…’之先,å»å¦æœ‰å€‹æ„æ€ã€‚如今的人眼明手快,æ·è¶³é«˜æ‰ï¼Œé‡è‘—世事,如順風 行船,ä¸å‹žé¤˜åŠ›ã€‚è¼ƒä¹‹åˆ¥äººå—了åƒè¾›è¬è‹¦æ©•æŒä¸ä¾†ï¼Œä»–å»ä¸‰è…³å…©æ­¥ã€æ—©å·²èµ°åœ¨äººå…ˆï¼Œ 佔了許多便宜。那知è€å¤©è‡ªæœ‰æ–¹å¯¸ï¼Œä¸è‚¯å枯曲庇著人,惟是那腳輕手快的,åè¦å¹³ 地上åƒè·Œï¼Œç•¢ç«Ÿåˆ°é‚£å分狼狽地ä½ï¼Œè¨±ä¹…掙æ£ä¸èµ·ã€‚倒ä¸å¦‚我們慢慢的按著尺寸平平 走去,人自看我蹭蹬步滯,ä¸åœ¨å¿ƒä¸Šã€‚那知我到走在人的先頭,因此å«åšé²å…ˆã€‚ã€é‚£ 人é“:「你何苦閉著雙眼,終日嘿嘿癡癡å在家裡?當此艷陽天氣,何ä¸èµ°åœ¨å¸‚上生 幾貫錢來,買酒åƒä¹Ÿå¥½ã€‚ã€é²å…ˆé“:「我也悶得極了,昨日ç¨è‡ªç¡åœ¨å†·è‰é‹ªä¸Šï¼Œè½å¾— 屋簷外桃柳æžä¸Šç‡•語鶯啼,å«å¾—å分嬌媚。 åˆè½å¾—æ±é‚Šè³£èбè²ï¼Œè¥¿é‚Šæ²½é…’è²ï¼Œå…’歡女笑,æˆåœ˜çµéšŠï¼Œæˆ–是上墳的,或是è¸é’的, 好ä¸å–§è½Ÿç†±é¬§ã€‚自æ¨å‰ç”Ÿä¸çŸ¥ä½œä½•罪孽,把我失å»é›™çœ¼ï¼Œä¸Šå‰ä¸å¾—,退後ä¸å¾—,一個 黑漆漆囫圇空影,ä¸çŸ¥ä½•æ™‚è¸¹å¾—ä»–ç ´ï¼æ˜¨æ—¥æœ‰äººå‚³èªªï¼Œå¸‚上來了一個雲éŠé“äººï¼Œæ‰‹æŒ ç©ºé’ï¼Œé»žé–‹äººè¨±å¤šé›™çž½ã€‚åæˆ‘沒緣,急急尋他,åˆä¸çŸ¥é‚£è£¡åŽ»äº†ã€‚å¦‚ä»Šæ¬²æ‰“è½å€‹å¯¦ä¿¡ ,四下找尋。那有眼的,如何肯扶掖我到å‰è·¯åŽ»ï¼Ÿä»Šæƒ³ä¸€å€‹é“ç†åœ¨æ­¤ï¼Œç«™åœ¨åå­—è·¯å£ ï¼Œç­‰å€‹åŒä¼´èµ°éŽï¼Œå…ˆåŽ»æ’žä»–å€‹é ­æ˜è…¦æšˆï¼Œç„¶å¾Œæ¼¸æ¼¸èˆ‡ä»–說入港去。ã€è¨€ä¹‹æœªç•¢ï¼Œåªè½ 得西邊巷裡咯支咯支的。明æ–éŸ¿è™•ï¼Œå»æœ‰å€‹å…ˆå…’來也。é²å…ˆæŠŠå€‹é ­é ¸ä¼¸æ”¾åœ¨å·¦è‡‚膊上 ,仔細å´è‘—耳朵è½ä»–將到é¢å‰ï¼Œä¾¿æŠŠè‚©è†Šæ©«æ²–éŽï¼Œå»å¥½æŠŠé‚£å…ˆå…’的太陽撞得åç”Ÿä¹æ­» ã€ä»°é¢ä¸€äº¤è·Œåœ¨åœ°ä¸‹ã€‚那先兒手也æ†ä¿ï¼Œå°±æŠŠé²å…ˆå·¦è…¿æŠ±å®šï¼Œæ­»ä¹Ÿä¸æ”¾ã€‚少覺甦醒轉 來,就把é²å…ˆè…¿ä¸Šå’¬äº†å…©å£ï¼Œç½µé“:「你åˆä¸æ˜¯æˆ‘的兒å­ï¼Œå¦‚何也學我把人亂撞ï¼ã€ 䏀壿°£é€£ç è²«ä¸²ï¼Œç½µå€‹ä¸äº†ã€‚é²å…ˆé€£å¿™é“:「得罪得罪ï¼ã€é‚£å…ˆå…’峿‰‹ä¸€æ‘¸ï¼Œæ–¹æ›‰å¾— 也是åŒé“中人。帶怒å•é“:「åŒåœ¨é»‘暗地ç„中人,有何心事è¦ç·Šï¼Œèµ°å¾—這般莽撞?〠é²å…ˆé“ï¼šã€Œåªæ€•å°ä½ èªªäº†ï¼Œé€£ä½ ä¹ŸèŽ½æ’žèµ·ä¾†ã€‚ä½ ä¸æ›‰å¾—市上有個仙人拿著空é’,點開 了許多瞎眼,因è¦å°‹ä»–,如此性急。ã€é‚£å…ˆå…’é“ï¼šã€Œå¥‡å“‰å¥‡å“‰ï¼æˆ‘昨日耳邊åˆèžå¾—è¯ å±±é ‚ä¸Šé™³æ‘¶è€ç¥–åƒå¹´ç¡é†’,能言人éŽåŽ»æœªä¾†ç¾åœ¨ç¦ç¦ï¼Œå¾€å•者紛紛。因此我出門,也 è¦è¦“個夥計å‰å¾€ä¸€é­ã€‚今既與兄åŒç—…,自åˆèˆ‡å…„åŒèª¿ï¼Œä¸è€å°±åœ¨æ­¤åœ°ç›Ÿå¿ƒè¨­èª“,並膽 åŒå¿ƒï¼Œäº’相幫扶,一é¢åŽ»è¨ªé»žçœ¼ä»™äººï¼Œä¸€é¢ä¸Šå±±æ‹œå•è€ç¥–,豈ä¸ä¸€èˆ‰å…©å¾—?ã€é²å…ˆé“ :「極妙極妙ï¼ã€é‚£å…ˆå…’é“:「è€å…„高姓大å?ã€é²å…ˆå°±æŠŠå–åé²å…ˆçš„話兒說了一é ,也贊é“:「『é²ã€å­—上說出個『先ã€å­—來大有æ„ç†ã€‚ã€é²å…ˆé“:「也è¦è«‹æ•™å°Šå…„å§“ å?ã€é‚£å…ˆå…’é“ï¼šã€Œå¼Ÿå§“å­”åæ˜Žã€‚ã€é²å…ˆé“:「孔明是個後漢時劉先王的è»å¸«ã€‚你如 何盜竊先賢å姓?ã€å­”明é“ï¼šã€Œæˆ‘ä¸æ˜¯é‚£ä¸‰åœ‹çš„孔明,å»å¦æœ‰å€‹å–æ„。如今的人胡亂 眼ç›è£¡è®€å¾—幾行書,識得幾個字,就自負為æ‰å­ï¼›åŠè‡³è¡Œçš„ä¸–äº‹ï¼Œæˆ–æ˜¯ä¸‹è³¤å‘æ±¡ï¼Œæˆ– 是逆倫傷ç†ï¼›æ˜Žä¸ç•çŽ‹ç« åœ‹æ³•ï¼Œæš—ä¸æ€•天地鬼神,竟如無知無識的禽ç¸ä¸€é¡žã€‚到ä¸å¦‚ 我們一字ä¸è­˜ï¼Œå¾ªè‘—天ç†ï¼Œä¾è‘—人心,隨你å¤ä»Šæ˜¯éžã€è–è³¢é“ç†ï¼Œéƒ½ä¹Ÿå£è£¡è¬›èªªå¾—出 ï¼Œå¿ƒä¸Šç†æœƒå¾—ä¾†ï¼Œå»æ¯”孔夫å­ä¹Ÿé‚„明白些,故此å«åšå­”明。ã€é²å…ˆé“:「難得我與你 一å°å…’åˆæ‹çš„。但是åŒè¡Œåˆä¼´å‰åŽ»ï¼Œé€”ä¸­æ—¥å­æ­£é•·ï¼Œä¹Ÿè¦å½¼æ­¤é å…ˆè¨ˆè¼ƒåœç•¶ï¼Œè­¬å¦‚行 商å賈,也è¦å°è‘—本兒。如今我們出路的勾當,ä¸éŽç©ºè‘—雙手本領賺錢,ä¸çŸ¥ä½ æˆ‘伎 倆何如?ä¸è‹¥å°‹å€‹ç©ºè™•,大家將本事講論明白,試演一番,çœå¾—å‰é€”你推我諉,被人 è­èªšã€‚ã€å­”明é“:「有ç†ã€‚尋個僻éœåŽ»è™•æ–¹å¥½ã€‚ã€å…©å€‹æŒ¨æŸ¥äº†åŠæ—¥ï¼Œå‰›å¾—一個冷è½çš„ 廟宇。兩個走進廟裡,放了æ‹å…’,æœè‘—神é“連唱數å–,相率å下。é²å…ˆé“:「我的本 領多著哩,有個〔西江月〕說與你è½ï¼šã€ŽæŒ‘水擔泥åšç“¦ï¼Œç…½çˆç£¨ç²‰é¦±é¹½ã€‚ å­å¹³æ˜“課准如仙,éµå£äººäººç¾¨ç¾¨ã€‚ã€ã€å­”明é“:「我的伎倆比你高貴哩,也有一個〔 西江月〕:『å“竹彈弦打鼓,說書唱曲皆能。祈神ä¿ç¦èˆ‡ç¦³æ˜Ÿï¼Œç‰Œè­œæ£‹ç¶“俱å‹ã€‚ã€ã€ é²å…ˆé“:「我與你åˆäº†å¤¥è¨ˆï¼Œä¸€è·¯è¡ŒåŽ»ï¼Œä¸è«–é«˜ä½Žè²´è³¤éƒ½ç”¨å¾—è‘—ï¼Œä¸æ€•å‰é€”沒處尋飯 åƒã€‚但å„äººä¿±è¦æ”¾å‡ºæœ¬å¿ƒä¾†ç›¸è™•,一路有ç¦åŒäº«ï¼Œæœ‰è‹¦åŒå—,ä¸è¦é€€æ‚”ã€‚å°±æ˜¯ä»Šæ—¥å„ å‡ºå°‘è¨±ï¼Œåœ¨ç¥žè–å‰ç‡’ä¸€é™Œç´™ï¼Œç›Ÿä¸€æ˜Žå¿ƒï¼Œå½¼æ­¤å„æœ‰å€‹ç›¸ä¿¡è™•。ã€å­”明é“:「妙妙ï¼ã€ 兩個就å„å•了生年月日,孔明å»é•·é²å…ˆä¸€æ­²ï¼Œèªåšå“¥å“¥ï¼Œå…ˆåœ¨è‚šå…œå…§æ‘¸å‡ºå個錢來, 六個錢買塊豆è…,四個錢買了蠟燭。é²å…ˆèº«é‚Šä¹Ÿå–å‡ºéŒ¢åæ–‡ï¼Œè²·ä¸€å°ç“¶é»ƒé…’,åˆè²·ä¸€ 股線香。擺列端正,å„å„禱ç¥ä¸€ç•ªï¼Œç«‹äº†ä¸€èª“,拜了四拜方完。孔明å³ä¼¸æ‰‹æ‚„悄的摸 那酒瓶,ç§è‡ªå–了一å£ã€‚é²å…ˆä¹ŸåŽ»å·é‚£è±†è…,兩個以手觸手,登時便喉急嚷將起來。 一個說「你å·ä¾†åƒã€ï¼Œä¸€å€‹èªªã€Œä½ å…ˆå‹•手ã€ï¼Œå¯ç¬‘兩個盟兄盟弟,登時就變轉臉來, æ°£å¼å¼çš„俱è¦å‹•手相打。惹動了地方兩個光æ£ï¼Œä¸€å€‹å«åšæ²¹è£¡æ»‘ï¼Œä¸€å€‹å«åšæ»‘è£¡æ²¹ï¼Œ 立在æ—邊看了許久,é“:「兩個盲囚ä¸çŸ¥ä¾†æ­·ï¼Œè·¯ä¸Šç›¸é€¢ï¼Œå°±è¦æ‹œç›Ÿï¼Œä¸€è¨€ä¸åˆï¼Œç™» 時嚷鬧,到也是個近日好è€å­çš„世情。我們è¶ä»–爭競之際,一個è£åšå®˜å…’,一個扮作 皂隸,拿他éŽä¾†ï¼Œå•個明白,å»ä¸å¥½éº¼ï¼ã€æ²¹è£¡æ»‘å³è£çš‚隸,開è²å†å–é“:「ä¸è¦åš· ï¼ã€æ»‘裡油é“:「甚麼人喧嚷,快拿éŽä¾†ï¼ã€é²å…ˆã€å­”明信é“真的,å³ä¾¿è·ªå°‡éŽåŽ»ï¼Œ 說了一é。官é“:「這樣å°äº‹ä¹Ÿä¾†é©šå‹•ä¸Šå®˜ã€‚æœ¬å¾…å„æ‰“二å,å•個罪åï¼Œç½°å¹¾å…©éŠ€å­ ã€‚æ†ä½ å»¢ç–¾ä¹‹äººï¼Œå„罰本領試演一出,饒你去罷ï¼ã€é²å…ˆå°±è«‹å®˜å…’的八字,皂隸的勾 當,將å­å¹³æ˜“èª²æŽ¨ç®—äº†åŠæ™Œï¼›å­”明也就把當時編就的æŽé—–çŠ¯ç¥žäº¬çš„æ•…äº‹èªªäº†ä¸€å›žï¼Œåˆ æŠŠä¸€æ—¥å¤©çš„æˆ²æœ¬å”±äº†ä¸€å‡ºã€‚å¼„å¾—å…©å€‹è„£ä¹¾èˆŒç‡¥ï¼Œåˆç£•了許多頭方纔釋放。é²å…ˆé“:「 此地怎麼有這ä½å¥½è€çˆºï¼Ÿè‹¥ç¶“別的衙門,這官å¸ä¸çŸ¥ä½•時歸çµï¼Ÿä»Šåˆä¸å‹•刑ã€ä¸å•罪 ,立刻發è½ï¼ŒçœŸé›£å¾—的。這樣清廉的官,若在大府大縣裡,就該造一個極大的生祠了 。ã€å­”明é“:「我與你ä¾èˆŠç›¸å¥½å¦‚åˆï¼Œå¤©ä¸‹æ‹œå¼Ÿå…„的,打場官å¸ä¹Ÿæ˜¯å¸¸äº‹ã€‚è‹¥ä¸ç¶“這 爭論一番,你我心事都未見得。今後把這齷齪心腸大家洗滌乾淨å»å°±å¥½äº†ã€‚ã€å…©å€‹å¾ž 此你敬我愛,一程一程,仗著伎è—è¶äº›é£¯é£Ÿã€‚一路來,點空é’çš„é“人尚未尋著,ä¸è¦º 的已到è¯å±±è…³ä¸‹ã€‚進了山門,一步一拜到了山頂。那山上乃是仙家è—真修煉之處,山 花果木ã€çŒ¿é¶´ç¦½é­šéƒ½éžäººé–“所有,藥çˆä¸¹ç¶ä¿±æœ‰ä»™ç«¥çœ‹å®ˆã€‚那些求仙å•ç¦çš„雖有許多 ,也俱在彼éœå¿ƒå®ˆå€™ï¼Œç›´å¾…è€ç¥–講é“之際方去å©å•。é²ã€å­”二人虔心,ä¸é åƒé‡Œè€Œä¾† ,巴ä¸å¾—立時討個下è½å›žåŽ»ï¼Œé‚£è£¡ç­‰å¾—ï¼Œå…©å€‹å¿½ç„¶å¤§å“­èµ·ä¾†ã€‚è€ç¥–念他心誠,å©å’ä»™ 童扮作採樵漢å­ï¼Œæ•…æ„作難他é“:「你們既è¦ä¾†æ­¤å•仙,須把舊日肺腸先在山下洗刷 淨盡,方好å•é“。何得粗心浮氣,剛剛來得就哭泣起來ï¼ã€é²ã€å­”二先心知自己ä¸èª  ,求懇樵å­é ˜è·¯èµ°ä¸‹å±±ä¾†ï¼Œåœ¨é‚£æ± é‚Šå°‡é›™æ‰‹æŽ¬æ°´å…¥å£ï¼Œå™´æ¼±ä¸äº†ã€‚樵å­é“:「肺腸如 何洗得淨的?我有å°ç™½çŸ³å­æ•¸å€‹ï¼Œå¾žå£åžå…¥ï¼Œå¾…他在內磨礪一番就乾淨了。ã€é²ã€å­” 二先如法åžä¸‹ï¼Œä¸ä¸€æ™‚å»å出許多腌臢血肉之類,頓覺心地空éˆã€‚樵å­åˆæ¯äººèˆ‡æ£—一 枚食之,也竟ä¸çŸ¥é£¢é¤’。忽有一個仙童立在山頂稜峭崖嘴之上,招呼é“:「兩俗å­é€Ÿ 上山來è½å€™å©å’ï¼ã€é²ã€å­”二先ä»å¾©åŒåŒè€Œä¸Šï¼Œä¾è‘—仙童之言,å©åˆ°è€ç¥–講席之下。 高è²é“:「å°å­ç½ªå­½æ·±é‡ï¼Œç²æ€’上天,削奪雙明,糊塗一世。今èžè€ç¥–ç¡è¶³åƒå¹´ï¼Œè¦º é–‹è¬å¤ï¼Œå¼Ÿå­è™”心拜å©ï¼Œæ±‚å•ç”Ÿå‰æœ‰ä½•æƒ¡å­½ï¼Œè‡´ä½¿äº”è¡Œè¹­è¹¬ï¼Œä¸€éš™ç„¡æ˜Žï¼Œå—æ­¤è¿·é›¢é¡› 倒之苦?ã€è€ç¥–é“:「二å­é ä¾†å©å•,性éˆä¸­ä¹Ÿå°±é–‹äº†ä¸€ç·šå…‰æ˜Žã€‚é‚£çŸ¥ä½ æœ¬ä¾†æƒ¡å­½å» èˆ‡å¸¸äººä¸ç­‰ï¼Œäººèº«å—ç—…å„æœ‰ä¸é½Šï¼Œå¦‚è¾è€…ã€è·›è€…ã€è¹©è€…ã€ç˜¤è€…,ä¸éŽä¸€ä¸–二世。天資 刻雹å°ä½”ä¾¿å®œï¼Œæˆ–é¢æ˜¯èƒŒéžï¼Œæˆ–阻人善事,猶與倫常彞ç†ä¹‹ä¸Šä¸ç›¸é—œæ¶‰ï¼Œä¹ƒæœ‰ç•¶èº«çµ æŸï¼Œæˆ–轉世承當,這一盤零星å°å¸³ä¹Ÿå°±å‹¾éŠ·ç›¡äº†ã€‚è‹¥é‘¿åŽ»é›™ç›ï¼Œæ²ˆæ·ªç™½æ™ï¼Œé€™å­½éšœæ›´ 覺é‡äº›ã€‚今世界大矣,一雙腳走ä¸ç›¡ï¼›å¯¶è²å¤šçŸ£ï¼Œä¸€é›™æ‰‹æ‹¿ä¸å®Œï¼›æ»‹å‘³ç¾ŽçŸ£ï¼Œä¸€å€‹è‡­ 皮囊è£ä¸æ»¿ã€‚åªå› ä¸–人心雄æ„ç‹ ï¼Œèµ°å‡ºå¨˜æ‡·ï¼Œé€žè‘—è°æ˜Žï¼Œè¦è®€ç›¡ä¸–間詩書;憑著氣力 ,è¦å£“倒世間好漢。錢財到手,就想官兒;官兒到手,就想皇å¸ã€‚若有一å¥è¨€èªžéš”礙 ,便想以暗箭驀地中傷;若有一個勢利å¯åœ–,便想個出妻ç»å­æ±‚媚。 眼見得這些燄頭上根基都是財築起的,強æ¢çš„å£å˜´éƒ½æ˜¯å‹¢è£æˆçš„,雄å¨çš„é«”é¢éƒ½æ˜¯é»¨ çµå°±çš„。é‡è‘—有識見的,到此地ä½ï¼Œæ—©æ—©æŠ½èº«è·³å‡ºåœˆå¤–ï¼›ç•¥ä¸æ¿Ÿçš„,便是糞裡蛆蟲和 身鑽入。你在å‰ä¸–å…©éš»çœ¼ç›æ—©å·²ç›²çŸ£ï¼Œä»Šä¸–怎麼åˆè‚¯æŠŠä½ ä¸€å°çœ¼ç›ï¼Ÿä½ è‹¥ä»Šä¸–曉得自 己罪孽éžè¼•,急圖修çœï¼Œå¾Œä¸–é‚„æŠŠä½ åšæ˜Žçœ¼äººçœ‹å¾…;若癡迷錮塞,ä¸è‚¯å›žé ­ï¼Œé‚£å¤©æ¢ 瞽目一款之外,更有泥çŠä¸ç›¡åœ°ç„之苦矣ï¼ã€è€ç¥–說得痛切,那é²ã€å­”二先仰天號咷 大哭,覺得此生ä¸å¾—開眼看那光明世界,便è¦å°‹å€‹é™¡éšªå±±å´–,從空跳下,åšå€‹æ¨èº«ä¹‹ 計。è€ç¥–é“:「那『æ¨èº«ã€äºŒå­—,ä¸éŽå–šé†’愚人脫那『貪戀ã€äºŒå­—,原ä¸å«äººå°‡èº«è·³ 下。爾輩既è¦é–‹çœ¼çœ‹é‚£å…‰æ˜Žä¸–界也ä¸é›£çš„,我有個é“å‹è”šè—大仙,ç¾åœ¨è¥¿å±±èŒ…茨庵, å¯å‰å¾€æ±‚他便了。ã€é²ã€å­”二先å©è¬è€Œä¸‹ä¸é¡Œã€‚〠『å»èªªè”šè—大仙,自那日來到è¯å±±èˆ‡è€ç¥–çµ‚æ—¥è¬›è«–ï¼Œçœ‹å¾—ä¸–ç•Œæ“¾æ“¾æ”˜æ”˜ã€æ±ç´›è¥¿è£‚, 尚無定所,觀那天星,該是他的氣候方肯出山。一路上訪著那å­å­é †å­«ã€ç¾©å¤«ç¯€å©¦ï¼Œ 都已收載輪迴簿上,以待天é‹è½‰æ™‚應世而起,一用著他的。那一塊空é’å°éŒ®å¥½çš„,終 æ—¥è—在枕下。忽見é²ã€å­”二先仙童領著自æ±å±±ä¸€æ­¥ä¸€æ‹œè€Œä¾†ï¼Œåˆ°äº†é¢å‰ï¼Œä¾èˆŠæ˜¯å‰æ—¥ 模樣,放è²å¤§å“­ã€‚蔚è—è¦‹äº†ï¼Œå¿ƒä¸Šå°±ç™¼å‡ºä¸€é»žä»æ…ˆé“:「既是è€ç¥–é€ä¾†è¦‹æˆ‘,我å»ç„¡ åˆ¥çš„èªªè©±ï¼Œåªæœ‰æž•下那一點空é’坿•‘得你。ã€å³å¾€ç¡è™•å–出那一塊石來,開了å°çš®ï¼Œ 將瞳神上æ¯äººè˜¸ä¸Šä¸€é»žï¼Œé‚£å››å€‹çœ¼ç å­è±ç„¶è€Œé–‹ï¼Œæœè‘—蔚è—å©é ­å°±æ‹œã€‚蔚è—é“:「去 暗還明乃是上天所主,åªè©²æ‹œè¬ä¸Šå¤©ç½·äº†ã€‚但此乃是仙家所在,你塵俗之於速速下山 ,ä¸å¯åœ¨æ­¤ä¹…ç¥ã€é‚£é²ã€å­”二光立在山頂從空一望,世界上紅塵碌碌ã€è¬å¾‘åƒæºªéƒ½åœ¨ ç›®å‰ï¼Œååˆå“­å°‡èµ·ä¾†é“:「å‘來åˆè‘—雙眼,åªé“世界上ä¸çŸ¥å¤šå°‘å—用。如今開眼一看 ,方悟得都是空花陽燄,一些把æ‰ä¸ä¾†ã€‚åªæ¨‚得許多孽海冤山,劫中尋劫,到添入眼 中無窮芒刺,åä¸å¦‚閉著眼的時節,到也得個清閑自在。 å¼Ÿå­æ²’眼時到好走上山來,如今有了眼å»ä¸è‚¯èµ°ä¸‹å±±åŽ»ã€‚ã€è”šè—大仙被他哀求ä¸éŽï¼Œ å»åˆèªªé“ï¼šã€Œæ­¤èˆ‡å¡µä¸–ç›¸éš”ï¼Œä¸æ™‚有天曹仙使往來宣å¬ï¼Œçˆ¾è¼©ä¸ä¾¿å®¹ç•™ã€‚呿—¥æ›¾åœ¨å½Œ 勒大師處借得布袋一個,此中空空洞洞,å¯å®¹ä¸‰åƒå¤§åƒä¸–界,所培養者都是忠å­ç¯€ç¾© 正氣一脈,日後應é‹è€Œèˆˆï¼Œæ­£å¯ä»—他扶æŒä¸–界。爾輩乃上天刑餘之夫,ä¸éŽç¢Œç¢Œç­‰è¼© ,åˆä¸ä¾¿èˆ‡æ­£äººå›å­åŒå±…,勉強å¦é¡¯ä¸€å€‹ç¥žé€šã€‚ã€å©å’仙童往æœåº·è™•借一大埕,å«é€™ 二人投身入內。始åˆé²ã€å­”二人看得埕å£ç”šå°ï¼Œå°‡é ­è¿‘埕一望,åªè¦‹åŸ•內尚自寬大。 å…©å€‹å°±å’Œèº«é‘½äººï¼Œèˆ‰é ­å››é¡§ï¼Œä¿±æ˜¯å¹³å¡æ› é‡Žï¼Œä¸è¦‹åŸŽå»“宮室。è¶è‘—風和日暖,走到一 個市上。覺得風俗甚醇,相與之人俱欣欣æ–讓,和和藹藹,絕無喜怒愛憎之色。散誕 開懷,脫帽露頂,或歌詩唱曲,或擲色猜枚,或張拳較力,或肆å£è©ˆäººã€‚彼此沒有戒 心,爾我俱無仇æ¨ã€‚è¡£æœä¸é ˆå¸ƒå¸›ï¼Œé£²é£Ÿä¸é ˆäº”穀。憨憨呼呼,天ä¸çŸ¥é«˜ï¼Œåœ°ä¸çŸ¥åŽš 。四時ä¸çŸ¥å¯’暑,æœå¤•ä¸çŸ¥æ™¦æ˜Žã€‚è¦è¡Œå³è¡Œï¼Œä¸çŸ¥èˆŸè»Šé©¢é¦¬ï¼›è¦ç¡ä¾¿ç¡ï¼Œä¸é ˆç‰€å¸­æž• 衾。與鳥ç¸é­šé±‰é›œè™•而ä¸è¦ºï¼›ç„¡ç—›ç™¢ç–¾ç—…之相關。耕作ä¸ç›¸ç‚ºè¬€ï¼Œç§Ÿç¨…ä¸ä¾†ç›¸é€¼ã€‚æ­£ 所謂「壺中日月常如此,別有天地éžäººé–“ã€ä¹Ÿã€‚åªå«é‚£é²ã€å­”二人å在崑崙山頂,大 著兩眼,看那電光尊者雷ã€é¢¨ã€é›¹ã€é›¨éŽé‚£ä¸€é™£ï¼Œåœ°é¢ä¸ŠæŠŠé‚£äº›å­½ç«åŠ«ç°æ‹ˆå¾—淨盡, 然後隨著自在尊者出來é€é™ä¸–é“,安享太平之ç¦ä¹Ÿã€‚〠『此段說話實是玄虛,原ä¸å ªäººè€³ï¼Œæ—¢æ‰¿ä¸»äººæœ‰èˆˆï¼Œåˆå¾©æ‰¿åˆ—ä½é›…愛,冒昧而談。便 å¥½è«‹æ•™åˆ¥ä½æœ‹å‹ï¼Œç•¶å€‹æ‹‹ç£šå¼•玉之æ„。〠眾人é“:『承領高談,ä¸è¦ºå…©è„…風生,通體é€å¿«ã€‚乘著天氣涼爽,å„且別去,今夜我 等且到æœåº·åŸ•裡世界安享一夜何如?〠總評此則以瞽目說法,大是奇異。至後以酒終之,真是éžéžæƒ³çŸ£ã€‚凡天下事到無å¯å¦‚ 何處,惟醉å¯ä»¥éŠ·ä¹‹ï¼Œæ‰€ä»¥åŠ‰ä¼¶è·é¤ã€é˜®è—‰ä¸€é†‰å…­å日,俱高人é”見,ä¸å¾’沈醉曲櫱 而已。艾ç´è€äººå…¶äº¦åˆ¥æœ‰è¬è¨€æ–¼æ–¯ä¹Žï¼Ÿ 第ä¹å‰‡ æ¼é™½é“劉å¥å…’試馬 é‡‘é¢¨ä¸€å¤•ï¼Œç¹žåœ°çš†ç§‹ã€‚è¬æœ¨æ¢¢é ­è•­è•­ä½œéŸ¿ï¼Œå„è‰²è‰æœ¨è‡¨è‘—秋時,一種勃發生機俱已收 斂。譬如天下人æˆéŽåã€å¾—éŽåˆ©çš„,到此時候也è¦é€€è½è¬äº‹äº†ã€‚åªæœ‰æ‰è±†ä¸€ç¨®ï¼Œäº¤åˆ° 秋時,西風發起,那豆花越覺開得熱鬧,çµçš„豆莢俱鼓釘相似,圓湛起來,å»èˆ‡å››äº” 月間çµçš„癟æ‰ç„¡è‚‰è€…大ä¸ç›¸åŒã€‚俗語雲,『天上起了西北風,羊眼豆兒å«è€å…¬ã€ï¼Œä¹Ÿ ä¸éŽèªªä»–交秋時豆莢飽滿,漸漸到那收æˆçµå¯¦ç•™å€‹ç¨®å­ï¼Œæ˜Žå¹´åˆå¥½ç”Ÿã€‚這幾時秋風起 了,豆莢雖çµå¾—å¤šï¼Œé‚£äººèº«ä¸Šè¡£æœæ¼¸å–®ï¼Œè‚©èƒŒä¸Šä¹Ÿæ¼¸é¢¯é¢¯çš„冷逼æ”來。那有家業的, è¡£æœæ•´å‚™ï¼Œåªè¦é–‹ç®±ç± å–出穿上,登時溫暖。 那些游手好閑的,風來風盡,雨來雨盡,瓶中尚無隔宿之米,身上那得禦寒之衣?四 下裡沒處擺佈,未å…就起一個無賴之想ã€ä¸è‰¯ä¹‹å¿ƒã€‚å°æ„æ€ï¼Œé€žè‘—自己一身伎倆åšå€‹ æŽæ‘¸ï¼Œéš¨è‘—造化,å·å¾—或多或少,也有幾時å£å˜´è‚¥ç”œï¼Œé‚„圖個僥倖,ä¸åˆ°é‚£æ•—露之日 ã€‚é‚£å¤§æ„æ€çš„,就去勾åˆäº†è¨±å¤šç‹æœ‹ç‹—黨,歃血盟心,覓了些刀æ§å¼“箭,èšåœ¨ä¸€è™•, é å…ˆæ‰“è½å¾—æŸå®¶è±ªå¯Œï¼ŒæŸå®¶æ®·å¯¦ï¼ŒæŸå®¶æœ‰å‚™ï¼ŒæŸå®¶ç„¡å‚™ï¼Œæˆ–乘月黑風雨之夜,或乘人 家忙倦之時,帶著ç«è‰ã€è»Ÿæ¢¯ï¼Œçˆ¬ç‰†ä¸Šå±‹ï¼ŒåŠˆé–€æŒ–æ´žï¼Œå¤§è²ç™¼å–Šï¼Œé€žè‘—雄å¨ï¼ŒæŒè‘—利 刀,æ‰ä½è²¡ä¸»æ´»é€¼ç»å¯¶ï¼Œå£æ°£ç•¥é¬†äº›ï¼Œä¾¿ç¶ç¸›èµ·ä¾†ï¼Œæˆ–將弓弦æŽï¼Ÿï¼Œç«ç‡„炙烙,ä¸è«– 金ç ç·žåŒ¹ã€å™¨çš¿è¡£æœï¼Œè£æ‹¾åŒ…裹而去。倘é‡å¤–邊風è²ç·Šæ€¥ï¼Œå³ä¾¿æ”¾èµ·ç«ä¾†ï¼Œå¥ªè·¯è€Œèµ° ,æ€å€‹åƒ»éœæ‰€åœ¨ï¼Œè´“物照股å‡åˆ†ï¼Œä¸€æ™‚æ˜Ÿæ•£ã€‚é€™äº›å‹¾ç•¶ï¼Œå…¨æ†‘æ™‚é‹æ’žè‘—為數。有劫得 金銀寶è²çš„,有劫得破爛衣æœçš„ï¼Œä¹Ÿæœ‰ç”¨äº†è¨±å¤šæ°£åŠ›ï¼Œä¸€æ¯«ä¸æ›¾æ‹¿å¾—ã€å被殺傷æ‰ç² çš„ã€‚ä¸€æ–‡éŒ¢ä¸æ›¾æ²¾æ‰‹ï¼Œä¸€ç¢—éºµä¸æ›¾ä¸‹è‚šï¼Œåˆ°å•了已行而但得財,ä¸è«–首從皆斬之律, æœ¬ç­‰æ¸…æ¸…ç™½ç™½ä¸€å€‹ç™¾å§“ï¼ŒæŠŠé€™æ¢æ€§å‘½éª¯éª¯é«’髒葬é€åŽ»äº†ã€‚é€™éƒ½æ˜¯æ—¥å¸¸é–“ä¸éµçˆ¶æ¯ä¼¯å” 之教,ä¸è½å¼Ÿå…„朋å‹ä¹‹å‹¸ï¼Œçµ‚æ—¥éŠèŠ±é–‹è³­ï¼Œå£å˜´åƒæ…£ï¼Œèº«ä¸Šç©¿æ…£ï¼Œæ‰‹è£¡ç”¨æ…£ï¼Œæ°£è³ªä½¿ 慣,以至到這田地。 難é“祖ã€çˆ¶ç”Ÿå°‡ä¸‹ä¾†é™å®šä¹¾é€™å‹¾ç•¶ä¸æˆï¼Ÿæ‰€ä»¥äººå®¶å­å¼Ÿå¾žå°æ™‚å°±è¦æ“‡äº¤ï¼Œé‡è‘—憊懶的 å°å»ï¼Œä¸å¯å®¹ä»–近身。難é“å°å­å°±æœ‰ç”šéº¼è¡Œå®³è‘—他?但是孩å­å®¶å¿ƒæ€§ä¸è¦å®¹ä»–,習學 æ…£äº†ï¼Œä¹Ÿæ˜¯é˜²å¾®æœæ¼¸ä¹‹æ„。在下å‘在京師ä½äº†å¹¾å¹´ï¼Œçœ‹è¦‹éŒ¦è¡£è¡›æ±å» ï¼ŒåŠäº¬ç‡Ÿæ•盜衙 門,管著ç¦åŸŽå…§å¤–地方,奉旨嚴ç·è³Šç›œã€‚屬著錦衣衛æ±å» çš„,å«åšä¼™é•·å„…é ­ï¼Œä¿±æ˜¯åƒ ç™¾æˆ¶å®˜å…’å‡ºèº«ã€‚å±¬åœ¨æ±è¥¿å—北中五城兵馬å¸çš„,å«åšç•ªå­æ‰‹ã€‚é€¢è‘—ä¸‰å…­ä¹æ—¥é»žé™æ¯”較 。若官府ä¸ç”šç·Šæ€¥ï¼Œé‚£æ¯”è¼ƒä¹Ÿæ˜¯è™›æ‡‰æ•…äº‹ã€‚å¦‚åœ°æ–¹å¤±äº‹ï¼Œä¸Šé‚Šå®˜åºœåš´è¿½ï¼Œä¸æ¶ˆå¹¾å€‹æ—¥ å­ï¼Œé‚£ç›œè³Šä¸€ä¸€æ‰å°‡ä¾†äº†ã€‚å»è±¡ç”•中æ‰é±‰ï¼Œæ‰‹åˆ°æ‹¿ä¾†ï¼Œä¸çŸ¥ç”šéº¼ç¥žé€šã€‚ å¶ç„¶ç›¸æœƒä¸€å€‹ç•ªå­ï¼Œç„¡å¿ƒé–“è«‹å•著他,那番å­åˆ°ä¹Ÿå£ç›´ï¼Œèªªé“:『這強盜多沒有真的 ã€‚è¿‘æ—¥æ‹¿ä¾†çš„éƒ½æ˜¯æˆ‘å€‘æ—¥å¸¸é–“ç¨®å°±ç¾æˆæœ‰çš„,所以上邊è¦ç·Šï¼Œä¸‹é‚Šå°±æœ‰ã€‚ã€åœ¨ä¸‹ä¸€èž 此言,ä¸è¦ºå分驚駭,é“:『怎麼盜賊也象瓜兒èœå…’種得就的?ã€é‚£ç•ªå­é“:『我們 京城裡夥伴ä¸ä¸‹è¬äººã€‚日常裡伙長儅頭出些盤費,å©å’å°ç•ªå­ä¸‰å…©å€‹ä¸€ä¼™ï¼Œæˆ–五六個 一伙,走出京城四五百里之內外,到了æ‘頭鎮腦,或大集大會所在,尋個庵堂寺觀居 ç¥é€¢è‘—賭場妓店,挨身進去,或幫嫖æ‰è³­ï¼Œå¤§æ‰‹èŠ±è²»ï¼Œå¦è‘—å…‰æ£æ¨¡æ¨£ï¼Œçœ‹å¾—銀å­å…¨ä¸ 在心。逢人就拜弟兄,娼妓就拜姊妹。自然有那ä¸è‚–之å­è¦ªè¿‘å‰ä¾†ï¼Œæ—¥æ—¥é…’肉,夜夜 酣歌。é‡è‘—有錢的å­å¼Ÿï¼Œä¹˜ç©ºå°±é¨™ä»–的錢財;無錢的å°å¤¥å°±æ‹ä¾†åšäº†é¾é™½ï¼Œåˆ°è™•花費 。看見他身邊沒了銀å­ï¼Œæ•…æ„å“„ä»–è¼¸äº†è³­éŒ¢ï¼Œäººäººèˆ‡ä»–åµæ‰“,然後伙中替他代應。自 從得他應了銀å­ï¼Œåªç•¶é€™èº«å­è³£èˆ‡ä»–的一般,éŽäº†å¹¾æ—¥è®Šè½‰è‡‰ä¾†ï¼Œè¦ä»–æœ¬åˆ©ç®—é‚„ï¼Œå» ç„¡æŠµæ‰‹ã€‚ä¸€é‚Šå°±æŒ½å¹¾å€‹ç©è³Šï¼Œæš—地哄說銀財便利,手到拿來。ä¸çŸ¥ä¸è¦ºï¼Œå‹¾åˆ°ç©ºé–‘之 處,åšäº†ä¸€å¸³å…©å¸³ï¼Œæ‰‹ä¾¿æ»‘利,心便寬閑,åƒå¾—肥肥胖胖,也就åƒå€‹å¥½æ¼¢ã€‚設或比京 城上甚處失事,比較得緊,å³ä¾¿æš—地æ‰ä»–頂缸。雖然贓物ä¸å°ï¼Œèªªä¸å¾—也冤屈了他。 那些å°å¤¥å­äº¦æ‹šé€é€™æ¢æ€§å‘½ï¼Œçµ•無怨心,所以ç¶åœ¨æ³•場之上還è¦å”±å€‹æ­Œå…’。正經那大 夥打劫人的本根è€è³Šï¼Œåˆ°åœ¨å®¶ä¸­å®‰äº«ï¼Œæ¯æœˆæ¯å­£åªè¦å°‹äº›åˆ†ä¾‹é€²è²¢ä»–å€‘ã€‚è‹¥æŠŠæœ¬è³Šç· ç²ç›¡äº†ï¼Œé€™ç­ç•ªå­å„…頭所é ä½•來?ã€é€™éƒ½æ˜¯äº¬åŸŽç©å¹´çš„æµå¼Šï¼ŒæƒŸæœ‰ç•ªå­å¿ƒè£¡çŸ¥é“,外 邊人å»ä¸æ›‰å¾—。如今在下å†èªªä¸€å€‹å°‘年,沒è¦ç·Šè½ä¿¡äººä¸€å¥èªªè©±ï¼Œåˆ°åº•躲閃ä¸éŽï¼ŒæŠŠ 個性命輕輕é€äº†ã€‚這人姓劉å豹,ä½åœ¨é †å¤©åºœéµåŒ–縣地方。父親å«åšåŠ‰è—Žè‡£ï¼Œè¬æ›†åºš å­ç§‘舉人出身,åˆä»»æ·®å®‰åºœå±±é™½ç¸£çŸ¥ç¸£ã€‚宦囊居ç©ä¹Ÿæœ‰ä¸€äºŒè¬é‡‘。åªå› å±…官性å­å‚²åƒ» ,臨民苛刻,冤死多人,後來昇了工部主事,å部大科考察,處了貪酷,閑ä½åœ¨å®¶ã€‚ 妻妾五人,止生此å­ã€‚平素驕養壞了,到得å五六歲,父親風疾在家,起身ä¸å¾—,家 中用度出入俱付此å­ç¶“管。始åˆå¹´ç´€ä¸å¤šï¼Œä¸éŽåœ¨å®¶ä½¿äº›æ°£è³ªï¼Œé€žäº›å…¬å­å¨é¢¨ï¼Œæ‰“大 ç½µå°ï¼Œå»ä¹Ÿæ²’ç”šç ´å£žã€‚ä¸æ–™äº¤å乿­²ä¸Šï¼Œå…¶çˆ¶ä¸€å‘½æ­¸é™°ï¼Œå«¡åº¶ä¹‹æ¯æ—¥å¸¸å¨æœä¸‹çš„ï¼Œä¸ æ•¢å–˜æ¯ã€‚å»å°±æœ‰è¨±å¤šæƒ¡å°‘拜çµå¼Ÿå…„,誘嫖,誘賭。家中跟了僮僕一二å人,兼著幫身 蔑片,將槽上馬騾就騎了三å來匹。或上京城,或到通ç£ï¼Œæˆ–到天津,處處自有那等 åƒç™½é£Ÿã€æŒ¨å¹«é–‘çš„æœ‹å‹æ‹›æŽ¥ï¼Œå“„著劉豹放手費錢。若åªç”¨åœ¨å©Šå­é–€ä¸­åˆ°ä¹Ÿæœ‰é™ï¼Œé‚£çŸ¥ åšäº†å«–客,就åšè³­å®¢ï¼›è‹¥åªè‡ªå·±è¼¸éŒ¢ä¹Ÿé‚„有é™ï¼Œé‚£çŸ¥è‡ªå·±è¼¸äº†ï¼Œå¹«å®¢åˆè¼¸ï¼›è‹¥æ˜¯å¹«å®¢ 果然輸的,代他清償也還有é™ï¼Œé‚£çŸ¥è‡ªå·±çœŸæ­£è¼¸äº†ï¼Œé‚£å¹«å®¢å‡è£ä½œè¼¸ï¼Œé€™å°±æ²’清頭〠沒底止了。所以出門的時節,皮箱拜匣中帶了幾åƒå…©éŠ€å­ï¼Œä¸å¤ åé¤˜æ—¥ï¼Œæ½‘æ’’ç²¾å…‰é¢ å¯«ä¿¡å›žå®¶æ‹¿ä¾†æŽ¥æ¿Ÿï¼Œä¸€é¢åˆç­‰ä¸å¾—åˆ°æ‰‹å°±å°‡é¦¬é¨¾çˆ›è³¤å‡†æŠ˜åŽ»äº†ã€‚å¯æ†ä¸€å€‹æ½‘天的傢俬 ,ä¸ä¸Šä¸‰å…©å¹´é–“蕩廢淨èŠå«¡åº¶ä¹‹æ¯ç„¡è¨ˆæŒ½å›žï¼Œæœªå¹¾å…©å¹´ï¼Œä¿±æ°£æ­»äº†ã€‚止存得僮僕三人 ,å»ä¹Ÿçµ‚日挨飢å—餒,別處逃生。剛剛剩得一個本身,æµä¾†è•©åŽ»ï¼Œè¦ªçœ·æœ‹å‹ä¿±å·²æ·±æƒ¡ 痛絕。一日,èžå¾—è–ŠéŽ®ä¹ƒå¤æ¼é™½åœ°æ–¹ï¼Œæ·»è¨­ä¸€å€‹ç¸½ç£åœ˜ç·´è¡™é–€ï¼Œå¢žäº†äº”å…­è¬å…µé¦¬ï¼Œäºº 煙湊集,貨物俱齊,好ä¸ç†±é¬§ã€‚éµåŒ–與薊州相去止隔得七八åé‡Œï¼Œé‚£åŠ‰è±¹æ€æƒ³èµ·ä¾†ï¼Œ æœ¬åœ°ä¸¦ç„¡ä¸€äººæ†æƒœï¼Œåªç•¶å€‹å®¢è™•他鄉一般。如今看看清晨至晚一碗稀粥也沒處æœå°‹ï¼Œ ä¸è‹¥å¿è‘—ç©ºè‚šæ…¢æ…¢çš„æŒ¨åˆ°å·žè£¡ã€‚æˆ–è€…æœ‰äººæŽ¨æˆ‘å‘æ—¥æƒ…é¢ï¼Œæ±é‚Šè¥¿é‚ŠæŒ¨é “飽飯也ä¸å¯çŸ¥ 。æ€é‡å·²å®šï¼Œå³åˆ»æŠ½èº«å‡ºäº†åŸŽé–€ï¼Œæœ›è‘—西邊州裡大路迤逶而行。也是劉豹命該交é‹ï¼Œ 也是劉豹åˆè©²å€’é‹ã€‚èµ°ä¸ä¸ŠäºŒé‡Œå¤šè·¯ï¼Œå»é‡è‘—一個熟識的人,乃是三五年å‰åœ¨å¤©æ´¥è¡› 城裡薛鴇å­å®¶çš„嫖客。身å­ç”Ÿå¾—長大,有些膂力,總ç£çœ‹ä»–模樣雄雄糾糾,是個將æ ,åˆç•¶ç”¨äººä¹‹éš›ï¼Œå°±è³žä»–åšå€‹ç´…æ——åƒç¸½ã€‚å„處招人,尚無頭緒,無心中å在馬上,劈 頭撞著,仔細看了一會。劉豹也覺有些熟識,把頭臉佯佯低著。那馬已走éŽäº†ä¸€æ®µï¼Œ ä»èˆŠå‹’將轉來å•é“ï¼šã€Žé‚£èµ°è·¯çš„å¯æ˜¯åŠ‰å…„éº¼ï¼Ÿã€ åŠ‰è±¹è½è¦‹ï¼Œèº²é¿ä¸éŽï¼Œæ­£åœ¨è½å¯žä¹‹éš›ï¼Œå·´ä¸å¾—有人å•他。他也便抬頭答é“:『å°å­ä¾¿ 是。ã€é‚£äººå³è·³ä¸‹é¦¬ä¾†ï¼Œå”±äº†ä¸€å–。å•é“:『劉兄,你如何到這田地?ã€åŠ‰è±¹é“:『 å°å­å‘æ—¥ä¸æ‰ï¼Œæ·ªè½è‡³æ­¤ã€‚ã€å³å•那人姓å,那人é“:『你彼時豪è¯ç‘è½ï¼Œæ­£æ˜¯ç‡„é ­ 上富貴之人,原也ä¸çŸ¥æˆ‘的姓å。å°å¼Ÿå§“æŽï¼Œå英,號定山,山西太原府人。當年在 天津薛è€é´‡å®¶ç›¸æœƒï¼Œä¸è¦ºåˆäº”年了。看你光景象個支橕ä¸ä¾†çš„,ä¸è‹¥åŒæˆ‘到薊州ä½ä¸‹ 。若識得字,就在我營中åšå€‹å­—è­˜ï¼Œè‹¥æœ‰åŠ›æ°£ï¼Œå°±åœ¨æˆ‘ç‡Ÿä¸­è£œåæœˆç³§ï¼Œå¯¬ä½å¹¾æ™‚ï¼Œå† èˆ‡ä½ æ¼¸æ¼¸åœ–å€‹å‡ºèº«ã€‚åªè¦æ‚”改å‰é‚ŠéŽå¤±ï¼Œæ³ä¸”å¹´ç´€ä¸å¤šï¼Œæ­£æ˜¯æ—¥å‡ºä¹‹å…‰ï¼Œå®ˆå®šç¨‹å¢¨ï¼Œ ä¾è‘—本分åšåŽ»ï¼Œå°‡ä¾†æœªå¯æ–™ä¹Ÿï¼ã€å³å–šä¼´ç•¶å°‡å¾Œé‚Šä¸€åŒ¹ç©ºé¦¬å«ä»–騎上,竟往薊州進發 ,跟到營裡ä½ä¸‹ã€‚ æŽåƒç¸½å³å°‹å¹¾ä»¶è¡£æœèˆ‡ä»–穿了,酒飯與他åƒäº†ã€‚ä¸ä¸ŠåŠæœˆé–“,也就居移氣,養移體, ä¾èˆŠæˆå€‹ç²¾å£¯å­å¼Ÿæ¨¡æ¨£ã€‚那知這種人犯了漂æµçš„命é‹ï¼Œåƒäº†é£½é£¯ä¾¿ç”Ÿå‡ºäº‹ä¾†ã€‚é‡è‘—三 æœ‹å››å‹æ‰¯åŽ»åº—ä¸Šï¼Œå¤§è‚†åš¼ä½œã€‚å§‹åˆäººä¹Ÿæ†ä»–,ä¸è¦é‚„席。åŠè‡³éŽäº†æœˆé¤˜ï¼ŒæŽåƒç¸½æŠŠå€‹ 空糧å字頂上,待得月糧到手,等ä¸å¾—天亮就去請人還席,ä¸ä¸ŠåŠæœˆéƒ½è²»åŽ»äº†ã€‚æŽåƒ 總é“他有了月糧使用,別項衣食也就ä¸ä¾†ç…§ç®¡ï¼Œå»ä»èˆŠçª˜è¿«å¾—沒奈何。一日正ç¡åœ¨å†· è‰é‹ªä¸­ï¼Œå¤§è²å˜†æ°£é“:『我劉豹直æè’涼得手裡一文也無,ä¸å¦‚å°‹æ¢ç¹©å­ï¼Œåšå€‹æ‡¸æ¨‘ 的蘇秦;一把é’鋒,åšå€‹çƒæ±Ÿçš„æ¥šéœ¸ï¼Œåˆ°ä¹Ÿä¹¾æ·¨ï¼ã€ä¸æ–™éš”壿ˆ¿è£¡ä¹Ÿä½è‘—一個營裡家 ä¸ï¼Œå«åé»ƒé›„ï¼Œé‚æŽ¥è²é“:『è€åŠ‰ï¼Œè€åЉï¼èŽ«è¦é•·å短嘆,攪我ç¡é ­ã€‚å¯éŽæˆ‘房裡來 ,指引你一æ¢å¥½è·¯ã€‚ã€åŠ‰è±¹ä¿¡æ˜¯å¥½è©±ï¼Œå³ä¾¿è·³èµ·èº«èµ°å°‡éŽåŽ»ï¼Œè½ä»–èªªäº›ç”šéº¼ã€‚é»ƒé›„é“ ï¼šã€Žæˆ‘çœ‹ä½ åˆä¸çŸ¬ï¼Œåˆä¸è·›ï¼Œåˆä¸è¾ï¼Œåˆä¸çžŽï¼Œé›–åœ¨é€™å€‹ç‡Ÿè£¡æŽ›åæœˆç³§ï¼Œé‚£è£¡å¤ æˆ‘們 好漢å­ç”¨åº¦çš„? 一般我們當家ä¸ï¼Œä¹Ÿåªé€™äº›æœˆç³§ã€‚那早早晚晚的花費盡多,也還é äº›åˆ¥è™•來路,方得 夠用。ã€åŠ‰è±¹è½äº†æ­¤è¨€ï¼Œå»æ˜¯ä¸ˆäºŒé•·å’Œå°šï¼Œæ‘¸é ­ä¸è‘—。å†ä¸‰è«‹å•,黃雄é“:『你這癡 人ï¼ä½•é ˆç´°èªªï¼Œé›£é“æˆ‘å€‘å¸¶è‘—ç´”é™½å‘‚ç¥–çš„æŒ‡é ­ä¸æˆï¼Ÿåªè¦è‡‚膊上彎著一張弓,腰胯裡 æ’è‘—å¹¾æ¢ç®­ï¼Œä¸€é¦¬è·‘去,隨你金ç è²¡å¯¶éƒ½æœ‰ï¼Œä»»ä½ æµªè²»ã€‚ åªè¦æŠ•在營裡,ä¾å‚著將官的è²å‹¢ï¼Œå°±æ²’有人來稽查了。如今眼é¢å‰ç©¿ç´…è‘—ç¶ ã€ä¹˜è¼¿ è·¨é¦¬çš„ï¼Œé‚£å€‹ä¸æ˜¯å¾žæ­¤é“中éŽä¾†ï¼Ÿã€åŠ‰è±¹é“ï¼šã€Žæˆ‘å¿ƒè£¡æ—©å·²æœ‰é€™æ„æ€ï¼Œåªæ˜¯æ²’æœ‰é€™æ¢ è…¿ï¼Œå¥ˆä½•ï¼Ÿã€é»ƒé›„é“:『滿地是腿,那一處ä¸å°‹æ¢ä¾†ï¼Ÿä¸é›£ï¼Œä¸é›£ã€‚我的馬這幾日該 æ“ï¼Œå»æ˜¯ä¸ç©ºã€‚中å³ç‡Ÿæœ‰å€‹å¼Ÿå…„的馬尚未該æ“ï¼Œå»æ˜¯ç©ºçš„,待我說了你就好與他借騎 。ã€åŠ‰è±¹è€³èº²è£¡èžäº†æ­¤è¨€ï¼Œå¿ƒè£¡æƒ³é“:『目å‰é€™ç­å¥½æ¼¢æžœç„¶å›Šä¸­éŠ€éŒ¢ä¾¿æ„,衣æœé®®æ˜Ž 。若éžå¾žæ­¤é“ä¸­ä¾†ï¼Œå»æ˜¯é‚£è£¡ä¾†çš„?ã€ä¸€æ™‚ä¹Ÿä¸æ•¢èªæ˜¯å¥½è©±ï¼Œé½ç„¶æ‡‰æ‰¿ï¼Œå°±èˆ‡é»ƒé›„別 é“:『承è€å“¥æŠŠé€™è©±é–‹ç¤ºæˆ‘,我曉得乃是è€å‘†å­çš„。 è¬ä¸€è½äº†é€™å¥æ²’來頭的話,設使那人ä¾äº†åšåŽ»ï¼Œæ—¥å¾Œè¢«ä½ æŒ¾åˆ¶è‘—ã€‚å€˜ä¸ä¾ä½ çš„æ€§å…’或 æ˜¯ä¸æ»¿ä½ çš„心願,在人å‰éœ²äº›ä¸å¹¹ä¸æ·¨çš„話頭,我這一生一世åªå¥½åšä½ å下的貼戶也 ä¸å¤ äº†ã€‚ä¸åŽ»ï¼Œä¸åŽ»ï¼ã€å£è£¡é›–把幾å¥ä¹¾æ·¨è©±å…’回覆,也是劉豹的賊星照了,一時發 éœ²çš„ä¹–è™•ã€‚ææ€•é½ç„¶æ‡‰å…乾這勾當,被人知é“,ä¸ç•¶ç©©ä¾¿ã€‚å£è£¡ä¸€é‚Šèªªï¼Œè…³ä¸‹ä¸€é‚Šèµ° ,ä»èˆŠæ­¸åœ¨è‡ªå·±çª©è¼”ã€‚æŠŠæˆ¿é–€æ’²çš„ä¸€é—œï¼Œå˜†å£æ°£é“:『我é“你有甚麼好話說ï¼å»åŽŸä¾† 是哄我的ï¼ã€ ç¡å€’連è²å˜†æ°£ã€‚黃雄åˆé“:『癡å°å­ï¼Œæ˜Žæ˜ŽæŒ‡ä½ ä¸€æ¢é“路,ä¸è‚¯ä¿¡æˆ‘ï¼åªæ€•日後我們 乾得勾當興頭,你åˆåœ¨æ—看得眼熱,到å說三é“å››ï¼Œæ¼æ³„風è²ï¼Œé‚£æ™‚你的性命就ä¸ä¿ 了。ã€åŠ‰è±¹åˆè³£ä¹–é“:『è€å“¥ï¼ä½ æ€Žéº¼åˆæŠŠé€™å¹¾å¥åˆ©å®³çš„話æåš‡è‘—æˆ‘ï¼Ÿä½ ä¹Ÿä¸æ˜¯ç–‘我 的心腸轉來疑你,å»åªæ˜¯è¦å“„我信這話兒,上那æ¢è·¯åŽ»ã€‚ 我有主æ„在肚裡,ä¸è¦å“„我ï¼ã€èªªè¨€æœªç•¢ï¼Œå¤©å·²å¤§äº®ã€‚å³èµ·èº«èµ°åˆ°æŽå°‡ä¸»å®…å…§è½å€™æŒ‡ 使去了。黃雄自言自語é“:『這å°å­å£è£¡é›–如此說,心裡å»è¦åšçš„ï¼Œææ€•我日後挾制 著他,到說這ä¸åšçš„å‡è©±ã€‚如今邊關上兵馬用得多了,處處行人俱帶著腰刀弓箭,一 時è½å·§å¹¹äº›å‹¾ç•¶ï¼Œå»ä¹Ÿå¶æ¹Šä¸è‘—,正è¦å‹¾åˆé€™å°å­ä¸Šè·¯ï¼Œåšå€‹å¹«æ‰‹ï¼Œä»–åˆå‡æƒºæƒºèªªé‚£ 白地上撇清的話ï¼å¦‚今安心牢籠著他,畢竟誘他上這æ¢è·¯ä¸Šã€‚ã€éŽäº†åŠæœˆæœ‰é¤˜ï¼Œåˆè©² 領那月糧之際,劉豹指星望月:到手è¦åšä¸€ä»¶å¤¾å¸ƒç®­è¡£ï¼Œèº«é¢ä¸Šä¹Ÿå¾—光鮮。 䏿–™èµ°åˆ°è¡™é–€é¹¿è§’邊撞著一個醉漢,姓朱åé¾ï¼Œç¶½è™Ÿå«åšç´…臉è€è™Žã€‚平素最是無賴, 仗著有些氣力,晦氣的撞著他,定è¦ç ´è²»å¹¾éŒ¢ã€‚æ¥µä¸æ¿Ÿä¹Ÿè¦åƒå€‹é†‰é£½æ–¹è‚¯æ”¾æ‰‹ã€‚這日 åŠ‰è±¹å€™è‘—æœ¬å®˜å°šæœªé–‹é–€ï¼Œä¸æœŸè¢«æœ±é¾è‘—實打一鶻膀。 劉豹猛然驚起,也就還他一拳,嚷é“:『你åƒé…’放在肚裡,如何把個臂膊?地打我一 下?ã€é‚£æœ±é¾æ–œè‘—眼ç›çœ‹ï¼Œé“:『你這å°å­ç‚ºä½•穿我è¢å­ä¸é‚„?ã€åŠ‰è±¹é“:『我與你 並無åŠé¢ï¼Œæ­¤è¨€å¾žé‚£è£¡èªªèµ·ï¼Ÿã€çœ¾äººé½Šè¿‘å‰ä¾†æŠ˜è§£ï¼Œå°è‘—朱é¾é“ï¼šã€Žæƒ³æ˜¯ä½ é†‰å¾Œèª¤èª äº†äººï¼Ÿã€æœ±é¾ä¸€å£å’¬å®šä¸å·®ã€‚眾人俱曉得他的舊è¦ï¼Œä»»ä»–çµæ‰­åšä¸€å †ï¼Œæ²’人勸解。少 刻,åªè¦‹é»ƒé›„走來é“:『朱哥,這個後生是我的兄弟,åƒè¬çœ‹æˆ‘分上,放了手罷ï¼ã€ 劉豹實è¦èˆ‡ä»–並力打鬧一場,到為黃雄說了這話,åªå¾—放手。æ—é‚Šåˆæœ‰å¹¾å€‹äººå°‡è©±å…’ 矬著劉豹é“:『你在營中åƒç³§ï¼Œé›£é“æœ±å“¥ä¹Ÿä¸æ›¾èªå¾—?é©çº”峿œ‰äº›å¾—ç½ªä½ è™•ï¼Œä½ ä¹Ÿä¸ è©²å°±èˆ‰æ‰‹å›žæ‹³ã€‚é›–æœ±å“¥ä¸å—你打,你也是得罪的了。ã€åŠ‰è±¹è½äº†é€™è©±æ„ˆåŠ æ°£å¿¿ï¼Œå»ä¸ 知眾人為何護庇著他。黃雄é“:『劉兄弟,你ä¸è¦å‹•æ°£ï¼å¦‚今好歹陪他一個禮兒,且 到鋪中å著。你快回去收拾幾錢銀å­ä¾†ï¼Œè‹¥ä¸€æ™‚ä¸ä¾¿ï¼Œå°±æ˜¯è¡£æœåˆ°å°å­é‹ªè£¡æŠ¼å¹¾éŒ¢ä¾† 亦å¯ã€‚ã€åŠ‰è±¹è½äº†æ­¤è¨€ï¼Œçˆ½åˆ©å£ä¹Ÿä¸é–‹ï¼Œçœ¼è¦‹å¾—èº«ç„¡åŠæ–‡ï¼Œæ†‘他發付便了。 黃雄é“:『想你身邊沒得擺佈,ä¸ç„¶æŠŠä¸€æœˆä»½ç³§ï¼Œé ‚與別人,胡亂消繳罷了。ã€çœ¾äºº 俱如此說。劉豹是åˆå…¥ç‡Ÿé ­çš„,ä¸çŸ¥å…¶ä¸­æœ‰ä½•忌諱。大家俱讓著他,沒奈何åªå¾—將月 ç³§æŒ‡åæ­äº†å…­éŒ¢éŠ€å­èˆ‡ä»–,按日加一起利,ä¸å…©æ—¥é–“æœˆç³§å±¬ä¹‹çƒæœ‰ã€‚劉豹仔細打è½ï¼Œ 原來朱é¾ä¹ƒæ˜¯æœ¬å®˜çš„舅å­ï¼Œåˆæ˜¯å®—室出身,所以人人讓他一分。但是ä¸å°‹åˆ¥äººï¼Œåå 尋著劉豹,æ°å¥½åˆé‡è‘—黃雄解勸陪禮,這明是黃雄懷著歹心,故æ„ä½¿ä»–é¡›å€’ç ´è²»ï¼Œä¸ å®¹ä»–èº«é‚Šç©æ”¢ä¸€äº›ã€‚後來劉豹猜破,也就懷個念頭算計黃雄。日日晚頭到他房裡說話 ,早間åŒä»–出門,情æ„甚篤。一日黃雄感冒風寒,本官處告å‡åœ¨å®¶ï¼Œé‚£é¦¬æ”¾å‡ºåŸŽå¤–åƒ è‰ã€‚劉豹覷個è½ç©ºï¼Œåªèªªã€Žæ˜Žæ—¥æœ‰å¼Ÿå…„央我到兵é“衙門éŽéšŠï¼Œè¦å€Ÿé»ƒå“¥è™Ÿè¡£éž‹å¸¶ä¸€ç”¨ 。ã€é»ƒé›„正在煩èºä¹‹éš›ï¼Œå°±æ‡‰å…了,並那å£ä¸ŠæŽ›çš„æ–¹ç®­æ’’袋也除在手裡。一é¢å°‡éžè½¡ æ‚„æ‚„é‹å‡ºåŸŽå¤–,ä¸åˆ°å¤©äº®ï¼Œå°±åœ¨åŸŽå¤–把馬備上。一兩個轡頭,走了七八å里,到了三 河縣邦å‡åº—地方,在個黑樹林裡閃著。ä¸å¤šæ™‚,åªè¦‹ä¸€å€‹éª¨ç˜¦è€è€…騎一匹大å«é©¢ï¼Œèº« 下å著一個被囊,覺得有些沈é‡ã€‚ 劉豹èªé“是個鄉間財主,囊中有貨。一馬èºå‡ºï¼Œè£è‘—è¥¿äººè²æ°£å–é“:『下來快é€äº›ç›¤ çºèˆ‡è€å­ï¼ã€é‚£è€è€…䏿…Œä¸å¿™ï¼Œæ‹¿è‘—鞭梢指é“:『盤çºåˆ°ä¹Ÿå¤ ä½ ç”¨äº†ã€‚但我年紀七旬 有餘,ä¸è¦é©šåš‡ï¼Œå¾…我慢慢下了牲å£ï¼Œä½ è‡ªéŽä¾†å–去。我兩臂軟弱,實æä¸èµ·ä¾†ã€‚〠劉豹信是實言,果然在馬上å´è‘—身å­å‘驢背å–é‚£è¢«å›Šã€‚ä¸æ–™è€è€…一手åšå€‹åƒé‡‘下墜之 勢,把他拉倒在地,鞭乾中抽出一把鋒利尖刀,指著罵é“:『乳臭庸奴ï¼è€æ¼¢åœ¨æ¼é™½ é“上往返五å餘年,ä¸çŸ¥çµæžœå¤šå°‘毛賊ï¼å°‡è¦–我為雞皮è€ç¿å¯å•–é‚£ï¼ã€è¨€æœªç•¢ï¼Œå³æ¬² 將刀挖那兩眼,劉豹大è²å“€å‘Šé“:『å°å­æœ‰çœ¼ä¸è­˜ï¼åŽŸä¸æ•¢ä½œæ­¤è¡Œè—,åªå› å…«åè€æ¯ 抱病臨å±ï¼Œç„¡è¨ˆç­–救,勉強行之。 䏿„冒瀆天å¨ï¼Œä¹žæ±‚饒æ•ï¼ã€è€æ¼¢é“:『齷齪å°å­ï¼Œä¸è¶³æ±¡æˆ‘之刀ï¼åªå‰ä½ å…©æŒ‡ä»¥è­¦ 將來。ã€å½¼æ™‚åŠ‰è±¹æ­£åœ¨å±æ€¥ä¹‹éš›ï¼Œåªè¦‹æž—å…§åˆä¸€é¦¬èºå‡ºã€‚馬上å著一ä½é›„糾大漢,黑 é¢ç´«é«¯ï¼Œèªªé“:『è€ç¿è™•之éžéŽï¼Œä½†ä»–為著æ¯ç—…一語似屬å¯çŸœã€‚è‹¥åŽ»å…©æŒ‡ï¼Œå‰‡çµ‚èº«ä¸ å¾©è´–çŸ£ï¼ã€è¢–ä¸­å‡ºéŠ€äº”å…©ç‚ºè€æ¼¢å£½ï¼Œå³è«‹å•è€æ¼¢å§“å。 è€æ¼¢ä»¥ä¸€ç¬‘è¬ä¹‹ï¼Œä¸å—其金,亦ä¸è¨€å…¶å§“å。止將營馬烙å°é¦¬å°¾åˆ€å‰²ä¸‹ä¾†ï¼Œé¦¬äº¦è² ç—› å¥”å›žåŽŸè·¯ï¼Œè€æ¼¢ä¸Šé©¢ï¼Œæ˜‚然而去。劉豹起來拜è¬å¤§æ¼¢ï¼Œå¤§æ¼¢é“:『我有空馬在後,你 快犄上,少é²ä¾¿æœ‰ç•ªå½¹è‡³çŸ£ã€‚ã€åŠ‰è±¹è‘—å¿™ï¼Œå了空馬緊緊隨著大漢而行。大漢é“:『 æˆ‘è¼©é¦³é¨æ–¼é‚¯é„²é“上,已念餘年。凡有舉動,必先從發腳處踹è½è‘—實,窺其護從,尾 å…¶å¾Œè€…ï¼›æ²¿é€”åˆæœ‰å››äº”人扮作商旅,三å里一æ›ï¼Œæˆ–五å里一æ›ï¼ŒåŒå…¶æ­‡å®¿ï¼Œä½¿ä¹‹ä¸ ç–‘ï¼›ç„¶å¾Œæ–¼ä¸­é€”ä¸€çŸ¢åŠ ä¹‹ï¼Œç„¡ä¸æ‡‰å¼¦ï¼Œæ‹±æ‰‹å¾žå‘½ã€‚若如此冒昧å‘å‰ï¼Œæœªæœ‰ä¸æ•—者也。 今已到æŸé„‰ç¸£ï¼Œèˆ‡æ¼é™½éš”絕åƒé‡Œï¼Œè«’沒有人知覺。〠é‚引入一è’僻å¤å¯ºä½›åº§ä¹‹ä¸‹ï¼Œå–出元寶四錠ã€ç¢ŽéŠ€å兩與之潛歸。但云:『æ±å–„è—之 ,æ¯ç—…å°šå¯è—¥ä¹Ÿã€‚ã€åŠ‰è±¹è„«ä¸‹è£¡è¡£åŒ…è£¹å¥½äº†ã€‚æ­£å¾…å©è¬ï¼Œæ¸…å•å§“å,大漢騎上馬,牽 著空的,一溜煙ä¸åˆ¥è€ŒåŽ»ã€‚åŠ‰è±¹å¾—äº†å…ƒå¯¶ï¼Œä¿æ‚„çš„è®Šæ˜“åšæ‘èŽŠä¸‹äººï¼Œä¹Ÿä¸æ•¢å›žåˆ°è–Šå·ž å±…ä½ï¼Œç›´åˆ°æ°¸å¹³åºœé·å®‰ç¸£åœ°æ–¹ã€‚å§‹åˆä»£äººè€•種,éŽä¸€äºŒå¹´æ¼¸æ¼¸ç½®èµ·ç”°åœ°ã€‚自知僥倖全 身,改éŽå‰éžï¼Œåšå€‹èŽŠå®¶ç™¾å§“ã€‚ å°±è¿‘å¨¶äº†ä¸€å¦»ï¼Œå°‡å°±éŽæ´»ä¸é¡Œã€‚å»èªªé‚£ç‡Ÿé¦¬è¢«è€æ¼¢å‰²å޻尾å°ï¼Œé£›å¥”回營。邦å‡åº—地方 得知此事,具一報單,å„衙門登時知é“。 薊鎮總ç£å³æ‰¹å®ˆé“查報。那è€è€…拿了馬尾烙å°ä¹Ÿåˆ°é“里報了。 峿™‚查出,乃是黃雄的馬。黃雄å»åœ¨ç—…中,推個ä¸çŸ¥ï¼ŒåªèªªåŠ‰è±¹å€ŸåŽ»é¨Žçš„ã€‚é‚£åŠ‰è±¹åˆ æ‹¿ä¸è‘—,黃雄也推ä¸åŽ»ï¼Œåªå¾—代他èªç½ªã€‚ 申詳總ç£ï¼ŒæŠŠé»ƒé›„ä¾å¾‹å•罪,立刻梟示。這也是黃雄立心ä¸å–„,å累其身的報應了。 å†èªªé‚£åŠ‰è±¹é¿å±…é·å®‰åœ°æ–¹ï¼Œåšå€‹å®ˆåˆ†ç™¾å§“,也是改éŽè‡ªæ–°çš„人,上天也該æ•他一分。 那知這年é‡è‘—大旱,苗地俱如龜背裂開,秋æˆç„¡æœ›ã€‚åªè¦å–šäº›é•·å¹´æ¼¢å­é–‹å¢¾ä¸€ç•ªï¼Œé‚„ æœ‰æŒ‡æœ›ã€‚ä¸æœŸäººå·¥å¿™ä¿ƒï¼Œæ²’處尋覓,忽然鎮上é‡è‘—å餘個鳳陽府點來築修邊牆的ç­è» 完工回去,原是空閑身å­ã€‚劉豹å«ä»–è¶å·¥å¹¾æ—¥ï¼Œç…§ä¾‹ç®—錢,那一伙ç­è»ä¹Ÿå°±æ‡‰å…ã€‚ä¸ å…©æ—¥ï¼Œåœ°ä¸Šé–‹å¢¾å®Œäº†ï¼Œéƒ½åˆ°å®¶ä¸­ç­‰ç®—å·¥éŠ€ã€‚ åŠ‰è±¹ä¸€æ™‚æ‰‹é ­ä¸æ¹Šï¼ŒæŠŠå»šç¶ä¸‹åŸ‹è‘—ç•¶æ—¥å‰©ä¸‹å…©å€‹å…ƒå¯¶ï¼Œæ‚„æ‚„ä¹˜è‘—æœˆå¤œæŽ˜å‡ºï¼Œå°‡äº›ç‚­ç« ç‡’ç´…ï¼Œé¨é‘¿é–‹ä¾†ã€‚䏿„那些ç­è»è½è¦‹é¨éŠ€çš„è²ï¼Œçˆ¬èµ·å±‹ç°·ï¼Œæœ›è¦‹å¤§éŒ ï¼Œçœ¾äººå°±èµ·å¿ƒæ“ 將進去,一罟而å–,ä¸çŸ¥åŽ»å‘。劉豹也åªå¾—å˜†å¹¾å£æ°£ï¼Œæ­£æ‰€è¬‚『得之易,失之易ã€ä¹Ÿ 。ä¸é¡Œã€‚å»èªªç­è»å¾—了這兩大錠,喜喜欣欣從真ä¿ç­‰åºœå°‡åˆ°æ±´æ¢åœ°æ–¹ï¼Œçœ¾äººå»è¦ç…§è‚¡ 分用。無計布擺,大膽走到éµé‹ªé¨é–‹ï¼Œå»é‡è‘—ä¸€ç­æ•役,挨身進去å•é“:『鑿開è¦è™§ 折四五錢,何ä¸åˆ°æˆ‘鋪中æ›äº›ç¢ŽéŠ€ï¼Œåˆ†ä½¿å…©ä¾¿ï¼Ÿã€çœ¾äººå°±æ”œäº†å…ƒå¯¶ï¼Œè·Ÿè‘—æ•人,走到 一個大宅å­å…§ã€‚接å–元寶一看,èªå‡ºå­—號,大è²å«é“:『拿賊,拿賊ï¼ã€å€å¿½èµ°å‡ºäºŒ 三å人,把這伙ç­è»éŽ–éˆèµ·ä¾†ã€‚åŽŸä¾†é€™å…ƒå¯¶ä¹ƒæ˜¯ä¸‰å¹´å‰æ±Ÿè¥¿å·®å®˜è§£çš„金花銀兩,在汴 æ¢åŸŽå¤–被大盜劫去,至今貽害地方官民,賠補未完。ç„中雖æ‰äº†å¹¾èµ·å¤§ç›œï¼Œå»ä¸æ˜¯é€™ 案內人犯。至今æ•役監ç¦ï¼Œä¸‰æ—¥ä¸€æ¯”,å»ç„¡åŽŸè´“ã€‚ä»Šæ—¥éŒ ä¸Šå°é‘¿åˆ†æ˜Žï¼Œæœ‰ä½•疑案?一 ä¼™é€åˆ°å¤§æ¢å®ˆé“衙門,那些ç­è»å¤§è²å–Šå†¤é“:『我們俱是築修邊牆ç­è»é ˜ä¾†çš„é¹½èœéŠ€ 兩。ã€å®˜é“:『你們雖是ç­è»é¹½èœéŒ¢ç³§ï¼Œå½¼è™•零星分çµï¼Œé‚£æœ‰å¤§éŒ çš„?æ³ä¸”這宗錢糧 尚未解到,如何有得發出?ã€ç”¨èµ·åˆ‘來,然後將那é·å®‰åŠ‰è±¹å®¶ä¸­åŠ«ä¾†æƒ…ç¯€ä¸€ä¸€æ‹›å‡ºã€‚ 守é“就申文撫院,撫院å³ç§»æ–‡è–Šç£è¡™é–€ï¼Œå·®äººç™»æ™‚押往河å—質å°ã€‚ 劉豹將從å‰è©¦é¦¬åŠå¤§æ¼¢ç›¸è´ˆä¹‹è¨€å¾žé ­è¨´èªªï¼Œä¸€ä¸€å‚™å…¥æ–‡å…§ï¼Œæ²¿é€”撥兵護解。行至順德 府地方,忽然é‡è‘—大漢åŠé†‰å–®é¨Žè€Œä¾†ï¼ŒåŠ‰è±¹ä¸Šå‰æ³£è¨´å§‹æœ«ã€‚眾人è½äº†ï¼Œå°±æ›‰å¾—是劫元 寶的大盜,å‘來四下追ç·ï¼Œç„¡è™•蹤跡著他。內中一人乖巧,滿å£ç¨±è´Šï¼šã€Žå¥½å€‹è±ªä¿ ï¼ èæ°´ç›¸é€¢ï¼Œèƒ½æ•‘人性命,ååˆè´ˆä»–銀å­ã€‚今日他自己é‹è¹‡ï¼Œåˆ°æ­¤æ•—露。你這種高義甚 æ˜¯å¯æ•¬ï¼ã€çœ¾äººè¦è«‹ä»–店上敘情,大漢推託。一人乘其空隙,用力將那馬腿一ç ï¼Œå€’ 墜下地。一齊用力上å‰å°±æŠŠå¤§æ¼¢ç¶äº†ã€‚地方人é“:『你們雖拿ä½ä»–,å»è¦è¬¹æ…Žã€‚倘有 é¢¨è²æ¼æ³„,ä¸ä¸Šä¸‰å里就有追騎æ¶å¥ªï¼Œé€£ä½ å€‘性命亦ä¸å¯ä¿ï¼ã€ä¸€äººé“:『我們有個 處法,此賊害人多矣,ä¸ä¾¿é è§£ã€‚è‹¥ç¶ç¸›å°‘鬆,就è¦è„«åŽ»ã€‚å°‡ä»–é¡›å€’ç¶åœ¨é¦¬ä¸Šï¼Œç”¨å° 刀把他穀é“錘割出來,å†ç”¨ç¹©å­æ‹´åœ¨æ¨¹ä¸Šï¼ŒæŠŠé¦¬ä¸€éž­æ®åŽ»ï¼Œé¦¬è·‘è…¸å‡ºï¼Œæˆ‘å€‘è±ˆä¸æ”¾å¿ƒ å¿«æ„ï¼ã€çœ¾é“:『有ç†ï¼Œæœ‰ç†ï¼ã€å¦‚是而行,割下頭來,丟棄五六里之外,始終無人 知覺。 然後把劉豹解到汴æ¢ï¼Œä¸€ä¸€æ‰¿èªã€‚å•了ä¸å¾…時的死罪,方çµé€™äº”å…­å¹´åŠ«éž˜å…¬æ¡ˆã€‚é‚£å‰ é‚ŠéŒ¯æ‹¿çš„ï¼Œå·²æ­»éŽäº†ä¸€åŠï¼Œå…¶é¤˜å› å…¶ç„¡è´“,盡行釋放。å¯è¦‹å¤©åœ°é–“éžç‚ºä¹‹äº‹ï¼Œè¬ç„¡æ²’ 有報應之ç†ï¼ŒåŠ‰è±¹å°‘å¹´ç›‚æµªï¼Œæ­£ç•¶å±æ€¥ï¼Œå¿½é‡æŽå¤§æ¼¢ç‰‡è¨€æŽ’解,æ†å…¶æ¯ç—…一言,å³è´ˆ 之金,令其速é。è—之五六年,廚ç¶ä¹‹ä¸‹ï¼Œç¥žé¬¼ä¸çŸ¥ï¼Œå¯è¬‚密矣。ååé‡è‘—鳳陽ç­è» ,乃於夜åŠé¨éŠ€è²ä¸€æœæ¼æ³„。æŽå¤§æ¼¢äºŒå年邯鄲é“上惡孽多端,å在救人施惠之際, å»å¥½é€”中é‡è‘—劉豹起解而來,畢命於群解之手。å‰é‚Šé»ƒé›„設心ä¸å–„,早å—å†¤èª…ã€‚å¤©é“ å ±æ–½ä¹‹å·§ï¼ŒçœŸå¦‚èŠ¥å­è½åœ¨é‡å­”,毫忽ä¸å·®ã€‚å¯è¦‹äººè™•於困窮之時,ä¸å¯è½ä¿¡æ­¹äººè¨€èªž 。一念之差,終身åªåœ¨é‚£æ¢ç·šä¸Šï¼Œä»»ä½ ä¹–å·§ä¼¶ä¿ï¼Œèº²é–ƒä¸éŽï¼Œåªçˆ­åœ¨é²æ—©ä¹‹é–“。天上 算人,好似傀儡套å­ï¼Œæ’®å¼„很得好ä¸èŠ±ç°‡å“©ã€‚çœ¾äººé“:『我們å在豆棚下,å»è±¡ç«‹åœ¨ 圈å­å¤–é ­ï¼Œå†·çœ¼çœ‹é‚£ä¸–æƒ…ï¼Œä¸æ¸›æ¡ƒæºå¦ä¸€æ´žå¤©ä¹Ÿï¼ã€ 總評å¤ä¾†å¤©ä¸‹ä¹‹äº‚ï¼Œå¤§åŠæ˜¯ç›œè³Šèµ·æ–¼é£¢å¯’。有牧民之責者,咸æ€é‡å¼­ç›œã€‚é‰›æ§§å®¶æ£æ‘© çª—ä¸‹ï¼Œèª°ä¸æŠŠå¼­ç›œå°‹äº›ç­–æ–™ï¼Ÿä¹Ÿæœ‰èªªå¾—æ˜¯çš„ï¼Œæˆ–å‰¿è¥²å‰äººï¼Œæˆ–按時創論,éžä¸é‘¿é‘¿å¯ è½ã€‚ç„¶å•策答策,ä¸éŽçœ‹åšåˆ¶ç§‘故事,孰肯舉行。åŠè‡³æŽ¢ä¸¸æ»¿å¸‚,è‘è‹»éœ‡é©šï¼Œä¹ƒå§‹æŸ æ‰‹ç„¡ç­–ã€‚å視其潰裂,而莫å¯èª°ä½•。甚至開門æ–ç›œï¼Œé™æ­»æ¯”æ¯”ï¼Œå»æ‚”從來講求弭盜有 ä½•ç›¸å¹²ã€‚å—Ÿä¹Žï¼æ­¤è¿‚儒懈弛之ç¦ä¹Ÿã€‚到ä¸å¦‚é“人此則原委警切,å¯é†’æ„šäººï¼Œå¯æ‚Ÿå¼·æ©« ã€‚å¤§ç›œç„¡ä¸æ­åˆ€ï¼ŒçŽ‹ç« çŒ¶ç„¶æ˜Ÿæ—¥ã€‚çœŸæ˜¯ä¸€ç¯‡å¼­ç›œå¤è«–ä¹Ÿï¼ ç¬¬ 虎丘山賈清客è¯ç›Ÿ 《食物誌》云:æ‰è±†äºŒæœˆä¸‹ç¨®ï¼Œè”“生延çºï¼Œè‘‰å¤§å¦‚æ¯ï¼Œåœ“而有尖;其花狀如å°è›¾ï¼Œæœ‰ 翅尾之形,其莢凡å餘樣,或長,或圓,或如豬耳,或如刀é®ï¼Œæˆ–如é¾çˆªï¼Œæˆ–如虎爪 ,種種ä¸åŒã€‚ 皆çºçºæˆæžï¼Œç™½éœ²å¾Œçµå¯¦ç¹è¡ã€‚嫩時å¯å……è”¬é£Ÿèœæ–™ï¼Œè€å‰‡æ”¶å­ç…®é£Ÿã€‚å­æœ‰é»‘ã€ç™½ã€èµ¤ ã€æ–‘四色。惟白者å¯å…¥è—¥æ–™ï¼Œå…¶å‘³ç”˜æº«ç„¡æ¯’,主治和中下氣,補五臟,止嘔逆,消暑 氣,暖脾胃,除溫熱,療éœäº‚æ³„ç—¢ä¸æ­¢ï¼Œè§£æ²³è±šé…’毒åŠä¸€åˆ‡è‰æœ¨ä¹‹æ¯’ã€‚åªæ­¤ä¸€ç¨®ï¼Œå…· 此多功,如何人家ä¸ç¨®ä»–?還有一件妙處,天下瓜茄å°èŠæœ‰å®œå—ä¸å®œåŒ—的,宜æ±ä¸å®œ 西的,惟æ‰è±†é€™ç¨®å¤©ä¸‹ä¿±æœ‰ã€‚那豬耳ã€åˆ€é®ã€è™Žçˆªä¸‰ç¨®ï¼Œç”Ÿä¾†åŽšå¯¦é—Šå¤§ï¼Œç…®åƒæœ‰å‘³ã€‚ 惟é¾çˆªä¸€å“,其形似乎厚實,其中å»è‡ªç©ºçš„,望去表裡照見,åƒåŽ»æ·¡è€Œç„¡å‘³ï¼Œæ­¢ç”Ÿæ–¼ 蘇州地方,別處å»ç„¡ã€‚å¶ç„¶èªªèµ·ï¼Œäººä¹Ÿä¸ä¿¡ï¼Œä»Šæ—¥æˆ‘們閑話之際,如有解得這個原故 ,也好補在食物《本è‰ã€‹ä¹‹å…§ï¼Œå‚™äººåƒè€ƒã€‚內一人é“:『這也是照著地土風氣長就來 的。 天下人俱存厚é“,所以長來的豆莢亦厚實有味。惟有蘇州風氣澆薄,人生的眉毛尚且 說他空心,地上長的豆莢越發該空虛了。〠眾人é“:『姑蘇也是天下å邦,å¤ä¾†æŒºç”Ÿè±ªå‚‘,發祥甚多。ç†å­¸å儒,接踵ä¸å°‘。怎 見得他風氣澆薄?畢竟有幾件異乎常情ã€å‡ºäººæ„æƒ³ä¹‹äº‹ï¼Œå‘æˆ‘們一一指說。倘é‡è‘—蘇 å·žäººå˜´é ­åˆ»è–„ï¼Œæˆ‘å€‘ä¹Ÿè¦æ•´å‚™åœ¨è‚šè£¡å°–酸答他ï¼ã€é‚£äººé“:『蘇州風俗全是一團虛諱 ,一時也說ä¸èŠåªå°±é‚£æ‹³é ­å¤§ä¸€åº§è™Žä¸˜å±±ï¼Œä¾¿æœ‰è¨±å¤šä½œæ€ªã€‚ 閶門外,山塘橋到虎丘å為七里,除了一åŠå¤§å°ç”Ÿæ„人家,éŽäº†åŠå¡˜æ©‹ï¼Œé‚£ä¸€å¸¶æ²¿æ²³ 臨水ä½çš„,俱是é è‘—虎丘山上養活,ä¸çŸ¥å¤šå¤šå°‘少扯空砑光的人。å³ä½¿é–‹è‘—幾扇æ¿é–€ ,賣些雜貨或是åƒé£Ÿï¼Œé é æœ›åŽ»æŒ¨æ¬¡é‹ªæŽ’ï¼Œåˆ°ä¹Ÿç†±é¬§é½Šæ•´ã€‚ä»”ç´°çœ‹ä¾†ï¼Œä¿—èªžèªªå¾—ç”šå¥½ :翰æé™¢æ–‡ç« ï¼Œæ­¦åº«å…§åˆ€æ§ï¼Œå¤ªé†«é™¢è—¥æ–¹ï¼Œéƒ½æ˜¯æœ‰åç„¡å¯¦çš„ã€‚ä¸€åŠæ˜¯é¨™å¤–路的客料, ä¸€åŠæ˜¯å“„å­©å­çš„æ±è¥¿ã€‚ä¸è¦èªªåˆ¥è™•人å«ä»–空頭,就是本地有幾個士夫æ‰å­ï¼Œç•¶åˆä¹Ÿå°± åšäº†å¹¾é¦–《竹æžè©žã€‹æˆ–是打油詩,數è½å¾—也覺有趣。我還記得兒首,從著åŠå¡˜æ©‹å ä¸‹ 那些å°å°äººå®¶ï¼Œæ¼¸æ¼¸èªªåˆ°æ–Ÿé…Œæ©‹é ­é‹ªé¢ä¸ŠåŽ»ï¼šè·¯å‡ºå±±å¡˜æ™¯æ¼¸ä½³ï¼Œæ²³æ©‹æ¥ŠæŸ³æš—è—鴉。欲 知春色存多少,請看門å‰èŒ‰èŽ‰èŠ±ã€‚ å¤è‘£æ”¤ 清幽雅致曲欄æ†ï¼Œç‰©ä»¶å¤šèˆ¬æ“ºä½œæ”¤ã€‚內屋åŠé–“茶ç¶å°ï¼Œæ¢…花竹笪é¿äººçœ‹ã€‚ 清客店(並無他物,止有茶具çˆç“¶ã€‚手掌大一間房兒,å»åˆåˆ†ä½œå…©æˆªï¼Œå€™äººé–‘å,兜 攬嫖賭) å¤–é‚Šé–‹åº—å…§æ›¸æˆ¿ï¼ŒèŒ¶å…·èŠ±ç›†å°æ¦»ç‰€ã€‚香盒çˆç“¶æŽ’竹幾,單æ¢åŠå‡è‘£å…¶æ˜Œã€‚ 茶館(兼麵餅) 茶åŠéºµé¤…硬如磚,咸ä¸é¹¹å…®ç”œä¸ç”œã€‚åªæœ‰ç‡•齊秦晉è€ï¼Œä¸€ç›¤å®Œäº†ä¸€ç›¤æ·»ã€‚ 酒館(紅裙當壚) 酒店新開在åŠå¡˜ï¼Œç•¶å£šå¬Œæ¨£æ™ƒå¨˜å¨˜ã€‚引來éŠå®¢å¤šè¼•薄,åŠé†‰çŒ¶ç„¶ç´¢é…’嘗。 å°èœåº—(種種俱是梅醬酸醋,易糖æ—碎拌æˆï¼‰ 虎丘攢盒最為低,好事猶稱此處奇。切碎æ—é½äººä¸è­˜ï¼Œä¸åŠ é…¸é†‹å®šåŠ é£´ã€‚ 蹄肚麻酥 å‘說麻酥虎阜山,åˆèžé‡‘肚壯而鮮。近來兩件都嘗é,硬肚粗酥殺鬼饞。 海味店 è¦é¯—先年出虎丘,風魚近日亦åŒä¾”。鯽魚醬出多風味,å­é±­é°Ÿçš®ç”¨æ»¾æ²¹ã€‚ 茶葉 虎丘茶價é‡ç•¶æ™‚,真å‡å¾žä¾†ä¸æ˜“知。åªèªªæœ¬å±±å…¶å¯¦å¦™ï¼ŒåŽŸä¾†ä»èˆŠæ˜¯å¤©æ± ã€‚ 席店 滿牀五尺共開機,è€å¯¦å¼µå®¶æ˜¯æˆ‘哩。看定好個齊調æ›ï¼Œç­‰é ­éŠ€æ°´è¦æ·»äº›ã€‚ 花樹 海棠è¬äº†ç‰¡ä¸¹ä¾†ï¼ŒèŠè—¥å±±éµ‘æ¬¡ç¬¬é–‹ã€‚æŸ´æ¢—è‰æ ¹äººä¸è­˜ï¼Œé€ äº›å目任人猜。 盆景 曲曲欄æ†çŸ®çŸ®çª—,折æžç›†æ™¯ç¹žè¿´å»Šã€‚巧排幾塊宣州石,便說天然那哼生。 黃熟香 ä¸€ç®±é»ƒç†Ÿç›¡è™›èƒžï¼Œé‚£æ¨£åˆ†é–‹é‚£æ¨£åŒ…ã€‚é“æ˜¯å”µå­æ›¾åˆ¶éŽï¼Œæœªç¶“燒著手先æ”。 時妓 好女新興雅淡å¦ï¼Œæ•£ç›¤é ­ä¼¼æ²¹å…‰ã€‚梳來時å¼é›™é£›é¬¢ï¼Œæ»¿é ­èŒ‰èŽ‰å¤œä¾†é¦™ã€‚ è€å¦“ å¡—æœ±æŠ¹ç²‰æ±¡æµæ–‘,打扮蹺蹊說話彎。嫖客å­å¤šå¹«è¥¯å°‘,扯扯拉拉虎丘山。 ç§çª  機房窠å­åŠæ‘å¦ï¼Œçš‚帕扳層露é¡å…‰ã€‚å¤è³ªä¼¼é‡‘ç ä¼¼ç²Ÿï¼Œå¾Œé·¹å–œéµ²å°¾å·´é•·ã€‚ 和尚 三件僧家亦是常,賭錢åƒé…’養婆娘。近來交çµè¡™é–€ç†Ÿï¼Œè”‘ç‰‡è¡Œä¸­åˆæ…£å¼·ã€‚ 花蓬頭垢é¢èµ¤ç©ºæ‹³ï¼Œè—縷衣衫露兩肩。茶棚酒店如梭串,哀求åªèªªæ¨éŠ…éŒ¢ã€‚ è€é¾é™½ 近來世é“尚男風,奇醜æ‘ç”·è³½è€ç¿ã€‚油膩嘴頭三寸厚,賭錢場裡打蓬蓬。 後生 輕佻賣ä¿å¾Œç”Ÿå®¶ï¼Œé體綾羅網繡鞋。氈帽砑光齊欽壓,åå…¬æ‰‡å­æ±—å·¾æ©ã€‚ 大腳嫂 鄉間嫂孿œ€è¹ºè¹Šï¼ŒæŠ¹å¥¶æ±—巾拖å­é ˆã€‚敞袖白衫翻轉å­ï¼Œä¸€é›™å¤§è…³å…©é¯¿é­šã€‚ å­å­ï¼ˆèˆ‰æ®¯è€…多在山塘一帶,å­å­ç„¡ä¸é†‰æ­¸ï¼‰ 堪嗟å­å­åƒé»ƒæ¹¯ï¼Œé¢ä¼¼è’²æ±é—œå¤§çŽ‹ã€‚ä¸æ˜¯æ‰‹ä¸­å“­ç«¹æ£’,幾乎跌倒在街åŠã€‚ 以上說的都是é è‘—虎丘山生æ„的,雖則馬æ‰å±…多,也還ä¾å‚著個影兒;養活家å£ï¼Œä¹Ÿ é‚„æ•å¾—ä»–éŽã€‚更有一ç­å»æ˜¯æµªè£¡æµ®èã€ç³žè£¡è‡­è›†ç›¸ä¼¼ï¼Œç«‹ä¾¿ä¸€å †ï¼Œåä¾¿ä¸€å¡Šï¼Œä¸æ‹›è€Œ 來,æ®ä¹‹ä¸åŽ»ï¼Œå«åšè€ç™½è³žã€‚這個å色,我也ä¸çŸ¥ç•¶åˆå› ä½•å–æ„。有的猜é“,說這些 人光著身å­éš¨è™•æ’腳,ä¸ç®¡äººå®¶å±±æ°´ã€åœ’亭ã€éª¨è‘£ã€å¥³å®¢ï¼Œä¸è²»ä¸€æ–‡ï¼Œç™½ç™½è³žé‘’çš„æ„ æ€ï¼›ä¸€å蔑片,åˆå«å¿½æ¿ã€‚é€™éƒ½æ˜¯å«–è¡Œè£¡è©±é ­ã€‚è­¬å¦‚å«–å®¢ï¼Œæœ¬é ˜ä¸æ¿Ÿçš„ï¼Œæœ›é–€æµæ¶•ä¸ å¾—å—用,é è‘—一æ¢è”‘片幫貼了方得進去,所以å«åšã€Œè”‘片ã€ã€‚大è€å®˜å«–了表å­ï¼Œé€™äº› 蔑片陪酒夜深,巷門關緊ä¸ä¾¿èµ°å‹•ï¼Œå°±å€Ÿä¸€æ¢æ¿å‡³ï¼Œä¸€å¿½ç¡åˆ°å¤©äº®ï¼Œæ‰€ä»¥å«åšå¿½æ¿ã€‚ 這都是時上舊話,ä¸å¿…æä»–ã€‚åªæƒ³é€™ä¸€ç­åšäººå®¶çš„,開門七件事,一毫沒些抵頭。早 æ™¨èµ·ä¾†å°±åˆ°æ²³å£æ´—了é¢å­”,隔夜留下三四個銅錢,買了幾朵茉莉花簽在頭上,戴上一 個帽å­ï¼Œç©¿ä¸Šä¸€ä»¶åƒé‡ç™¾è£œçš„破衣出門去,任著åå€‹è…³æŒ‡é ­æ’žè‘—ç‚ºæ•¸ã€‚æœ‰å¥½å«–çš„å°±åŒ äº†åŽ»ï¼Œæ’žå¯¡é–€ï¼Œè¦“ç§çª ï¼Œé¨™å°å®˜ï¼Œæœ‰å¥½è³­çš„å°±åŒåŽ»å…¥è³­å ´ï¼Œæˆ–é‹ªç‰Œï¼Œæˆ–æ“²è‰²ï¼Œä»¶ä»¶çš† èƒ½ï¼›æ¥µä¸æ¿Ÿä¹Ÿè·Ÿå¤§è€å®˜èƒŒå¾Œæ’®äº›é£›ä¾†é ­ï¼Œå°‡ä¾†éŽæ´»ã€‚閑話丟éŽï¼Œä¸”說正文。ã€å½¼æ™‚æ­£ 當五月端åˆä¹‹å¾Œï¼Œå¤§è€å®˜çº”看éŽé¾èˆ¹ï¼Œäººé ­ä¸Šä¸å¤§èµ°å‹•。一ç­è€ç™½è³žå»ä¹Ÿé–‘æ·¡å¾—ç„¡èŠ ï¼Œèšåœ¨å±±å¡˜ä¸€å¸¶æ‰€åœ¨ï¼Œæˆ–虎丘二山門下茶館上ã€å¤è‘£æ”¤é‚Šï¼Œå¥½åƒæŠ˜è…¿é·ºé·¥ç«‹åœ¨æ²™ç˜ä¸Š 的光景,眼巴巴åªè¦æœ›è‘—幾個眼熟的走到。忽然大山門外走了幾個人來,å‰é‚Šä¹ƒæ˜¯ä¸€ ä½ç›¸å…¬ï¼Œé ­æˆ´ç™¼ç‰‡å‡Œé›²æ–¹å·¾ï¼Œèº«ç©¿å®˜ç¶ ç¡¬ç´—é“è¢ï¼Œè…³ç©¿é†¬è‰²æŒ½é›²ç·žéž‹ï¼Œæ‰‹è£¡æ‹¿è‘—螺鈿 邊檀香é‡é‡‘扇å­ï¼Œå¹´å¯ä¸‰åä¸Šä¸‹ï¼Œé¢æ–¹è€³å¤§ï¼Œæ²¿é¬¢çŸ­èƒ¡ã€‚後邊隨著四個戴一把抓帽兒 ã€å°è¢–ç®­è¡£çš„ç®¡å®¶ï¼Œä¿±æ‹¿è‘—æ°ˆåŒ…ã€æ‹œåŒ£ã€æ‰¶æ‰‹ä¹‹é¡žï¼Œæ–æ–æ“ºæ“ºè¸±ä¸Šå±±ä¾†ã€‚çœ¾ç™½è³žå€‘é“ æ˜¯å€‹è¥¿åŒ—äººï¼Œä¸ç”šç•™æ„。 看他走到åƒäººçŸ³ä¸Šï¼Œå‘¨åœè§€çœ‹ï¼Œå¾‘上天王殿去,å°è‘—å½Œå‹’ä½›åƒæ‹œäº†å››æ‹œã€‚有幾個油花 和尚挾了ç–ç°¿ä¸Šå‰æ‰“è©±ï¼Œæ±‚ä»–ä½ˆæ–½ã€‚å°±ä¸Šä¸€æ¢æ¤½æœ¨ä¸Šå¯«è‘—ï¼šã€Œå±±è¥¿å¹³é™½åºœä¿¡å®˜é¦¬çº”æ¨ éŠ€å兩。ã€é‚£äº›å’Œå°šå³åˆ»æ…‡æ‡ƒå‹¢åˆ©èµ·ä¾†ï¼Œè«‹é¦¬çˆºæ–¹ä¸ˆå¥‰èŒ¶ã€‚馬纔é“:「咱也ä¸è€ç…©å‘· 茶,有å¥è©±å…’å•ä½ ï¼Œé€™è£¡å¯æœ‰å”±æ›²åŒ éº¼ï¼Ÿã€å’Œå°šèªžè¨€ä¸æ‡‚,便回é“:「這裡沒有甚麼 鯧魚醬。若è¦è²·çŽ«ç‘°é†¬ã€æ¢…花醬ã€è¦å­é¯—ã€æ©„欖脯,俱在城裡å³è¶¨åŠé¡§å®¶èˆ–å­è£¡æœ‰ã€‚ ã€é¦¬çº”é“ï¼šã€Œä¸æ˜¯ã€‚咱今日河下覓了一個船兒,è¦å°‹å€‹å½ˆå¼¦å­æ’¥çµç¶å”±æ›²å­çš„。ã€å’Œ 尚方懂得,打著官話é“:「我們蘇州唱曲å­çš„ä¸å«åšåŒ ï¼Œå‡¡å‡ºå掛招牌的å«åšå°å”±ï¼Œ ä¸å‡ºåã€è•©ä¾†è•©åŽ»çš„å«åšæ¸…å®¢ã€‚ã€é¦¬çº”é“:「å°å”±å’±çŸ¥é“的,å»ä¸è¦ä»–。åªè¦é‚£ä¸æŽ› 招牌ã€è•©ä¾†è•©åŽ»çš„ç½·äº†ã€‚å’±å•你怎麼å«åšã€Žæ¸…客ã€ï¼Ÿã€å’Œå°šé“:「虎丘,天下å山。 客商仕宦èšé›†ä¹‹è™•,往來éŠçŽ©ä½œè€çš„人多,凡é‡é£²é…’éŠå±±æ™‚ç¯€ï¼Œè‹¥æ²’æœ‰é€™ä¼™ç©ºé–‘æœ‹å‹ ç›¸é™ªçŽ©å¼„ï¼Œå»ä¹Ÿæ²’興。ã€é¦¬çº”é“:「陪酒也算ä¸å¾—清,玩弄也算ä¸å¾—清。ã€å’Œå°šé“: 「這ç­äººå–®èº«å¯„食於人家,怎麼ä¸å«å®¢ï¼Ÿå¤§åŠç„¡å®¶ç„¡å®¤ã€è¡£é£Ÿä¸é€±çš„,怎麼ä¸å«æ¸…? ã€é¦¬çº”é“:「咱今日è¦å°‹å¹¾å€‹ç›¸é™ªçŽ©å¼„çš„ï¼Œå¯æœ‰éº¼ï¼Ÿã€å’Œå°šé“:「有,有。ã€ç–¾å¿™åœ¨ 殿å‰é–€æª»ä¸Šå¾€ä¸‹ä¸€æ‹›ï¼Œåªè¦‹é‚£äº”å三åƒç¤“礤上跑起三兩個來,é“ï¼šã€Œå¯æ˜¯é‚£ä½å®˜å…’è¦ å°‹è¨ªç™½è³žæœ‹å‹éº¼ï¼Ÿæˆ‘åŽ»ï¼æˆ‘去ï¼ã€å’Œå°šé“:「弗è¦äº‚ç«„ï¼Œä¸€ä¼™åšæ·˜èµ°åŽ»ï¼Œæ†‘æ¸ æ€ç½·å“‰ 。ã€é€™å¹¾äººéƒ½æœ‰å€‹ç¶½è™Ÿï¼Œä¸€å€‹å«åšæ²¹ç‚¸çŒ¢çŒ»å¼·æ¨ï¼Œç•¶æ—¥å¼·å¤¢æ©‹ä¹‹å­ã€‚因他日常手零腳 碎,åä¸å®‰é–‘,身æçŸ­å°ï¼Œæ•…有此å。一個綽號å«åšçš®ç•«çœ‰å¾ä½›ä¿ï¼Œå› ä»–沒些竅頭, 大è€å®˜å•他一å¥çº”響一è²ï¼Œæ²’人ç†ä»–,就自家åƒå¾—é ­ç´…é¢èµ¤ï¼Œé¼¾é¼¾çš„å°±ç¡è‘—桌上。一 個è€çš„。å«åšç¥ä¸‰æ˜Ÿï¼Œå¹´ç´€å°‡å·²æœ›ä¸ƒï¼Œé¢ç𮿠¼ç¸ï¼Œçœ¼è§’眊,須鬢染得碧綠,腰背åŠä¼¼ 彎弓。他æƒè‘—是個先輩伯伯,å»ä½”著人的先頭。人也厭他,改他三星的號為三節。因 他少年人物標緻,唱得清曲,串得好戲,人去邀他,è£è…”åšå‹¢ï¼Œå»è¦æŽ¥ä»–三次方來, 乃是「接請ã€ä¹‹ã€ŒæŽ¥ã€ã€‚中年喉嗓秕啞,人皆嫌鄙。清明走到人家,推他ä¸åŽ»ï¼Œç›´åˆ° 端åˆä¸­ç§‹æ–¹è‚¯è½‰å‹•,乃是「時節ã€ä¹‹ã€Œç¯€ã€ã€‚å¦‚ä»Šè€æ™¯éš³é ¹ï¼Œäººåˆå¦èµ·ä»–個笑話,說 å°æ™‚出身寒簿,乃是呂蒙正上截,中年離披ä¸å ªï¼Œä¹ƒæ˜¯é„­å…ƒå’Œä¸­æˆªï¼Œå¦‚ä»Šè€æœ½é¾é¾ï¼Œ æºå£‘ä¹‹æ–™å»æ˜¯è”¡è€å“¡å¤–ä¸‹æˆªï¼Œåˆæ˜¯ã€Œç«¹ç¯€ã€ä¹‹ã€Œç¯€ã€ã€‚ã€å’Œå°šå¼•了三人,馬纔見了喜 之ä¸å‹ï¼Œèªªé“:「貴處多æ‰ä¹‹åœ°ï¼Œæ€Žçš„æŠŠæ‰‹ä¸€æ‹›ï¼Œå°±æœ‰å¹¾ä½ä¾†äº†ï¼Ÿã€çœ¾ç™½è³žé“:「晚 生們乃無è²ä¹‹æ‰ï¼Œé‚„仗爺們有è²ä¹‹æ‰åŸ¹æ¤åŸ¹æ¤ã€‚ã€é¦¬çº”一手拉了強æ¨ï¼Œå°‡èˆ‡å’Œå°šä½œåˆ¥ 。強æ¨å°±æŠŠå’Œå°šä¸€æ‰‹æ‰¯å®šï¼Œå‘馬纔é“:「馬爺既有興玩水登山ã€å°‹èб啿Ÿ³ï¼Œæ–·æ–·å°‘ä¸ å¾—ä¸€ä½é•·è€çº”æ˜¯å‹æœƒã€‚今日相湊,乃是奇緣,難é“å°±èˆ‡é¦¬çˆºåˆ¥äº†ä¸æˆï¼Ÿæ³ä¸”馬爺寫了 佈施,你也該去領來投在櫃內,韋馱神å‰ä¹Ÿè¦éŠ·ç¹³é€™å€‹å¤§è«±ã€‚ã€é¦¬çº”é“:「有ç†ï¼Œæœ‰ ç†ã€‚åŒè¡Œï¼ŒåŒè¡Œã€‚但我們還è¦å°‹å€‹å©Šå­ï¼Œåªæ€•é•·è€æœ‰äº›ä¾¿ã€‚ã€ç¥è€é“:「æ•處這些人 家,到是長è€ç„¡ç”šå¿Œè«±ï¼ŒåŽŸèµ°æ…£çš„ï¼Œæ­£æ‰€è¬‚ã€Žè‰²å³æ˜¯ç©ºï¼Œç©ºå³æ˜¯è‰²ã€äº†ã€‚ã€ä¸€é‚Šåš¼è›† ,一邊已走到顧家園上。å¾ä½›ä¿é“:「這是æšå·žæ–°ä¾†ç‡•賽官ä½åœ¨è£¡é¢ï¼Œå¾…我敲門進去 。ã€è£¡é¢å›žé“:「昨日滸墅關上幾個相公接去了。ã€åˆèµ°åˆ°å±±å¡˜æ©‹éŸ“家園上尋那å³è€ 四。說「今日å¾é„‰å®¦è¨­å¸­ï¼Œä¸ä¾¿æŽ¥è¦‹ã€‚ã€é€£èµ°ä¸‰å››å®¶ï¼Œä¸è¦‹äººå½±ã€‚馬纔便焦èºèµ·ä¾†ï¼Œ é“ï¼šã€Œäº›è¹„å­æ·«å©¦ï¼åˆ†æ˜Žè¦‹å’±æ•…æ„躲著,難é“咱是åƒäººçš„麼ï¼ã€çœ¾ç™½è³žé½Šå‹¸é“,「馬 爺勿è¦ç„¦èºã€‚æ•è™•æ˜¯å€‹å®¢å•†é¦¬é ­åŽ»è™•ï¼Œä¾†å¾€äººå¤šã€‚è¿‘ä¾†åˆæ·»äº†ç‡Ÿé ­ä¸Šäººï¼Œåµé¬§å¾—慌, 婊å­å€‘存紮ä¸å®šï¼Œæ­¢æœ‰é€™å¹¾å€‹å©Šå­ï¼Œå§”實ä¸å¾—空閑。ã€å¼·æ¨é“:「許è€ä¸€å°±åœ¨é€™è£¡ï¼Œ èº«æ®µæ¥µä»‹å³æºœï¼Œé¢å­”也介花哨。 馬爺與他相處極好,是介å°çµå€‹å“‰ã€‚你們å€è‘—馬爺橋上略å一å,待我先進去看一看 ã€‚åªæ€•此時還ç¡è‘—哩。ã€å»ä¸çŸ¥è€ä¸€æ—©å·²æ¢³æ´—åœç•¶ï¼Œæ­£åœ¨å»šæˆ¿ä¸‹å°±è‘—一個木盆洗腳, 連è²é“:「ä¸è¦é€²ä¾†ã€‚ã€å¼·æ¨æ—©å·²åˆ°äº†é¢å‰ï¼Œåƒäº†ä¸€é©šé“:「è€ä¸€ï¼Œæˆ‘å‘來在你個邊 走動,å»ä¸æ›‰å¾—你生å­ä¸€é›™ä¹¾è…³ã€‚ã€è€ä¸€é“:「å°çƒé¾œåˆä¾†åš¼è›†å“‰ï¼é‚£äº¨æ˜¯é›™ä¹¾è…³ï¼Ÿ ã€æºœå¼·æ¨é“:「若勿是乾腳,那亨就浸漲å­ä¸€ç›†ï¼Ÿã€è€ä¸€æ’“起腳來,把水è±äº†å¼·æ¨ä¸€ 臉。罵é“:「臭連肩花娘,好æ„特特é€å€‹å­¤è€æŠŠä½ ï¼Œåˆ°å¼„出多呵水來ï¼ã€è€ä¸€é“:「 真個?ã€å³ä¾¿æ‹­å­è…³ï¼Œç©¿ä¸Šéž‹èˆ‡é‚£è¡«å­ï¼Œå‡ºä¾†æŽ¥è‘—。 歡天喜地,拂塵看座,連å£å–šèŒ¶ï¼Œä¸€ç•ªç†±é¬§ã€‚馬纔也ä¸é€šåé“姓,便開å£é“ï¼šã€Œå’±ä¸ åƒé‚£æ’žé–€å¯¡èŒ¶ï¼Œåˆ°å°±åŽ»èˆ¹ä¸Šå‘·é…’ç½·ã€‚ã€çœ¾ç™½è³žä¹Ÿå°±æ”™æŽ‡ä¸‹äº†é…’船。馬纔一邊就在腰下 å–出銀包,拿了一塊銀å­éžèˆ‡å®¶äººï¼Œå«è²·èœå–酒。馬纔等ä¸å¾—,就è¦è€ä¸€å”±å€‹æ›²å­ã€‚ è€ä¸€é“ï¼šã€Œæˆ‘å€‘åªæœƒç¡è¦ºï¼Œé‚£è£¡çŸ¥é“唱甚麼曲å­ï¼Ÿã€ç¥ä¸‰æ˜Ÿé“:「他的《哭皇天》〠《山å¡ç¾Šã€‹ã€ã€ŠéŠ€çµžçµ²ã€‹ã€ã€ŠçŽ‰æ²³éƒŽã€‹æ˜¯æ­¤é–“ç¬¬ä¸€ç„¡è³½çš„äº†ã€‚ã€é¦¬çº”é“:「你會唱, æ€Žèªªä¸æœƒï¼Ÿæƒ³æ˜¯åˆæœƒé¢ç”Ÿéº¼ã€‚咱們自今日相知了,早上便è¦å”±åˆ°æ™šï¼Œæ™šä¸Šé‚„è¦å”±åˆ°å¤© 亮哩。ã€çœ¾ç™½è³žé“ï¼šã€Œåˆ¥äººä¸æ•¢èª‡å£ï¼Œè‹¥æ˜¯è€ä¸€é€™å€‹åŠ›é‡ï¼Œå»æ˜¯ä¸è®“人的。除了è€ä¸€ ,蘇州也便沒第二個了。ã€è€ä¸€è¢«é€™å¹¾å€‹å±€å¾—快活,也就直了喉嚨喊個ä¸ç¥å°‘間擺上 一桌èœè”¬ï¼šç‡’豬頭,çˆç‰›è‚šï¼Œè–°è¹„踵,鹵煮雞,約有七八碗,大盤大塊,堆上許多。 è£å‡ºå¹¾å£ºç‡’酒,斟了幾巡,馬纔舉æ¯é“:「請ï¼ã€è€ä¸€å°±ä¸€æ°£é£²äº†æ•¸æ¯ï¼Œä½›ä¿ä¹Ÿå°±éš¨ è‘—ç…§æ¯ã€‚å¼·æ¨çœ‹è¦‹è€ä¸€è„«ä»‹å®¶æ‡·ï¼Œå°±ç…§è€ä¸€åšäº†å¹¾å€‹é¬¼è‡‰ï¼Œé€£ç¯‡çš„æ‰“起洞庭市語,嘰 å“©å’•åš•ï¼Œå¥½ä¼¼æ–°ä¾†ç‡Ÿé ­æœ‹å‹æ‰“番語的一般,弄得馬纔兩眼瞪天,ä¸çŸ¥ç”šéº¼ä¾†æ­·ã€‚那管 家刻è½äº†äº›æ±é“使費,心裡忌怕主人算帳。懷著鬼胎,å»åˆ°ä¸»äººè€³é‚Šä¸€æ“¦ï¼Œèªªé“:『 這幾個蠻å­ç½µè€çˆºå“©ï¼ã€é¦¬çº”性氣勃發,將桌上一碗醬煮肥肉照著眾白賞頭臉一潑, 抽出拳頭乒乒亂打。å¾ä½›ä¿èº²å‡ºèˆ¹å¤–,ç¥è€è€ç›´åƒµåƒµé è‘—å£ç«‹ï¼Œè¨±è€ä¸€æ²¹è†©æ±¡äº†è¡£æœ ,禿禿的哭個ä¸äº†ã€‚å¼·æ¨å在è€ä¸€ä¸Šé¦–,一時跑ä¸è„«èº«ï¼Œä¸€æ‰‹æŒ‰è‘—桌角,å£è£¡èªªé“: 「大殺風景哉ï¼ã€é‚£ç®¡å®¶åˆå°ä¸»äººé“ï¼šã€Œä»–é‚„è¦æ‰“殺å°å›ä¾†ã€‚ã€é¦¬çº”越覺怒,æèµ·è…³ å‡³æ‰“åŽ»ã€‚å¼·æ¨æ‹šå‘½è·‘到艄上,å»å¾€æ°´ä¸­ä¸€è·³å°±ä¸è¦‹äº†ã€‚管家é“:「è€çˆºæƒ¹å‡ºäººå‘½ä¾†ä¹Ÿ 。ã€é¦¬çº”也著急,到艄上å•那船家,船家é“:「無事,剛方隨風飄éŽå°æ²³åŽ»å“‰ã€‚ã€ç®¡ å®¶é“ï¼šã€Œæ€Žéº¼ä¸æ²ˆä¸‹åŽ»ï¼Ÿã€èˆ¹å®¶é“ï¼šã€Œå€‹äº›äººæ¸¾èº«æ˜¯æµ·èžµè›¸æ¨£çš„ï¼Œé‚£äº¨è‚¯æ²ˆå‘€ã€‚ã€æ­¤ 是一ç­ç™½è³žå¶ç„¶å‡ºé†œè«¢è©±ï¼Œä¸é¡Œã€‚ å†èªªä¸€å€‹è€ç™½è³žå«åšè³ˆæ•¬å±±ï¼Œè‡ªå¹¼éš¨è‘—主人書房伴讀,文ç†é›–æœªæ‡‚å¾—ï¼Œé‚£ä¸€æ´¾æ–‡ç˜‹å» ä¹Ÿæ¸¾èº«å­¸å°±ã€‚ä¸€æ—¥è½è¦‹å¾ä½›ä¿ã€ç¥ä¸‰æ˜Ÿå—了一番狼藉,人頭上越發形容得ä¸åƒäººæ¨£ï¼Œ 他就拉了å餘個è€ç™½è³žæœ‹å‹ï¼Œé½Šè¡Œçš„相似,都到虎丘åƒäººçŸ³ä¸ŠæŒ¨æ¬¡å了,創起一個論 來é“:「我哩個行業,說高原弗高,說低也弗低。 昨日èžå¾—個些å°å¤¥å­å€‘å—了許多狼狽,多因技è—弗曾講習,竅竇弗介玲ç“,身分脫介 寒賤,所以人多看得我哩脫介輕ä¿å¦‚今我們也è¦è±¡ç§€æ‰å€‘,自己尊é‡èµ·ä¾†ï¼Œçµä¸€å€‹å¤§ 社,燒介一陌盟心的紙。ã€çœ¾ç™½è³žé“:「請啥神é“åšå€‹ç¤¾ä¸»ã€‚ã€æ•¬å±±èªªé“:「å¹ç°«å”± 曲,幫襯行中,別的也沒相干。想é“ç•¶åˆåªæœ‰å€‹ä¼å­èƒ¥å¹ç°«ä¹žé£Ÿæ–¼å³å¸‚,傳了這個譜 兒。伯嚭大夫掇臀æ§å±ï¼Œå‚³äº†é€™å€‹èº«æ®µã€‚這廿˜¯æˆ‘輩開山始祖,我哩飲水ä¸è¦å¿˜äº†æº 頭。ã€çœ¾äººé“:「弗å¯ï¼Œå¼—å¯ã€‚ä¼å­èƒ¥æ˜¯å€‹è±ªå‚‘丈夫,伯嚭是個臭局個å°äººï¼Œå¼—å¥½åŒ åã€‚ã€æ•¬å±±é“:「我哩個生æ„,弗論高低,儕好åŒå。 å¾—å­æ™‚,就è¦å……個豪傑;弗得時,囫圇是個臭局。神明是弗計較個。ã€çœ¾ç™½è³žé“:「 伿–¼èƒ¥å¼—敢勞動,到æ›å­é„­å…ƒå’Œèˆ‡æˆ‘哩親切點罷ï¼è«‹å•é‚£äº¨æ‰“æ‰®ï¼Ÿã€æ•¬å±±é“:「頭上 æˆ´é ‚éŽæ–‡ã€‚ã€çœ¾äººé“:「那亨å«åšéŽæ–‡ï¼Ÿã€æ•¬å±±é“:「我哩å‘來戴著鬃帽,å»å弗出 。若竟æ›å­é«˜å·¾é—Šæœï¼Œäººå®¶è¦‹å­å„•åšé¬¼è‡‰ã€‚åªæˆ´ä¸€é ‚弗方弗æ‰å€‹éŽæ–‡ï¼Œå¤§å®¶å„•弗覺著 。身上穿介一件油綠玄é’åŠæ–°å¼—破個水田直裰,人看å­ä¹Ÿå¼—介簇簇,自也é“弗介猖狂 。腳上盡穿介宕å£é»ƒå¿ƒè‰éž‹ï¼Œäº¦ä»‹æ–¯æ–‡ï¼Œå¼—當破費。路上相喚,儕å«è€ç¤¾ç›Ÿå…„ï¼›å°ä¸€ 輩個,儕稱è€ç¤¾ç›Ÿä¼¯ã€‚見å­å¤§å®˜åºœï¼Œå„•稱公相;差點個便稱è€å…ˆç”Ÿã€‚æˆ–åœ¨äººå®¶å«æ›²ï¼Œ å„•ç¨±æ•æ±å°Šé¤¨ï¼Œå­¸æˆ²å€‹å°ç”·ï¼Œå„•嫿„šå¾’門生。弗拘啥人å“ç‰©ä»¶éƒ½ä»¥ä»™äººç¨±å–šï¼›æ’žè‘—å­ ç®¡å®¶å¤§å”,總也å«ä»–å…ˆç”Ÿã€‚ã€æ­£åœ¨è¬›è«–之際,åªè¦‹å‰æ—¥æ‰“壞的強æ¨é“:「河å£ä¾†äº†å…© éš»å·è‰„二號å船,上邊擺著深簷黃傘,想是éŽå¾€ä»•å®¦ï¼Œåœ¨æ­¤åœæ³Šã€‚ è€ä¼¯ä¼¯èµ°å‹•èµ°å‹•ï¼Œæˆ–è€…å°‹å€‹ç·šè·¯å¹«å¸¶å¹«å¸¶ã€‚ã€æ•¬å±±è½è¦‹ï¼Œå³ä¾¿å¥”è½å±±åŽ»ã€‚å»è¦‹èˆ¹ä¸Šæ‰“ 著扶手,主人頭上雲巾ã€å±±è »é“è¢ã€å¤§ç´…雲履,åŒè‘—閶門蘘裡餛飩書鋪兩個鄉親,一 路打著鄉談,走上山來。敬山悄悄挨著管家輕輕動å•ï¼Œçº”çŸ¥è¬æ›†ç™¸ä¸‘科進士,å‰å®‰åºœ 剿°´äººå§“劉å謙,官至通政,告致回家。è¦åœ¨è˜‡å·žè²·äº›æ–‡çŽ©å¤è‘£ï¼Œç½®äº›ç²¾å·§ç‰©ä»¶ï¼Œé‚„ è¦å°‹æ·»å¹¾å€‹é’ç§€å°å­ã€æ¨™ç·»ä¸«é ­ï¼Œæ•™ç¿’å…©ç­æˆ²å­å“©ã€‚敬山è½å­ï¼Œä¸è¦ºé¡›é ­ç°¸è…¦ï¼Œä¸è¦ 說é¢å­”上增æå七八個笑é¨ï¼Œå°±æ˜¯éª¨ç¯€è£¡ä¹Ÿéƒ½æ‰­æèµ·ä¾†ã€‚連è²å¤§å”é•·ã€å…ˆç”ŸçŸ­ï¼Œä¹˜å€‹ 空隙就扯進棚å­è£¡åƒèµ·èŒ¶ä¾†ã€‚åˆæ‰“è½æ­¤åœ°é‚£å€‹å¹´å®¶ï¼Œé‚£å€‹è¦ªæˆšï¼Œä¸€ä¸€å…œæ­åœ¨å¿ƒè£¡ï¼Œè½‰ 身就到餛飩書鋪,求他轉薦,那人也就å°åŠ‰å…¬èªªäº†ã€‚åŠ‰å…¬é“:「你們在此åšç”Ÿæ„,端 æ˜¯å®¢å±…ï¼Œè‹¥ç”¨æ­¤è¼©ï¼Œé ˆè¦æœ¬åœ°æœ‰èº«å®¶çš„ä½œå€‹ä¸­ä¿æ–¹å¥½ã€‚ã€æ•¬å±±å¾—äº†å£æ°£ï¼Œå»é“這個題 目甚難,整整候了兩日,猶如熱é‹ç¶ä¸Šèž»èŸ»ï¼Œæ‰’ä¸ä¸Šä¾†ï¼Œç¡¬éª¨é ­è£¡è›†èŸ²é‘½ä¸é€²åŽ»ã€‚ å»å¥½ç®¡å®¶åŒäº†é–¶é–€å¾·ç››è™Ÿé–‹ç·žé‹ªå³æ¾æ³‰ï¼ï¼ä¹ƒæ˜¯èˆŠæ—¥ç›¸èˆ‡ï¼Œç‚ºè²·è²¨æ‰¹å¸³è«‹ä¾†ã€‚åˆé‡è‘— 劉公拜客未回,敬山乘著åŠé¢ä¹‹è­˜ï¼Œä¸€éœŽæ™‚熱鬧趨奉,求他鼎言推薦。那徽州人是好 å‹çš„,竟應承了。ä¸å¤šæ™‚,就åŒä¸‹èˆ¹ï¼Œä¸€é‚Šå¼•見一邊極å£ç¨±æšé“:「他技è—皆精,眼 力高妙,ä¸è«–書畫ã€éŠ…çª¯ã€å™¨çš¿ï¼Œä»¶ä»¶è‘£å…¥éª¨è£¡ã€‚çœŸçœŸå¯¦å¯¦ï¼Œä»–å°±æ˜¯ä¸€ä»¶éª¨è‘£äº†ã€‚ã€ åŠ‰å…¬ç¬‘äº†ä¸€ç¬‘ï¼Œå«æ›¸ç«¥å·ç®±å…§å–那個花罇來與敬山賞鑒。那書童包袱尚未解開,敬山 大è²å–采å«å¥½ã€‚劉公é“ï¼šã€Œå¯æ˜¯ä¸‰ä»£æ³•ç‰©éº¼ï¼Ÿã€æ•¬å±±é“:「這件寶è²é’綠俱全,在公 相宅上收è—,極少也得å七八代了。ã€åŠ‰å…¬ç¬‘é“ï¼šã€Œä¸æ˜¯é€™å€‹ä¸‰ä»£ã€‚ã€æ•¬å±±å³è½‰å£é“ ï¼šã€Œå§”å¯¦ä¸æ›¾è¦‹é€™ä¸‰ä»£å™¨çš¿ï¼Œæ™šç”Ÿçš„眼ç›åªå¥½å…©ä»£åŠï¼Œä¸å¤šäº›çš„。ã€åЉ公åˆå–一幅å å…¬å¤ç­†ç•«çš„《雪裡梅花》出來與看,四下å»ç„¡å款圖書。敬山開å£é“ï¼šã€Œæ­¤ç•«å…¬ç›¸å¯ èªå¾—是那個的?ã€åЉ公é“ï¼šã€Œå®‹å…ƒäººçš„ã€‚ä¸æ›¾è½æ¬¾ï¼Œåˆ°ä¹Ÿä¸çŸ¥ã€‚ã€æ•¬å±±é“ï¼šã€Œä¸æ˜¯å®‹ å…ƒï¼Œå»æ˜¯é‡‘æœå¼µæ•žç•«çš„。ã€åЉ公åˆç¬‘一笑,é“:「想是這書畫骨董足下ä¸å¤§ç•™å¿ƒã€‚é‚£ 宮商音律乃是究心的了。我è¦å°‹å¹¾å€‹å°å¥³å­ï¼Œæ•™å¾—æˆ²çš„ï¼Œå¯æœ‰éº¼ï¼Ÿã€æ•¬å±±é“:「有有 ã€‚åªæ˜¯è¿‘年四鄉æˆç†Ÿï¼Œä¸€æ™‚尋也費力。å³ä¾¿å°‹å¾—有時,也弗得è‰è‰ï¼Œé¢ç›®è…³æ‰‹ç¬¬ä¸€è¦ 緊,弗須說起。還è¦å•æ¸ çˆºå¨˜æ›¾å‡ºç—˜é´›ä¹Ÿæœªï¼Œèº«ä¸Šæœ‰å”¦æš—ç–¾ï¼Œè‚šè£¡æœ‰å•¥è„¾æ°£ï¼Œå¤œé–“è¦ å‡ºå°¿å¦ï¼Œå–‰éŸ³ç²—亮何如。爺娘弗肯割æ¨éƒŸé ï¼Œåªæœ‰æ™šç”Ÿç•¶æ—¥æ›¾èˆ‡å¹¾ä½è€å…ˆç”Ÿç¶“手幾個 ,後來出跳伶ä¿ï¼Œæ”¶æ‹¾æˆ¿ä¸­ï¼Œç”Ÿäº†å…¬å­ï¼Œè‡³ä»Šè¦ªæˆšå¾€ä¾†ã€‚æ‰€ä»¥äººå®¶ä¿±é“æ™šç”Ÿå¾—托,有 唦囡兒儕肯放心。 公相ä¸å•,晚生也弗敢說,公相既è¦å°‹è¦“幾個,弗是晚生誇å£ï¼Œåˆ¥äººä¹Ÿå‹¿æ•¢æ‡‰æ‰¿ã€‚〠劉公é“:「正è¦å€Ÿé‡ã€‚ã€æ•¬å±±åˆå•ï¼šã€Œå…¬ç›¸æœ‰å¹¾æ™‚åœæ³Šï¼Ÿã€åЉ公é“:「這也ä¸è«–時日 ,åªè¦å°±ç·’方行。ã€ä¸€é¢å°±èˆ‡é¬†æ³‰é–‹äº†ç·žç–‹å¸³ç›®ï¼Œå³ä¾¿åŒæ•¬å±±åˆ¥äº†ã€‚敬山å³åŽ»æœƒäº†è¨± 多朋å‹ï¼Œå››è™•æœå°‹ï¼Œå»ä¹Ÿæ²’有頭路。沒奈何åªå¾—把個外甥女兒,åŒè‘—é„°èˆçš„å°å›¡ï¼Œå“„ 說陪到虎丘頑è€ï¼Œå°±å¼•到船上。劉公看了é“ï¼šã€Œç¸½ä¹‹ç”Ÿã€æ—¦ã€æ·¨ã€ä¸‘俱是用的,ä¸å¿… 細看,åªå•å¤šå°‘èº«åƒ¹ã€‚ã€æ•¬å±±é“:「如今æˆç†Ÿå¹´æ­²ï¼Œäººå®¶ä¿±æ¨ä¸å¾—出身。èžå¾—公相府 å…§æ¥µè‚¯å„ªå¾…ï¼Œåˆæ˜¯æ™šç”Ÿå±…é–“ï¼Œæ–¹è‚¯é ˜ä¾†ã€‚åœ¨ç•¶æ—¥åªæ¶ˆå¿µå…©ä¸€å€‹ï¼Œå¦‚今須得四å兩方肯 。ã€åЉ公é“:「比當日加åå…©ç½·ã€‚ã€æ•¬å±±åˆæ„ä¸éŽå–šä¾†æªå¡žï¼Œä»¥ç‚ºé€²èº«ä¹‹è¨ˆï¼Œé‚£çŸ¥åЉ 公登時就發銀å­ã€‚ 著管家åŒåˆ°å³æ¾æ³‰è™•立契æˆäº¤ã€‚敬山心裡åˆè½‰äº†ä¸€å¿µé“:「å³ä½¿ç«‹äº†æ–‡å¥‘ï¼Œé‚„è¦æˆ‘é ˜ 去教他。ä¸è‹¥å°‡è¨ˆå°±è¨ˆï¼Œä¸”騙到手轉動轉動。ã€ç«‹åˆ»å¯«äº†æ–‡å¥‘,收了價錢,連中人酒 æ°´ä¹Ÿä¹¾æŠ˜äº†ã€‚ä¸¦æ±‚é¬†æ³‰è‘—å€‹ä¿æŠ¼ã€‚æ•¬å±±ä»èˆŠæ‹¿äº†éŠ€å­ï¼Œèµ°åˆ°èˆ¹ä¸­ç¨Ÿé“ï¼šã€Œå…¬ç›¸ï¼Œå¥³å­ é›–ç„¶è²·ä¸‹ï¼Œä»–çš„çˆ¶æ¯é‚„è¦åšå¹¾ä»¶è¡£æœã€éž‹å­èˆ‡ä»–,須在晚生身上,少待五六日。公相 è‹¥è¦æ•™æˆ²ï¼Œä¸è‹¥å°±åœ¨æ™šç”Ÿå®¶ä¸‹ã€‚æ™šç”Ÿé›–åœ¨å…¬ç›¸é–€ä¸‹å¥”èµ°ï¼Œæˆ¿ä¸‹ä¹Ÿæ˜¯æœƒæ•™çš„ã€‚ææ€•公相 ä¸è‚¯æ”¾å¿ƒï¼Œé€£éŠ€å­ä¹Ÿç•™åœ¨å…¬ç›¸è™•。ã€åЉ公é“ï¼šã€Œå³æ¾è€æ‰€èˆ‰æ–·ç„¶ä¸å·®ï¼Œå°±ç…©å°Šé–«è²»å¿ƒ ,容日總酬罷ï¼ã€æ•¬å±±æ¬£ç„¶æ‹¿äº†éŠ€å­å›žåŽ»ï¼Œä¸€æ™‚èŠ±å“„èµ·ä¾†ï¼Œä¸åœ¨è©±ä¸‹ã€‚ 䏿–™æ­¤è¼©é‘½å¿ƒæ¥µå¯†ï¼Œçœ‹è¦‹è³ˆæ•¬å±±è¬€èº«é€²åŽ»æœ‰äº›æƒ³é ­ï¼Œå»åˆèµ°å‡ºä¸€å€‹é¡§æ¸…之來,也在船 邊伸頭探腦。打è½å¾—劉公差人去請醫生楊沖蓭來åˆè—¥ï¼Œæ¸…之與沖蓭也有一é¢ã€‚䏀壿°£ å³å¥”到楊家求其薦舉。沖一就與他åŒä¸‹èˆ¹ä¾†ã€‚劉公接見,說了許多閑話,乘便就把清 之贊æšèµ·ä¾†ã€‚劉公也極藹然,留待åˆé£¯ã€‚劉公é“:「昨日有個賈敬è€ä¾†ç›¸æœƒï¼Œæˆ‘已托 他覓了兩個女å­ï¼Œå°±ç•™åœ¨ä»–家教曲。尚有幾個å°åƒ¹ï¼Œéƒ½ä¸éŽå五六歲,如今也è¦å«ä»– 學唱,ä¸çŸ¥å¯æ•™å¾—å¦ï¼Ÿã€æ¸…之é“:「åäº”å…­æ­²çš„å­©å­æ­£æ˜¯å–‰éŸ³é–‹ç™¼ä¹‹éš›ï¼Œæ¥µä¸è²»åŠ›ï¼Œ 晚生斗膽效勞ï¼ã€åЉ公é“:「賈敬山曾相識å¦ï¼Ÿã€æ¸…之一邊看沖蓭在那邊寫方甚忙, 一邊低è²ç­”é“:「敬山雖係識èªï¼Œæ™šç”Ÿå€‘從來ä¸ä¾¿èˆ‡ä»–åŒå。ã€åЉ公é“:「他人å“å·® 池,行止有甚ä¸ç«¯éº¼ï¼Ÿã€æ¸…ä¹‹èˆ‰æ‰‹ä¾¿æŠŠé¼»å­æ‘¸äº†ä¸€æ‘¸ï¼Œæ‰‹ä¸€åšå€‹å‹¢å­é‚„é“:「è€çˆºæ‰€ 託他買的女å­ï¼Œä¹Ÿè¦ç•™å¿ƒæŸ¥çœ‹è¦ç·Šã€‚ã€åŠ‰å…¬ä¹Ÿå°±æŠŠé ­é»žäº†ä¸€é»žã€‚æ²–è“­å°‡è—¥æ–¹éŽä¾†èªªäº† 一éã€‚åŠ‰å…¬å¹³ç´ æ¥µå¥½ç”·é¢¨ï¼Œé‚£å¹¾å€‹è¦æ•™å”±å°å­å°±æ˜¯åŠ‰å…¬çš„é¾é™½å›ã€‚清之看見劉公照管 得緊,也就è¦åœ–è¬€é€™é¤¨ã€‚ä½¯ä½¯çš„å°æ²–è“­é“:「晚生年紀ä¸å¤šï¼Œè¿‘來得了痿癥,人é“俱 絕。ã€åŠ‰å…¬ä¿¡é“這話是真,å³å°±æ‰˜ä»–教那幾個å°å­ã€‚一兩日間,把這å°é¤¨å°±å定了。 一é¢å°±åŽ»å°‹è‘—æ•¬å±±è¦çœ‹å¥³å­ï¼Œé‚„è¦åˆ†ä»–媒錢。敬山é“:「是我在劉è€çˆºè™•薦你教曲。 ã€ä¹Ÿè¦åˆ†ä»–æŸè„©ã€‚兩個鬼åµé¬§äº†ä¸€å¸¸æ¬¡æ—¥é½Šåˆ°åŠ‰å…¬èˆ¹ä¸Šå了一回。早飯已畢,就åŒéš¨ 了閶門外買些貨物;專諸巷裡買些玉器。 兩邊é¢é¢ç›¸è¦·ï¼ŒèƒŒåœ°è£¡ä»èˆŠä¼¸äº†å¹¾å€‹æŒ‡é ­ã€‚å„人悄地討了è¶éŒ¢ï¼Œå„自心照去了。劉公 抵暮赴席而回,å著一隻å°èˆ¹ã€‚æ•¬å±±æ‚„æ‚„æ¸¡èˆ¹è¶•ä¸Šï¼Œè¦‹äº†åŠ‰å…¬é–‹å£æŒ‡é“:「今日å°ç®¡ 家如何ä¸å¸¶å‡ºé–€ï¼Ÿ è‹¥å–®ç•™æ¸…ä¹‹åœ¨èˆ¹ä¸Šï¼Œä¹Ÿè¦æ‚„悄留心體訪。若引誘壞了身å­ï¼Œé‚£å–‰éŸ³å†ä¸å¾—亮了。ã€åЉ 公廿˜¯å°ˆå¿ƒæ­¤é“,極è¦åƒé†‹çš„。自è½äº†æ•¬å±±é€™å¥è©±ï¼Œå°±å‹•了覺察的念頭,åªå› ä»–說陽 é“痿絕ä¸åŽ»å ¤é˜²ã€‚ 那日也是清之åˆç•¶æ•—露,當著劉公åˆç¡ï¼Œä¸è½è¦‹å°å­å”±éŸ¿ï¼Œæ‚„地窺他。åªè¦‹æ¸…之正當 興發,挺著那件海狗腎的æ±è¥¿ç›¸ä¼¼ï¼Œé —稱雄猛,與å°å­å¹¹é‚£å‹¾ç•¶ã€‚å»è¢«åŠ‰å…¬çœ‹è¦‹ï¼Œå³ æ™‚å–šå‡ºï¼Œå°‡å°å­æ‰“了三å;把清之去了衣巾,一æ¢è‰ç¹©ç‰½è‘—è„–å­ï¼Œåªèªªå·ç›œéŠ€æ¯ï¼Œç™¼ å¼µå帖é€åœ¨ç¸£è£¡ã€‚血比監追,打得伶伶仃仃。直待把自己å五六歲é’秀兒å­é€é€²å®…å…§ ,方准å•了刺徒,發é…京å£é©›æ“ºç«™åŽ»è¨–ã€‚ 敬山自從拔去眼中之釘,å»ä¹Ÿå分得æ„。凡有賣字畫ã€éª¨è‘£ç‰©ä»¶çš„ï¼Œä¿±è¦æŠ½é ­ï¼Œå…ˆä¾† 與他說通,方æˆäº¤æ˜“。就是討書求分上的,一è¦èˆ‡ä»–後手,管家å°è²»ä¸€ç¶²åŒ…羅。就有 å¹¾å€‹é–€ç”Ÿæ•…èˆŠèµ°ä¾†ï¼Œä»–ä¹Ÿè¦æ’èº«å¥‰é™ªï¼Œé‚„è¦æŽ‰å¥æ­ªæ–‡ï¼Œè®€äº›ç ´å¥ï¼Œæƒ¹äººç¬‘得鼻塌嘴歪 。那知ç¦éŽç½ç”Ÿï¼Œè’¼è’¼ä¹‹å¤©ï¼Œæ¯’毒的åè¦èˆ‡æ­¤è¼©å¼„å€‹èŠ±å·§ã€‚ä¸æœŸæ•¬å±±é©Ÿç„¶é¨™äº†è¨±å¤šéŠ€ å…©ï¼Œä¸æ•¢å‡ºæ‰‹äº¤èˆ‡å¦»å­ï¼Œè—在牀下一酒罈內。連日得æ„,夫妻ã€å¥³å…’三å£å¤šåƒäº†å¹¾æ¯ ,一覺ç¡ç†Ÿã€‚å»è¢«ä¸€å€‹å·å…’挖è½é–€è‡¼ï¼Œå°±æ˜¯è‡¥æˆ¿å»šç¶ã€‚周åœä¸€æ‘¸ï¼Œæ‘¸è‘—牀下兩個酒甕 。一個滿滿盛的是米,一個åŠç©ºä¸ç©ºï¼Œä¸Šé¢å£“著一塊大磚,中間ä¸çŸ¥ä½•物,一手摸下 ,拿著就走。將è¦å‡ºé–€ï¼Œç¥žå ‚å‰ä¸€å€‹é¦™çˆè·Œåœ¨é¦¬æ¡¶ä¸Šã€‚響亮一è²ï¼Œç‰€ä¸Šå¤«å¦»å…©å€‹ä¸€è¦º 驚醒,將壇å£ä¸€æ‘¸ï¼Œå¤§å«èµ·ä¾†ï¼Œè³Šå·²å޻得é äº†ã€‚正在喉急之際,劉公宅內催è¦å…©å€‹ä¸« 頭進去ä¼ä¾ï¼Œæ€¥å¾—敬山上天無路,人地無門。鄰èˆè¡—æ–¹å¨“å¨“å‚³èªªï¼Œå‰æ—¥ä¸«é ­åŽŸæ˜¯æŒ‡ç©º 騙的,銀å­å¤±å޻廿˜¯çœŸçš„。那管家ä¸å®¹å¯¬ç¸±ï¼Œä¸€ç›´æ‰­åˆ°èˆ¹ä¸ŠèªªçŸ¥åŽŸæ•…ã€‚åŠ‰å…¬å¤§æ€’ï¼Œå³ åˆ»ç™¼äº†å帖,é€åˆ°åºœè£¡è¿½è¦ä¸«é ­ã€‚敬山兩隻空拳,泥也æä¸æˆåœ˜ï¼Œå¦‚何措手?追出原 契,å»åˆè‘—è½ä¿é ­ä¸€ä¸€ä»£å„Ÿï¼Œä»èªªæ•¬å±±æ‹å¸¶å­å¥³ã€‚身在監中,敲撲ä¸éŽï¼Œä¹Ÿåªå¾—將自 己親女å二三歲,é€åˆ°èˆ¹å…§åšäº†ä½¿å¥³ã€‚也照顧清之一案,å•了站徒,é€åˆ°äº¬å£é©›åŽ»ã€‚ ä»èˆŠä½¿ä»–二人打個幫兒,在那å—北馬頭é€è¿Žå®˜é•·ï¼Œä¹Ÿä¸æž‰è€ç™½è³žé è‘—虎丘山得這一場 çµæžœã€‚至今說起,留了一個笑è²ã€‚〠總評蘇白賞佻é”尖酸,雖屬趣行,害åŒè™ºèœ´ï¼Œä¹ƒäººè‡ªçŸ¥ä¹‹è€Œè‡ªè¿·ä¹‹ã€‚則虎丘乃虎穴矣 ,何足為åå±±é‡ä¹Ÿã€‚è‰¾è¡²åæ¸¸æµ·å…§å山大å·ï¼Œæ¯æ¯ç•™è©©åˆ»è¨˜ï¼Œè© å˜†å…¶å¥‡ï¼Œä½•ç¨æ–¼å§‘蘇 å‹åœ°ï¼Œä¹ƒæ‘˜æ­¤ä¸€ç¨®ä¸è¶³æ£æ‘©ä¹‹äººï¼Ÿæ¥µæ„æœç¾…,æ£å£è«§è¬”。凡白賞外一切陋習醜態ã€å¯ 笑å¯é©šã€å¯æ†å¯é„™ä¹‹å½¢ç„¡ä¸æ·‹æ¼“æ´»ç¾ï¼Œå¦‚白賞諸入讀之,ä¸çŸ¥ä½•如切齒也。雖然,艾 衲言外自有深æ„存乎其間。 ç•«é¬¼è€…ä»¤äººç”Ÿæ‡¼å¿ƒï¼Œè¨­é˜±è€…ä»¤äººä½œé¿æƒ³ã€‚知之而ä¸è¿·ä¹‹ï¼Œæ­¤è¼©äººç„¡è™•生活,則自返浮 而樸,åå½ç‚ºçœŸã€‚後之游虎丘者,別有高人逸士相與往還,雪月風花當更開一生é¢çŸ£ 。雖日日éŠè™Žä¸˜ä¹Ÿä½•å‚·ï¼ ç¬¬å一則 é»¨éƒ½å¸æ­»æ¢Ÿç”Ÿé¦– è¾²å®¶ç¥æ­²ï¼Œå¿…曰有秋。何以ç¨èªªä¸€å€‹ã€Žç§‹ã€å­—?春天耕種,ä¸éŽèŠã€éº¥å…©ç¨®ï¼Œæ¿Ÿå¾—多 少?若到四五月,å¤å¤©è€˜è€¨æ™‚節,é‡è‘—天雨久澇,大水淹沒,或天晴亢旱,苗種乾枯 ,å分收拾便減五分也還好,è¶è‘—æœªç«‹ç§‹æ™‚å¦æŽ’è‹—ç§§ï¼Œæœ›é‚£ç§‹æˆçµå¯¦ã€‚若到秋來,水 大ä¸é€€ï¼Œæ—±ä¹…無雨,這便斷根絕命,沒得指望。所以è±å¹´å–®å–®é‡ä¸€ã€Žç§‹ã€å­—。張河陽 《田居詩》云:『日移亭åˆç†±ï¼Œé›¨æ‰“豆花涼。ã€å¯’å±±å­ã€Šè¾²å®¶ã€‹è©©äº‘:『紫雲堆裡田 禾足,白豆花開é›é¶©å¿™ã€‚ã€ç‚ºç”šéº¼èªªè‘—ç”°å®¶è©©åå說到這種白豆上?這種豆一邊開花 ,一邊çµå¯¦ã€‚此時åˆç§‹å¤©æ°£ï¼Œé›¨æ°´èª¿å‹»ï¼Œåªçœ‹è±†æ£šèŠ±ç››å°±æ˜¯è±ç†Ÿä¹‹å¹´ã€‚å¯è¦‹é€™å€‹è±†æ£š 也是關係著年歲的一行景物。當著此時,農莊家的工夫都已用就,åªè¦çœ‹é‚£ç”°é–“如雲 ä¼¼éŒ¦ï¼Œä¸æ—¥é–“『污邪滿車ã€ã€ã€Žç©°ç©°æ»¿å®¶ã€æ˜¯ç©©å¯¦çš„。大家å在棚下,心事都安閑自 在的了。若是è’亂之世,田地上都是蓬蒿野è‰ï¼Œé‚£è£¡é‚„有甚麼豆棚?如今豆棚下連日 說的都是太平無事的閑話,å»è¦‹ä¸–界承平久了,那些後生å°å­å»ä¸æ›‰å¾—亂離兵ç«ä¹‹è‹¦ ã€‚ä»Šæ—¥é‚„è«‹å‰æ—¥èªªæ›¸çš„è€è€…來,è¦ä»–將當日å—那亂離苦楚從頭說一é,也令這些後生 å°å­æ‰‹è£¡ç·´ç¿’些技è—,心上經識些智著。è¬ä¸€æ™‚å¹´ä¸ç†Ÿè½‰åˆ°è’亂時,也還有些巴攔, 有些擔架。眾人é“:『有ç†ï¼Œæœ‰ç†ã€‚我們就去請那è€è€…。ã€å»å¥½é‚£è€è€…是個訓蒙教授 ,許久在館未回。這日乘著風涼,回家探望。眾人請來棚下å定,就é“:『è€ä¼¯å¤šæ™‚ ä¸åœ¨ï¼Œè¦ºå¾—棚下甚是寂寞。雖有眾人說些故事,也ä¸éŽåšå¤é€šä»Šçš„常話。è€ä¼¯å¹´é½’高 大,èžå¾—當年曆éŽè¨±å¤šå…µè’é›¢äº‚ä¹‹è‹¦ã€‚è¦æ±‚把å‰äº‹æ•˜è¿°ä¸€ç•ªï¼Œä»¤å°å­å€‘è½è‘—ï¼Œç•¶æ­¤è± ç†Ÿä¹‹éš›ä¹Ÿä¸æ•¢ä½œè¸äº†äº”穀,蕩壞了身軀。ã€è€è€…é“:『若說起當åˆå…‰æ™¯ï¼Œä½ å€‘å»å”¬æ®º 也ï¼è¨˜å¾—è¬æ›†å››åå…«å¹´ï¼Œé¼æ±è®Šèµ·ã€‚泰昌一月短柞,轉了天啟登基,年紀尚å°ï¼Œç™¡ç™¡ 呆呆,ä¸çŸ¥ä¸€äº›ä¸–事。天下募兵å¾é¤‰ï¼Œè¢«é­å¤ªç›£å°‡å…§å¸‘弄得空空虛虛。彼時的åµé¬§é‚„ 在山海關外,內地尚自平éœã€‚䏿–™æ›äº†å´‡ç¦Žçš‡å¸ï¼Œä»–的命é‹è¶Šç™¼æ¯”天啟更低。é‡è‘—天 æ™‚ä¸æ˜¯é€£å¹´äº¢æ—±ï¼Œå°±æ˜¯å¤§æ°´æ©«æµï¼›ä¸æ˜¯ç˜Ÿç–«æ™‚行,就是è—蟲滿地。兼之賦性慳嗇,就 有那ä¸è«³ä¸–務的科官,åªåœ–逢迎上æ„,å¥äº†ä¸€æœ¬ï¼ŒæŠŠå¤©ä¸‹é©›å¤«é¦¬éŒ¢ç³§ç›¡è¡Œè£é©ã€‚使那 些游手無賴之徒絕了衣食,俱çµé»¨æˆç¾¤ï¼Œç‚ºèµ·ç›œä¾†ã€‚å§‹åˆäººä¹Ÿä¸å¤šï¼Œä¸éŽåšäº›éŸ¿é¦¬ï¼Œ 邀截客商,打æ‘劫èˆã€‚後來上官知é“,é£å…µç™¼é¦¬ï¼Œè­·è¡›åœ°æ–¹ã€‚這些盜黨或嘯èšå±±æž—, æˆ–åœ˜çµæ°´æ³Šã€‚é‚£æ™‚è‹¥å¾—ä¸€ä½æœ‰è†½å‹‡æ™ºè¬€çš„元戎出來招安,沒有在æœçš„官兒逼索他賄賂 ç•¶é“的上å¸ï¼ŒæŽ£è‚˜ä»–äº‹æ¬Šï¼Œä¹Ÿé‚„å®¹æ˜“æ¶ˆæ»…çš„ã€‚ä¸æ–™åœ‹é‹å°‡ä¿ƒï¼Œç”¨äº†ä¸€å€‹è¢å´‡ç…¥ï¼Œä½¿ä»– ç¶“ç•¥é¼æ±ã€‚先在æœå»·å‰èª‡å£èªªï¼Œäº”年之間便è¦å¥åŠŸï¼Œä½é‚£ç­–勛府第。 後來收局ä¸ä¾†ï¼Œå®šè¨ˆå…ˆæŠŠæ±æ±Ÿæ¯›å¸«æ®ºäº†ï¼Œç•™ä¸‹åƒé¤˜åŽŸå¾€é™è¥¿åŽ»è²·é¦¬çš„å…µä¸ï¼Œèžå¾—殺了 ä¸»å¸¥ä¹‹ä¿¡ï¼Œç„¡æ‰€ä¾æ­¸ï¼Œå°±åœ¨ä¸­é€”變亂起來。四下飢民雲從霧集,æˆäº†èŽ«å¤§ä¹‹å‹¢ã€‚æˆ–æ± æˆ–è¥¿ï¼Œæ²’æœ‰å®šæ­¢ï¼Œå«åæµè³Šã€‚在先也還有幾個頭腦å‡ä»ä»—義,騙著愚民。後來所到之 處,勢如破竹。關中左å³åœ°åœŸé¼é—Šï¼Œå„州府縣既無兵馬防守,åˆç„¡å±±éšªå¯æ“šï¼Œå¤±äº†æ±  æ‘鎮,æ¶äº†ç‰›é¦¬é ­ç•œã€‚ä¸è«–情輕情é‡ï¼Œæœå»·ç™¼ä¸‹å» è¡›ï¼Œç·¹é¨Žæ‰åŽ»ï¼Œå°±æŒ‰å¾‹æ“¬äº†é‡é—¢ï¼Œ 決ä¸å¾…時。 那些守土之官權衡利害,ä¸å¾—ä¸å¾žäº†æµè³Šï¼Œåšå€‹é ­ç›®å¿«æ´»å¹¾æ™‚,å³ä½¿æœ‰é‚£å®˜å…µåˆ°ä¾†ï¼Œ 乾得甚事。那時å¶ç„¶è·¯ä¸Šè¡Œèµ°ï¼Œå»è½å¾—ä¸€äººå”±è‘—ä¸€éš»é‚Šèª¿æ›²å…’ï¼Œä¹Ÿå°±æ›‰å¾—å¤©ä¸‹è¬æ°‘å—Ÿ 怨,如毀如焚,æ¨ä¸å¾—一時就è¦å¤©ç¿»åœ°è¦†ï¼Œæ–¹é‚那百姓的心願哩。他歌é“:「è€å¤©çˆº ,你年紀大,耳åˆè¾ä¾†çœ¼åˆèŠ±ã€‚ä½ çœ‹ä¸è¦‹äººï¼Œè½ä¸è¦‹è©±ï¼Œæ®ºäººæ”¾ç«çš„享著榮è¯ï¼Œåƒç´  看經的活活餓殺。è€å¤©çˆºï¼Œä½ ä¸æœƒåšå¤©ï¼Œä½ å¡Œäº†ç½·ï¼è€å¤©çˆºï¼Œä½ ä¸æœƒåšå¤©ï¼Œä½ å¡Œäº†ç½· ï¼ã€å››ä¸‹èµ·äº†ç‡Ÿé ­ï¼Œæžæ´¾é›–ä¸è¨˜æ¸…,那å字綽號也還çœå¾—,如:大傻å­åŠ‰é€šã€çŽ‹è€è™Ž 王國權ã€è€è¿´è¿´é¦¬é€²å­ã€éŽå¤©æ˜Ÿå¾ä¸–ç¦ã€é—–çŽ‹é«˜æ±æ™¯ã€é—–å°‡æŽè‡ªæˆã€æ²’鮿””é–»æ´ªã€æŽƒ 天王惠登相ã€å¹³ä¸–王賀景ã€é—–塌天韓國基ã€è‰å¤©çŽ‹è³€ä¸€é¾ã€æ··åè¬åŠ‰åœ‹é¾ã€æ´»é–»ç¾…馬 守應ã€ä¸€ç§¤é‡‘牛æˆè™Žã€è™Žæ‹‰æµ·èŒƒä¸–壽ã€è³½é‡‘剛薛有功ã€ç´…狼劉希堯ã€å·´å±±è™ŽæŽåœ’ã€è‰ 上飛å¾ä¸–寶ã€ç´«é‡‘æ¢é¦®é€²å­ã€é¬¼å­æ¯è‘£åœ‹è³¢ã€è‰è£¡çœ¼å­«ä»ã€é‡‘ç¿…é³¥çŽ‹åœ‹æ›œã€æ›¹æ“ç¾…æ± çº”ã€ä¹æ¢é¾éƒ­å¤§æˆã€ä¸€æ–—谷孫承æ©ã€ç¨è…³è™ŽåŠ‰èˆˆå­ã€é‡‘錢豹柳夫æˆã€èŽ½å¼µé£›æ¥Šä¸–å¨ã€ è å­å¡Šç™½å»£æ©ã€å…«å¤§çދ張ç»å¿ ã€æŽå…¬å­æŽåš´ã€é„§å¤©çŽ‹é„§å»·è‡£ã€é–»çŽ‹é¼»åŠ‰è¶Šã€é›²è£¡è™Žå¼µ 得功ã€ä¸‰çŒ´å…’æŽè¶…ã€è€ç•¶å®¶å¤ä¸€é­ã€‚許多頭目在那沒有城池ã€é„‰å…µã€å¯¨å ¡çš„地方,兵 馬一到,è€å°éš¨è‘—俱行。憑著力氣,æ¶å¾—驢馬,收得å°å­å¤šçš„ï¼Œå°±æ˜¯ç®¡éšŠã€‚å‡¡å››åæ­² 以上,ä¸è«–男婦一概殺了,åªç•™å二三歲到二å四五歲上下的當作寶è²ï¼Œæˆ–çµç¾©åšå¼Ÿ 兄,或拜èªä½œçˆ¶å­ã€‚ä½ é“他營中為何ä¸è¦é‚£è€æˆçš„?因他年紀大了,多有繫戀家å°è²¡ 產,æç”Ÿå¤–心。惟是這些å°å¤¥å­ï¼Œå¥®è‘—少年血氣,身家父æ¯ä¿±ç„¡ç½£ç¤™ï¼Œä¸çŸ¥å¤©é«˜åœ°åŽš 。é‡è‘—打仗,ä¸é¿åˆ©å®³ï¼Œå³ä½¿ç‚®ç«æ‰“來,壞了å‰é‚Šçš„,後邊的就湧上去。撞著堅厚城 池,å°å­å€‘拿著雲梯ã€é®é™½ã€æ’“鉤ã€å¥—索,æ­è‘—一個個扒頂而上。一日ä¸ç ´æ”»ä¸€æ—¥ï¼Œ åæ—¥ä¸ç ´æ”»åæ—¥ã€‚æ—¥é–“ä¸€éšŠä¸€éšŠæ›´ç¿»æ”»æ‰“ï¼Œå¤œé–“åˆæœ‰ä¸€ç­å°ˆæ‰’地洞的,在於城壕一二 里外,用著å·åœ°èœˆèš£ã€ç©¿å±±éµç”²ï¼Œç¹žåœ°è€Œé€²ï¼Œæˆ–到了一兩個空隙,加上炮ç«ï¼Œä¸€è²ç‚¸ 烈,登時城牆倒塌,一æ“入城。城內人民殺戮之外,剩下å°å­éƒ½çŽ‡é ˜è€ŒåŽ»ã€‚å§‹åˆç ´åŸŽ ï¼Œåªæ“„財帛婆姨;後來賊首有令,凡牲å£ä¸Šå¸¶éŠ€äº”åå…©ã€å…©å€‹å©†å§¨è€…å³è¡Œæ¢Ÿç¤ºã€‚殘破 地方拋棄的元寶ä¸è¨ˆå…¶æ•¸ã€‚有那貪心的åªå¥½æš—地埋è—ï¼Œè¨˜èªæ˜Žç™½ï¼Œå¸Œåœ–日後事平,掘 å–å—用。誰知性命ä¸ä¿ï¼Œé‚£è£¡è¼ªå¾—你著?日久埋沒,è½äººé€ åŒ–而已。 所以彼時å°å­çœ‹å¾—錢財如糞土一樣,åªè¦æ¶äº›åƒé£Ÿã€å©†å§¨ï¼Œç‹¼è—‰ä¸€ç•ªã€‚還有那å¿å¿ƒçš„ ,將有孕婦人暗猜肚中男女,剖看作樂。亦有刳割人的心肺,整串ç†ä¹¾ä»¥å‚™é–‘中下酒 。更有極刑慘刻如活å‰çš®ã€é‘¿çœ¼ç ã€å‰²é¼»å­ã€å‰æ‰‹è…•ã€åˆ–腳指,煅煉人的法兒ä¸çŸ¥å¤š å°‘ï¼åªå¥½ç²—æžå¤§è‘‰èªªäº›å…‰æ™¯ï¼Œå«äººåœ¨å¤ªå¹³æ™‚節想那亂離苦楚,凡事俱è¦ä¿®çœé€€æ‚”一番 ã€‚å‰æ—¥æœ‰å€‹å®¢äººå¾žé™è¥¿ã€æ²³å—一路回到湖廣地方,é‡è‘—è¡Œäººå¾€å¾€æœ‰å‰²åŽ»é¼»è€³çš„ï¼Œæœ‰å‰ åŽ»å…©æ‰‹çš„ï¼Œè¦‹äº†å¥½ä¸å¯’心。後來見得多了,ä¸ç”šå¸Œç½•。更有一個å—傷之人,說來人也 ä¸ä¿¡ã€‚大凡人的耳目å£é¼»æ‰‹è¶³å››è‚¢æœ‰äº›æ®˜ç¼ºï¼Œé‚„ä¸å‚·å‘½ï¼›åªé‚£é ¸é¡±ç äº†ï¼Œç™»æ™‚便死, 沒甚麼法兒補救得的。 有個人å»åœ¨æ²³å—åºœæ´›é™½ç¸£åœ°æ–¹è’æ‘å°éŽ®ä¹‹ä¸Šï¼Œå¶ç„¶é¨Žè‘—牲å£èµ°åˆ°å½¼è™•,é‡è‘—疾風暴雨 ,無處躲閃,è¦å€Ÿäººå®¶å±‹ç°·ä¹‹ä¸‹æš«æ™‚é¿é›¨ã€‚䏿–™å¤§é›¨æ»‚沱,到晚ä¸ä½ï¼Œåªå¾—è¦æ±‚人家 屋內借宿。裡邊走出個è€è€…é“:「屋宇è¸å°ï¼Œä¸æ•¢ç›¸ç•™ã€‚é ˆå¾€å‰æ‘二三å里方有歇店 。ã€é‚£å®¢äººå› å¤©è‰²æ¼¸æ™šï¼Œä¸ä¾¿è¶²ç¨‹ï¼Œçœ‹è¦‹è€è€…家裡尚有å´å±‹äºŒé–“空閑閉著,å†ä¸‰ç›¸æ‡‡ 。那è€è€…é“ï¼šã€Œå´æˆ¿é›–是空的,客官借宿何難?此中有個èˆå¼Ÿåœ¨å…§ï¼Œä¸ä¾¿åŒå±…。ã€å®¢ 人é“:「既是令弟單身在內,有何ä¸ä¾¿ï¼Ÿã€è€è€…é“:「窮途相值也是奇緣,但你見了 ä¸è¦å®³æ€•。ã€å®¢äººé“:「我也在江湖上走了一二å年,隨你甚麼尊官貴客ã€çª®å‡¶æ¥µæƒ¡ 之人,何處ä¸é‡ï¼Ÿæ€Žä¾¿åˆ°ä½ å®…上就害怕起來?ã€å˜´è£¡ä¸€é ­èªªï¼Œè…³ä¸‹ä¸€é ­èµ°ã€‚å°‡åŠå´é–€ ,è€è€…輕輕å©äº†ä¸€è²ï¼Œè£¡é‚ŠéŸ¿å‹•,把門閂拔脫,一手推開。客人隨著è€è€…進內,猛然 抬頭一看,åªè¦‹é–€å·¦å´ç«™è‘—一個沒頭的人。那客人一見就大è²å«é“:「ä¸å¥½ï¼Œæœ‰é¬¼ï¼Œ 有鬼ï¼ã€å£å°šå¼µè‘—,未曾åˆé–‰ï¼Œå…©è…³ä¹Ÿå°±å€’下地去。è€è€…連忙扶起é“:「é å…ˆæˆ‘已說 明莫è¦å®³æ€•,你也å£å¼·èªªé“䏿€•,如何便怕到這個地ä½ï¼Ÿã€é‚£å®¢äººå‘†äº†åŠæ™Œï¼Œå•é“: 「怎麼原故?ã€è€è€…é“:「你且å定,待我慢慢說與你è½ã€‚ã€ä¸€æ‰‹æŒ‡è‘—沒頭人é“:「 這個èˆå¼Ÿå‘在潼關賣布生ç†ã€‚å‰å¹´è¢«æµè³Šä¸€è·¯è¿½è¶•é€ƒå›žï¼Œä¸æ–™åˆ°å®¶åªé›¢å¾—三åé‡Œåœ°é¢ ï¼Œå»è¢«åœŸè³Šå¾žæ—殺出,把èˆå¼Ÿä¸€åˆ€å°‡é ­ç è½ï¼Œå€’在地上。夜間就有許多豺狼把死å±ä¸€ åŠæ®˜é£Ÿã€‚將次食到弟å±ï¼Œé‚£é­‚éˆåªè½å¾—耳邊一è²å–é“:『畜生快走ï¼ç£é™£åŠŸæ›¹å°šæœªæŸ¥ 勘,如何就食ï¼ã€å°‘é–“å»è¦‹è¨±å¤šäººé¦¬ç°‡æ“而來,將陣上傷亡一一照åé©—éŽã€‚點到èˆå¼Ÿ ,簿上無å,æ›å€‹ç°¿å­æŸ¥çœ‹ï¼Œä¹ƒæ˜¯å—傷䏿­»ï¼Œå°šæœ‰é™½å£½å››è¼‰ã€‚ 次日èˆå¼Ÿå¿ƒä¸Šå»å°±æ˜Žç™½èµ·ä¾†ï¼Œå°‡æ‰‹æ‘¸é‚£é ­æ™‚ï¼Œåªæœ‰ä¸€æ¢é ¸éª¨æŒºå‡ºåœ¨å¤–。是夜我尚躲在 æ‘中僻處,å»è½è¦‹æœ‰äººå©é–€ï¼Œä¹ƒæ˜¯èˆå¼Ÿè²éŸ³ã€‚è’æ‘中åˆç„¡ç‡ˆç«ï¼Œåªå¾—從黑影å­è£¡æ‰¶é€² å±‹å…§ã€‚ä»–å°±å°‡å‰æ‘é‡å®³ç·£æ•…說得明明白白,挨到天亮,見是沒頭的;å»åŽŸä¾†èˆ‡æ²’é ­çš„ 說了åŠå¤œã€‚å§‹åˆä¹Ÿåƒäº†ä¸€é©šï¼Œåªè¦‹èº«é«”尚暖,手足ä¸åƒµï¼Œå–‰åš¨ç®¡å…§å”§å”§æœ‰è²ï¼Œå°‡éºµé¤¬ ã€ç±³æ¹¯èŒ¶åŒ™æŒ‘進,約åŠé£½äº†ä¾¿æ²’è²æ¯ï¼Œå¦‚此年餘。近來學得一件織席技è—,日日åšä¾† ï¼Œè³£äº›éŒ¢ç±³ï¼Œåˆ°ä¹Ÿåº¦éŽæ—¥å­ã€‚ã€å®¢äººè½è¦‹èªªå¾—明白,心下方安。畢竟是那脫惺忪,一 å¤œä¸æ•¢ç¡è‘—,到底是個「怕ã€å­—。這也是å¤ä»Šä¾†çš„å¥‡äº‹ï¼Œèªªåšæ´»äººä¸å¾—ï¼Œèªªåšæ­»äººä¹Ÿ ä¸å¾—。如今å†èªªä¸€å€‹åˆ†æ˜Žæ˜¯æ­»äººï¼Œåˆ°åšäº†æ´»äººçš„事。此事å»åœ¨é™è¥¿å»¶å®‰åºœå®‰å¡žç¸£åœ°æ–¹ ,姓黨å一元。生平性å­å‰›ç›´ï¼Œè†‚力éŽäººï¼Œå®¶æ¥­ä¹Ÿæ¥µè±è¶³ã€‚地方上有那強æ¢éœ¸é“的人 åšé‚£ä¸å…¬ä¸æ³•的事,他也就去剪除了他。 凡有貧窮?難之人,他便æè²»è³‡è²¡ï¼Œç«‹ç‚ºææŒˆã€‚é è¿‘æ‘åŠä¿±æ„Ÿæ¿€ä»–的義氣。一兩年, 處處仰慕他的è²åï¼Œä¸æ¸›å¤ªå¹³èŽŠä¸ŠæŸ´å¤§å®˜ï¼Œé„†åŸŽç¸£çš„å®‹æŠ¼å¸äº†ã€‚此時æµå¯‡å°šæœªå……斥, å·žç¸£åœ°æ–¹èžæœ‰è³Šè­¦ï¼Œé„‰ç´³å£«åº¶ä¿±å„糾集莊ä¸ï¼ŒæŽªè¾¦æœˆç³§ã€å™¨æ¢°ï¼Œä»¥ç‚ºå›ºå®ˆä¹‹è¨ˆã€‚ 上å¸åˆææ°‘間有那ä¸è»Œä¹‹å¾’乘機生變,也就上了一本:凡æµè³Šè ¢å‹•地方,俱è¦èˆ‰ä¸€æ™º 力兼備之人在郡城立為都統,州縣立為團練,æ‘堡鎮寨立為防守;俱å„從公é¸èˆ‰ï¼Œè‹¥ 纔行ä¸è¶³çš„ï¼Œä¹Ÿå°±ä¸æ•¢æ“”當。那時æœå»·å…¬ä»¤é›–åš´ï¼Œä¸–é¢¨æƒ¡ä¿æœ‰å‰ç¨‹çš„åšå®˜ï¼Œå°šè¦è²»è¨± 多資財,若沒å‰ç¨‹çš„百姓,夢也夢ä¸è¦‹äº†ã€‚䏿–™æ™‚下有團練之舉,人頭上也就當åšçœŸ 正官è·ä¸€èˆ¬ã€‚彼時公é“在人,地方紳衿ä¿ç”²é½Šè²æŽ¨è–¦é»¨ä¸€å…ƒå ªç•¶æ­¤ä»»ã€‚文書申上,撫 按å¸é“å³ä¾¿ç™¼è½ï¼Œé»¨ä¸€å…ƒä¹Ÿå°±æ‰¿å…¶è·ä»»ã€‚凡一應城守事務,調åœè¨­å‚™ï¼Œä¿±å„å¾—å®œï¼Œä¸ åœ¨è©±ä¸‹ã€‚ã€Žå»èªªå»¶å®‰åºœæ¸…澗縣也有個團練,姓å—åæ­£ä¸­ï¼Œä¹ƒæ˜¯é„‰ç´³å­å¼Ÿï¼Œå®¶æ¥­å¯ŒåŽšï¼Œ 通縣稱為巨æ—ã€‚å¹³æ—¥å¥½å¼„æ§æ£’,行些å‡ä»ä»—ç¾©ä¹‹äº‹ã€‚åªæ˜¯å¿ƒæ€§å¥½æ·«ï¼Œè¦‹äº†äººå®¶ç¾Žè‰²å©¦ 女,å»ä¾¿é­‚ä¸é™„體,ä¸è«–錢財,畢竟è¦å¼„到手方ç¥è‹¥è«–其素行,怎麼將團練舉他?因 他平日專好çµè­˜å¸‚äº•ç„¡è³´å°æ°‘,地方æ‘éŽ®ç¨æœ‰ä¸å¹³ï¼Œä¾¿æˆç¾¤èšé»¨æ”ªåœ°ç¿»å¤©èµ·ä¾†ï¼Œä¾è‘— 他的行為方罷。故此地方上大大å°å°éƒ½æ˜¯æ‡¼æ€•他的,背後起他一個綽號,å«åšèŠ±èŠ±å¤ª 歲。這個團練之è·ï¼Œé™¤äº†æ­¤å›ï¼Œåˆ¥äººä¹Ÿä¸æ•¢æŒ‡æœ›ã€‚ 一日å©å’人城外打掃演武廳,é¸äº†æ—¥å­æ“ç·´èŽŠå®æ¥µæ—©å‚™äº†é®®æ˜Žæ——幟ã€é‹’利刀æ§ï¼Œå¤§å¹ 大擂,擺列行五,一路整齊迎到教場內去。那些鄉民å»å¾žä¾†æœªæ›¾ç¶“見,有在市上ä½çš„ ,é å…ˆè«‹äº†è¦ªçœ·ä½åœ¨å®¶è£¡ï¼Œé–€å‰åž‚了簾兒,看那行兵è€å­ã€‚䏿–™å—團練å在馬上,舉 頭望進簾內,見了一個如花似玉的女人。團練å³ä¾¿å‹’ä½äº†é¦¬ï¼Œæ•…æ„é“:「å‰éšŠå…µä¸å¦‚ 何稀少?ã€å¿™å«ç‡Ÿä¸­å­—è­˜å–那冊來查點,å©å’地方速備åœå±å…¬åº§ï¼Œç·Šç·Šå°è‘—簾內。擺 設åœç•¶ï¼Œä¸‹é¦¬å定,å«é‚£å­—識,é€åå”±éŽã€‚那團練一眼åªå°„在簾內,åšå‡ºè¨±å¤šèº«æ®µè³£ 弄風騷,到費了兩三個時辰纔到教場內去,也ä¸éŽè™›æ‡‰æ•…事,å³ä¾¿å›žè¡™ã€‚眠æ€å¤¢æƒ³ï¼Œ æ­£æ²’å°‹å€‹é ­è·¯ï¼Œå»æœ‰é–€ä¸‹ä¸€å€‹ä¼´ç•¶é ­æŽä¸‰ï¼Œç¶½è™Ÿå«åšéµè£¡è›€èŸ²ï¼Œæ›‰å¾—æœ¬å®˜æ„æ€ï¼Œå³ä¾¿ 摘了兩朵玫瑰花,故æ„走到本官å‰é“:「å°çš„å¶åœ¨å‰è¡—張鄉宦宅內彩來,一朵進ç»è€ 爺,一朵進上奶奶。「團練é“:ã€ä¸‰å››ä½å¥¶å¥¶ä¸€æœµæ€Žå¤ ï¼Ÿã€æŽä¸‰é“:「這花ä¸èƒ½å¤šå¾— ,è€çˆºåªå¥½é€å¾—æ„的一ä½å¥¶å¥¶æˆ´ç½·ï¼ã€åœ˜ç·´é“:「有甚麼得æ„çš„ï¼æ˜¨æ—¥æˆ‘到看見一個 å分得æ„,å»é›£å¾—åˆ°æ‰‹ã€‚ã€æŽä¸‰ä½¯ä½œä¸çŸ¥ï¼Œå•é“:「ä½åœ¨ä½•處?ã€åœ˜ç·´å°±æŠŠç°¾å…§ä½è™• 說知。æŽä¸‰é“:「å°çš„æ›‰å¾—了這是本縣儒學齋長朱伯甫相公之妻黨æ°ï¼Œå°±æ˜¯é»¨åœ˜ç·´çš„ 妹å­ã€‚如何能夠到手?ã€åœ˜ç·´é“:「你為我設一計策,é‡é‡è³žä½ ï¼ã€æŽä¸‰è²ªè‘—é‡è³žå·¦ æ€å³ç®—,想了一回é“:「容å°çš„三日後來回話。ã€åœ˜ç·´ä¾¿æ¬£æ¬£ç¬‘é“「我心裡如熱é‹ç¶ 上螞蟻,æ¨ä¸ä»Šæ—¥å°±ä¾†å›žèªªçº”好ï¼ã€æŽä¸‰éš¨å£æ‡‰è‘—,å³ä¾¿èµ°å‡ºå®…門。打è½å¾—朱伯甫平 素好酒賭錢,æŽä¸‰å°±å¸¶äº†å¹¾å貫錢,尋到彼處,與他相賭。故æ„賣個撒漫,勾引著他 åŒåŽ»è¦‹é‚£åœ˜ç·´ï¼Œå¾€ä¾†å»å¥½æ˜¯ä¸‰æ—¥ã€‚團練正在懷想之際,æŽä¸‰å…ˆé€²åŽ»é™„è€³ä½Žè²ï¼Œå¦‚此如 此。團練一見朱伯甫果然是個酒糟頭沒莑的朋å‹ï¼Œå³ä¾¿ç•™èŒ¶ï¼Œç¨±è´Šäº†è¨±å¤šï¼Œé“èˆä¸‹å°‘ 一ä½å¹•賓相公。立刻備了齊整è˜ç¦®ï¼Œå³æ—¥èµ·é¤¨ã€‚åˆå¾ŒæŽ’了極盛酒席,與他痛飲,直到 五更。朱伯甫心中å分快活,次日å³å°‡è˜ç¦®é€èˆ‡æŽä¸‰ä½œé…¬ã€‚ä½äº†ä¸‰å››æ—¥ï¼Œæœ±ä¼¯ç”«å»è¦ å›žå®¶èªªçŸ¥ï¼Œä¹Ÿå°±è¦æ–™ç†äº›å®‰å®¶ç³§é£Ÿã€‚團練é“:「我知兄有內顧,早已著人é€åŽ»ã€‚è‹¥ä¸ æ£„æˆ‘æ­¦é€”å‡ºèº«ï¼Œå°±ä»Šæ—¥èˆ‡è€å…„çµç¾©ï¼Œæ‹œäº†å…„弟,尊嫂å³è«‹åˆ°èˆä¸‹åŒä½ï¼Œè±ˆä¸å…©ä¾¿ï¼Ÿã€ 伯甫乃是糊塗糟鬼,å³ä¾¿æ‡‰æ‰¿ï¼Œå°±å«æŽä¸‰åˆ°å®¶èˆ‡æœ±å®…娘å­èªªçŸ¥ã€‚娘å­é“ï¼šã€Žæˆ‘å‰æ—¥åœ¨ é–€é¦–çœ‹è¦‹åœ˜ç·´èˆ‰å‹•è¼•è¼•ç‹‚ç‹‚ï¼Œåªæ€•到宅åŒä½ï¼Œå»æ˜¯ä¸ä¾¿ã€‚ä¸è‹¥æˆ‘在城內èˆè¦ªè™•è¦“é–“å° æˆ¿ï¼Œèˆ‡å®…å…§ç›¸è¿‘äº›ç½·äº†ã€‚ã€æŽä¸‰è¦‹å¨˜å­å¦‚此說話,å»è±¡æœ‰ä¸‰åˆ†çŸ¥è¦ºçš„,若說得太緊, ä¸è‚¯é€²åŸŽï¼Œå»ä¸èª¤äº‹ï¼Ÿåªå¾—å«ç³Šæ‡‰å…。一é¢å‚™äº†è»Šå…’è£è¼‰äº›è¦ç·Šå®¶å¤¥ï¼Œåˆ°åŸŽä¸­è¦ªçœ·è™• ä½ä¸‹ã€‚團練看得光景å分寬緩,å³ä¾¿åŒäº†æœ±ä¼¯ç”«éŽé–€é‚€è«‹ã€‚èªªæ˜¯é€šå®¶ç›Ÿå¼Ÿå…„å«‚ï¼Œå¿…è¦ è«‹è¦‹ã€‚æœ±ä¼¯ç”«ä¹Ÿæ”›æŽ‡å¨˜å­å‡ºä¾†è¦‹äº†ã€‚團練å‡è£å‡ºååˆ†è€æˆæ­æ•¬ï¼Œé»¨æ°ä¸è¦ºå¢®å…¶è¡“中, ä¾ä»–æ¬åˆ°å®…內。供給周全,自ä¸å¿…說。å»å°±æœ‰äº›çœ‰ä¾†çœ¼åŽ»ï¼Œé»¨æ°ä¹Ÿä¸åœ¨æ„。éŽäº†æ•¸æ—¥ ,æŽä¸‰å»é£å¦»å­æ”œäº†é…’盒,å‡ä»¥æŽ¢æœ›ç‚ºç”±ï¼Œåƒé…’中間露些風情說話。 娘於è½å¾—ä¸ç”šè€ç…©ï¼Œä¸è¨€ä¸èªžã€‚æŽä¸‰å¦»å­åªé“å¨˜å­æœ‰æš—å…之æ„,乘著酒æ„å°‡åœ˜ç·´æ€æ…• ã€è¨­å±€ç©¢ä¾†ä¹‹æ„,一一說個詳悉。袖中拿出一æžé‡‘鑲碧玉æ”é ­ã€ç™½çމåŒå¿ƒçµä¸€æžšéžèˆ‡ 黨æ°ã€‚黨æ°å¿ƒçŸ¥æ˜¯è¨ˆï¼Œä¹Ÿä¸æŽ¨è¾­ï¼Œä¸”留在手中åšå€‹æŒ‡è­‰ã€‚å³å–šä¸ˆå¤«å‡ºä¾†ï¼Œå•†é‡æ—©æ—©è„« 身。無如伯甫å£å˜´è‚¥ç”œï¼Œä¸€å¿ƒä¿¡é“åœ˜ç·´æ˜¯å€‹å¥½äººï¼ŒåæŠŠå¦»å­ç½µå€‹ä¸è³¢ä¸æ…§ï¼Œç”Ÿå‡ºäº‹ä¾† 。黨æ°ç„¡è¨ˆå¯æ–½ï¼Œåªå¾—寫了一書,將å‰å¾Œæƒ…節通知哥哥黨團練處。ã€ã€Žé»¨åœ˜ç·´èžçŸ¥æ­¤ 信,怒è¡å† ï¼Œå¿ƒä¸‹æƒ³äº†ä¸€æƒ³é“:「三日後新總ç£è€çˆºåˆ°ä»»ï¼Œä»–å¿…åŒæˆ‘一處迎接。ã€ä¹˜ è‘—ç©ºéš™ï¼Œå¯†å¯†å·®äº†åæ•¸å伴當,帶了馬騾,相隔ä¸éŽäºŒç™¾é¤˜é‡Œï¼Œç«é€Ÿå°±åˆ°ã€‚進了å—å®… å¤§é–€ï¼Œé–€ä¸Šç‰¢å­æ””æ“‹ä¸ä½ï¼Œç›´å…¥èŠ±åœ’ä¹‹å…§ï¼Œç«Ÿå°‡å¨˜æ–¼æ”™æ‰¶ä¸Šé¦¬ã€‚é‚£é…’å¾’æœ±ä¼¯ç”«å°šåœ¨é†‰ 鄉,也ä¸ç®¡ä»–,竟自出門來了。宅內登時差人報與å—團練知é“,彼時就在接官亭上與 黨團練爭嚷起來。åŒåƒšç›¸å‹¸å°šæœªæ¯å£ï¼ŒæŽä¸‰ä¸€é¦¬å°±è·‘到黨宅å‰å¾ŒæŽ¢è½å¨˜å­ä¸‹è½ã€‚å—團 練也ä¸å›žå®¶ï¼Œå¸¶äº†äºŒä¸‰ç™¾å€‹å¥ä¸ï¼Œå‡ºå…¶ä¸æ„ç«Ÿåˆ°é»¨å®…æŠŠå¨˜å­æ¶äº†ä¾¿è¡Œã€‚é»¨åœ˜ç·´è·¯ä¸Šèž çŸ¥ï¼Œå³å¸¶éš¨å¾žä¸å¤šå…µä¸ï¼Œç™»æ™‚追去百里之外,狹路相湊,打了一仗。黨團練膽勇éŽäºº ï¼ŒåæŠŠå—處人馬傷了許多。å—åœ˜ç·´ç„¡å¿ƒæ¦æˆ°ï¼ŒåªæŠ±è‘—娘å­å…ˆè·‘。娘於看見ä»è½è³Šæ‰‹ï¼Œ 披顛狂,罵ä¸çµ•å£ã€‚轉到陡險山å¡ï¼Œå°‡èº«äº‚迸,馬忽驚跳,å—團練手腳略鬆,娘å­å¢® è½é‡å´–ã€‚å¯æ†ä¸€å€‹å¦‚花似玉之人眼見得粉憔玉碎,å—團練抱æ¨ä¸å·²ã€‚黨團練知é“å¦¹å­ å…¨ç¯€è€Œæ­»ï¼Œå³åœ¨ç£è‡ºä¸‹é¦¬æ”¾å‘Šä¹‹æ—¥ï¼Œå¯«ç‹€ä¸¦æœ±ä¼¯ç”«ä¸€é½Šå‘Šå‡†ã€‚ç£è‡ºçœ‹è¦‹ç‹€ä¸Šæƒ…ç¯€ï¼Œæ‹ æ¡ˆå¤§æ€’ï¼Œç«‹åˆ»å·®äº†å…«å€‹æ——ç‰Œæ‰¾æ‹¿ã€‚å—團練自æ£ç½ªå­½é‡å¤§ï¼Œå°é ­åˆç‹ ï¼Œå¾Œä¾†æ”¶æ‹¾ä¸ä¾†ã€‚ å¹³æ—¥å¼·æ©«éœ¸é“æ…£çš„,å‘來原有åå›ä¹‹å¿ƒï¼Œä»Šæœæ”¢ä¿ƒæ”來無計å¯è„«ã€‚é‚£éµè£¡è›€èŸ²åˆåœ¨å‚ å分挑激,é‚é–‹è²é“:「å了罷ï¼ã€é‚£äº›æ‰‹ä¸‹å…µä¸ä¼¼è™Žå¦‚狼的一哄,就起先把本縣知 縣殺了,劫了庫è—,燒了城摟。一路逢人就殺,怕殺的一路就跟隨了許多。æç£æ—©å·² 知é“,點兵發馬,就把黨團練加昇都å¸ï¼Œå·®ä»–領了二åƒå…µä¸ï¼Œä¸Šå‰æ’²å‰¿ã€‚å—團練å餘 日間就æ“了六七åƒäººé¦¬ï¼Œé›–則人眾,其實難民居多。日間放æ¶ï¼Œå¤œé–“åˆæ€•官兵趕來, æ™å¤œä¸ç¡ï¼Œå»éƒ½æ˜¯ç–²å€¦çš„,怎當得黨都å¸å¥®å‹‡ç•¶å…ˆï¼Ÿéƒ¨ä¸‹åˆæ˜¯ç·´ç†Ÿäººé¦¬ï¼Œä¸€é½ŠæŠ„å‡ºå° è·¯ï¼Œå…©ä¸‹æ’žè‘—å¤§ç ä¸€ç•ªï¼Œå°‡å—團練的兵馬殺了å之六七。負傷大敗,領了殘兵逃入深 山躲é¿ï¼Œæ•´æ•´é¤“äº†ä¸ƒæ—¥ã€‚ä¸æ–™æŽä¸‰èµ·æ‰‹ä¹‹æ™‚,就將本城內所æ¶è¼œé‡å¸¶äº†è¨±å¤šç‰›é¦¬ï¼Œå‰ å¾€æµè³Šè€è¿´è¿´ç‡Ÿä¸­ï¼Œå…ˆå·²æŠ•順,åšå€‹å®¶ç•¶åœ¨å½¼ã€‚èžå¾—å—åœ˜ç·´è¢«å®˜å…µæ®ºæ•—èº²åœ¨å±±ä¸­ï¼Œå³ ä¾¿è«‹äº†äº”åƒè³Šé»¨ï¼ŒæŠ¬ç‡Ÿå‰ä¾†æŽ¥æ‡‰ã€‚å—團練得這救兵解了é‡åœï¼Œå³æŠ•入賊營,åšå€‹å‰éšŠ 。〠黨都å¸å¾—了大æ·ï¼Œç£è‡ºç”šæ˜¯å–œæ­¡ã€‚æ­£åœ¨ä¼‘æ¯ä¹‹éš›ï¼Œå¿½å ±è³Šå…µå·²æŠµç•Œä¸Šï¼Œä»å¾©ç–¾å¿™æŠ«æŽ› ,領兵應敵。åªè¦‹æœ‰è³Šå…µåƒé¤˜åœ¨å‰èª˜æ•µï¼Œé»¨éƒ½å¸ä¸çŸ¥æ˜¯è¨ˆï¼Œå¥®åŠ›è¿½ä¸Šã€‚è½‰éŽæ¨¹æž—深處 ,四é¢ç›¡æ˜¯ç å€’樹æžå¡žè‘—去路,急待迴è»ï¼Œé‚£è³Šå…µæ¼«å±±é野而來。黨都å¸é€žè‘—雄å¨ï¼Œ 左沖å³çªï¼Œæ±æ“‹è¥¿æªã€‚é›–å‰‡æ®ºäº†å¤šäººï¼Œè‡ªå·³ç‰Œæ®ºåˆ°é…‰åˆ»ï¼Œçµ‚æ˜¯æ°£åŠ›æœ‰ç›¡ï¼Œä¸æ–™é¨«æ¹Šå±± 凹之處,馬足一蹷墮è½å´–中。è‰çª è£¡ä¼¸å‡ºè¨±å¤šæ’“鉤,將黨都å¸ç¶‘困*縛而去。解到營 內,正當è€è¿´è¿´æ˜‡å¸³ã€‚é é æœ›è¦‹è§£é€²ï¼Œå³ä¾¿ä¸‹ä½è¦ªè§£å…¶ç¸›ï¼Œå£å£å«é“:「哥哥,弟有 罪了ï¼ã€é»¨éƒ½å¸å¿ çƒˆæˆæ€§ï¼Œæ€’目張牙,大è²ç½µé“ï¼šã€Œé€†ï¼Œé€†è³Šï¼æœå»·ä½•負於你?如此 跳樑,且åˆè­·åº‡æ·«æƒ¡ä¹‹è³Šï¼Œç„¡ç«¯æ“¾å®³åœ°æ–¹ï¼Ÿå¤§å…µä¸æ—¥å‰¿é™¤ï¼Œå°šä¸çŸ¥æ­»ï¼ã€å¼µæ‹³å°±æ‰“, å»è¢«å…©é‚Šç‰™çˆªä¸Šå‰æ“ ç¥é»¨éƒ½å¸å›žèº«ä¸€è‚˜ï¼Œå¹¾å€‹æŽ€ç¿»ã€‚è€è¿´è¿´å–é“:「左å³èˆ‡æˆ‘ä¾èˆŠæ† 了,發到å‰çš®äº­ä¸Šï¼Œå°±å·®å—團練細細擺佈他罷。ã€å—團練得了這å¥ï¼Œå°±åƒå¥‰äº†è–旨一 般,æ›äº†ä¸€ä»¶ç´…è¢ï¼Œå©å’手下襬了公座。兩ç­ç‰¢å­å¤§è²å–èµ·å ‚ä¾†ï¼Œå°‡é»¨éƒ½å¸æŒ½é€²ç‡Ÿä¾† ,è¦ä»–ä¸‹è·ªï¼Œé»¨éƒ½å¸æŒºèº«ç½µä¸çµ•å£ã€‚å—åœ˜ç·´æ•…æ„æ–æ–æ“ºæ“ºï¼Œåšé‚£å¾—æ„å½¢ç‹€ï¼Œä¸Šå‰æ•¸æ•¸ è½è½ã€‚黨都å¸å°‡è‡ªå·±èˆŒé ­åš¼å¾—粉碎照臉噴去。å—團練掩了é¢å£ï¼Œå¾©åŽ»å在ä½ä¸Šï¼Œç½µé“ :「你如此性烈,如今æ’翅難飛,少ä¸å¾—å—æˆ‘磨折。ã€è¨€æœªäº†ï¼Œé‚£é»¨éƒ½å¸å’½å–‰æ°£çµ•, 覺得怒氣尚然未平。左å³å ±é“:「黨都å¸å·²æ­»ï¼Œæ‰‹è¶³å¦‚冰。ã€å—團練å¾å¾èµ°è¿‘å‰ä¾†ï¼Œ 上下摸看,果然死了。忙å«å·¦å³å‚™èµ·å¹¾æ¡Œé…’席,請了許多弟兄,開懷åƒå€‹å¾—å‹ä¹‹æ¯ã€‚ 一邊å«äººå°‡é»¨éƒ½å¸é¨Žçš„馬æ”å°‡éŽä¾†ï¼Œæ‰¶ä»–å±é¦–å在馬上,那å£é›ç¿Žåˆ€ä¹Ÿæ’在他懷裡, 然後大å¹å¤§æ“‚起來。å—團練手æŒä¸€æ¯ï¼Œèµ°åˆ°é»¨éƒ½å¸å±å‰ç½µé“,「黨賊,你往日英雄何 在?今日也死在我手ï¼ã€å°‡é…’æ¯å¾€ä»–臉上一澆,ä¾èˆŠè½‰èº«å°‡å¾€ä¸Šèµ°ã€‚å£ä¸­é›–說,心下 å»ä¸å ¤é˜²ã€‚䏿–™é‚£é¦¬ç¸±èµ·èº«ä¾†ï¼Œå°‡é ˜é¬ƒä¸€æŠ–大嘶一è²ï¼Œé»¨éƒ½å¸çœ‰æ¯›è±Žäº†å¹¾è±Žï¼Œä¸€æ‰‹å°± 把懷中所æ’之刀掣在手內。兩邊盡é“ï¼šã€Œé»¨éƒ½å¸æ´»äº†ï¼é»¨éƒ½å¸æ´»äº†ï¼ã€å—團練急回頭 看時,那雪亮的刀尖往上一幌,ä¸è¦ºå—團練之頭早已è½åœ°ã€‚眾人åƒäº†ä¸€è«’,黨都å¸åƒµ 立之å±çº”仆倒在地。那馬猛然一èºè€Œèµ·ï¼Œæ²–出營門,正撞æŽä¸‰é¨Žé¦¬å›žä¾†ï¼Œå»ç•¶é¢ä¸€å£ 把æŽä¸‰å’¬ç¿»åœ¨åœ°ï¼Œå¿ƒé ­è¸¢äº†å¹¾è¸¢ï¼Œçœ¼è¦‹æŽä¸‰å·²æ­»ï¼Œé‚£é¦¬è·³äº†å¹¾è·³ä¹Ÿå°±æ­»äº†ã€‚çœ¾äººç›¡é“ ï¼šã€Œå¿ è‡£ç¾©å£«ä¹‹é­‚è‡³æ­»ä¸è®Šï¼Œèªªå·²æ­»äº†å°šä¸”如此,英éˆå ±äº†ä»‡åŽ»ã€‚é€™å€‹äººæ¯”é‚£æ­»ä½œåŽ² 鬼殺賊更爽快許多了。ã€è€è¿´è¿´çœ‹è¦‹è‹±é­‚如此猛烈,也就退兵而去。後來世界平盡, 屢屢顯éˆï¼Œè‡³ä»Šè“‹å€‹å»Ÿå®‡ï¼Œé¦™ç«ä¸çµ•。起åˆèªªçš„æ˜¯æ´»äººåšæ­»äººçš„äº‹ï¼Œé€™å›žèªªçš„æ­»äººåš æ´»äººçš„äº‹ã€‚å¯è¦‹äº‚離之世異事頗多。 彼時曾見éŽäº‚世的已被殺去,在世的未曾經見,所以淹沒,無人說åŠã€‚åªæœ‰åœ¨ä¸‹é‚„ç•™ å¾—é€™æ®˜å–˜ï¼Œå°šåœ¨è±†æ£šä¹‹ä¸‹é–‘è©±åŠæ­¤ï¼Œäº¦éžå¶ç„¶ã€‚諸公們乘此安éœä¹‹æ™‚,急宜修çœï¼ã€ 眾人è½ç½·ï¼Œä¿±å„凜然,慨嘆而散。 總評人能居安æ€å±ï¼Œè™•æ²»é˜²äº‚ï¼Œé›–ä¸€æ—¦è®Šç”Ÿä¸æ¸¬ï¼Œä¸è‡³éŒ¯æ„•無支。明季æµè³ŠçŒ–ç‹‚ï¼Œè‚ è…¦å¡—åœ°ï¼Œé¡›é€£å›°è‹¦ä¹‹æƒ…ï¼Œé›¢å¥‡é§­ç•°ä¹‹ç‹€ï¼Œéžèº«æ­·å…¶å¢ƒè€…,ä¸èƒ½æŠµæŽŒè€Œè«‡ã€‚至於姦淫〠忠義,到底自有果報。如å—團練以縱淫謀å›ï¼Œé»¨éƒ½å¸ä»¥è¡€æˆ°è¢«æ“’ï¼Œé‚ªæ­£åˆ¤ç„¶çŸ£ã€‚ä¸æ„ 狹路相逢,陷è½ä»‡äººä¹‹æ‰‹ã€‚å°äººå¾—志,將欲抒宿æ¨ä»¥åšæ–°æ­¡ã€‚èª°çŸ¥ç²¾éˆé–ƒçˆï¼Œä¹˜æ­¤æ‰¶ 屿•¸ç½ªä¹‹æ™‚ï¼Œå³æ­»æ–·ç”Ÿé¡±ä¹‹èˆ‰ï¼Œå¤©ä¹‹å ±æ–½å¿ ä½žï¼Œæžœè‹¥æ˜¯å…¶ä¸çˆ½è€¶ï¼ä¹ƒçŸ¥ä¸–é–“ç›¡å¤šå¥‡çª ä¹‹äº‹ï¼Œäººè‡ªä½œäº•åº•è›™è€³ã€‚å¾—æ­¤æ•˜è¿°ç²¾è©³ï¼Œä¸€é–‹ä¸–äººè¾çž½è€³ç›®ã€‚ 第å二則 陳齋長論地談天 天下事ä¸è«–大å°ï¼Œè‹¥è¦ä¸çŸ¥ï¼Œé™¤éžèŽ«ç‚ºã€‚å³å¦‚豆棚上生了幾個豆莢,或早或晚,彩些 自åƒï¼›æˆ–多或少,賣些與人。ä¸è²»å·¥æœ¬ï¼Œä¸ä½”地方,鄉莊人家其實便利,也是å°å°æ„ æ€ã€‚åªå› å‘ä¾†æ²’äººç¨®ä»–ï¼Œä¸æ›‰å¾—æ­èµ·æ£šä¾†å¯ä»¥é¿æš‘乘涼,å¯ä»¥èšäººé–‘話。 自從此地有了這個豆棚,說了許多故事,è½è¦‹çš„四下æšå‡ºååŽ»ï¼Œåˆ°äº†ä¸‹åˆæŒ¨æ“ å¾—人多 ï¼Œä¹Ÿå°±ä¸æ¸›å¦‚庵觀寺院擺圓場掇桌兒說書的相似。昨日è€è€…èªªåˆ°æ²’é ­äººé‚„æœƒç¹”å¸­ã€æ­» 的人還會殺人,è½è¦‹çš„越發稱é“『奇怪之極ã€ã€‚回去ç¡åœ¨ç‰€ä¸Šï¼Œä¹Ÿé‚„夢見許多敗陣傷 亡ã€å¼µç‰™èˆžçˆªã€å¼„棒拖æ§è¿½è¶•å‰ä¾†ï¼Œæ²’處躲閃。醒來雖則心裡å分驚æï¼Œé‚£è½èªªè©±çš„ 念頭å»åˆæ¯”往日更è¦ç·Šäº›ã€‚æ­¤æ˜¯è±†æ£šä¸‹çš„äººæƒ…ï¼Œå¤§çŽ‡å¦‚æ­¤ã€‚ä¸æ–™é€™å€‹èªªæ›¸çš„å頭,看 看傳得é äº†ï¼Œå¿½ç„¶å‚³åˆ°åŸŽä¸­ä¸€å€‹äººè€³æœµè£¡ï¼Œè½è¦‹åŸŽå¤–有人在那裡說故事,å³ä¾¿ç©¿äº†ä¸€ ä»¶é“è¢ï¼Œæˆ´ä¸Šä¸€é ‚方巾,é é èµ°å‡ºåŸŽä¾†ï¼ŒæŒ¨æ‘å•信。 彼時從人頭上è½å¾—ä¸çœŸï¼Œç«Ÿä¸æèµ·è±†æ£šçš„話,å»èª¤èªªäº†ä¸€å€‹ã€Žç«‡æœ‹å‹ã€åœ¨æ‘中講書, 特來請教。æ±é‚Šè¥¿é‚ŠæŒ¨æ‘å•éŽï¼Œé‚£è£¡æœ‰äººæ›‰å¾—?將次å•到那æ‘中å‰å¾Œï¼Œæœ‰ä¸€äººç¬‘é“: ã€Žå…ˆç”Ÿå·®çŸ£ï¼æ­¤åœ°ä¸¦æ²’有姓「竇ã€çš„æœ‹å‹æœƒå¾—è¬›æ›¸ï¼Œåªæœ‰é€™é‚Šæ‘裡,å¶ç„¶æ­å€‹è±†æ£šï¼Œ èšäº›ç©ºé–‘朋å‹åœ¨é‚£è£¡è«‡ä»Šèªªå¤ã€‚都是鄉學究的見èžã€‚何以瀆高賢è½ï¼ã€é‚£äººå»ä¹Ÿç¬‘å°‡ 起來,é“:『我委實誤矣ï¼ã€ å³ä¾¿èµ°åˆ°é€™é‚Šæ‘裡去,果然看見豆棚下有許多人å著,他也便æ±èº«é€²åŽ»ã€‚å內一個人 看見這人æ±é€²æ£šä¾†ï¼Œéš¨å³èµ·èº«æ‰¯è‘—一人附耳低言é“:『此è€ä¹ƒåŸŽä¸­ä½çš„一ä½é½‹é•·ï¼Œå§“ 陳å剛,字無欲,別號å«åšé™³ç„¡é¬¼ã€‚ç‚ºäººæ€§æ°£å‰›æ–¹ï¼Œè­°è«–åæ‹—。年紀五å餘歲,胸中 無書ä¸è®€ã€‚è½ä»–翻覆議論天地間é“ç†ï¼Œå£å¦‚懸河一般,滔滔ä¸ç«­ï¼Œé€šåœ‹ä¹‹äººè¾¯é§ä¸éŽ ã€‚ä¸çŸ¥é‚£å€‹å‹¾å¼•他到這鄉æ‘裡來的?〠é“言未了,那齋長也就å°é¢æ‹±äº†ä¸€æ‹±ï¼Œé–‹å£é“:『èžå¾—這裡有一ä½å¤§å­¸å•的朋å‹è¬›è«– å¤å¾€ä»Šä¾†çš„é“ç†ï¼Œå°å¼Ÿä¸é æ•¸å里特來求教ï¼ã€çœ¾äººä¿±æ˜¯é¢é¢ç›¸è¦·ï¼Œä¸çŸ¥ç”šéº¼ä¾†æ­·ï¼Œ åªæœ‰æ˜¨æ—¥èªªæ›¸çš„è€è€…é“:『å°å¼Ÿè¼©å¶ç„¶ä¹˜è‘—風涼說些閑話,都是耳目å‰çš„見èžã€é“è·¯ 間的事實,ä¸é€šç¶“書,ä¸å…¥ç†è·¯ï¼Œå°±åƒå¿µé‚£ã€Œå‹¸ä¸–æ–‡ã€ä¸€èˆ¬çš„。幸而今日天氣還早, 諸å‹å°šæœªä¾†é½Šï¼Œè¬ä¸€å°å¼Ÿä¸çŸ¥å…ˆç”Ÿåˆ°ä¾†ï¼Œåœ¨æ­¤æ”¾è‚†èƒ¡èªªï¼Œåªæ€•污了先生之耳,連清晨 的早飯也è¦å™´å‡ºä¾†å“©ï¼ã€é™³é½‹é•·é“:『è€ä»ç¿è¨€ä¹‹å¤ªè¬™ã€‚å°å¼Ÿæ­¤ä¾†ä¹Ÿä¸æ˜¯å¥½äº‹ï¼Œåªå›  近來儒é“å¼å¾®ï¼Œç†å­¸æ—¥æ™¦ï¼Œæ€æƒ³èµ·ä¾†ï¼Œæ­¤èº«æ—¢ä¸èƒ½é—¡æšå ¯ã€èˆœã€æ–‡ã€æ­¦ä¹‹é“æ–¼æœå»·ï¼Œ åˆä¸èƒ½æ‰¿æŽ¥å‘¨ã€ç¨‹ã€å¼µã€æœ±ä¹‹è„ˆæ–¼å¾é»¨ï¼Œä»»å¤©ä¸‹é‚ªæ•™æ©«è¡Œï¼Œäººå¿ƒé¡›å€’,將åƒå¤çœŸå„’çš„ 派,便淹沒無èžçŸ£ã€‚ã€è€è€…é“:『今日幸è·å…ˆç”Ÿé™è‡¨ï¼Œäº¦ç”Ÿå¹³é›£é€¢ä¹‹æœƒã€‚å…ˆç”Ÿå¦‚ä¸æ£„ è€æœ½ï¼Œè«‹ç™»ä¸Šå¸­ï¼Œè³œæ•™ä¸€äºŒï¼Œå¤§é–‹çœ¾äººèŒ…å¡žï¼Œåœ¨å…ˆç”Ÿå…·æœ‰æ•‘ä¸–å©†å¿ƒï¼Œæƒ³æ–·ç„¡æ‰€åæ•™ï¼ ã€é½‹é•·è½è€è€…這番說話,å»ä¼¼æŒ‘動疥癩瘡窠一般,連è²é“:『予豈好辯哉?亦ä¸å¾—å·² 也。〠å°çœ¾äººå°‡æ‰‹ä¸€æ‹±ï¼Œç«Ÿåˆ°ä¸­å¤®æ¤…上å了,é“:『è€ä»ç¿è¦æˆ‘從那裡說起?ã€çœ¾äººé“:『 從未有天地以來說起,何如?ã€é½‹é•·é“:『未有天地以å‰ï¼Œå¤ªç©ºç„¡çª®ä¹‹ä¸­æ¸¾ç„¶ä¸€æ°£ï¼Œ 乃為無極;無極之虛氣,å³ç‚ºå¤ªæ¥µä¹‹ç†æ°£ï¼›å¤ªæ¥µä¹‹ç†æ°£ï¼Œå³ç‚ºå¤©åœ°ä¹‹æ ¹ç½§ã€‚天地根罧 化生人物,始åˆçš†å±¬åŒ–生;一生之後,化生è€å°‘,形生者多。譬如è‰ä¸­ç”ŸèŸ²ï¼Œäººèº«ä¸Š 生è¨ï¼Œçš†æ˜¯åŒ–ç”Ÿã€‚è‹¥ç„¡èº«ä¸Šçš„æ±—æ°£ã€æœ¨ä¸­æœ½æ°£ï¼Œé‚£è£¡å¾—這根罧?å¯è¦‹å¤ªæ¥µçš„ç†æ°£å°±æ˜¯ 天地的根罧。 或說來未必明白,å–一張紙來畫一圖你們去看。ã€é‚£æ™‚就有這些好事的後生å–筆的去 å–筆,借硯的去借硯,擺列得在桌上。 那齋長å–éŽä¸€å¼µç´™ä¾†ï¼Œç•«å‡ºä¸€åœ–與眾人觀看:眾人é“ï¼šã€Žå¤ªæ¥µç†æ°£æ€Žéº¼å°±æœ‰é™°é™½ã€æ—¥ æœˆã€æ˜Ÿè¾°ï¼Ÿã€é½‹é•·é“ï¼šã€Žé™½ä¹‹ç²¾ç‚ºæ—¥ï¼Œé™°ä¹‹ç²¾ç‚ºæœˆã€‚æ˜Ÿè¾°æµ®é‹æ–¼å¤©ï¼Œä¿±ä»¥è±¡é¡¯ã€‚é™°æ°£ èšæœƒæ–¼ä¸­ç‚ºåœ°ï¼Œäº”行è¬ç‰©æ‰¿è¼‰æ–¼åœ°ï¼Œä¿±ä»¥å½¢é¡¯ã€‚譬如人鼻中氣æ¯ï¼Œå‡ºè€…發æšè€Œæº«ï¼Œå±¬ 陽;入者收斂而寒,屬陰。陰å‡èšæ–¼ä¸­ï¼Œè€Œæ°´æ³¥è®ŠåŒ–ï¼Œäº”è¡Œçš†å‚™ã€‚é™½æµ®å‹•åŒ…ç¾…æ–¼å¤–ï¼Œ 鋿—‹ä¸Šä¸‹ï¼Œå½¢å¦‚雞蛋。地乃雞黃,浮奠於中而ä¸å‹•。天如雞é’,é‹å‹•於外而ä¸å·²ã€‚天 行常å¥ï¼Œè‡ªç„¡ä¸€æ¯ä¹‹åœã€‚隨氣é‹å‹•ï¼Œè‡ªæˆæ˜¥ã€å¤ã€ç§‹ã€å†¬ã€é¢¨ã€é›²ã€é›·ã€é›¨ï¼Œäººç‰©ä¹‹ 化化生生,而世界乃全矣。天地éˆç§€ä¹‹æ°£å……溢滿足,自生è–人,以助造化所未備。故 è–人與天地併稱者正謂此也。說來未必明白,å†ç•«ä¸€åœ–你們細看。ã€éš¨åˆç•«å‡ºä¸€å€‹åœ– 來:眾人é“:『天體輕清,那玉皇大å¸åœ¨æ–¼ä½•è™•ï¼Ÿåœ°é«”é‡æ¿ï¼Œé‚£é–»çދ鬼ç„åˆåœ¨ä½•處? ã€é½‹é•·é“:『天體輕清,時時é‹è¡Œï¼Œè±ˆå®¹ä¸€ç‰©ï¼Ÿç‰©æ—¢ä¸å®¹ï¼Œå®‰èƒ½å®¹ç¥žé“居之?æ™åœ¨ä¸Š 者,夜必隨時åºè€Œæ¼¸è½‰æ–¼ä¸‹ï¼›å¤œåœ¨ä¸‹è€…,æ™å¿…隨時åºè€Œæ¼¸è½‰æ–¼ä¸Šã€‚若有玉皇等神果在 天宮,必因時刻é‹è½‰ã€‚難é“神é“ä¹Ÿéš¨è‘—å€’è½‰ä¾†ä¸æˆï¼Ÿ 地體極厚,下皆水泥土石,é‡é‡ç©èšã€‚若有閻王鬼ç„,難é“ä½åœ¨æ°´æ³¥åœŸçŸ³ä¹‹ä¸­ä¸æˆï¼Ÿ ã€çœ¾äººé“:『è–人與天地並立而為三。 天地在,è–人亦該在。如何羲皇ã€å ¯ã€èˆœã€å­”å­ä¹Ÿå°±éš¨ä¸–而沒?〠齋長é“:『未生è–äººä¹‹æ™‚ï¼Œæ­¤ç†æ­¤æ°£åœ¨å¤©åœ°ã€‚既生è–äººä¹‹å¾Œï¼Œæ­¤ç†æ­¤æ°£å³åœ¨è–人。雖 è–人壽è€è€Œçµ‚,那é“德教化垂範è¬ä¸–,與天地åŒå…¶æ‚ ä¹…,å¯è¦‹è–人之身雖沒,那ç†é“ ä¾èˆŠé‚„之天地。天地常在,å³è–人亦常在也。ã€çœ¾äººé“ï¼šã€Žå­”å­æ˜¯å€‹è–人,也還去請 教那太上è€å›ï¼Œæƒ³ä¹Ÿæ˜¯å€‹æ€•死的緣故。ã€é½‹é•·é“:『è€å­ä¹ƒæ˜¯å€‹è²ªç”Ÿçš„å°äººï¼Œå…¶æ‰€ç«‹ 之論尚虛ã€å°šç„¡ã€å°šæŸ”ã€‚è§€å…¶è¨“å¼Ÿå­æ—¥ï¼šã€Œè§€å¾èˆŒï¼ŒèˆŒåœ¨ï¼Œéžä»¥å…¶æŸ”耶?觀å¾é½’,齒 亡,éžä»¥å…¶å‰›è€¶ï¼Ÿã€å¤©åœ°ç”Ÿç‰©ï¼Œå®œå‰›è‡ªå‰›ï¼Œå®œæŸ”自柔。如使人å£ä¸­ç‰™é½’皆象那舌根柔 軟,連飯也ä¸èƒ½åƒäº†ï¼Œä½•以生長於世?åˆå¦‚金有五色,有黃金,有白銀,有黑éµï¼Œæœ‰ 銅錫。若說金銀性柔而貴,金銀ä¸éŽæ‰“造首飾ã€å™¨çš¿ã€ç‰©ç­‰é¡žã€‚在剛éµï¼Œç”¨æ–¼è€•,則 有粒食養命之功;用於廚,則有烹庖斷割之功;用於兵,則有安民御盜之功。其他難 以盡述,總之為其剛而å¯ç”¨ä¹Ÿã€‚人之貪色者,必以柔而眷戀;貪財者,必以柔而彌縫 ï¼›å°äººä¹‹å¾’,必以柔而趨利é¿å®³ã€‚å‡å¦‚å¥³äººæ€§å‰›ï¼Œèª°æ•¢èª¿æˆ²å¾—ä»–ï¼Ÿç«æ€§è‡³çƒˆï¼Œèª°æ•¢çŽ© å¼„å¾—ä»–ï¼Ÿç¾©ç¶“ã€æ˜“ç†å°Šé‡ã€Œå‰›ã€å­—,è€å­èªªå€‹ã€ŒæŸ”ã€å­—ï¼Œå‰‡å·²é•æ‚–è–經天é“矣。且人 生ä¸éŽç™¾å¹´ï¼Œè€å­è²ªç”Ÿæ–¼ç™¾æ­²ä¹‹å¤–。 åˆæ¬²é™½ç¥žä¸æ»…,以造化之氣。故其尚虛無者實欲貪其有也,尚柔者實欲å‹å…¶å‰›ä¹Ÿã€‚與 天地正ç†ä¸å¤§ç›¸æ‚–乎?ã€è€ƒå¾—è€å­ç”Ÿæ–¼é€±æœ«ï¼Œå³ä»Šæ²³å—府éˆå¯¶ç¸£åœ°æ–¹ã€‚其父å廣,乃 鄉野貧人,幼與富家傭工,年éŽä¸ƒå尚未有妻。其æ¯äº¦é„‰ä¹‹æ„šå©¦ï¼Œå¹´éŽå››å尚未有夫 。å¶åœ¨å±±ä¸­è‹Ÿåˆï¼Œå¾—äº†å¤©åœ°éˆæ°£ï¼Œæ‡·èƒŽå…«å個月。主人惡其胎久,ä¸å®¹äºŽå®¶ï¼Œä¸å¾—å·² èµ°æ–¼æ› é‡Žå¤§æŽæ¨¹ä¸‹ï¼Œç”Ÿä¸‹ä¸€ç™½ç™½çœ‰ä¹‹å­ã€‚å…¶æ¯äº¦ä¸çŸ¥å»£ç‚ºä½•å§“ï¼Œé‚æŒ‡æ¨¹ç‚ºå§“;見其耳 大,é‚åæŽè€³ã€‚ä¸–äººè¦‹å…¶ç™¼ç™½ï¼Œå‘¼ç‚ºè€å­ã€‚åŠé•·è€Œç‚ºé€±å¤©å­çœ‹è—書,åšå€‹å‘官,所以 多知å¤äº‹ã€å¤ç¦®ï¼Œæ•…孔孿œ‰å•禮å•官之舉。 åŠå¾Œä¾†å¹´è€ï¼Œè¦‹å‘¨å®¤å°‡äº‚,é‚騎é’牛西入函谷關,é‡é—œå°¹å喜者師之,作《é“德經》 五åƒè¨€æ–¼ç§¦å·éŠ©ç¨¨ç¸£ã€‚é‚å’æ–¼æ­¤ï¼Œå…¶å¢“在焉。此è€å­ä¹‹å§‹çµ‚也。生å‰ä¸èƒ½æ•‘周室之亂 ,åˆä¸å»ºä¸€æ¯«åŠŸæ¥­æ–¼ä¸–ï¼Œæ­»å¾Œè¿”ç‚ºå¤©ä¸Šä¸‰æ¸…ï¼Œè±ˆæœ‰æ˜¯å“‰ï¼ã€çœ¾äººé“:『佛å­è¥¿ä¾†ä¹‹æ•™ 如何?ã€é½‹é•·é“:『佛æ°äº¦è²ªå£½ä¹‹å°äººã€‚其說尚空,一切人é“世事皆棄而ä¸ç†ï¼Œä¸¦æ¬² 絕滅其念慮,使心常空空無我。 有耳目滅其視è½ï¼Œä½¿è€³ç›®å¸¸ç©ºã€‚有å£ã€é«”ã€æ‰‹ã€è¶³ã€é™°é™½ä¹‹å½¢ï¼Œå¿…盡制之ä¸å‹•,使百 體常空。務è¦ç²¾ã€æ°£ã€ç¥žä¸‰è€…完足,會而為一,性éˆä¸æ»…,常存於世。此以貪生貪有 之心由真空而æˆå…¶çœŸå¯¦ä¹Ÿã€‚盜天地之精è¯ï¼Œä¸è‚¯é‚„之天地,是天地間之大賊也,豈得 謂之真空?考得佛未生之時,其æ¯å¤¢ä¸€å¤§ç™½è±¡ä¾†å¤¢ä¸­æŠ•生,自此懷胎。日日漸大,腹 ä¸èƒ½å®¹ï¼ŒåŠç”Ÿæ™‚裂其æ¯è…¹ï¼Œæ­»è€Œå¾Œç”Ÿã€‚ 此天生怪異之人,將亂宇宙,故先殺其æ¯è€³ã€‚世間惡物如梟鳥,如è å­ï¼Œå¦‚毒蛇,其 生也,æ¯å¿…先死而後出。佛之生也,豈與惡類之相åŒä¹Žï¼Ÿå› å…¶åˆç”Ÿè€Œå…ˆå‚·å…¶æ¯ï¼Œä¸–人 乃設齋打醮,百方為æ¯ç¥ˆç¦ï¼Œæ˜¯ä½›ä¹‹ä¸ä¿å·±æ¯è€…å能ä¿ä»–人之æ¯ä¹Žï¼Ÿåˆè€ƒå¾—佛在西域 為梵王國主,有美妻ã€ç¾Žå¦¾ï¼Œç¨±ç‚ºè©è–©ã€‚金帛財寶極多,國雖殷富而地方狹å°ï¼Œæ°£å‹¢ 甚弱。四鄰之國皆強橫暴è™ï¼Œå¸¸å¸¸è¢«ä»–侵凌,佛國兵馬微å°ï¼Œä¸èƒ½æŠµæ•µï¼Œé‚棄國而逃 。沒奈何倡一修行好善之說,åˆç«‹å‡ºè¨±å¤šå››ç”Ÿå…­é“ã€å ±æ‡‰è¼ªè¿´çš„æ¦œæ¨£ï¼Œä»¥æ„šå¼„四鄰。 ä»–çš„æ„æ€ä¸éŽèªªé“ï¼šã€Œä½ ç­‰ä»Šä¸–æ®ºæˆ‘äººæ°‘ï¼Œæ¶æˆ‘財物,後世必轉變犬馬填還我的。〠是以å二年間,四鄰果被愚惑,佛復歸國與妻å­å®Œèšã€‚其國ä»èˆŠå¯Œå¼·èµ·ä¾†ï¼Œå­å­å­«å­« 方得ä¿å…¨ã€‚佛本以智術說個真空,å得了許多實利。他原ä¸ä»¥è¡“化我中國,åªå› ä¸­åœ‹ è–人之教化ä¸è¡Œï¼Œäººçš„æ¬²å¿ƒå‹äº†å‰‡æƒ‘心益å‹ï¼Œä¸æ•¢å‘å ¯ã€èˆœã€å‘¨å…¬ã€å­”å­é—¡æ˜Žé“義, 惟å‘ä½›å­ç¥ˆæ±‚ç¦æ¾¤ã€‚è–人教人無欲,教人é é¬¼ç¥žï¼Œä»¥ç›¡äººé“ä¹‹å¸¸ã€‚ä½›å­æƒŸçŸ¥æœ‰å·²ï¼ŒæŠŠ å¤©ä¸‹åœ‹å®¶ç½®ä¹‹åº¦å¤–ï¼Œä»¥ç‚ºè‹¦æµ·ï¼Œè€Œå…¨ä¸æ€è­°ã€‚自以為真空,而其實一些ä¸èƒ½ç©ºï¼Œä¸€å‘³ 誘人貪欲,誘人妄求,é•誤人é“之正。 總此求空之一念也。ã€çœ¾äººé“ï¼šã€Žå››å¤§çš†ç©ºï¼Œé™½ç¥žä¸æ»…,佛è€ä¹‹è«–,總無沾滯。ä¸éŽ å­˜æ­¤çœŸæ€§ï¼Œå¯ä»¥é•·ç”Ÿæ°¸å‘½ï¼Œäº¦å¤©äººä¹‹æ­£ç†ä¹Ÿã€‚先生言之,何其僻歟?ã€é½‹é•·é“ï¼šã€Žè€ å­è²ªç”Ÿï¼Œå£½éŽç™¾æ­²ï¼Œè€Œåˆæ¬²é™½ç¥žä¸æ»…;佛å­è²ªç”Ÿï¼Œæ­¢æ´»å…­å三歲,而乃è¦çœŸæ€§å¸¸å­˜ã€‚ 世上人,壽數皆有定期,而佛è€ç¨è¦é•·ç”Ÿï¼›èˆ‰ä¸–死皆滅亡,而佛è€ç¨è¦é•·å­˜ã€‚此身之 外,åˆèªªä¸€å€‹é™½ç¥žä¹‹éˆï¼Œåˆæœ‰ä¸€å€‹çœŸæ€§ä¹‹éˆã€‚æ•…ä½›æ°ä¸€èº«è€Œæœ‰ä¸‰åƒï¼Œè€æ°ä¸€èº«è€Œåˆ†ä¸‰ 清。分明地上一株柳樹,變一個柳精出來,洞裡一個ç‹ç‹¸ï¼Œåˆè®Šä¸€å€‹ç‹ç²¾å‡ºä¾†ã€‚一個 ä½›è€ï¼Œåˆèƒ½åˆ†èº«å‡ºä¸–,豈ä¸èˆ‡æ¨¹æœ¨ç¦½ç¸ä¹‹æˆç²¾ä½œæ€ªçš„æœ‰ä½•åˆ†åˆ¥ï¼Ÿä¸æƒŸå¦‚此,我還把佛 è€é‚ªèªªã€å‘來世人å—其大惑ã€å¤§äº‚ï¼Œçš†å±¬è¿·è€Œä¸æ‚Ÿï¼Œæˆ‘今歷歷指出,約有å件,你們 細心領會著:一件,佛經èˆåˆ©å­ä¹‹èªªã€‚以此身為房èˆï¼Œéˆå¸¸å­˜ï¼Œä¸–ä¸–è¼ªè¿´ã€‚åƒæ¯ä¹‹ä¹³ ,如江水無窮,é‚以父æ¯ç‚ºæˆ¿èˆï¼Œç‰¹å€Ÿå…¶æˆ¿èˆè½‰ç”Ÿã€‚此則輕視親身,比之土木,啟天 下è¬ä¸–以ä¸å­ä¹‹ç½ªã€‚ å…¶æ»…å¤©æ€§ä¸€é«”ä¹‹å¤§æƒ‘ï¼Œä¸€å¯æ¨ä¹Ÿã€‚一件,佛經視此身為房èˆï¼Œè€Œä¸çŸ¥æ„›æƒœã€‚故求ç¦åˆ© 者,今生如ä¸é‚æ„,欲來生å—用,乃因æœå±±é€²é¦™æ¨èº«ï¼ŒæŠ•之åƒä¸ˆå´–下,跌碎骨體。尤 如蕩å­èˆ‡å¨¼å¦“,淫男與狂童,情濃愛厚,一時ä¸èƒ½å‰²æ¨ï¼Œé‚åŒè‡ªç¸ŠæŠ•河者,往往有之 。蓋謂今生ä¸å¸¸ç›¸å®ˆï¼Œæ¬²ç¥ˆä¾†ç”Ÿåšå¤«å¦»ä¹Ÿã€‚此則信了轉身之謬,一旦輕棄此身。其妄 è‡ªæ®ºèº«ä¹‹å¤§æƒ‘ï¼ŒäºŒå¯æ¨ä¹Ÿã€‚一件,世人視此身為房èˆï¼Œè€Œä¸çŸ¥çé‡ï¼Œæ•…信神奉佛的婦 女被僧é“奸徒欺哄,以為此身一客房耳,極ä¸è¦ç·Šã€‚女體多與男相交,通é¾è„ˆï¼Œæœƒä½› 根,今生陰形,來生必轉為男身。往往富室良家婦女,æ¯è¢«å§¦æ·«ï¼Œç”˜å–ªå»‰æ¥è€Œéš±æ˜§çµ‚ èº«ã€‚æ­¤å…¶æ·«äº‚é–¨é–€ä¹‹å¤§æƒ‘ï¼Œä¸‰å¯æ¨ä¹Ÿã€‚一件,世人迷於å‰ç”Ÿå ±æ‡‰ä¹‹èªªï¼Œæ•…強盜凶徒執 刀奪人財物,曰:「你å‰ä¸–少我債負,我今來討ï¼ã€æˆ–æƒå‹¢é€¼äººä¹‹å¥¸ï¼Œæˆ–巧言誘人之 æ·«ï¼Œæ›°ï¼šã€Œæˆ‘èˆ‡ä½ åŽŸæœ‰å®¿ç·£ï¼Œä»Šä¸–æ‰€ä»¥é‡æˆ‘。ã€å…¶ä»–種種惡ç©ï¼Œçš†å¯ä»¥è—‰å£å‰ç”Ÿç‚ºè§£ ã€‚åˆæœ‰é‚£å¥½å­¸ä»™äººç…‰ä¸¹é¤Šæ€§ï¼Œæ¯è¢«æ–¹å£«å°‡éŠ€ç›œåŽ»ã€‚æ­¤å…¶é™°åŠ©å¥¸ç›œä¹‹å¤§æƒ‘ï¼Œå››å¯æ¨ä¹Ÿã€‚ 一件,世人迷惑佛經,信其懺悔罪éŽã€‚故奉佛者白æ™ç™¾æ–¹ç‚ºæƒ¡ï¼Œç„¡æ‰€ä¸è‡³ï¼ŒåŠå¤œé–“焚 香誦經,祈å…罪ç²ç¦ï¼›æ—¥æ—¥ä½œæƒ¡ï¼Œå¤œå¤œæ‡ºæ‚”。 甚者有一盜入åˆé–€æ¨“上,åŠå…§å®˜æ‹¿ä½ï¼ŒæŠŠä»–è¡£æœå‰é–‹æœçœ‹ï¼Œæ¸¾èº«çš†æ˜¯ä½›ç¶“。蓋彼酷信 佛經å…ç¦è¶…脫,故穿在身上以作盜耳。 æ­¤é™·å®³ä¸–æƒ…ä¹‹å¤§æƒ‘ï¼Œäº”å¯æ¨ä¹Ÿã€‚一件,世人迷惑於奉佛敬é“,æœå±±é€²é¦™ã€‚æ¯æœˆè‹¦åŠ›æ”¢ 錢ç©ç±³ï¼Œè€Œçˆ¶æ¯å‡é¤“,衣食ä¸è¶³ï¼Œå…¨ä¸åœ¨å¿ƒã€‚åˆå®¶å®¶è¨­ç«‹ç¥žé¾•供奉佛仙外神,而祖宗 先代å無祠堂。 æ­¤å…¶æ»…è¦ªèƒŒç§Ÿä¹‹å¤§æƒ‘ï¼Œå…­å¯æ¨ä¹Ÿã€‚一件,世人惑於清淨苦空之說,以為修仙學佛者必 無妻å­å®¶ç”¢è€Œå¾Œå¯ï¼Œä¸çŸ¥äººä¹ƒè¡€æ°£éª¨è‚‰ä»¥æˆæ­¤èº«ï¼Œè±ˆæ˜¯åœŸæœ¨æ°´çŸ³ï¼Œè±ˆç„¡é™°é™½é…åˆä¹‹æ¬² ?彼佛è€é›–倡清空之論,亦何曾無妻妾å­å­«è²¡ç”¢ï¼Ÿå½¼ä¹ƒè™›èªªé€™å€‹ç®åœˆï¼Œå¤©ä¸‹å¾Œä¸–之人 å實實éµè¡Œè‘—他,終久戒守ä¸å®šï¼Œä»èˆŠé‚£æƒ…慾妄動,無所ä¸ç‚ºï¼šå¥¸æ‹å¾’弟,哄誘良婦 ,甘心為禽ç¸è€Œä¸æ¤ã€‚此敗壞廉æ¥ä¹‹å¤§æƒ‘ï¼Œä¸ƒå¯æ¨ä¹Ÿã€‚一件,佛è€å€¡æ¬ºä¸–異說,使後 世人人迷於求ç¦ï¼Œä¸ä¿®äººäº‹ã€‚æ•…å‰æœ‰è³Šå…µåœäº†äº¬éƒ½ï¼Œå›è‡£çŒ¶ç©¿äº†æˆŽé¦¬ä¹‹æœï¼Œè½è¬›è€å­ ã€è½è¬›ä½›æ³•者ä¸å¯å‹æ•¸ã€‚䏿­¢æ–¼æ¢æ­¦å¸é¤“死臺城,宋徽宗被擄沙漠,å”玄宗播é·èœ€é“ 。此其欺å›èª£åœ‹ä¹‹å¤§æƒ‘ï¼Œå…«å¯æ¨ä¹Ÿã€‚一件,å‡ä½›è€ç¥žè¡“仙方,燒香èšçœ¾ã€‚始令人照水 盆,看見自己乃一貧病乞兒,後將家財罄æ¨ï¼›ç…§è¦‹ç›†å…§ç”·å‰‡çŽ‹ä¾¯å°‡ç›¸ï¼Œå¥³å‰‡çš‡åŽå¬ªå¦ƒ 冠裳玉之狀。久之起兵造å,屠城陷陣。如漢時張陵ã€å¼µè§’;元時韓林兒ã€å¾å¢žå£½ï¼› åŠæ˜Žæ™‚å”賽兒ã€è¶™å¤å…ƒã€å¾é´»å„’ç­‰é¡žï¼Œæµæ¯’天下,傷命數è¬ã€‚ é›–ç¶åœ¨æ³•場,那師師弟弟猶說「我等往西天去ã€ï¼Œè‡³æ­»ä¸æ‚Ÿã€‚此其陷世斬殺之大惑, ä¹å¯æ¨ä¹Ÿã€‚一件,士農工商å„ä¿®è·æ¥­ï¼Œç„¡éžæŽ¥æ¿Ÿè¡£é£Ÿå±…å®¤ä¹‹åˆ©ï¼Œç›¡å€«ç†æ•™åŒ–之常,缺 一ä¸å¯ã€‚彼佛è€å€¡ä¿®è¬¬èªªï¼Œåƒ§é“姑尼四等,男女游手éŠé£Ÿï¼Œé¨™éŒ¢å®‰äº«ï¼Œåšé‚£æ·«é€¸ä¸é“ 之事。 上逆天倫,下廢人事,消磨世間財物,與豬羊魚鱉相åŒã€‚ 如锿‘©è¥¿ä¾†åœ¨åµ©å±±é¢å£ä¹å¹´ï¼Œå®‰äº«ä¸–間衣食,以自修證。使天下人人皆é¢å£ä¹å¹´ï¼Œå‰‡ è·æ¥­ç›¡å»¢ï¼Œèª°äººè‚¯åŽ»è€•ç¹”ï¼Ÿè¡£é£Ÿç„¡æ‰€å¾žå‡ºï¼Œå‰‡èˆ‰ä¸–ä¹‹äººçš†å‡é¤“死矣,豈是天地造化之 æ­£ï¼æ³å…¶ä¿®å»Ÿå®‡ã€è²¼é‡‘åƒã€é†®ç¥­é½‹æœƒï¼Œè²»è²¡ç„¡çª®ã€‚此其廢業蠹財之大惑,å坿¨ä¹Ÿã€‚ 我乃èŠèˆ‰å件,他類尤多,ä¸å¯å‹è¿°ã€‚自此å¯ä»¥ç›¸æŽ¨ï¼Œå½¼ä½›è€ä»™ç¥žæžœå¯ä»¥å‹¸åŒ–愚俗, 我亦何苦舉此åä»¶ï¼Œèªªä»–è¨±å¤šé•æ‚–正經é“ç†ï¼Ÿä½†æˆ‘自有生以來凡所èžè¦‹ï¼Œçš†å…¶æƒ‘世誣 æ°‘ã€è ¹è²¡äº‚倫之事,深å¯åŽ­æƒ¡ï¼è«¸å›æžœèƒ½é«”察此情,則知我ä¸å¾—已之心,甚於孟å­ç¹¼ å ¯ã€èˆœã€å‘¨ã€å­”,以解è±ä¸‰åƒå¹´ä¹‹æƒ‘矣ï¼ã€çœ¾äººé“:『如先生之說,佛è€ä¿±ä¸è¶³å–, 則天堂ã€åœ°ç„ã€é¬¼ç¥žä¸€é“亦滅絕矣。ã€é½‹é•·é“:『世俗之人醉生夢死,於神鬼之說沈 溺而ä¸å¯è§£ï¼Œç¸½èµ·æ–¼è²ªåˆ©é‚€ç¦ä¹‹å¿ƒï¼Œæˆå…¶è¿·æƒ‘。佛è€ä¹˜è¿·æƒ‘ä¹‹è¦‹ï¼Œå‡æå¤©å ‚ã€åœ°ç„〠水府等神,åŠé¬¼æ€ªäººå¦–ã€é•·ç”ŸéŒ«ç¦ç­‰äº‹ï¼Œé¨™äººä¹‹è²¡ï¼Œæƒ‘人之心,亂人之倫,欲與堯〠舜ã€å‘¨å…¬ã€å­”å­ä¹‹æ•™çˆ­ç«‹æ–¼ä¸–。說天上有玉皇仙官,如å°ç¥žé™é›¨ï¼Œè³žå–„罰惡,皆奉玉 皇敕旨後行。《玉皇經》雲,西方有淨德國王,四åç„¡å­ï¼Œå¯¶æœˆçš‡åŽèˆ‡å›åŒç¥ˆæ–¼ä¸‰æ¸… è€å›ã€‚è€å›é€ä¸€å­ï¼Œç”Ÿå³çŽ‰çš‡ã€‚ã€ŠçŽ„æ­¦ç¶“ã€‹é›²ï¼Œè¥¿æ–¹æœ‰æ·¨æ¨‚åœ‹ï¼Œåœ‹å›ç„¡å­ï¼Œç¥ˆæ–¼è€å› 。è€å›é€ä¸€å­ï¼Œå³çŽ„æ­¦ç¥–å¸«ã€‚ã€Šä½›ç¶“ã€‹é›²ï¼Œè¥¿æ–¹æœ‰æ·¨å–„åœ‹ï¼Œç”Ÿå¤ªå­åä½›ï¼Œå¨¶å¦»è€¶é™€æ° ï¼Œç”Ÿå­æ‘©çºç¾…。後出家åäºŒå¹´ï¼Œå¾—é“æˆä½›ã€‚如此看來,釋æ°ä¹‹å§‹ï¼Œå¯¦ç”Ÿåœ¨å‘¨å®¶ä¸ƒç™¾å¹´ 之後。å¤å³æ˜¯ä»Šï¼Œä»Šå³æ˜¯å¤ã€‚ä»Šæ™‚ä¹‹æ‰€ç„¡ï¼Œè±ˆå¤æ™‚之所有?如今查考西方皆腥臊羶臭 之夷人,何得以「淨ã€å­—å之?今時所見並無三頭六臂ã€å››çœ¼å…«æ‰‹ä¹‹äººï¼Œä½•得信其為 天王神將?亦並無二百三百歲之人,何得信其為長生ä¸è€ä¹Žï¼Ÿã€çœ¾äººé“:『玉皇å³ä¸Š å¸ä¹Ÿã€‚書上說,武ä¸å¤¢ä¸Šå¸è³œå‚…說,孟å­èªªé½‹æˆ’æ²æµ´å¯ç¥€ä¸Šå¸ï¼Œæ˜Žæ˜Žçš„æ˜¯æœ‰ä¸Šå¸çŸ£ã€‚ ã€é½‹é•·é“:『å”虞之世,已惑於鬼神之說,就傳得有上å¸ä¹‹è±¡ã€‚æ­¦ä¸å¥½è³¢ï¼Œæ¥µå…¶èª ç¯¤ ,夢中見一個傅說的形貌,未曾知其å姓,é‚ç•«å½¢åƒè¨ªè€Œæ±‚ä¹‹ã€‚å¦‚ä¸–ä¸Šäººä¸æ›¾è¦‹ç”Ÿé¾ 活鳳,夢å¯ä¸­å»å¸¸è¦‹ä¹‹ï¼Œäº¦ç•«åƒä¸­è¦‹éŽï¼Œæ•…能形於夢å¯ã€‚若說真有上å¸ï¼Œå†•旒冠裳模 æ¨£ï¼Œé‚£é»ƒå¸æ–¹è£½è¡£è£³ï¼Œå¯è¦‹ä¸Šå¸ä¹ƒåœ¨é»ƒå¸å¾Œæ‰€ç”Ÿï¼Œé»ƒå¸å‰å»ä¸æ›¾æœ‰ä¸Šå¸çŸ£ã€‚ 若說黃å¸å‰å°±æœ‰çš„,難é“å§‹åˆèµ¤è‘—身體ã€åˆ°é»ƒå¸æ™‚é‡è¤‡å† è£³ä¹Žï¼Ÿæ‰€è¬‚å¸è€…,天地è¬ç‰© 之主宰也,故å之為å¸ã€‚曰上å¸è€…,自統體一太極者言也太極å³ä¸Šå¸ï¼Œæœ‰ä½•形象å¯è¦‹ ?å¯ä»¥ç¥€ä¸Šå¸è€…ï¼Œå³æ­¤å¿ƒæ¸…æ·¨å¯ä»¥å°ä¸Šå¤©ä¹Ÿã€‚ã€çœ¾äººé“:『地ç„閻羅掌管生死,生時 有鬼é€ä»–來,死時有鬼勾他去,å—罪有鬼拷打他。 人之為善,轉生富貴;物之為善,亦能轉生為人;人之為惡,轉為禽ç¸ï¼›ç‰©ä¹‹ç‚ºæƒ¡ï¼Œ 滅性éˆã€‚其說果å¦ï¼Ÿã€é½‹é•·é“:『此戒訓愚俗之人則å¯ï¼Œå…¶å¯¦é“ç†ä¸ç„¶ã€‚彼男女交媾 ,父精æ¯è¡€èšè€ŒæˆèƒŽï¼Œæ¯è…¹ä¸­æœ¬è‡ªç”Ÿç”Ÿã€‚若待有了胎,然後鬼魂來投,ä¸çŸ¥å¾žå­•å©¦å£ ä¸­æŠ•çš„ã€é‚„從孕婦腰間投的?å‘ä¾†è‚šä¸­è¡€å¡Šå²Œå²Œè€Œå‹•è€…åˆæ˜¯ä½•物?人有此身,必形與 氣相åˆï¼Œè€Œå¾ŒçŸ¥ç–¼ç—›ã€‚今有åŠèº«ä¸é‚ç™±ç˜“ä¹‹å¤«ï¼Œç«æ”»é‡åˆºå°šä¸çŸ¥ç—›ï¼Œè‹¥äººæ­»å¾Œå½¢æ°£ç›¸ 離,都化為飛塵ã€è•©ç‚ºå†·é¢¨çŸ£ï¼Œæœ‰ä½•軀殻形質å¯ä»¥åŠ å…¶åˆ€å±±ã€åŠæ¨¹ã€æ²¹é‹ã€ç¢“磨之刑 ?å³ä½¿èªªé»‘罡風把惡人的既散之魂,ä¾èˆŠå¹åˆæ”來å†å—罪起,那陰å¸é¬¼åˆ¤ä¹Ÿæ²’這樣細 細工夫。ã€çœ¾äººé“ï¼šã€Žé–»çŽ‹é¬¼åˆ¤æ³¨äººç”Ÿæ™‚å³æ³¨æ­»æœŸï¼Œä¸€åˆ‡å¦»å­ã€å¯Œè²´ã€çª®é€šç­‰é …皆注 定在簿上,ä¸å®¹æ”¹ç§»ã€‚這廿œ‰çš„麼?ã€é½‹é•·é“:『《玄傳》上說妖魔åƒäººç„¡æ•¸ï¼ŒçŽ„æ­¦ 收之,人間方除得害。若果然åƒäººç„¡æ•¸ï¼Œå‰‡é–»çŽ‹è™•ä¸æ›¾æ³¨å®šäººæ‡‰æ­»ä¹‹æ•¸çŸ£ã€‚若說注定 妖魔該åƒï¼Œæ­¤å ±æ‡‰æ­£ç•¶ä¹‹æ³•,玄武出力救之,å䏿˜¯æ³¨å®šç”Ÿæ­»ä¹‹èªªçŸ£ã€‚åˆèªªå…«ç™¾æ­²çš„ 彭祖曾娶éŽå¦»ä¸ƒå二人。 第七å二之妻將死之時å•彭祖:「何故享壽太多,想ä¸åœ¨é–»çŽ‹ç°¿ä¸Šéº¼ï¼Ÿã€å½­ç¥–曰:「 我的姓å判官åšäº†ç´™æ»å…’釘在簿上。ã€å¦»è¦‹é–»çŽ‹ï¼Œé–»çŽ‹å•é“:「彭祖何妻之多?ã€å¦» å°äº‘:「他姓ååšç´™æ»äº†ã€‚ã€é–»çŽ‹æ‹†ç°¿çœ‹ä¹‹ï¼Œæ–¹å‹¾å–彭祖而去。這樣看來,彭祖之妻 ä¹Ÿåœ‚äº‚äº‚ç”Ÿçš„ï¼Œé–»çŽ‹ä¸æ›¾æ³¨å®šã€‚å½­ç¥–ä¸€ç”Ÿè¡£é£Ÿçª®é€šï¼Œä¸æ›¾æ³¨å®šï¼Œåˆ¥äººçš„åè¨»å®šä¸æˆï¼Ÿ æ³å­”ã€å­Ÿæ™‚ä¸–ç„¡ç´™æ›¸ï¼Œä¿±ä»¥ç«¹ç°¡ã€æœ¨æ¿ç‚ºä¹‹ï¼Œæ­¤åœ°ç„尚在水泥土石之下,那得有個簿 ç±è—這個紙æ»ï¼Ÿæ­¤èªªå¤§è’å”矣ï¼ã€çœ¾äººé“:『城éšåœŸåœ°ä¹‹ç¥žä¹ƒæ˜¯è™•處有的,難é“也有 甚麼別說?ã€é½‹é•·é“:『å”ã€è™žä¹‹éš›å°šç„¡åŸŽæ± ï¼Œå¤ã€å•†ä»¥å¾Œæ–¹å»ºåŸŽæ± ä»¥å¾¡ç›œè³Šã€‚後人 é‚立城éšå»Ÿï¼Œç¥€åŸŽéšã€åœŸåœ°ï¼Œç¸½ç¨±åœ°ç¥—,是人與è¬ç‰©ä¹‹æ¯ä¹Ÿã€‚分之在田土,謂其功生 五穀,祀之為社神;在鄉æ‘街市,謂其功能奠安,祀之為土地之神;在一家宅院,謂 其功能承載,祀之為中霤之神;在一方山陵,謂其功出百貨,把之為山嶽之神;在城 ç‰†æ± æ¿ ï¼Œè¬‚å…¶æœ‰å¾¡ç›œææ‚£ä¹‹åŠŸï¼Œæ•…ç¥€ä¹‹ç‚ºåŸŽéšä¹‹ç¥žï¼Œçš†æ­¤ä¸€åœŸè€³ã€‚在人心中,無éžé£² æ°´æ€æºã€æ„Ÿæ©å ±å¾·ä¹‹æ„,豈å¯ä»¥å‰æ®¿å¡‘男,後殿塑女,在家åˆå¡‘一è€é ­å­ä¹‹åƒï¼Ÿåˆ†æ˜Ž 以人身之å°å½¢åƒè¼™æ•¢èª£åœ¨å¤©åœ°è‡ªç„¶ä¹‹æ­£ç¥žä¹Ÿï¼æ­¤èªªæ›´åˆå”矣。ã€çœ¾äººé“:『城éšåœŸåœ° 往往顯éˆï¼Œå¯¦å¯¦æœ‰å€‹äººåƒæ´»ç¾å‡ºä¾†ï¼Œæ€Žéº¼ç¸½èªªä¸€å€‹æ²’字?ã€é½‹é•·é“:『顯éˆè€…åˆæœ‰ä¸€ 種é“ç†ï¼šä¸–é–“å¿ ç¾©è‹±é›„çƒˆå£«ï¼Œæˆ–æŠ±å†¤æž‰å±ˆæ­»ï¼Œæˆ–ç„¡å­æ—©å¹´çŒ›æ­»ï¼Œå…¶è‹±éˆä¹‹æ°£ä¸æ•£ï¼Œå¤š ä¾ç¥žå»Ÿé¡¯æ‡‰ã€‚如元時殺了文天祥,明時殺了於忠肅,謂其為今之都城éšã€‚天地間生為 正人,死為正氣,正氣之éˆç‚ºæ²³å¶½å±±å·åŸŽéšç­‰ç¥žï¼Œè‡ªç„¶è€Œç„¶ï¼Œä¸æ¶ˆæ••å°ï¼Œä¸ç”±äººæï¼Œ 皆造化正ç†ä¹‹å¦™é‹è€³ã€‚其實山å·åœŸåœ°æœ¬è‡ªå€‹ç¥žéˆï¼Œä¸å¯å°ˆæŒ‡æŸäººç‚ºæŸç¥žä¹Ÿã€‚ã€çœ¾äººé“ :『正人固是以氣為主,天地間盡有妖人異事顯將出來。我數年在中州,看見柳樹上 生一二寸人形;江西地上ã€å¤©ä¸Šè½ä¸‹é»‘米;å¾å·žå¤©ä¸Šè½ä¸‹äººé ­ç´°è±†ï¼Œçœ¼ã€ç›®ã€å£ã€é¼» 俱完全的。世間異事妖物信有之矣。ã€é½‹é•·é“:『孔å­ä¸èªžã€Œæ€ªåŠ›äº‚ç¥žã€ï¼Œä¹Ÿæ›‰å¾—世 é–“éžå¸¸ä¹‹è®Šï¼Œé–“或有之,乃是ç½ç¦å¾µå…†ã€‚è–人åªé“其常,ä¸è‚¯ä¿¡æ­¤æ€ªäº‹ï¼Œä»¥å•Ÿäººè¿·æƒ‘ 之端。若佛è€å°ˆå°ˆä»¥æ­¤åš‡äººï¼Œæ‰€ä»¥ç‚ºé‚ªé“耳。如世界將變,或è¬ç‰©å°‡æ­»æ–¼å…µè’,故五 行皆æˆå¦–怪,ä¸ç¨æŸ³æ¨¹ã€çŸ³å¡Šã€ç‹ç‹¸ã€çŒ´å­å·²ä¹Ÿã€‚åœ¨äººåªæœ‰æ­£èº«ä¿®å¾·ä»¥æ¶ˆåŒ–之耳。〠眾人é“ï¼šã€Žå¦–è¡“æ€ªäº‹ï¼Œä¸æ˜¯ç¥žä»™ä¹Ÿé€ ä½œä¸å‡ºã€‚æ˜ŽæœæˆåŒ–年間,河å—åƒå¸«ç¸£ä¸€å€‹ç™¾å§“å 嫿œ±å¤©å¯¶æ­»äº†ï¼ŒåŸ‹å¾Œä¸‰æ—¥ï¼Œå…¶å¦»ä¸‰ç¿ å…’拿了些葷素酒食往去祭祀,走éŽé«˜å¶ºï¼Œé‡è¦‹ä¸€ 塊大石,高有二文,翠兒剛到石邊,忽然一è²éŸ¿äº®ï¼Œå±±çŸ³å´©å€’,露出石匣一個。翠兒 上å‰çœ‹æ™‚,石匣開著一縫,露出寶åŠä¸€å£ã€å¦–書一本。翠兒悄悄æŒå›žï¼Œèª¦ç¿’數日,便 çŸ¥äººå®¶æœªä¾†ä¹‹äº‹ã€‚é„‰äººç¨±ç‚ºå¥‡ç•°ï¼Œå¥‰ç‚ºä½›æ¯æ‹œå¾žçš„,ä¸åŠä¸€å¹´ï¼Œç´„有è¬äººã€‚他有法術 ï¼Œç”°ä¸­è‹—è‘‰å¹æ°£è®Šç‚ºåˆ€æ§ï¼Œæ¿å‡³è®Šæˆè™Žè±¹ï¼Œå¸ƒåœè®Šä½œåŸŽæ± ã€‚一日åäº‚èµ·ä¾†ï¼Œå®˜å…µå‰¿æ• ï¼Œå…©ä¸‹æ®ºå‚·ç”šå¤šï¼Œæ–¹å¾—æ‹¿ç²ã€‚翠兒監ç¦åœ¨ç„,ä¸å‡ºä¸‰æ—¥ï¼Œæž·éŽ–ç¹šè‚˜ä¿±åœ¨ï¼Œç¿ å…’ä¸çŸ¥åŽ» å‘ã€‚æ­¤ç­‰æ³•è¡“ä¸æ˜¯ä»™äººå…·æ­¤ç¥žé€šï¼Œä¹Ÿä¸èƒ½æœ‰æ­¤éˆç•°ã€‚ã€é½‹é•·é“:『妖人亦神仙之類, 盜天地一種化工之巧,為此妖術,è—在山間。世é‹å°‡è®Šï¼Œäººæ°‘應該é­åŠ«ï¼Œä¸€æ—¦ä»˜ä¹‹å¦– 人,助以為亂,彼時殺死ã€é¤“æ­»ã€å±ˆæ­»çš„ä¸å¯å‹æ•¸ã€‚é›–å¤©åœ°æ°£æ•¸æ‰€è‡´ï¼Œè¬æ°‘ç”Ÿéˆæ‰€é­ ï¼Œç„¶è‡ªç¥žä»™ä½œä¹‹ï¼Œå…¶é€†å¤©ä¹‹ç½ªé›£é€ƒã€‚ä¿¡ä¹Žç¥žä»™éžæƒŸç„¡ç›Šæ–¼ä¸–ï¼Œè€Œå¯¦æœ‰ææ–¼ä¸–者也。〠眾人é“:『金主渡æšå­æ±Ÿï¼Œæ°´ä¸åŠé¦¬è…¹ï¼Œå…ƒå¤ªå­åŒ—逃,至大河無船,空中ç»ä¸€é‡‘橋渡 æ²³è€ŒåŽ»ï¼Œéžæ€ªäº‹ä¹Žï¼Ÿã€é½‹é•·é“:『天地造化之氣,ä¸è¶³è€…助之,有餘者æä¹‹ã€‚å¤ã€å•† 以å‰ï¼Œäººç”Ÿæ¥µå°‘,故天é‹å¤šç”Ÿè–è³¢ï¼Œä»¥ç”Ÿé¤Šè¬æ°‘。至周家八百年太平以後,人生極多 ï¼Œå‰‡æš´æƒ¡äº¦å¤šï¼Œè‰¯å–„æ¥µå°‘ã€‚å¤©é“æƒ¡æƒ¡äººä¹‹å¤šï¼Œæ•…生好殺之人,彼爭此戰。 如生白起,å‘è¶™å’å››åè¬äººï¼›æŸ³ç›œè¹ æ©«è¡Œå¤©ä¸‹ï¼Œå£½çµ‚于家;助金主返江以亂中原,賜 元太å­é‡‘橋以存其後。原éžå¤©é“無知,乃æå…¶æœ‰é¤˜æ•…也。å³å¦‚å¤©æ„æ¬²å¾©æ¼¢æ¥­ï¼Œæ•…光武 æœ‰å†°å …å¯æ¸¡ä¹‹ç•°ã€‚ 天é“窮則變通,怪異之事亦或有之,ä¸å¯ä¸€æ¦‚拘拘論也。ã€çœ¾äººé“:『先生之言俱是 çª®æºæŽ¢æœ¬ä¹‹è«–ï¼Œå¤§é†’ç¾¤è¿·ã€‚æˆ‘è¼©èžæ‰€æœªèžï¼Œé–‹ç›¡å¾žä¾†èŒ…塞。但佛è€ä¹‹æ•™ç›ˆæ»¿å¤©åœ°ã€æµ¸ çŒäººå¿ƒä¹…çŸ£ï¼Œå…ˆç”Ÿä¸€äººç¨æŒå…¶èªªï¼ŒæŽ’以斥之,《佛骨表》ã€ã€Šç„¡é¬¼è«–》ä¸è¶³å¥‡ä¹Ÿã€‚ 竊æå¤–é“之羽翼居多,先生之脣舌有é™ï¼Œå…ˆç”Ÿæœªå¿…能為世人ç¦ï¼Œè€Œä¸–äººå¯¦èƒ½ç‚ºå…ˆç”Ÿç¦ ä¹Ÿï¼ã€é½‹é•·è¦ºå¾—眾人之論牢ä¸å¯ç ´ï¼Œä¹ƒäº‘:『日將暮矣,餘將返駕入城。ã€è€è€…é€éŽ æºªæ©‹ï¼Œå›žä¾†å°è‘—豆棚主人é“:『閑話之興,è€å¤«å§‹ä¹‹ã€‚今四é é¢¨èžï¼Œèšé›†æ—¥çœ¾ã€‚方今 官府ç¦ç´„甚嚴,åˆä¸”äººå¿ƒåµæ¸¬ï¼Œè‹¥ç›¡å¦‚陳齋長之論,è¬ä¸€å¤–人ä¸çŸ¥ï¼Œåªèªªè€å¤«åœ¨æ­¤æ– 脣鼓舌,倡發異端曲學,惑亂人心,則此一豆棚未å…為將來釀ç¦ä¹‹è—ªçŸ£ã€‚ä»Šæ™‚ç•¶ç§‹æª ï¼Œéœœæ°£é€¼äººï¼Œè±†æ¢—äº¦å°‡æ§ä¹Ÿã€‚ã€çœ¾äººé“:『è€ä¼¯æ…®å¾—æ·±é ï¼Œæ¥µç‚ºæŒé‡ã€‚ã€ä¸è¦ºè†€å­é  去,柱腳一鬆,連棚帶柱一齊倒下。大家笑了一陣,主人折去竹木竿å­ï¼ŒæŠ±è”“而歸。 眾人é“ï¼šã€Žå¯æ¨é€™è€é½‹é•·åŸ·æ­¤è¿‚è…之論,把世界上佛è€é¬¼ç¥žä¹‹èªªæŽƒå¾—精光。我們æ­è±† 棚,說閑話,è¦å‹¸äººåƒé½‹å¿µä½›ä¹‹èˆˆä¸€äº›ä¹Ÿæ²’了。ã€è€è€…é“:『天下事被此è€è¿‚僻之論 敗壞者多矣,ä¸ç¨æ­¤ä¸€è±†æ£šä¹Ÿã€‚〠總評滔滔è¬è¨€ï¼Œèˆ‰æ··æ²Œæ»„æ¡‘ã€ç‰©æƒ…é“ç†ï¼Œè‡ªå¤§å…¥ç´°ï¼Œç”±ç²—åŠç²¾ï¼Œå‰–æžç„¡éºã€‚雖起仲尼 ã€è€èƒã€é‡‹è¿¦ä¸‰ç¥–åŒå ‚而談,當亦少此貫串åšç¶œä¹Ÿã€‚且漢ç–宋注止å¯å°ç†å­¸åæ‡¦ï¼Œä¸ èƒ½å¦‚æ­¤æ¸…è¾¨ç©ºè¡Œï¼Œè¶³ä½¿åº¸äººé‡Žè€æ²å¿ƒå…¥è€³ã€‚ä¸å¯§æƒŸæ˜¯ï¼Œå³æ‘婦頑童從æ—è½ä¹‹ï¼Œäº¦æœ‰é»ž 頭會æ„處,真å¯èšçŸ³è€Œèªªæ³•çŸ£ã€‚ç¯‡ä¸­é—¢ä½›è€æ•¸æ¢ï¼Œæ˜¯æ¥µåŠ›æ‹’ç›¶è¡Œæ”¾æ·«è¾­ï¼Œä¸€ç‰‡è‹¦å¿ƒå¤§ 力。艾衲所云『知我ä¸å¾—已之心,甚於孟å­ç¹¼å ¯ã€èˆœã€å‘¨ã€å­”以解è±ä¸‰åƒå¹´ä¹‹æƒ‘ã€ï¼Œ 豈ä¸ä¿¡å“‰ï¼è‘—書立言,皆è–賢發憤之所為作也,亦在乎後學之善讀。 如ä¸å–„讀,則王å›ä»‹ç”«ï¼Œä»¥ç¶“è¡“ç¦å¤©ä¸‹ï¼Œæ‰€å¿…然矣。 å³å°èªªä¸€å‰‡ï¼Œå¥‡å¦‚《水滸記》,而ä¸å–„讀之,乃誤豪俠而為盜趣。如《西門傳》,而 ä¸å–„讀之,乃誤風æµè€Œç‚ºæ·«ã€‚其間警戒世人處,或在åé¢ï¼Œæˆ–在夾縫,或極快極艷, 而慘傷寥è½å¯“乎其中,世人一時ä¸è§£ä¹Ÿã€‚此雖作者深æ„,俟人善讀,而å¾ä»¥ç‚ºä¸å¦‚明 ç™½ç°¡æ˜“ï¼Œéš¨è®€éš¨è§£ï¼Œæ£’å–æ‚Ÿé“,止在片時,殊有關乎世é“也。艾衲é“人胸è—è¬å·ï¼Œå£ 若懸河,下筆ä¸ä¼‘,拈義å³é€ã€‚凡詩集傳奇,剞劂而膾炙天下者,亦無數矣。邇當盛 å¤ï¼Œè¬€æ‰€ä»¥éŠ·ä¹‹è€…ï¼Œæ–¼æ˜¯ã€Šè±†æ£šé–‘è©±ã€‹ä¸æ•¸æ—¥è€Œæˆã€‚çˆçŸ³æµé‡‘,人人雨汗,é“人ç¨åŒ— 窗高枕,æ®ç­†æ§‹æ€ã€‚憶一èžï¼Œå‡ºä¸€è¦‹ï¼Œç¸±æ©«å‰µé—¢ï¼Œè­°è«–生風,ç²å¿ƒè€Œè‚Œéª¨ä¿±æ¶¼ï¼Œè§£é ¤ 而蘊隆ä¸è™ã€‚凡讀ä¹è€…,無論其善與ä¸å–„也,目之有以得乎目,耳之有以得乎耳。無 一邪詞,無一盶說。凡經傳å­å²æ‰€é—¡ç™¼ä¹‹æœªæ˜Žè€…,覽此而或有所棖觸焉;凡父æ¯å¸«å‹ æ‰€æ•™ä¹‹æœªè«­è€…ï¼Œè½æ­¤è€Œæˆ–æœ‰æ‰€ææ‚Ÿç„‰ï¼Œå‰‡äººäººå–„讀之矣。則æˆå二先示人間。續有嘉 言,此筆伊始。 敘 天空嘯鶴 æœ‰è‰¾è¡²å…ˆç”Ÿè€…ï¼Œç•¶ä»Šä¹‹éŸ»äººï¼Œåœ¨å¤æ›°ç‹‚士。七步八å‰ï¼ŒçœŸæ“…è¬èº«ä¹‹æ‰ï¼›ä¸€çŸ­äºŒé•·ï¼Œå¦™ 通三耳之智。一時咸呼為驚座,處眾洵å¯ç‚ºè„«å›Šã€‚乃者驕鴿彌矜,懶é¾å¥½æˆ²ã€‚è³£ä¸åŽ» ä¸€è‚šè©©äº‘å­æ›°ï¼Œç„¡å¦¨åˆ¥é¡¯ç¥žé€šï¼›ç®—將來許多社弟盟兄,何苦隨人鬼諢。æ³é€™çŒ¢çŒ»éšŠå­ ,斷難尋別弄之蛇;兼之狼狽生涯,豈還待守株之兔。收燕苓雞壅於藥裹,化嘻笑怒 罵為文章。莽將二åä¸€å²æŽ€ç¿»ï¼Œå¦æ•¸èŠéº»è³¬ç›®ï¼›å­¸èªªåå…«å°Šå› æžœï¼Œå°‹æ€æ©„欖甜頭。那 趲舊èžï¼Œä¾¿æŽä»£æ¡ƒåƒµï¼Œä¸è²å†¤å±ˆï¼›å€’é¡›æˆæ¡ˆï¼Œé›–董帽薛戴,好åƒç”Ÿæˆã€‚止因蘇學士滿 è…¹ä¸å¹³ï¼Œæƒ¹å¾—æ±æ–¹ç”Ÿé•·å˜´ç™¼è¨•。看他解鈴妙手,真會虎背上筋斗一番;比之穿縷精心 ,å¯é€šèŸ»é¬¢é‚Šé€£ç’°ä¹æ›²ã€‚忽啼忽笑,發深çœè™•ï¼Œå‹æµ·ä¸Šäººé†«ç—…仙方;曰是曰éžï¼Œç•¶ä¸‹ 凜然,似竹林裡說法說åˆã€‚å‡ä½¿é¼¾å‘¼å®°æˆ‘,正當謔浪,那æ€é£¯å¾Œä¼¸è…°ï¼Ÿä¾¿æ˜¯ä¸ç¬‘閻羅 ï¼Œå¶æ¹Šæ©Ÿç·£ï¼Œä¹Ÿå‘äººå‰æ’«æŽŒã€‚é²é²æ™æ°¸ï¼ŒçœŸå¯ä¸‹æ³‰é†žä¸‰å‡ï¼›ç¿’習風生,真得消雨茶一 盞。謂餘ä¸ä¿¡ï¼Œè«‹å±•斯編。 brotli-6.0.0/testdata/ukkonooa000064400000000000000000000001671046102023000145100ustar 00000000000000ukko nooa, ukko nooa oli kunnon mies, kun han meni saunaan, pisti laukun naulaan, ukko nooa, ukko nooa oli kunnon mies.brotli-6.0.0/testdata/x000064400000000000000000000000011046102023000131140ustar 00000000000000Xbrotli-6.0.0/testdata/x.compressed.00000064400000000000000000000000051046102023000155010ustar 00000000000000Xbrotli-6.0.0/testdata/x.compressed.01000064400000000000000000000000101046102023000154760ustar 00000000000000,XXbrotli-6.0.0/testdata/x.compressed.02000064400000000000000000000000051046102023000155030ustar 00000000000000X brotli-6.0.0/testdata/x.compressed.03000064400000000000000000000000121046102023000155020ustar 00000000000000¡brotli-6.0.0/testdata/xyzzy000064400000000000000000000000051046102023000140660ustar 00000000000000Xyzzy